#ifndef DRV_RECURSIVE

#define DRV_RECURSIVE
#define DRV(NAME) extern struct GAME_MAIN game_##NAME;
#include "driver.c"

// 2nd part, make the array
#undef DRV
#define DRV(NAME) &game_##NAME,

struct GAME_MAIN *game_list[] =
{
#include "driver.c"
};

#else

// CPS1
DRV( ghouls )
DRV( ghoulsu )
DRV( daimakai )
DRV( strider )
DRV( striderj )
DRV( stridrja )
DRV( stridrua )
DRV( dw )
DRV( dwj )
DRV( willow )
DRV( willowj )
DRV( willowje )
DRV( unsquad )
DRV( area88 )
DRV( ffight )
DRV( ffightu )
DRV( ffightj )
DRV( ffightj1 )
DRV( 1941 )
DRV( 1941j )
DRV( mercs )
DRV( mercsu )
DRV( mercsua )
DRV( mercsj )
DRV( mtwins )
DRV( chikij )
DRV( msword )
DRV( mswordr1 )
DRV( mswordu )
DRV( mswordj )
DRV( cawing )
DRV( cawingj )
DRV( cawingu )
DRV( nemo )
DRV( nemoj )
DRV( 3wonders )
DRV( 3wonderu )
DRV( wonder3 )
DRV( kod )
DRV( kodu )
DRV( kodj )
DRV( captcomm )
DRV( captcomu )
DRV( captcomj )
DRV( knights )
DRV( knightsu )
DRV( knightsj )
DRV( varth )
DRV( varthu )
DRV( varthj )
DRV( cworld2j )
DRV( qad )
DRV( qadj )
DRV( qtono2 )
DRV( megaman )
DRV( rockmanj )
DRV( pnickj )
DRV( sfzch )

  // cps1 forgottn
DRV( forgottn )
DRV( lostwrld )

  // cps1 sf2
DRV( sf2 )
DRV( sf2ua )
DRV( sf2ub )
DRV( sf2eb )
DRV( sf2ud )
DRV( sf2ue )
DRV( sf2uf )
DRV( sf2ui )
DRV( sf2uk )
DRV( sf2j )
DRV( sf2ja )
DRV( sf2jc )
DRV( sf2ce )
DRV( sf2m4 )
DRV( sf2m5 )
DRV( sf2m6 )
DRV( sf2m7 )
DRV( sf2yyc )
DRV( sf2koryu )
DRV( sf2ceua )
DRV( sf2ceub )
DRV( sf2ceuc )
DRV( sf2cej )
DRV( sf2rb )
DRV( sf2rb2 )
DRV( sf2red )
DRV( sf2v004 )
DRV( sf2accp2 )
DRV( sf2t )
DRV( sf2tj )

  // cps1 pang3
DRV( pang3 )
DRV( pang3j )

  // cps1 qsound
DRV( wof )
DRV( wofa )
DRV( wofu )
DRV( wofj )
DRV( dino )
DRV( dinoj )
DRV( dinou )
DRV( punisher )
DRV( punishru )
DRV( punishrj )
DRV( slammast )
DRV( slammasu )
DRV( mbomberj )
DRV( mbombrd )
DRV( mbombrdj )

  // cps2
  DRV( 1944 )
  DRV( 19xx )
  DRV( avsp )
  DRV( ssf2 )
  DRV( ddtod )
  DRV( dstlk )
  DRV( ecofghtr )
  DRV( sgemf )
  DRV( xmcota )
  DRV( dimahoo )
  DRV( ringdest )
  DRV( nwarr )
  DRV( sfa )
  DRV( ddsom )
  DRV( megaman2 )
  DRV( sfa2 )
  DRV( spf2t )
  DRV( xmvsf )
  DRV( batcir )
  DRV( csclub )
  DRV( mshvsf )
  DRV( gigawing )
  DRV( mmatrix )
  DRV( vsav )
  DRV( vsav2 )
  DRV( mvsc )
  DRV( sfa3 )
  DRV( mpangj )
  DRV( armwar )
  DRV( armwaru )
  DRV( cybots)
  DRV( cybotsu)
  DRV( msh)
  DRV( mshh)
  DRV( mshu)
  DRV( vhunt2)
  DRV( vhunt2r1)
  DRV( progear )
  DRV( pzloop2j )

#ifndef RAINECPS
DRV(64th_street)
DRV(64th_street_japanese)
  DRV(acrobatm)
  DRV(agallet)
DRV(air_inferno)
DRV(american_horseshoes)
DRV(aqua_jack)
DRV(arabian_magic)
DRV(ark_area)
  DRV(arkangc)
  DRV(arkanoid)
  DRV(arkatayt)
  DRV(arkatour)
DRV(arkanoid_2_american)
DRV(arkanoid_2_japanese)
DRV(arkanoid_2_rev_of_doh)
DRV(arkanoid_returns)
DRV(armed_formation)
DRV(ashura_blaster)
DRV(ashura_blaster_us)
DRV(astyanax)
DRV(asuka_and_asuka)
DRV(atomic_robo_kid)
DRV(atomic_robo_kid_japanese)
DRV(avenging_spirit)
DRV(balloon_bros)
DRV(batrider)
DRV(batrider_version_a)
DRV(batsugun)
    DRV(battle_garegc)
    DRV(battle_garegh)
DRV(battle_garegga)
DRV(battle_shark)
DRV(biomechanical_toy)
DRV(bio_ship_paladin)
DRV(blood_bros)
DRV(bobble_bobble)
DRV(bomb_jack_twin)
DRV(saboten_bombers)
  DRV(ssmissin)
DRV(bonze_adventure)
DRV(bubble_bobble)
DRV(bubble_bobble_2)
DRV(bubble_bobble_romstar)
DRV(bubble_bobble_romstar2)
DRV(bubble_memories)
DRV(bubble_memories_jp)
DRV(bubble_symphony)
DRV(bubble_symphony_us)
DRV(cabal)
DRV(cachat)
DRV(cadash)
DRV(cadash_french)
DRV(cadash_italian)
DRV(cadash_japanese)
DRV(cameltry)
  DRV(camltrua )
DRV(chack_n_pop)
DRV(champion_wrestler)
DRV(champion_wrestler_us)
DRV(champion_wrestler_jp)
DRV(chase_hq)
DRV(chase_hq_2_sci)
DRV(chase_hq_2_sci_alt)
DRV(chase_hq_japanese)
DRV(chimera_beast)
DRV(chuka_taisen)
DRV(cleopatras_fortune)
DRV(combatribes)
DRV(combatribes_bootleg)
DRV(continental_circus)
DRV(continental_circus_alt)
DRV(crazy_climber_2)
DRV(crime_city)
DRV(crime_city_jp)
DRV(crime_city_US)
DRV(cuby_bop)
DRV(cybattler)
DRV(daisenpu)
DRV(darius)
DRV(dariuso)
DRV(darius_2)
DRV(darius_2_dual)
DRV(darius_alt)
DRV(darius_extra)
DRV(darius_gaiden)
DRV(darius_gaiden_extra)
DRV(ddonpach)
 DRV(ddonpchj)
 DRV(donpachj)
DRV(donpachi)
DRV(donpachk)
DRV(dead_connection)
DRV(demons_world)
DRV(dino_rex)
DRV(dogyuun)
DRV(don_doko_don)
DRV(ddragon3)
DRV(ddrago3b)
DRV(dr_toppel_tankentai)
DRV(drift_out)
DRV(drive_out)
DRV(dynamite_leaguem)
DRV(earth_defence_force)
DRV(earth_joker)
DRV(elevator_action_2)
DRV(esprade)
 DRV(espradeo)
DRV(espradej)
DRV(eto)
DRV(euro_champ_92)
DRV(extermination)
DRV(exzisus)
DRV(f3_demo_by_antiriad)
DRV(fairy_land_story)
  DRV(fantasia)
  DRV(fantsia2)

DRV(feveron)
DRV(feversos)

DRV(fighting_hawk)
DRV(final_blow)
DRV(fire_shark)
DRV(fix_eight)
DRV(football_champ)
  DRV(frogger)
DRV(full_throttle)
DRV(galmedes)
DRV(galpanic)
DRV(gekirindan)
DRV(gemini)
DRV(ghox)
DRV(gigandes)
DRV(grand_cross_pinball)
DRV(grid_seeker)
DRV(grind_stormer)
DRV(growl)
DRV(gunbird)
DRV(gunbirdj)
DRV(gunbirdk)
DRV(guwange)
DRV(btlkrodj)
DRV(gun_frontier)
DRV(gun_lock)
DRV(ray_force)
DRV(ray_force_jp)
DRV(hacha_mecha_fighter)
DRV(hachoo)
DRV(hat_trick_hero)
DRV(hat_trick_hero_95)
DRV(heavy_unit)
DRV(hell_fire)
DRV(hit_the_ice)

// hyperpcb (snowbros) driver
DRV(hyperpac)
DRV(hyperpcb)
DRV(cookbib2)
DRV(moremorp)
DRV(twinkle)
DRV(3in1semi)
DRV(moremore)
DRV(finalttr)
DRV(snow_bros)
DRV(snow_bros_alt)
DRV(snow_bros_japanese)

DRV(hotdogst)
DRV(iga_ninjyutsuden)
DRV(insector_x)
DRV(international_cup_94)
DRV(jigoku_meguri)
DRV(jumping_islands)
DRV(kageki)
DRV(kaiser_knuckle)
DRV(kaiser_knuckle_alt)
DRV(kick_and_run)
DRV(kick_off)
DRV(kiki_kai_kai)
DRV(knight_boy)
DRV(knuckle_bash)
DRV(kodure)
DRV(koshien)
DRV(kuri_kinton)
DRV(kuri_kinton_alt)
DRV(kuri_kinton_jap)
DRV(kyukyoku_tiger_2)
DRV(land_maker)
DRV(legend_of_makai)
DRV(legion)
DRV(light_bringer)

DRV(liquid_kids)
  DRV(f2demo)

DRV(macross)
DRV(macross2)
DRV(macrossp)
DRV(mahjong_quest)
DRV(mahoudai)
DRV(majestic_twelve)
DRV(makai_densetsu)
DRV(maniac_square)
DRV(master_of_weapons)
DRV(maze_of_flott)
  DRV(mazinger)

  // mcatadv driver
  DRV( mcatadv )
  DRV( mcatadvj )
  DRV( nost )

DRV(mega_blast)
DRV(metal_black)
DRV(metal_black_japanese)
  DRV(missw96)
DRV(mustang)
DRV(mutant_night)
  DRV(newfant)
DRV(night_striker)
DRV(ninja_gaiden)
DRV(ninja_kid_2)
DRV(ninja_kids)
DRV(ninja_warriors)
DRV(ninja_warriors_jp)
DRV(omega_fighter)
DRV(omega_fighter_japanese)
DRV(operation_thunderbolt)
DRV(operation_wolf)
DRV(operation_wolf_3)
DRV(operation_wolf_bootleg)
DRV(outzone)
DRV(p47_american)
DRV(p47_japanese)
DRV(palamedes)
  // mitchell driver
  DRV(pang)
  DRV(spang)
  DRV(pkladies)
  DRV(block)
  DRV(blockj)
  DRV(blocka)

DRV(snow_bros_2)
DRV(snow_bros_alt_2)
DRV(peek_a_boo)
  DRV(pengo)
  DRV(pengo2u)
DRV(phantasm)
DRV(pipi_and_bibi)
DRV(plgirls)
DRV(plgirls2)
DRV(plotting)
DRV(plump_pop)
DRV(plus_alpha)
DRV(pop_n_pop)
DRV(prime_time_fighters)

  DRV(puckman)
  DRV(pacman)
  DRV(pacplus)
  DRV(mspacman)
  DRV(mspacmab)
  DRV(mspacpls)
  DRV(mspac6m)
  DRV(pacman25)

  DRV(pacman3d)
  DRV(namcosil)
  DRV(xenrev)

DRV(psychic_force)
DRV(puchi_carat)
DRV(pulirula)
DRV(pulirula_jp)
DRV(puzzle_bobble_2)
DRV(puzzle_bobble_2x)
DRV(puzzle_bobble_3)
DRV(puzzle_bobble_4)
DRV(puzzle_bobble_b_system)
DRV(puzznic)
DRV(quiz_chikyu_bouei_gun)
DRV(quiz_crayon_shinchan)
DRV(quiz_crayon_shinchan_2)
DRV(quiz_hq)
DRV(quiz_jinsei_gekijoh)
DRV(quiz_sekai_wa_show_by_shobai)
DRV(quiz_torimonochou)
DRV(rad_action)
DRV(raimais)
DRV(rainbow_islands)
DRV(rainbow_islands_alt)
DRV(rainbow_islands_extra)
DRV(rally_bike)
DRV(rambo_3)
DRV(rambo_3_alternate)
DRV(rastan)
DRV(rastan_american)
DRV(rastan_american_alt)
DRV(rastan_saga)
DRV(rastan_saga_2)
DRV(nastar)
DRV(nastar_warrior)
DRV(record_breaker)
DRV(record_breaker_alt)
DRV(riding_fight)
DRV(ring_rage)
DRV(rodland)
DRV(rodlandj)
DRV(rodlandjb)
DRV(rygar)
DRV(ryujin)
  DRV(sailormn)
  DRV(sailormo)
DRV(saint_dragon)
DRV(salamander_2)
DRV(same_same_same)
DRV(s1945)
DRV(s1945j)
DRV(tdragon2)
DRV(tengai)
DRV(samuraia)
DRV(selfeena)
DRV(sngkace)

  DRV(shadoww)
  DRV(shadowwa)
  DRV(ryukendn)
  DRV(wildfang)

DRV(shingen)
DRV(tshingna)
DRV(shippu_mahou_daisakusen)
  DRV(sstriker)
  DRV( kgpe )
  DRV( bbakraid )
  DRV( bbakrada )
  DRV( blkheart )
  DRV( blkhearj )
DRV(silent_dragon)
DRV(silkworm)
DRV(silkworm_set2)
DRV(soldam)
DRV(solitary_fighter)
DRV(space_gun)
DRV(space_invaders_95)
DRV(space_invaders_dx)
DRV(strahl)
DRV(super_bobble_bobble)
DRV(super_chase)
DRV(super_cup_final)
DRV(super_space_invaders_91)
DRV(superman)
DRV(syvalion)
DRV(taito_cup_final)
DRV(taito_sega_tetris)
DRV(task_force_harrier)
DRV(tatsujin_2)
DRV(tecmo_knight)
DRV(teki_paki)
DRV(terra_cresta)
DRV(terra_force)
DRV(tetrisp2)
DRV(the_lord_of_king)
DRV(the_nz_story)
DRV(the_nz_story_bootleg)
DRV(the_nz_story_extra)
DRV(thunder_dragon)
DRV(thunder_dragon_bl)
DRV(thunder_fox)
DRV(toki)
DRV(top_landing)
DRV(top_ranking_stars)
DRV(top_speed)
DRV(truxton)
DRV(tube_it)
DRV(twinhawk)
DRV(twin_qix)
DRV(ufo_robo_dangar)
DRV(under_fire)
DRV(uo_poko)
DRV(v_five)
DRV(vimana)
DRV(vimana_alt)
DRV(violence_fight)
DRV(volfied)
DRV(warrior_blade)
DRV(west_story)
DRV(whoopee)
DRV(winter_bobble)
DRV(world_grand_prix)
DRV(world_grand_prix_japanese)
DRV(wrestle_fest)
DRV(wwf_super_stars)
DRV(yuyu_no_quiz_de_gogo)
DRV(zero_wing)
DRV(zero_zone)

  // pirates
  DRV( pirates)
  DRV( genix)

  // seta (no 6502)
  DRV( thunderl )
  DRV( wits )
  DRV( blandia )
  DRV( daioh )
  DRV( drgnunit )
  DRV( eightfrc )
  DRV( gundhara )
  DRV( jjsquawk )
  DRV( msgundam )
  DRV( neobattl )
  DRV( rezon )
  DRV( stg )
  DRV( umanclub )
  DRV( wiggie )
  DRV( wrofaero )
  DRV( zingzip )
  DRV( zombraid )

  // dkong
  DRV( dkong)
  DRV( dkongjp )

  // cookbib
  DRV(cookbib)
  DRV(htchctch)
  DRV(chokchok)
  DRV(jumppop)

  // diverboy
  DRV( diverboy )

  // mugsmash
  DRV( mugsmash )

  // crospang
  DRV( crospang )

  // esd16
  DRV( multchmp )
  DRV( mchampdx )
  DRV( hedpanic )

#endif

#ifdef HAVE_6502
  // seta driver
DRV(us_classic_golf)
DRV(meta_fox)
DRV(twin_eagle)
  DRV(downtown)
  DRV(tndrcade)
  DRV(calibr50)
  DRV(arbalest)

  // matmania
  DRV(matmania)
  DRV(excthour)
#endif

#endif


