void sliver_state::sliver(machine_config &config) { M68000(config, m_maincpu, 12000000); m_maincpu->set_addrmap(AS_PROGRAM, &sliver_state::sliver_map); m_maincpu->set_vblank_int("screen", FUNC(sliver_state::irq4_line_hold)); TIMER(config, "obj_actel").configure_periodic(FUNC(sliver_state::obj_irq_cb), attotime::from_hz(60)); /* unknown clock, causes "obj actel ready error" without this */ // irq 2 valid but not used? I8051(config, m_audiocpu, 8000000); m_audiocpu->set_addrmap(AS_PROGRAM, &sliver_state::soundmem_prg); m_audiocpu->set_addrmap(AS_IO, &sliver_state::soundmem_io); m_audiocpu->port_out_cb<1>().set(FUNC(sliver_state::oki_setbank)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); m_screen->set_size(64*8, 32*8); m_screen->set_visarea(0*8, 384-1-16, 0*8, 240-1); m_screen->set_screen_update(FUNC(sliver_state::screen_update)); PALETTE(config, "palette").set_entries(0x100); ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, "palette")); ramdac.set_addrmap(0, &sliver_state::ramdac_map); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); GENERIC_LATCH_8(config, m_soundlatch); okim6295_device &oki(OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH)); oki.set_addrmap(0, &sliver_state::oki_map); oki.add_route(ALL_OUTPUTS, "lspeaker", 0.6); oki.add_route(ALL_OUTPUTS, "rspeaker", 0.6); }
void blockout_state::blockout(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, MAIN_CLOCK); /* MRH - 8.76 makes gfx/adpcm samples sync better -- but 10 is correct speed*/ m_maincpu->set_addrmap(AS_PROGRAM, &blockout_state::main_map); TIMER(config, "scantimer").configure_scanline(FUNC(blockout_state::blockout_scanline), "screen", 0, 1); Z80(config, m_audiocpu, AUDIO_CLOCK); /* 3.579545 MHz */ m_audiocpu->set_addrmap(AS_PROGRAM, &blockout_state::audio_map); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); /* assume same as ddragon3 with adjusted visible display area */ m_screen->set_raw(XTAL(28'000'000) / 4, 448, 0, 320, 272, 10, 250); m_screen->set_screen_update(FUNC(blockout_state::screen_update)); m_screen->set_palette(m_palette); PALETTE(config, m_palette).set_format(2, &blockout_state::blockout_xBGR_444, 513); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); ym2151_device &ymsnd(YM2151(config, "ymsnd", AUDIO_CLOCK)); ymsnd.irq_handler().set(FUNC(blockout_state::irq_handler)); ymsnd.add_route(0, "lspeaker", 0.60); ymsnd.add_route(1, "rspeaker", 0.60); okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH)); oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50); oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50); }
void test_rechercher_liste2 () { Liste_joueur liste; Joueur* joueur; Joueur* joueur2; int i; fprintf(stderr, "* test_rechercher_liste2: "); joueur = joueurCreer(); joueur2 = joueurCreer(); liste_joueurInitialiser(&liste); joueurEcrireX(joueur, 4); joueurEcrireY(joueur, 2); joueurEcrireX(joueur2, 1); joueurEcrireY(joueur2, 2); liste_joueurAjouterFin(&liste, joueur); liste_joueurAjouterFin(&liste, joueur2); i = liste_joueurRechercher(&liste, 1,2); assert(i == 2); joueurDetruire(joueur); joueurDetruire(joueur2); liste_joueurDetruire(&liste); oki (); }
void test_Lire_avec_AjouterFin () { Liste_joueur liste; Joueur* joueur; Joueur* joueur2; fprintf(stderr, "* test_Lire_avec_AjouterFin: "); joueur= joueurCreer(); joueurEcrireX(joueur,13); joueurEcrireY(joueur, 14); /* fprintf(stderr, "--- %d ----", joueur);*/ liste_joueurInitialiser(&liste); liste_joueurAjouterFin(&liste, joueur); /*liste_joueurAjouterFin(&liste, joueur);*/ joueur2 = liste_joueurLire(&liste, 1); /* fprintf(stderr, "-LIRE %d--%d-",joueurLireY(joueur2),joueurLireX(joueur2));*/ /* fprintf(stderr, "----%d ----- %d -----", joueur, joueur2);*/ assert(joueur2 == joueur); joueurDetruire(joueur); liste_joueurDetruire(&liste); oki (); }
void zerozone_state::zerozone(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 10000000); /* 10 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &zerozone_state::main_map); Z80(config, m_audiocpu, 1000000); /* 1 MHz ??? */ m_audiocpu->set_addrmap(AS_PROGRAM, &zerozone_state::sound_map); config.m_minimum_quantum = attotime::from_hz(600); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 32*8); screen.set_visarea(1*8, 47*8-1, 2*8, 30*8-1); screen.set_palette("palette"); screen.set_screen_update(FUNC(zerozone_state::screen_update)); screen.screen_vblank().set(FUNC(zerozone_state::vblank_w)); GFXDECODE(config, m_gfxdecode, "palette", gfx_zerozone); PALETTE(config, "palette").set_format(palette_device::RRRRGGGGBBBBRGBx, 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); }
void test_diamantCreer_et_diamantDetruire () { fprintf(stderr, "*** Test de diamantCreer_et_diamantDetruire ="); Diamant* diamant; diamant = diamantCreer(); assert(diamant != NULL); diamantDetruire(diamant); oki (); }
void test_ennemiCreer_et_ennemiDetruire () { fprintf(stderr, "*** Test de ennemiCreer_et_ennemiDetruire ="); Ennemi* ennemi; ennemi = ennemiCreer(); assert(ennemi != NULL); ennemiDetruire(ennemi); oki (); }
void test_TailleNulle_avec_listeInitialiser () { Liste_joueur liste; int taille; fprintf(stderr, "* test_TailleNulle_avec_listeInit: "); liste_joueurInitialiser(&liste); taille = liste_joueurTaille(&liste); assert(taille ==0); listeDetruire(&liste); oki (); }
void test_rechercher_listevide () { Liste_joueur liste; int i; fprintf(stderr, "* test_rechercher_listevide: "); liste_joueurInitialiser(&liste); i = liste_joueurRechercher(&liste, 1,2); assert(i == 0); liste_joueurDetruire(&liste); oki (); }
void test_retirer_ListeVide () { Liste_joueur liste; int taille; fprintf(stderr, "* test_retirer_ListeVide: "); liste_joueurInitialiser(&liste); liste_joueurRetirer(&liste, 1); assert(taille == 0); liste_joueurDetruire(&liste); oki (); }
void test_TailleNulle1_avec_AjouterFin () { Liste_joueur liste; int taille; Joueur* joueur; fprintf(stderr, "* test_TailleNulle1_avec_ajouterFin: "); liste_joueurInitialiser(&liste); liste_joueurAjouterFin(&liste, joueur); taille = liste_joueurTaille(&liste); assert(taille ==1); liste_joueurDetruire(&liste); oki (); }
void test_fichierlLireEgale() { fprintf(stderr, "* Test test_niveauLireFichierEgale"); Fichierl* f = fichierlOuvrir("./test/testfichieregale.txt"); char test[52]; int i; if (f==NULL) fprintf(stderr, "probleme fichier"); fichierlLireEgale(f, test); i = strcmp("NIVEAU", test); assert(i==0); fichierlFermer(f); oki (); }
void test_ennemiEcrireY () { fprintf(stderr, "*** Test de ennemiEcrireY ="); Ennemi* ennemi; ennemi = ennemiCreer(); ennemiEcrireY(ennemi, 12); assert(ennemi->y == 12); ennemiEcrireY(ennemi, 13); assert(ennemi->y == 13); ennemiDetruire(ennemi); oki (); }
void test_diamantEcrireY () { fprintf(stderr, "*** Test de diamantEcrireY ="); Diamant* diamant; diamant = diamantCreer(); diamantEcrireY(diamant, 12); assert(diamant->y == 12); diamantEcrireY(diamant, 13); assert(diamant->y == 13); diamantDetruire(diamant); oki (); }
void raiden_state::raiden(machine_config &config) { /* basic machine hardware */ V30(config, m_maincpu, XTAL(20'000'000)/2); /* NEC V30 CPU, 20MHz verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &raiden_state::main_map); V30(config, m_subcpu, XTAL(20'000'000)/2); /* NEC V30 CPU, 20MHz verified on pcb */ m_subcpu->set_addrmap(AS_PROGRAM, &raiden_state::sub_map); z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181)/4)); /* verified on pcb */ audiocpu.set_addrmap(AS_PROGRAM, &raiden_state::seibu_sound_map); audiocpu.set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb)); config.m_minimum_quantum = attotime::from_hz(12000); /* video hardware */ BUFFERED_SPRITERAM16(config, m_spriteram); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(59.60); // verified on pcb */ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); screen.set_size(32*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(raiden_state::screen_update_raiden)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.screen_vblank().append(FUNC(raiden_state::vblank_irq)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_raiden); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 2048); /* sound hardware */ SPEAKER(config, "mono").front_center(); ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(14'318'181)/4)); ymsnd.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler)); ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // frequency and pin 7 verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); SEIBU_SOUND(config, m_seibu_sound, 0); m_seibu_sound->int_callback().set_inputline("audiocpu", 0); m_seibu_sound->set_rom_tag("audiocpu"); m_seibu_sound->set_rombank_tag("seibu_bank1"); m_seibu_sound->ym_read_callback().set("ymsnd", FUNC(ym3812_device::read)); m_seibu_sound->ym_write_callback().set("ymsnd", FUNC(ym3812_device::write)); }
void test_Lire_avec_ListeVide () { Liste_joueur liste; Joueur* joueur; fprintf(stderr, "* test_Lire_avec_ListeVide: "); liste_joueurInitialiser(&liste); joueur = liste_joueurLire(&liste, 4); assert(joueur == NULL); joueurDetruire(joueur); liste_joueurDetruire(&liste); oki (); }
void test_retirer_Liste1 () { Liste_joueur liste; Joueur* joueur; int taille; fprintf(stderr, "* test_retirer_Liste1: "); joueur=joueurCreer(); liste_joueurInitialiser(&liste); liste_joueurAjouterFin(&liste,joueur); liste_joueurRetirer(&liste, 1); taille = liste_joueurTaille(&liste); assert(taille == 0); joueurDetruire(joueur); liste_joueurDetruire(&liste); oki (); }
void test_ennemiEcrireDirection () { fprintf(stderr, "*** Test de ennemiEcrireDirection ="); Ennemi* ennemi; ennemi = ennemiCreer(); ennemiEcrireDirection(ennemi, ENNEMI_DIRECTION_HAUT); assert(ennemi->direction == ENNEMI_DIRECTION_HAUT); ennemiEcrireDirection(ennemi, ENNEMI_DIRECTION_BOUGE_PAS); assert(ennemi->direction == ENNEMI_DIRECTION_BOUGE_PAS); ennemiDetruire(ennemi); oki (); }
void test_fichierlLireLigne_linux () { fprintf(stderr, "* Test test_niveauLireLigne format linux"); Fichierl* f = fichierlOuvrir("./test/testligne_linux.txt"); char test[52]; if (f==NULL) fprintf(stderr, "probleme fichier"); fichierlLireLigne(f, test); //fprintf(stderr, "\n%s\n", test); assert( strcmp("COUCOU", test)==0); fichierlLireLigne(f, test); assert( strcmp("SALUT", test)==0); assert(fichierlLireLigne(f, test) == FIN_DE_FICHIER); fichierlFermer(f); oki (); }
void test_diamantEcrireDirection () { fprintf(stderr, "*** Test de diamantEcrireDirection ="); Diamant* diamant; diamant = diamantCreer(); diamantEcrireDirection(diamant, DIAMANT_DIRECTION_HAUT); assert(diamant->direction == DIAMANT_DIRECTION_HAUT); diamantEcrireDirection(diamant, DIAMANT_DIRECTION_BOUGE_PAS); assert(diamant->direction == DIAMANT_DIRECTION_BOUGE_PAS); diamantDetruire(diamant); oki (); }
void test_diamantLireX () { fprintf(stderr, "*** Test de diamantLireY ="); Diamant* diamant; int i; diamant = diamantCreer(); diamantEcrireX(diamant, 12); i = diamantLireX(diamant) ; assert(i == 12); diamantEcrireX(diamant, 13); i = diamantLireX(diamant) ; assert(i == 13); diamantDetruire(diamant); oki (); }
void test_diamantLireTransformationChute () { fprintf(stderr, "*** Test de diamantLireTransformationChute ="); Diamant* diamant; diamant = diamantCreer(); diamantEcrireTransformationChute(diamant, DIAMANT_TRANSFORMATION_DIAMANT); assert(diamant->transformation == DIAMANT_TRANSFORMATION_DIAMANT); diamantEcrireTransformationChute(diamant, DIAMANT_TRANSFORMATION_EXPLOSION); assert(diamant->transformation == DIAMANT_TRANSFORMATION_EXPLOSION); diamantDetruire(diamant); oki (); }
void test_ennemiEcrireType () { fprintf(stderr, "*** Test de ennemiLireType ="); Ennemi* ennemi; ennemi = ennemiCreer(); ennemiEcrireType(ennemi, ENNEMI_TYPE_DIAMANT); assert(ennemi->type == ENNEMI_TYPE_DIAMANT); ennemiEcrireType(ennemi, ENNEMI_TYPE_RIEN); assert(ennemi->type == ENNEMI_TYPE_RIEN); ennemiEcrireType(ennemi, ENNEMI_TYPE_PIERRE); assert(ennemi->type == ENNEMI_TYPE_PIERRE); ennemiDetruire(ennemi); oki (); }
void test_diamantEcrireValeur () { fprintf(stderr, "*** Test de diamantLireValeur ="); Diamant* diamant; diamant = diamantCreer(); diamantEcrireValeur(diamant, 12); assert(diamant->valeur == 12); diamantEcrireValeur(diamant, 14); assert(diamant->valeur == 14); diamantEcrireValeur(diamant, -1); assert(diamant->valeur == -1); diamantDetruire(diamant); oki (); }
void f1gp_state::f1gpb(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 10000000); /* 10 MHz ??? */ m_maincpu->set_addrmap(AS_PROGRAM, &f1gp_state::f1gpb_cpu1_map); m_maincpu->set_vblank_int("screen", FUNC(f1gp_state::irq1_line_hold)); m68000_device &sub(M68000(config, "sub", 10000000)); /* 10 MHz ??? */ sub.set_addrmap(AS_PROGRAM, &f1gp_state::f1gpb_cpu2_map); sub.set_vblank_int("screen", FUNC(f1gp_state::irq1_line_hold)); /* NO sound CPU */ config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame */ ACIA6850(config, m_acia, 0); m_acia->irq_handler().set_inputline("sub", M68K_IRQ_3); m_acia->txd_handler().set("acia", FUNC(acia6850_device::write_rxd)); // loopback for now clock_device &acia_clock(CLOCK(config, "acia_clock", 1000000)); // guessed acia_clock.signal_handler().set(m_acia, FUNC(acia6850_device::write_txc)); acia_clock.signal_handler().append(m_acia, FUNC(acia6850_device::write_rxc)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_size(64*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(f1gp_state::screen_update_f1gpb)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_f1gp); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); //VSYSTEM_GGA(config, "gga", 0); /* sound hardware */ SPEAKER(config, "mono").front_center(); okim6295_device &oki(OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.00); }
void crospang_state::crospang(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(14'318'181)/2); /* 68000P10 @ 7.15909MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &crospang_state::crospang_map); m_maincpu->set_vblank_int("screen", FUNC(crospang_state::irq6_line_hold)); z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181)/4)); /* 3.579545MHz */ audiocpu.set_addrmap(AS_PROGRAM, &crospang_state::crospang_sound_map); audiocpu.set_addrmap(AS_IO, &crospang_state::crospang_sound_io_map); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 64*8); screen.set_visarea(0, 40*8-1, 0, 30*8-1); screen.set_screen_update(FUNC(crospang_state::screen_update_crospang)); screen.set_palette("palette"); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x300); GFXDECODE(config, m_gfxdecode, "palette", gfx_crospang); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(0); m_sprgen->set_is_bootleg(true); m_sprgen->set_offsets(5, 7); m_sprgen->set_gfxdecode_tag(m_gfxdecode); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(14'318'181)/4)); /* 3.579545MHz */ ymsnd.irq_handler().set_inputline("audiocpu", 0); ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); okim6295_device &oki(OKIM6295(config, "oki", XTAL(14'318'181)/16, okim6295_device::PIN7_HIGH)); // 1.789772MHz or 0.894886MHz?? & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); }
void pokechmp_state::pokechmp(machine_config &config) { /* basic machine hardware */ M6502(config, m_maincpu, 4_MHz_XTAL/4); m_maincpu->set_addrmap(AS_PROGRAM, &pokechmp_state::pokechmp_map); M6502(config, m_audiocpu, 4_MHz_XTAL/4); m_audiocpu->set_addrmap(AS_PROGRAM, &pokechmp_state::pokechmp_sound_map); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(32*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(pokechmp_state::screen_update_pokechmp)); screen.set_palette(m_palette); screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI); screen.screen_vblank().append(FUNC(pokechmp_state::sound_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_pokechmp); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x400); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); YM2203(config, "ym1", XTAL(4'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.60); YM3812(config, "ym2", XTAL(24'000'000)/16).add_route(ALL_OUTPUTS, "mono", 1.0); okim6295_device &oki(OKIM6295(config, "oki", XTAL(24'000'000)/16, okim6295_device::PIN7_LOW)); oki.add_route(ALL_OUTPUTS, "mono", 0.50); /* sound fx */ oki.add_route(ALL_OUTPUTS, "mono", 0.50); oki.set_addrmap(0, &pokechmp_state::pokechmp_oki_map); }
/******************************************************************************/ static const gfx_layout charlayout = { 8,8, RGN_FRAC(1,2), 4, { RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 }, { STEP8(0,1) }, { STEP8(0,8*2) }, 16*8 }; static const gfx_layout tile_layout = { 16,16, RGN_FRAC(1,2), 4, { RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+0, 8, 0 }, { STEP8(16*8*2,1), STEP8(0,1) }, { STEP16(0,8*2) }, 64*8 }; static GFXDECODE_START( gfx_funkyjet ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 256, 32 ) /* Characters 8x8 */ GFXDECODE_ENTRY( "gfx1", 0, tile_layout, 256, 32 ) /* Tiles 16x16 */ GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 0, 16 ) /* Sprites 16x16 */ GFXDECODE_END /******************************************************************************/ void funkyjet_state::funkyjet(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(28'000'000)/2); /* 28 MHz crystal */ m_maincpu->set_addrmap(AS_PROGRAM, &funkyjet_state::funkyjet_map); m_maincpu->set_vblank_int("screen", FUNC(funkyjet_state::irq6_line_hold)); H6280(config, m_audiocpu, XTAL(32'220'000)/4); /* Custom chip 45, Audio section crystal is 32.220 MHz */ m_audiocpu->set_addrmap(AS_PROGRAM, &funkyjet_state::sound_map); m_audiocpu->add_route(ALL_OUTPUTS, "lspeaker", 0); // internal sound unused m_audiocpu->add_route(ALL_OUTPUTS, "rspeaker", 0); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(58); screen.set_vblank_time(ATTOSECONDS_IN_USEC(529)); screen.set_size(40*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(funkyjet_state::screen_update)); screen.set_palette("palette"); DECO146PROT(config, m_deco146, 0); m_deco146->port_a_cb().set_ioport("INPUTS"); m_deco146->port_b_cb().set_ioport("SYSTEM"); m_deco146->port_c_cb().set_ioport("DSW"); m_deco146->soundlatch_irq_cb().set_inputline(m_audiocpu, 0); m_deco146->set_interface_scramble_interleave(); GFXDECODE(config, "gfxdecode", "palette", gfx_funkyjet); PALETTE(config, "palette").set_format(palette_device::xBGR_444, 1024); DECO16IC(config, m_deco_tilegen, 0); m_deco_tilegen->set_pf1_size(DECO_64x32); m_deco_tilegen->set_pf2_size(DECO_64x32); m_deco_tilegen->set_pf1_trans_mask(0x0f); m_deco_tilegen->set_pf2_trans_mask(0x0f); m_deco_tilegen->set_pf1_col_bank(0x00); m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(2); m_sprgen->set_gfxdecode_tag("gfxdecode"); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(32'220'000)/9)); ymsnd.irq_handler().set_inputline(m_audiocpu, 1); // IRQ2 ymsnd.add_route(0, "lspeaker", 0.45); ymsnd.add_route(1, "rspeaker", 0.45); okim6295_device &oki(OKIM6295(config, "oki", XTAL(28'000'000)/28, okim6295_device::PIN7_HIGH)); oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50); oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50); }
void sshangha_state::sshangha(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 16_MHz_XTAL); /* CPU marked as 16MHz part */ m_maincpu->set_addrmap(AS_PROGRAM, &sshangha_state::sshangha_map); m_maincpu->set_vblank_int("screen", FUNC(sshangha_state::irq6_line_hold)); Z80(config, m_audiocpu, 16_MHz_XTAL / 4); m_audiocpu->set_addrmap(AS_PROGRAM, &sshangha_state::sound_map); config.m_minimum_quantum = attotime::from_hz(6000); screen_device& screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(529)); screen.set_size(40*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(sshangha_state::screen_update)); GFXDECODE(config, "gfxdecode", m_palette, gfx_sshangha); PALETTE(config, m_palette).set_format(palette_device::xBGR_888, 0x4000); DECO16IC(config, m_tilegen, 0); m_tilegen->set_pf1_size(DECO_64x32); m_tilegen->set_pf2_size(DECO_64x32); m_tilegen->set_pf1_trans_mask(0x0f); m_tilegen->set_pf2_trans_mask(0x0f); m_tilegen->set_pf1_col_bank(0x30); m_tilegen->set_pf2_col_bank(0x20); m_tilegen->set_pf1_col_mask(0x0f); m_tilegen->set_pf2_col_mask(0x0f); m_tilegen->set_bank1_callback(FUNC(sshangha_state::bank_callback), this); m_tilegen->set_bank2_callback(FUNC(sshangha_state::bank_callback), this); m_tilegen->set_pf12_8x8_bank(0); m_tilegen->set_pf12_16x16_bank(1); m_tilegen->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen1, 0); m_sprgen1->set_gfx_region(2); m_sprgen1->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen2, 0); m_sprgen2->set_gfx_region(3); m_sprgen2->set_gfxdecode_tag("gfxdecode"); DECO146PROT(config, m_deco146, 0); m_deco146->port_a_cb().set_ioport("INPUTS"); m_deco146->port_b_cb().set_ioport("SYSTEM"); m_deco146->port_c_cb().set_ioport("DSW"); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); // sure it's stereo? SPEAKER(config, "rspeaker").front_right(); ym2203_device &ymsnd(YM2203(config, "ymsnd", 16_MHz_XTAL / 4)); ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ymsnd.add_route(ALL_OUTPUTS, "lspeaker", 0.33); ymsnd.add_route(ALL_OUTPUTS, "rspeaker", 0.33); okim6295_device &oki(OKIM6295(config, "oki", 16_MHz_XTAL / 8, okim6295_device::PIN7_LOW)); // clock frequency & pin 7 not verified oki.add_route(ALL_OUTPUTS, "lspeaker", 0.27); oki.add_route(ALL_OUTPUTS, "rspeaker", 0.27); }