diff --git a/src/burn/drv/konami/d_mystwarr.cpp b/src/burn/drv/konami/d_mystwarr.cpp deleted file mode 100644 index 95aef9459..000000000 --- a/src/burn/drv/konami/d_mystwarr.cpp +++ /dev/null @@ -1,3897 +0,0 @@ - -/* - known bugs: - violent storm: - background layer #2 on intro (bad guy on motorcycle), bottom clipped?? - - metamorphic force - (possible) rotation/zoom layer offsets ok? circle stuff on second area part of zoom/rot? offset wrong? - background in lava level is too fast. (irq?) - - martial champ - why are the sprite positions messed up? protection? - - unkown bugs. - probably a lot! go ahead and fix it! - - to do: - fix bugs - clean up - optimize - save states -*/ - -#include "tiles_generic.h" -#include "m68000_intf.h" -#include "z80_intf.h" -#include "konamiic.h" -#include "burn_ym2151.h" -#include "k054539.h" -#include "eeprom.h" - -static UINT8 *AllMem; -static UINT8 *Drv68KROM; -static UINT8 *DrvZ80ROM; -static UINT8 *DrvGfxROM0; -static UINT8 *DrvGfxROM1; -static UINT8 *DrvGfxROM2; -static UINT8 *DrvGfxROM3; -static UINT8 *DrvGfxROMExp0; -static UINT8 *DrvGfxROMExp1; -static UINT8 *DrvGfxROMExp2; -static UINT8 *DrvSndROM; -static UINT8 *DrvEeprom; -static UINT8 *AllRam; -static UINT8 *Drv68KRAM; -static UINT8 *DrvSpriteRam; -static UINT8 *DrvZ80RAM; -static UINT8 *DrvPalRAM; -static UINT8 *DrvK053936Ctrl; -static UINT8 *DrvK053936RAM; -static UINT8 *RamEnd; -static UINT8 *MemEnd; - -static UINT16 *pMystwarrRozBitmap; - -static UINT8 *soundlatch; -static UINT8 *soundlatch2; -static UINT8 *soundlatch3; - -static UINT32 *DrvPalette; -static UINT8 DrvRecalc; - -static INT32 layer_colorbase[4]; -static INT32 sprite_colorbase = 0; -static INT32 sub1_colorbase; -static INT32 cbparam; -static INT32 oinprion; - -static UINT8 DrvJoy1[16]; -static UINT8 DrvJoy2[16]; -static UINT8 DrvJoy3[16]; -static UINT8 DrvJoy4[16]; -static UINT8 DrvJoy5[16]; -static UINT8 DrvReset; -static UINT16 DrvInputs[6]; -static UINT8 DrvDips[1]; - -static INT32 sound_nmi_enable = 0; -static UINT8 sound_control = 0; -static UINT16 control_data = 0; -static UINT8 mw_irq_control = 0; - -static INT32 nGame = 0; - -static struct BurnInputInfo MystwarrInputList[] = { - {"P1 Coin", BIT_DIGITAL, DrvJoy1 + 0, "p1 coin"}, - {"P1 Start", BIT_DIGITAL, DrvJoy3 + 7, "p1 start"}, - {"P1 Up", BIT_DIGITAL, DrvJoy3 + 2, "p1 up"}, - {"P1 Down", BIT_DIGITAL, DrvJoy3 + 3, "p1 down"}, - {"P1 Left", BIT_DIGITAL, DrvJoy3 + 0, "p1 left"}, - {"P1 Right", BIT_DIGITAL, DrvJoy3 + 1, "p1 right"}, - {"P1 Button 1", BIT_DIGITAL, DrvJoy3 + 4, "p1 fire 1"}, - {"P1 Button 2", BIT_DIGITAL, DrvJoy3 + 5, "p1 fire 2"}, - {"P1 Button 3", BIT_DIGITAL, DrvJoy3 + 6, "p1 fire 3"}, - - {"P2 Coin", BIT_DIGITAL, DrvJoy1 + 1, "p2 coin"}, - {"P2 Start", BIT_DIGITAL, DrvJoy4 + 7, "p2 start"}, - {"P2 Up", BIT_DIGITAL, DrvJoy4 + 2, "p2 up"}, - {"P2 Down", BIT_DIGITAL, DrvJoy4 + 3, "p2 down"}, - {"P2 Left", BIT_DIGITAL, DrvJoy4 + 0, "p2 left"}, - {"P2 Right", BIT_DIGITAL, DrvJoy4 + 1, "p2 right"}, - {"P2 Button 1", BIT_DIGITAL, DrvJoy4 + 4, "p2 fire 1"}, - {"P2 Button 2", BIT_DIGITAL, DrvJoy4 + 5, "p2 fire 2"}, - {"P2 Button 3", BIT_DIGITAL, DrvJoy4 + 6, "p2 fire 3"}, - - {"P3 Coin", BIT_DIGITAL, DrvJoy1 + 2, "p3 coin"}, - {"P3 Start", BIT_DIGITAL, DrvJoy3 + 15, "p3 start"}, - {"P3 Up", BIT_DIGITAL, DrvJoy3 + 10, "p3 up"}, - {"P3 Down", BIT_DIGITAL, DrvJoy3 + 11, "p3 down"}, - {"P3 Left", BIT_DIGITAL, DrvJoy3 + 8, "p3 left"}, - {"P3 Right", BIT_DIGITAL, DrvJoy3 + 9, "p3 right"}, - {"P3 Button 1", BIT_DIGITAL, DrvJoy3 + 12, "p3 fire 1"}, - {"P3 Button 2", BIT_DIGITAL, DrvJoy3 + 13, "p3 fire 2"}, - {"P3 Button 3", BIT_DIGITAL, DrvJoy3 + 14, "p3 fire 3"}, - - {"P4 Coin", BIT_DIGITAL, DrvJoy1 + 3, "p4 coin"}, - {"P4 Start", BIT_DIGITAL, DrvJoy4 + 15, "p4 start"}, - {"P4 Up", BIT_DIGITAL, DrvJoy4 + 10, "p4 up"}, - {"P4 Down", BIT_DIGITAL, DrvJoy4 + 11, "p4 down"}, - {"P4 Left", BIT_DIGITAL, DrvJoy4 + 8, "p4 left"}, - {"P4 Right", BIT_DIGITAL, DrvJoy4 + 9, "p4 right"}, - {"P4 Button 1", BIT_DIGITAL, DrvJoy4 + 12, "p4 fire 1"}, - {"P4 Button 2", BIT_DIGITAL, DrvJoy4 + 13, "p4 fire 2"}, - {"P4 Button 3", BIT_DIGITAL, DrvJoy4 + 14, "p4 fire 3"}, - - {"Reset", BIT_DIGITAL, &DrvReset, "reset"}, - {"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip"}, -}; - -STDINPUTINFO(Mystwarr) - -static struct BurnInputInfo MetamrphInputList[] = { - {"P1 Coin", BIT_DIGITAL, DrvJoy1 + 0, "p1 coin"}, - {"P1 Start", BIT_DIGITAL, DrvJoy3 + 7, "p1 start"}, - {"P1 Up", BIT_DIGITAL, DrvJoy3 + 2, "p1 up"}, - {"P1 Down", BIT_DIGITAL, DrvJoy3 + 3, "p1 down"}, - {"P1 Left", BIT_DIGITAL, DrvJoy3 + 0, "p1 left"}, - {"P1 Right", BIT_DIGITAL, DrvJoy3 + 1, "p1 right"}, - {"P1 Button 1", BIT_DIGITAL, DrvJoy3 + 4, "p1 fire 1"}, - {"P1 Button 2", BIT_DIGITAL, DrvJoy3 + 5, "p1 fire 2"}, - {"P1 Button 3", BIT_DIGITAL, DrvJoy3 + 6, "p1 fire 3"}, - - {"P2 Coin", BIT_DIGITAL, DrvJoy1 + 1, "p2 coin"}, - {"P2 Start", BIT_DIGITAL, DrvJoy4 + 7, "p2 start"}, - {"P2 Up", BIT_DIGITAL, DrvJoy4 + 2, "p2 up"}, - {"P2 Down", BIT_DIGITAL, DrvJoy4 + 3, "p2 down"}, - {"P2 Left", BIT_DIGITAL, DrvJoy4 + 0, "p2 left"}, - {"P2 Right", BIT_DIGITAL, DrvJoy4 + 1, "p2 right"}, - {"P2 Button 1", BIT_DIGITAL, DrvJoy4 + 4, "p2 fire 1"}, - {"P2 Button 2", BIT_DIGITAL, DrvJoy4 + 5, "p2 fire 2"}, - {"P2 Button 3", BIT_DIGITAL, DrvJoy4 + 6, "p2 fire 3"}, - - {"P3 Start", BIT_DIGITAL, DrvJoy3 + 15, "p3 start"}, - {"P3 Up", BIT_DIGITAL, DrvJoy3 + 10, "p3 up"}, - {"P3 Down", BIT_DIGITAL, DrvJoy3 + 11, "p3 down"}, - {"P3 Left", BIT_DIGITAL, DrvJoy3 + 8, "p3 left"}, - {"P3 Right", BIT_DIGITAL, DrvJoy3 + 9, "p3 right"}, - {"P3 Button 1", BIT_DIGITAL, DrvJoy3 + 12, "p3 fire 1"}, - {"P3 Button 2", BIT_DIGITAL, DrvJoy3 + 13, "p3 fire 2"}, - {"P3 Button 3", BIT_DIGITAL, DrvJoy3 + 14, "p3 fire 3"}, - - {"P4 Start", BIT_DIGITAL, DrvJoy4 + 15, "p4 start"}, - {"P4 Up", BIT_DIGITAL, DrvJoy4 + 10, "p4 up"}, - {"P4 Down", BIT_DIGITAL, DrvJoy4 + 11, "p4 down"}, - {"P4 Left", BIT_DIGITAL, DrvJoy4 + 8, "p4 left"}, - {"P4 Right", BIT_DIGITAL, DrvJoy4 + 9, "p4 right"}, - {"P4 Button 1", BIT_DIGITAL, DrvJoy4 + 12, "p4 fire 1"}, - {"P4 Button 2", BIT_DIGITAL, DrvJoy4 + 13, "p4 fire 2"}, - {"P4 Button 3", BIT_DIGITAL, DrvJoy4 + 14, "p4 fire 3"}, - - {"Reset", BIT_DIGITAL, &DrvReset, "reset"}, - {"Service", BIT_DIGITAL, DrvJoy1 + 4, "service"}, - {"Service", BIT_DIGITAL, DrvJoy1 + 5, "service"}, - {"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip"}, -}; - -STDINPUTINFO(Metamrph) - -static struct BurnInputInfo ViostormInputList[] = { - {"P1 Coin", BIT_DIGITAL, DrvJoy1 + 0, "p1 coin"}, - {"P1 Start", BIT_DIGITAL, DrvJoy3 + 7, "p1 start"}, - {"P1 Up", BIT_DIGITAL, DrvJoy3 + 2, "p1 up"}, - {"P1 Down", BIT_DIGITAL, DrvJoy3 + 3, "p1 down"}, - {"P1 Left", BIT_DIGITAL, DrvJoy3 + 0, "p1 left"}, - {"P1 Right", BIT_DIGITAL, DrvJoy3 + 1, "p1 right"}, - {"P1 Button 1", BIT_DIGITAL, DrvJoy3 + 4, "p1 fire 1"}, - {"P1 Button 2", BIT_DIGITAL, DrvJoy3 + 5, "p1 fire 2"}, - {"P1 Button 3", BIT_DIGITAL, DrvJoy3 + 6, "p1 fire 3"}, - - {"P2 Coin", BIT_DIGITAL, DrvJoy1 + 1, "p2 coin"}, - {"P2 Start", BIT_DIGITAL, DrvJoy4 + 7, "p2 start"}, - {"P2 Up", BIT_DIGITAL, DrvJoy4 + 2, "p2 up"}, - {"P2 Down", BIT_DIGITAL, DrvJoy4 + 3, "p2 down"}, - {"P2 Left", BIT_DIGITAL, DrvJoy4 + 0, "p2 left"}, - {"P2 Right", BIT_DIGITAL, DrvJoy4 + 1, "p2 right"}, - {"P2 Button 1", BIT_DIGITAL, DrvJoy4 + 4, "p2 fire 1"}, - {"P2 Button 2", BIT_DIGITAL, DrvJoy4 + 5, "p2 fire 2"}, - {"P2 Button 3", BIT_DIGITAL, DrvJoy4 + 6, "p2 fire 3"}, - - {"P3 Start", BIT_DIGITAL, DrvJoy3 + 15, "p3 start"}, - {"P3 Up", BIT_DIGITAL, DrvJoy3 + 10, "p3 up"}, - {"P3 Down", BIT_DIGITAL, DrvJoy3 + 11, "p3 down"}, - {"P3 Left", BIT_DIGITAL, DrvJoy3 + 8, "p3 left"}, - {"P3 Right", BIT_DIGITAL, DrvJoy3 + 9, "p3 right"}, - {"P3 Button 1", BIT_DIGITAL, DrvJoy3 + 12, "p3 fire 1"}, - {"P3 Button 2", BIT_DIGITAL, DrvJoy3 + 13, "p3 fire 2"}, - {"P3 Button 3", BIT_DIGITAL, DrvJoy3 + 14, "p3 fire 3"}, - - {"P4 Start", BIT_DIGITAL, DrvJoy4 + 15, "p4 start"}, - {"P4 Up", BIT_DIGITAL, DrvJoy4 + 10, "p4 up"}, - {"P4 Down", BIT_DIGITAL, DrvJoy4 + 11, "p4 down"}, - {"P4 Left", BIT_DIGITAL, DrvJoy4 + 8, "p4 left"}, - {"P4 Right", BIT_DIGITAL, DrvJoy4 + 9, "p4 right"}, - {"P4 Button 1", BIT_DIGITAL, DrvJoy4 + 12, "p4 fire 1"}, - {"P4 Button 2", BIT_DIGITAL, DrvJoy4 + 13, "p4 fire 2"}, - {"P4 Button 3", BIT_DIGITAL, DrvJoy4 + 14, "p4 fire 3"}, - - {"Reset", BIT_DIGITAL, &DrvReset, "reset"}, - {"Service", BIT_DIGITAL, DrvJoy1 + 4, "service"}, - {"Service", BIT_DIGITAL, DrvJoy1 + 5, "service"}, - {"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip"}, -}; - -STDINPUTINFO(Viostorm) - -static struct BurnInputInfo DadandrnInputList[] = { - {"P1 Coin", BIT_DIGITAL, DrvJoy1 + 8, "p1 coin"}, - {"P1 Start", BIT_DIGITAL, DrvJoy1 + 7, "p1 start"}, - {"P1 Up", BIT_DIGITAL, DrvJoy1 + 2, "p1 up"}, - {"P1 Down", BIT_DIGITAL, DrvJoy1 + 3, "p1 down"}, - {"P1 Left", BIT_DIGITAL, DrvJoy1 + 0, "p1 left"}, - {"P1 Right", BIT_DIGITAL, DrvJoy1 + 1, "p1 right"}, - {"P1 Button 1", BIT_DIGITAL, DrvJoy1 + 4, "p1 fire 1"}, - {"P1 Button 2", BIT_DIGITAL, DrvJoy1 + 5, "p1 fire 2"}, - {"P1 Button 3", BIT_DIGITAL, DrvJoy1 + 6, "p1 fire 3"}, - - {"P2 Coin", BIT_DIGITAL, DrvJoy1 + 9, "p2 coin"}, - {"P2 Start", BIT_DIGITAL, DrvJoy3 + 7, "p2 start"}, - {"P2 Up", BIT_DIGITAL, DrvJoy3 + 2, "p2 up"}, - {"P2 Down", BIT_DIGITAL, DrvJoy3 + 3, "p2 down"}, - {"P2 Left", BIT_DIGITAL, DrvJoy3 + 0, "p2 left"}, - {"P2 Right", BIT_DIGITAL, DrvJoy3 + 1, "p2 right"}, - {"P2 Button 1", BIT_DIGITAL, DrvJoy3 + 4, "p2 fire 1"}, - {"P2 Button 2", BIT_DIGITAL, DrvJoy3 + 5, "p2 fire 2"}, - {"P2 Button 3", BIT_DIGITAL, DrvJoy3 + 6, "p2 fire 3"}, - - {"P3 Start", BIT_DIGITAL, DrvJoy4 + 7, "p3 start"}, - {"P3 Up", BIT_DIGITAL, DrvJoy4 + 2, "p3 up"}, - {"P3 Down", BIT_DIGITAL, DrvJoy4 + 3, "p3 down"}, - {"P3 Left", BIT_DIGITAL, DrvJoy4 + 0, "p3 left"}, - {"P3 Right", BIT_DIGITAL, DrvJoy4 + 1, "p3 right"}, - {"P3 Button 1", BIT_DIGITAL, DrvJoy4 + 4, "p3 fire 1"}, - {"P3 Button 2", BIT_DIGITAL, DrvJoy4 + 5, "p3 fire 2"}, - {"P3 Button 3", BIT_DIGITAL, DrvJoy4 + 6, "p3 fire 3"}, - - {"P4 Start", BIT_DIGITAL, DrvJoy5 + 7, "p4 start"}, - {"P4 Up", BIT_DIGITAL, DrvJoy5 + 2, "p4 up"}, - {"P4 Down", BIT_DIGITAL, DrvJoy5 + 3, "p4 down"}, - {"P4 Left", BIT_DIGITAL, DrvJoy5 + 0, "p4 left"}, - {"P4 Right", BIT_DIGITAL, DrvJoy5 + 1, "p4 right"}, - {"P4 Button 1", BIT_DIGITAL, DrvJoy5 + 4, "p4 fire 1"}, - {"P4 Button 2", BIT_DIGITAL, DrvJoy5 + 5, "p4 fire 2"}, - {"P4 Button 3", BIT_DIGITAL, DrvJoy5 + 6, "p4 fire 3"}, - - {"Reset", BIT_DIGITAL, &DrvReset, "reset"}, - {"Service", BIT_DIGITAL, DrvJoy1 + 12, "service"}, - {"Service", BIT_DIGITAL, DrvJoy1 + 13, "service"}, - {"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip"}, -}; - -STDINPUTINFO(Dadandrn) - -static struct BurnInputInfo MartchmpInputList[] = { - {"P1 Coin", BIT_DIGITAL, DrvJoy1 + 0, "p1 coin"}, - {"P1 Start", BIT_DIGITAL, DrvJoy3 + 7, "p1 start"}, - {"P1 Up", BIT_DIGITAL, DrvJoy3 + 2, "p1 up"}, - {"P1 Down", BIT_DIGITAL, DrvJoy3 + 3, "p1 down"}, - {"P1 Left", BIT_DIGITAL, DrvJoy3 + 0, "p1 left"}, - {"P1 Right", BIT_DIGITAL, DrvJoy3 + 1, "p1 right"}, - {"P1 Button 1", BIT_DIGITAL, DrvJoy3 + 4, "p1 fire 1"}, - {"P1 Button 2", BIT_DIGITAL, DrvJoy3 + 5, "p1 fire 2"}, - {"P1 Button 3", BIT_DIGITAL, DrvJoy3 + 6, "p1 fire 3"}, - - {"P2 Coin", BIT_DIGITAL, DrvJoy1 + 1, "p2 coin"}, - {"P2 Start", BIT_DIGITAL, DrvJoy4 + 7, "p2 start"}, - {"P2 Up", BIT_DIGITAL, DrvJoy4 + 2, "p2 up"}, - {"P2 Down", BIT_DIGITAL, DrvJoy4 + 3, "p2 down"}, - {"P2 Left", BIT_DIGITAL, DrvJoy4 + 0, "p2 left"}, - {"P2 Right", BIT_DIGITAL, DrvJoy4 + 1, "p2 right"}, - {"P2 Button 1", BIT_DIGITAL, DrvJoy4 + 4, "p2 fire 1"}, - {"P2 Button 2", BIT_DIGITAL, DrvJoy4 + 5, "p2 fire 2"}, - {"P2 Button 3", BIT_DIGITAL, DrvJoy4 + 6, "p2 fire 3"}, - - {"P3 Start", BIT_DIGITAL, DrvJoy3 + 15, "p3 start"}, - {"P3 Up", BIT_DIGITAL, DrvJoy3 + 10, "p3 up"}, - {"P3 Down", BIT_DIGITAL, DrvJoy3 + 11, "p3 down"}, - {"P3 Left", BIT_DIGITAL, DrvJoy3 + 8, "p3 left"}, - {"P3 Right", BIT_DIGITAL, DrvJoy3 + 9, "p3 right"}, - {"P3 Button 1", BIT_DIGITAL, DrvJoy3 + 12, "p3 fire 1"}, - {"P3 Button 2", BIT_DIGITAL, DrvJoy3 + 13, "p3 fire 2"}, - {"P3 Button 3", BIT_DIGITAL, DrvJoy3 + 14, "p3 fire 3"}, - - {"P4 Start", BIT_DIGITAL, DrvJoy4 + 15, "p4 start"}, - {"P4 Up", BIT_DIGITAL, DrvJoy4 + 10, "p4 up"}, - {"P4 Down", BIT_DIGITAL, DrvJoy4 + 11, "p4 down"}, - {"P4 Left", BIT_DIGITAL, DrvJoy4 + 8, "p4 left"}, - {"P4 Right", BIT_DIGITAL, DrvJoy4 + 9, "p4 right"}, - {"P4 Button 1", BIT_DIGITAL, DrvJoy4 + 12, "p4 fire 1"}, - {"P4 Button 2", BIT_DIGITAL, DrvJoy4 + 13, "p4 fire 2"}, - {"P4 Button 3", BIT_DIGITAL, DrvJoy4 + 14, "p4 fire 3"}, - - {"Reset", BIT_DIGITAL, &DrvReset, "reset"}, - {"Service", BIT_DIGITAL, DrvJoy1 + 4, "service"}, - {"Service", BIT_DIGITAL, DrvJoy1 + 5, "service"}, - {"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip"}, -}; - -STDINPUTINFO(Martchmp) - -static struct BurnDIPInfo MystwarrDIPList[]= -{ - {0x25, 0xff, 0xff, 0xe4, NULL }, - - {0 , 0xfe, 0 , 2, "Service Mode" }, - {0x25, 0x01, 0x04, 0x04, "Off" }, - {0x25, 0x01, 0x04, 0x00, "On" }, - - {0 , 0xfe, 0 , 2, "Sound Output" }, - {0x25, 0x01, 0x10, 0x10, "Mono" }, - {0x25, 0x01, 0x10, 0x00, "Stereo" }, - - {0 , 0xfe, 0 , 2, "Coin Mechanism" }, - {0x25, 0x01, 0x20, 0x20, "Common" }, - {0x25, 0x01, 0x20, 0x00, "Independent" }, - - {0 , 0xfe, 0 , 2, "Number of Players" }, - {0x25, 0x01, 0x40, 0x00, "4" }, - {0x25, 0x01, 0x40, 0x40, "2" }, -}; - -STDDIPINFO(Mystwarr) - -static struct BurnDIPInfo MetamrphDIPList[]= -{ - {0x25, 0xff, 0xff, 0xe8, NULL }, - - {0 , 0xfe, 0 , 2, "Service Mode" }, - {0x25, 0x01, 0x08, 0x08, "Off" }, - {0x25, 0x01, 0x08, 0x00, "On" }, - - {0 , 0xfe, 0 , 2, "Sound Output" }, - {0x25, 0x01, 0x10, 0x10, "Mono" }, - {0x25, 0x01, 0x10, 0x00, "Stereo" }, - - {0 , 0xfe, 0 , 2, "Coin Mechanism" }, - {0x25, 0x01, 0x20, 0x20, "Common" }, - {0x25, 0x01, 0x20, 0x00, "Independent" }, - - {0 , 0xfe, 0 , 2, "Number of Players" }, - {0x25, 0x01, 0x40, 0x00, "4" }, - {0x25, 0x01, 0x40, 0x40, "2" }, - - {0 , 0xfe, 0 , 2, "Continuous Energy Increment" }, - {0x25, 0x01, 0x80, 0x80, "No" }, - {0x25, 0x01, 0x80, 0x00, "Yes" }, -}; - -STDDIPINFO(Metamrph) - - -static struct BurnDIPInfo ViostormDIPList[]= -{ - {0x25, 0xff, 0xff, 0xe8, NULL }, - - {0 , 0xfe, 0 , 2, "Service Mode" }, - {0x25, 0x01, 0x08, 0x08, "Off" }, - {0x25, 0x01, 0x08, 0x00, "On" }, - - {0 , 0xfe, 0 , 2, "Sound Output" }, - {0x25, 0x01, 0x10, 0x10, "Mono" }, - {0x25, 0x01, 0x10, 0x00, "Stereo" }, - - {0 , 0xfe, 0 , 2, "Flip Screen" }, - {0x25, 0x01, 0x20, 0x20, "Off" }, - {0x25, 0x01, 0x20, 0x00, "On" }, - - {0 , 0xfe, 0 , 2, "Coin Mechanism" }, - {0x25, 0x01, 0x40, 0x40, "Common" }, - {0x25, 0x01, 0x40, 0x00, "Independent" }, - - {0 , 0xfe, 0 , 2, "Number of Players" }, - {0x25, 0x01, 0x80, 0x00, "3" }, - {0x25, 0x01, 0x80, 0x80, "2" }, -}; - -STDDIPINFO(Viostorm) - -static struct BurnDIPInfo DadandrnDIPList[]= -{ - {0x25, 0xff, 0xff, 0xe8, NULL }, - - {0 , 0xfe, 0 , 2, "Service Mode" }, - {0x25, 0x01, 0x08, 0x08, "Off" }, - {0x25, 0x01, 0x08, 0x00, "On" }, - - {0 , 0xfe, 0 , 2, "Sound Output" }, - {0x25, 0x01, 0x10, 0x10, "Mono" }, - {0x25, 0x01, 0x10, 0x00, "Stereo" }, - - {0 , 0xfe, 0 , 2, "Flip Screen" }, - {0x25, 0x01, 0x20, 0x20, "Off" }, - {0x25, 0x01, 0x20, 0x00, "On" }, -}; - -STDDIPINFO(Dadandrn) - -static struct BurnDIPInfo MartchmpDIPList[]= -{ - {0x25, 0xff, 0xff, 0xe4, NULL }, - - {0 , 0xfe, 0 , 2, "Service Mode" }, - {0x25, 0x01, 0x04, 0x04, "Off" }, - {0x25, 0x01, 0x04, 0x00, "On" }, - - {0 , 0xfe, 0 , 2, "Sound Output" }, - {0x25, 0x01, 0x10, 0x10, "Mono" }, - {0x25, 0x01, 0x10, 0x00, "Stereo" }, - - {0 , 0xfe, 0 , 2, "Flip Screen" }, - {0x25, 0x01, 0x20, 0x20, "Off" }, - {0x25, 0x01, 0x20, 0x00, "On" }, -}; - -STDDIPINFO(Martchmp) - -static void __fastcall mystwarr_main_write_word(UINT32 address, UINT16 data) -{ - if ((address & 0xff0000) == 0x400000) { - if ((address & 0xf0) == 0) - K053247WriteWord(((address & 0x000e) | ((address & 0xff00) >> 4)), data); - - *((UINT16*)(DrvSpriteRam + (address & 0xfffe))) = data; - return; - } - - if ((address & 0xffff00) == 0x480000) { - K055555WordWrite(address, data >> 8); - return; - } - - if ((address & 0xfffff0) == 0x482010) { - K053247WriteRegsWord(address, data); - return; - } - - if ((address & 0xfffff8) == 0x484000) { - K053246Write((address & 0x06) + 0, data >> 8); - K053246Write((address & 0x06) + 1, data&0xff); - return; - } - - if ((address & 0xffffe0) == 0x48a000) { - K054338WriteWord(address, data); - return; - } - - if ((address & 0xffffc0) == 0x48c000) { - K056832WordWrite(address & 0x3e, data); - return; - } - - if ((address & 0xffff00) == 0x49c000) { - // k053252 - return; - } - - if ((address & 0xffc000) == 0x600000) { - K056832RamWriteWord(address, data); - return; - } - - switch (address) - { - case 0x49e004: // rom read enable - K056832WritebRegsWord(address & 0x0f, data); - break; - } -} - -static void __fastcall mystwarr_main_write_byte(UINT32 address, UINT8 data) -{ - if ((address & 0xff0000) == 0x400000) { - if ((address & 0xf0) == 0) - K053247Write(((address & 0x000e) | ((address & 0xff00) >> 4) | (address & 1))^1, data); - - DrvSpriteRam[(address & 0xffff)^1] = data; - return; - } - - if ((address & 0xffff00) == 0x480000) { - K055555ByteWrite(address, data); - return; - } - - if ((address & 0xfffff0) == 0x482010) { - K053247WriteRegsByte(address, data); - return; - } - - if ((address & 0xfffff8) == 0x484000) { - K053246Write((address & 0x7)^0, data); - return; - } - - if ((address & 0xffffe0) == 0x48a000) { - K054338WriteByte(address, data); - return; - } - - if ((address & 0xffffc0) == 0x48c000) { - K056832ByteWrite(address, data); - return; - } - - if ((address & 0xffff00) == 0x49c000) { - // k053252 - return; - } - - if ((address & 0xffc000) == 0x600000) { - K056832RamWriteByte(address, data); - return; - } - - switch (address) - { - case 0x490000: - EEPROMWrite((data & 0x04), (data & 0x02), (data & 0x01)); - return; - - case 0x492000: - return; // watchdog - - case 0x49800c: - case 0x49800d: - *soundlatch = data; - return; - - case 0x49800e: - case 0x49800f: - *soundlatch2 = data; - return; - - case 0x49a000: - case 0x49a001: - ZetSetIRQLine(0, ZET_IRQSTATUS_ACK); - return; - - case 0x49e004: - case 0x49e005: // rom read enable - K056832WritebRegsByte(address & 0x0f, data); - break; - - case 0x49e007: - mw_irq_control = data; // correct! - return; - } -} - -static UINT16 __fastcall mystwarr_main_read_word(UINT32 address) -{ - if ((address & 0xffc000) == 0x600000) { - return K056832RamReadWord(address); - } - - switch (address) - { - case 0x494000: - return DrvInputs[2]; - - case 0x494002: - return DrvInputs[3]; - - case 0x496000: - return DrvInputs[0] & 0xff; - - case 0x496002: - return (DrvInputs[1] & 0xf4) | 2 | (EEPROMRead() ? 0x01 : 0); - } - - return 0; -} - - -static UINT8 __fastcall mystwarr_main_read_byte(UINT32 address) -{ - if ((address & 0xffc000) == 0x600000) { - return K056832RamReadByte(address); - } - - switch (address) - { - case 0x494000: - return DrvInputs[2] >> 8; - - case 0x494001: - return DrvInputs[2]; - - case 0x494002: - return DrvInputs[3] >> 8; - - case 0x494003: - return DrvInputs[3]; - - case 0x496000: - return DrvInputs[0] >> 8; - - case 0x496001: - return DrvInputs[0]; - - case 0x496002: - return DrvInputs[1] >> 8; - - case 0x496003: - return ((DrvInputs[1]) & 0xf4) | 2 | (EEPROMRead() ? 0x01 : 0); - - case 0x498015: - if ((*soundlatch3 & 0xf) == 0xe) return *soundlatch3 | 1; - return *soundlatch3; - } - - return 0; -} - - -//-------------------------------------------------------------------------------------------------------------- - - -static UINT16 prot_data[0x20]; - -static UINT16 K055550_word_read(INT32 offset) -{ - return prot_data[(offset/2)&0x1f]; -} - -static void K055550_word_write(INT32 offset, UINT16 data, UINT16 mask) -{ - offset = (offset & 0x3e) / 2; - - UINT32 adr, bsize, count, i, lim; - int src, tgt, srcend, tgtend, skip, cx1, sx1, wx1, cy1, sy1, wy1, cz1, sz1, wz1, c2, s2, w2; - int dx, dy, angle; - - if (offset == 0 && (mask & 0x00ff)) - { - if (mask == 0xffff) data >>= 8; - - switch (data) - { - case 0x97: // memset() (Dadandarn at 0x639dc) - case 0x9f: // memset() (Violent Storm at 0x989c) - adr = (prot_data[7] << 16) | prot_data[8]; - bsize = (prot_data[10] << 16) | prot_data[11]; - count = (prot_data[0] & 0xff) + 1; - - lim = adr+bsize*count; - - for(i=adr; i>(8-1); // words to skip in each entry to reach the "hit list" - adr = prot_data[2]<<16 | prot_data[3]; // where the table is located - bsize = prot_data[5]<<16 | prot_data[6]; // object entry size in bytes - - srcend = adr + bsize * count; - tgtend = srcend + bsize; - - // let's hope GCC will inline the mem24bew calls - for (src=adr; src=wx1+w2) continue; // X rejection - - c2 = (short)SekReadWord(tgt + 6); - s2 = (short)SekReadWord(tgt + 8); - w2 = (short)SekReadWord(tgt +10); - if (abs((cy1+sy1)-(c2+s2))>=wy1+w2) continue; // Y rejection - - c2 = (short)SekReadWord(tgt +12); - s2 = (short)SekReadWord(tgt +14); - w2 = (short)SekReadWord(tgt +16); - if (abs((cz1+sz1)-(c2+s2))>=wz1+w2) continue; // Z rejection - - SekWriteByte(i, 0x80); // collision confirmed - } - } - break; - - case 0xc0: // calculate object "homes-in" vector (Violent Storm at 0x03da9e) - dx = (short)prot_data[0xc]; - dy = (short)prot_data[0xd]; - - // it's not necessary to use lookup tables because Violent Storm - // only calls the service once per enemy per frame. - if (dx) - { - if (dy) - { - angle = (atan((double)dy / dx) * 128.0) / M_PI; - if (dx < 0) angle += 128; - i = (angle - 0x40) & 0xff; - } - else - i = (dx > 0) ? 0xc0 : 0x40; - } - else - if (dy > 0) i = 0; - else - if (dy < 0) i = 0x80; - else - i = rand() & 0xff; // vector direction indeterminate - - prot_data[0x10] = i; - break; - } - } -} - -static void __fastcall metamrph_main_write_word(UINT32 address, UINT16 data) -{ - if ((address & 0xfff000) == 0x210000) { - K053247Write(address & 0xffe, data | (1<<16)); - return; - } - - if ((address & 0xfffff8) == 0x240000) { - K053246Write((address & 0x06) + 0, data >> 8); - K053246Write((address & 0x06) + 1, data&0xff); - return; - } - - if ((address & 0xfffff0) == 0x244010) { - K053247WriteRegsWord(address, data); - return; - } - - if ((address & 0xfffff0) == 0x250000) { - K053250RegWrite(0, address, data); - return; - } - - if ((address & 0xffffe0) == 0x254000) { - K054338WriteWord(address, data); - return; - } - - if ((address & 0xffff00) == 0x258000) { - // bprintf (0, _T("WW %5.5x, %2.2x\n"), address, data); - K055555WordWrite(address, data >> 8); - return; - } - - if ((address & 0xffffe0) == 0x260000) { - // bprintf (0, _T("k053252 word wo: %5.5x, %4.4x\n"), address, data); - return; - } - - if ((address & 0xfffff8) == 0x26c000) { - // AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w) - return; - } - - if ((address & 0xffffc0) == 0x270000) { - K056832WordWrite(address & 0x3e, data); - return; - } - - if ((address & 0xffc000) == 0x300000) { - K056832RamWriteWord(address & 0x1fff, data); - return; - } - - if ((address & 0xffffc0) == 0x25c000) { - prot_data[(address & 0x3f)/2] = data; - K055550_word_write(address, data, 0xffff); - return; - } - - switch (address) - { - case 0x264000: - case 0x264001: - ZetSetIRQLine(0, ZET_IRQSTATUS_ACK); - return; - - case 0x26800c: - case 0x26800d: - *soundlatch = data; - return; - - case 0x26800e: - case 0x26800f: - *soundlatch2 = data; - return; - - case 0x27c000: - case 0x27c001: - EEPROMWrite((data & 0x04), (data & 0x02), (data & 0x01)); - return; - } -} - -static void __fastcall metamrph_main_write_byte(UINT32 address, UINT8 data) -{ - if ((address & 0xfff000) == 0x210000) { - K053247Write((address & 0xfff) ^ 1, data); - return; - } - - if ((address & 0xfffff8) == 0x240000) { - K053246Write((address & 0x07) ^ 0, data); - return; - } - - if ((address & 0xfffff0) == 0x244010) { - K053247WriteRegsByte(address, data); - return; - } - - if ((address & 0xfffff0) == 0x250000) { - K053250RegWrite(0, address, data); - return; - } - - if ((address & 0xffffe0) == 0x254000) { - K054338WriteByte(address, data); - return; - } - - if ((address & 0xffff00) == 0x258000) { - K055555ByteWrite(address, data); - return; - } - - if ((address & 0xffffe0) == 0x260000) { - //bprintf (0, _T("k053252 byte wo: %5.5x, %4.4x\n"), address, data); - return; - } - - if ((address & 0xfffff8) == 0x26c000) { - // AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,b_word_w) - return; - } - - if ((address & 0xffffc0) == 0x270000) { - K056832ByteWrite(address & 0x3f, data); - return; - } - - if ((address & 0xffc000) == 0x300000) { - K056832RamWriteByte(address & 0x1fff, data); - return; - } - - if ((address & 0xffffc0) == 0x25c000) { - UINT8 *prot = (UINT8*)prot_data; - prot[(address & 0x3f) ^ 1] = data; - K055550_word_write(address, data, 0xff << ((address & 1) * 8)); - return; - } - - switch (address) - { - case 0x264000: - case 0x264001: - ZetSetIRQLine(0, ZET_IRQSTATUS_ACK); - return; - - case 0x26800c: - case 0x26800d: - *soundlatch = data; - return; - - case 0x26800e: - case 0x26800f: - *soundlatch2 = data; - return; - - case 0x27c000: - case 0x27c001: - EEPROMWrite((data & 0x04), (data & 0x02), (data & 0x01)); - return; - } -} - -static UINT16 __fastcall metamrph_main_read_word(UINT32 address) -{ - if ((address & 0xfff000) == 0x210000) { - return K053247Read((address & 0xffe)|1)*256+K053247Read((address & 0xffe)|0); - } - - if ((address & 0xfffff0) == 0x250000) { - return K053250RegRead(0, address); - } - - if ((address & 0xffffe0) == 0x260000) { - // bprintf (0, _T("k053252 word ro: %5.5x\n"), address); - return 0; - } - - if ((address & 0xffc000) == 0x300000) { - return K056832RamReadWord(address & 0x1fff); - } - - if ((address & 0xffe000) == 0x310000) { - return 0; // mw_rom_word_r - } - - if ((address & 0xffe000) == 0x320000) { - return K053250RomRead(0, address); - } - - if ((address & 0xffffc0) == 0x25c000) { - return K055550_word_read(address); - } - - switch (address) - { - case 0x274000: - case 0x274001: - return DrvInputs[2]; - - case 0x274002: - case 0x274003: - return DrvInputs[3]; - - case 0x278000: - case 0x278001: - return DrvInputs[0]; - - case 0x278002: - case 0x278003: - return (DrvInputs[1] & 0xfff8) | 2 | (EEPROMRead() ? 0x0001 : 0); - } - - return 0; -} - -static UINT8 __fastcall metamrph_main_read_byte(UINT32 address) -{ - if ((address & 0xfff000) == 0x210000) { - return K053247Read((address & 0xfff)^1); - } - - if ((address & 0xfffff0) == 0x250000) { - return K053250RegRead(0, address) >> ((~address & 1) * 8); - } - - if ((address & 0xffffe0) == 0x260000) { - bprintf (0, _T("k053252 word ro: %5.5x\n"), address); - return 0; - } - - if ((address & 0xffc000) == 0x300000) { - return K056832RamReadByte(address & 0x1fff); - } - - if ((address & 0xffe000) == 0x310000) { - return 0; // mw_rom_word_r - } - - if ((address & 0xffe000) == 0x320000) { - return K053250RomRead(0, address) >> ((~address & 1) * 8); - } - - if ((address & 0xffffc0) == 0x25c000) { - return K055550_word_read(address) >> ((~address & 1) * 8); - } - - switch (address) - { - case 0x268014: - case 0x268015: - if ((*soundlatch3 & 0xf)==0xe) return *soundlatch3|1; - return *soundlatch3; - - case 0x274000: - return DrvInputs[2] >> 8; - - case 0x274001: - return DrvInputs[2]; - - case 0x274002: - return DrvInputs[3] >> 8; - - case 0x274003: - return DrvInputs[3]; - - case 0x278000: - return DrvInputs[0] >> 8; - - case 0x278001: - return DrvInputs[0]; - - case 0x278002: - return DrvInputs[1] >> 8; - - case 0x278003: - return (DrvInputs[1] & 0xfff8) | 2 | (EEPROMRead() ? 0x01 : 0); - } - - return 0; -} - -//-------------------------------------------------------------------------------------------------------------- - -static void K053990_word_write(INT32 offset, UINT16 data, UINT16 mask) -{ - offset = (offset & 0x3e) / 2; - - int src_addr, src_count, src_skip; - int dst_addr, /*dst_count,*/ dst_skip; - int mod_addr, mod_count, mod_skip, mod_offs; - int mode, i, element_size = 1; - UINT16 mod_val, mod_data; - - if (offset == 0x0c && (mask & 0x00ff)) - { - mode = ((prot_data[0x0d]<<8) & 0xff00) | (prot_data[0x0f] & 0xff); - - switch (mode) - { - case 0xffff: // word copy - element_size = 2; - case 0xff00: // byte copy - src_addr = prot_data[0x0]; - src_addr |= prot_data[0x1]<<16 & 0xff0000; - dst_addr = prot_data[0x2]; - dst_addr |= prot_data[0x3]<<16 & 0xff0000; - src_count = prot_data[0x8]>>8; - //dst_count = prot_data[0x9]>>8; - src_skip = prot_data[0xa] & 0xff; - dst_skip = prot_data[0xb] & 0xff; - - if ((prot_data[0x8] & 0xff) == 2) src_count <<= 1; - src_skip += element_size; - dst_skip += element_size; - - if (element_size == 1) - for (i=src_count; i; i--) - { - SekWriteByte(dst_addr, SekReadByte(src_addr)); - src_addr += src_skip; - dst_addr += dst_skip; - } - else for (i=src_count; i; i--) - { - SekWriteWord(dst_addr, SekReadWord(src_addr)); - src_addr += src_skip; - dst_addr += dst_skip; - } - break; - - case 0x00ff: // sprite list modifier - src_addr = prot_data[0x0]; - src_addr |= prot_data[0x1]<<16 & 0xff0000; - src_skip = prot_data[0x1]>>8; - dst_addr = prot_data[0x2]; - dst_addr |= prot_data[0x3]<<16 & 0xff0000; - dst_skip = prot_data[0x3]>>8; - mod_addr = prot_data[0x4]; - mod_addr |= prot_data[0x5]<<16 & 0xff0000; - mod_skip = prot_data[0x5]>>8; - mod_offs = prot_data[0x8] & 0xff; - mod_offs<<= 1; - mod_count = 0x100; - - src_addr += mod_offs; - dst_addr += mod_offs; - - for (i=mod_count; i; i--) - { - mod_val = SekReadWord(mod_addr); - mod_addr += mod_skip; - - mod_data = SekReadWord(src_addr); - src_addr += src_skip; - - mod_data += mod_val; - - SekWriteWord(dst_addr, mod_data); - dst_addr += dst_skip; - } - break; - } - } -} - -//-------------------------------------------------------------------------------------------------------------- - -static void __fastcall martchmp_main_write_word(UINT32 address, UINT16 data) -{ - if ((address & 0xffff00) == 0x400000) { - K055555WordWrite(address, data >> 8); - return; - } - - if ((address & 0xfffff0) == 0x402010) { - K053247WriteRegsWord(address, data); - return; - } - - if ((address & 0xfffff8) == 0x404000) { - K053246Write((address & 0x06) + 0, data >> 8); - K053246Write((address & 0x06) + 1, data&0xff); - return; - } - - if ((address & 0xffffe0) == 0x40a000) { - K054338WriteWord(address, data); - return; - } - - if ((address & 0xffffc0) == 0x40c000) { - K056832WordWrite(address & 0x3e, data); - return; - } - - if ((address & 0xffffc0) == 0x40e000) { - prot_data[(address & 0x3e)/2] = data; - K053990_word_write(address, data, 0xffff); - return; - } - - if ((address & 0xffffe0) == 0x41c000) { - // k053252 - return; - } - - if ((address & 0xfffff8) == 0x41e000) { - // k056832 b_word_w - return; - } - - if ((address & 0xffc000) == 0x480000) { - if ((address & 0x30) == 0) - K053247WriteWord(((address & 0x000e) | ((address & 0x3FC0) >> 2)), data); - - *((UINT16*)(DrvSpriteRam + (address & 0x3ffe))) = data; - return; - } - - if ((address & 0xffc000) == 0x680000) { - K056832RamWriteWord(address & 0x1fff, data); - return; - } -} - -static void __fastcall martchmp_main_write_byte(UINT32 address, UINT8 data) -{ - if ((address & 0xffff00) == 0x400000) { - K055555ByteWrite(address, data); - return; - } - - if ((address & 0xfffff0) == 0x402010) { - K053247WriteRegsByte(address, data); - return; - } - - if ((address & 0xfffff8) == 0x404000) { - K053246Write((address & 0x07) ^ 0, data); - return; - } - - if ((address & 0xffffe0) == 0x40a000) { - K054338WriteByte(address, data); - return; - } - - if ((address & 0xffffc0) == 0x40c000) { - K056832ByteWrite(address & 0x3f, data); - return; - } - - if ((address & 0xffffc0) == 0x40e000) { - UINT8 *prot = (UINT8*)prot_data; - prot[(address & 0x3f) ^ 1] = data; - K053990_word_write(address, data, 0xff << ((address & 1) * 8)); - return; - } - - if ((address & 0xffffe0) == 0x41c000) { - // k053252 - return; - } - - if ((address & 0xfffff8) == 0x41e000) { - // k056832 b_word_w - return; - } - - if ((address & 0xffc000) == 0x480000) { - if ((address & 0x30) == 0) - K053247Write(((address & 0x000e) | ((address & 0x3FC0) >> 2) | (address & 1))^1, data); - - DrvSpriteRam[(address & 0x3fff)^1] = data; - return; - } - - if ((address & 0xffc000) == 0x680000) { - K056832RamWriteByte(address & 0x1fff, data); - return; - } - - switch (address) - { - case 0x410000: - EEPROMWrite((data & 0x04), (data & 0x02), (data & 0x01)); - return; - - case 0x412000: - mw_irq_control = data; - return; - - case 0x412001: - K053246_set_OBJCHA_line(data & 0x04); - return; - - case 0x41800c: - case 0x41800d: - *soundlatch = data; - return; - - case 0x41800e: - case 0x41800f: - *soundlatch2 = data; - return; - - case 0x41a000: - case 0x41a001: - ZetSetIRQLine(0, ZET_IRQSTATUS_ACK); - return; - } -} - -static UINT16 __fastcall martchmp_main_read_word(UINT32 address) -{ - if ((address & 0xffc000) == 0x680000) { - return K056832RamReadWord(address); - } - - switch (address) - { - case 0x414000: - return DrvInputs[2]; - - case 0x414002: - return DrvInputs[3]; - - case 0x416000: - return DrvInputs[0] & 0xff; - - case 0x416002: - return (DrvInputs[1] & 0xf4) | 2 | (EEPROMRead() ? 0x01 : 0); - } - - return 0; -} - -static UINT8 __fastcall martchmp_main_read_byte(UINT32 address) -{ - if ((address & 0xffc000) == 0x680000) { - return K056832RamReadByte(address); - } - - switch (address) - { - case 0x412000: - return mw_irq_control; - - case 0x414000: - return DrvInputs[2] >> 8; - - case 0x414001: - return DrvInputs[2]; - - case 0x414002: - return DrvInputs[3] >> 8; - - case 0x414003: - return DrvInputs[3]; - - case 0x416000: - return DrvInputs[0] >> 8; - - case 0x416001: - return DrvInputs[0]; - - case 0x416002: - return DrvInputs[1] >> 8; - - case 0x416003: - return ((DrvInputs[1]) & 0xf4) | 2 | (EEPROMRead() ? 0x01 : 0); - - case 0x418015: - if ((*soundlatch3 & 0xf) == 0xe) return *soundlatch3 | 1; - return *soundlatch3; - } - - return 0; -} - -//-------------------------------------------------------------------------------------------------------------- - -static void __fastcall dadandrn_main_write_word(UINT32 address, UINT16 data) -{ - if ((address & 0xff0000) == 0x400000) { - if ((address & 0xf0) == 0) - K053247WriteWord(((address & 0x000e) | ((address & 0xff00) >> 4)), data); - - *((UINT16*)(DrvSpriteRam + (address & 0xfffe))) = data; - return; - } - - if ((address & 0xffc000) == 0x410000) { - K056832RamWriteWord(address, data); - return; - } - - if ((address & 0xfffff8) == 0x430000) { - K053246Write((address & 0x06) + 0, data >> 8); - K053246Write((address & 0x06) + 1, data&0xff); - return; - } - - if ((address & 0xfffff0) == 0x450010) { - K053247WriteRegsWord(address, data); - return; - } - - if ((address & 0xffffc0) == 0x480000) { - K056832WordWrite(address & 0x3e, data); - return; - } - - if ((address & 0xfffff8) == 0x482000) { - // k056832 b regs - return; - } - - if ((address & 0xfffffe) == 0x484000) { - INT32 sizetab[4] = { 4, 4, 2, 1 }; - INT32 clip[4] = { 0, 0, 0, 0 }; - - clip[0] = (data >> 0) & 0x3f; // min (clip) x - clip[1] = (data >> 6) & 0x3f; // min (clip) y - clip[2] = sizetab[(data >> 12) & 0x03]; // size x - clip[3] = sizetab[(data >> 14) & 0x03]; // size y - - clip[2] = ((clip[0] + clip[2]) << 7) - 1; - clip[3] = ((clip[1] + clip[3]) << 7) - 1; - clip[0] <<= 7; - clip[1] <<= 7; - - K053936GP_set_cliprect(0, clip[0], clip[2], clip[1], clip[3]); - - // 053939_clip - //bprintf (0, _T("ClipW: %2.2x, %4.4x\n"), address & 3, data); - return; - } - - if ((address & 0xfffffe) == 0x484002) { - //bprintf (0, _T("clipw enable %2.2x\n"), data); - K053936GP_clip_enable(0, (data >> 8) & 1); - return; - } - - if ((address & 0xffffe0) == 0x486000) { - // k053252 - return; - } - - if ((address & 0xffff00) == 0x488000) { - K055555WordWrite(address, data >> 8); - return; - } - - if ((address & 0xffffe0) == 0x48c000) { - K054338WriteWord(address, data); - return; - } - - if ((address & 0xffff00) == 0x660000) { - K054000Write((address/2)&0xff, data); - return; - } - - if ((address & 0xffffc0) == 0x680000) { - prot_data[(address & 0x3f)/2] = data; - K055550_word_write(address, data, 0xffff); - return; - } -} - -static void __fastcall dadandrn_main_write_byte(UINT32 address, UINT8 data) -{ - if ((address & 0xff0000) == 0x400000) { - if ((address & 0xf0) == 0) - K053247Write(((address & 0x000e) | ((address & 0xff00) >> 4) | (address & 1))^1, data); - - DrvSpriteRam[(address & 0xffff)^1] = data; - return; - } - - if ((address & 0xffc000) == 0x410000) { - K056832RamWriteByte(address, data); - return; - } - - if ((address & 0xfffff8) == 0x430000) { - K053246Write((address & 0x7)^0, data); - return; - } - - if ((address & 0xfffff0) == 0x450010) { - K053247WriteRegsByte(address, data); - return; - } - - if ((address & 0xffffc0) == 0x480000) { - K056832ByteWrite(address, data); - return; - } - - if ((address & 0xfffff8) == 0x482000) { - // k056832 b regs - return; - } - - //if ((address & 0xfffffc) == 0x484000) { - // bprintf (0, _T("ClipB: %2.2x, %4.4x\n"), address & 3, data); - // return; - //} - - if ((address & 0xffffe0) == 0x486000) { - // k053252 - return; - } - - if ((address & 0xffff00) == 0x488000) { - K055555ByteWrite(address, data); - return; - } - - if ((address & 0xffffe0) == 0x48c000) { - K054338WriteByte(address, data); - return; - } - - if ((address & 0xffff00) == 0x660000) { - K054000Write((address/2)&0xff, data); - return; - } - - if ((address & 0xffffc0) == 0x680000) { - UINT8 *prot = (UINT8*)prot_data; - prot[(address & 0x3f) ^ 1] = data; - K055550_word_write(address, data, 0xff << ((address & 1) * 8)); - return; - } - - switch (address) - { - case 0x484002: - bprintf (0, _T("clipb enable %2.2x\n"), data); - K053936GP_clip_enable(0, data & 0x01); - return; - - case 0x48a00c: - *soundlatch = data; - return; - - case 0x48a00e: - *soundlatch2 = data; - return; - - case 0x6a0001: - EEPROMWrite((data & 0x04), (data & 0x02), (data & 0x01)); - return; - - case 0x6c0000: - case 0x6c0001: - K053936GP_enable(0, data & 0x01); - // 053936_enable - // bprintf (0, _T("'936b enable %2.2x\n"), data); - return; - - case 0x6e0000: - ZetSetIRQLine(0, ZET_IRQSTATUS_ACK); - return; - - case 0xe00000: - return; // watchdog - } -} - -static UINT16 __fastcall dadandrn_main_read_word(UINT32 address) -{ - if ((address & 0xffc000) == 0x410000) { - return K056832RamReadWord(address & 0x1fff); - } - - if ((address & 0xffffc0) == 0x680000) { - return K055550_word_read(address); - } - - if ((address & 0xffff00) == 0x660000) { - return K054000Read((address / 2) & 0xff); - } - - switch (address) - { - case 0x480a14: - if ((*soundlatch3 & 0xf)==0xe) return *soundlatch3|1; - return *soundlatch3; - - case 0x48e000: - return DrvInputs[0]; - - case 0x48e020: - return (DrvInputs[1] << 8) | (DrvInputs[2] & 0xff); // ???? - } - - return 0; -} - -static UINT8 __fastcall dadandrn_main_read_byte(UINT32 address) -{ - if ((address & 0xffc000) == 0x410000) { - return K056832RamReadByte(address & 0x1fff); - } - - if ((address & 0xffffc0) == 0x680000) { - return K055550_word_read(address) >> ((~address & 1) * 8); - } - - if ((address & 0xffff00) == 0x660000) { - return K054000Read((address / 2) & 0xff); - } - - switch (address) - { - case 0x480a14: - case 0x48a014: - if ((*soundlatch3 & 0xf)==0xe) return *soundlatch3|1; - return *soundlatch3; - - case 0x48e000: - return DrvInputs[0] >> 8; - - case 0x48e001: - return DrvInputs[0]; - - case 0x48e020: - return (DrvInputs[1] & 0xf8) | 2 | (EEPROMRead() ? 0x0001 : 0); - - case 0x48e021: - return (DrvInputs[2] >> 8); - } - - return 0; -} - -//-------------------------------------------------------------------------------------------------------------- - -static void bankswitch(INT32 data) -{ - ZetMapMemory(DrvZ80ROM + ((data & 0x0f) * 0x4000), 0x8000, 0xbfff, ZET_ROM); -} - -static void __fastcall mystwarr_sound_write(UINT16 address, UINT8 data) -{ - switch (address) - { - case 0xf000: - *soundlatch3 = data; - return; - - case 0xf800: - sound_control = data & 0x10; - bankswitch(data); - // if (!sound_control) ZetSetIRQLine(0x20, ZET_IRQSTATUS_NONE); // CLEAR NMI LINE! - return; - } - - if (address >= 0xe000 && address <= 0xe22f) { - K054539Write(0, address - 0xe000, data); - } - - if (address >= 0xe400 && address <= 0xe62f) { - K054539Write(1, address - 0xe400, data); - } - - if (address >= 0xe000 && address <= 0xe7ff) { - DrvZ80RAM[0x2000 + (address & 0x7ff)] = data; - } - -} - -static UINT8 __fastcall mystwarr_sound_read(UINT16 address) -{ - if (address >= 0xe000 && address <= 0xe22f) { - return K054539Read(0, address - 0xe000); - } - - if (address >= 0xe400 && address <= 0xe62f) { - return K054539Read(1, address - 0xe400); - } - - if (address >= 0xe000 && address <= 0xe7ff) { - return DrvZ80RAM[0x2000 + (address & 0x7ff)]; - } - - switch (address) - { - case 0xf002: - ZetSetIRQLine(0, ZET_IRQSTATUS_NONE); - return *soundlatch; - - case 0xf003: - ZetSetIRQLine(0, ZET_IRQSTATUS_NONE); - return *soundlatch2; - } - - return 0; -} - -//-------------------------------------------------------------------------------------------------------------- - -static void mystwarr_tile_callback(int layer, int *code, int *color, int */*flags*/) -{ - if (layer == 1) {if ((*code & 0xff00) + (*color) == 0x4101) cbparam++; else cbparam--;} //* water hack (TEMPORARY) - - *color = layer_colorbase[layer] | ((*color >> 1) & 0x1e); -} - -static void metamrph_tile_callback(int layer, int */*code*/, int *color, int */*flags*/) -{ - *color = layer_colorbase[layer] | (*color >> 2 & 0x0f); -} - -static void game5bpp_tile_callback(int layer, int */*code*/, int *color, int */*flags*/) -{ - *color = layer_colorbase[layer] | ((*color >> 1) & 0x1e); -} -static void mystwarr_sprite_callback(INT32 */*code*/, INT32 *color, INT32 *priority) -{ - int c = *color; - *color = sprite_colorbase | (c & 0x001f); - *priority = c & 0x00f0; -} - -static void metamrph_sprite_callback(INT32 */*code*/, INT32 *color, INT32 *priority) -{ - INT32 c = *color; - INT32 attr = c; - - c = (c & 0x1f) | sprite_colorbase; - - if ((attr & 0x300) != 0x300) - { - *color = c; - *priority = (attr & 0xe0) >> 2; - } - else - { - *color = c | 3<>4 & 0x20) | (c & 0x001f); - *priority = c & 0x00e0; -} - -static const eeprom_interface mystwarr_eeprom_interface = -{ - 7, /* address bits */ - 8, /* data bits */ - "011000", /* read command */ - "011100", /* write command */ - "0100100000000",/* erase command */ - "0100000000000",/* lock command */ - "0100110000000", /* unlock command */ - 0, - 0 -}; - -static const eeprom_interface gaiapolis_eeprom_interface = -{ - 7, /* address bits */ - 8, /* data bits */ - "011000", /* read command */ - "010100", /* write command */ - "0100100000000",/* erase command */ - "0100000000000",/* lock command */ - "0100110000000",/* unlock command */ - 0, - 0 -}; - -static INT32 DrvDoReset() -{ - memset (AllRam, 0, RamEnd - AllRam); - - SekOpen(0); - SekReset(); - SekClose(); - - ZetOpen(0); - ZetReset(); - bankswitch(2); - ZetClose(); - - KonamiICReset(); - - K054539Reset(0); - K054539Reset(1); - - EEPROMReset(); - - if (EEPROMAvailable() == 0) { - EEPROMFill(DrvEeprom, 0, 128); - } - - control_data = 0; - - for (INT32 i = 0; i < 4; i++) - { - layer_colorbase[i] = 0; - } - - sprite_colorbase = 0; - cbparam = 0; - oinprion = 0; - sound_nmi_enable = 0; - - return 0; -} - -static INT32 MemIndex() -{ - UINT8 *Next; Next = AllMem; - - Drv68KROM = Next; Next += 0x300000; - DrvZ80ROM = Next; Next += 0x040000; - - DrvGfxROM0 = Next; Next += 0x600000; - DrvGfxROM1 = Next; Next += 0xa00000; - DrvGfxROM2 = Next; Next += 0x500000; - DrvGfxROM3 = Next; Next += 0x100000; - - DrvGfxROMExp0 = Next; Next += 0xc00000; - DrvGfxROMExp1 = Next; Next += 0x1000000; - DrvGfxROMExp2 = Next; Next += 0x800000; - - DrvSndROM = Next; Next += 0x400000; - - DrvEeprom = Next; Next += 0x000080; - - konami_palette32 = (UINT32*)Next; - DrvPalette = (UINT32*)Next; Next += 0x0800 * sizeof(UINT32); - - AllRam = Next; - - Drv68KRAM = Next; Next += 0x010000; - DrvSpriteRam = Next; Next += 0x010000; - DrvPalRAM = Next; Next += 0x002000; - - DrvK053936Ctrl = Next; Next += 0x000400; - DrvK053936RAM = Next; Next += 0x001000; - - DrvZ80RAM = Next; Next += 0x002800; - - soundlatch = Next; Next += 0x000001; - soundlatch2 = Next; Next += 0x000001; - soundlatch3 = Next; Next += 0x000001; - - RamEnd = Next; - MemEnd = Next; - - return 0; -} - -static void decode_gfx1(UINT8 *src, UINT8 *d, INT32 len) -{ - UINT8 *s = src; - UINT8 *pFinish = s+len-3; - - while (s < pFinish) - { - int d0 = ((s[0]&0x80)<<0)|((s[0]&0x08)<<3)|((s[1]&0x80)>>2)|((s[1]&0x08)<<1)|((s[2]&0x80)>>4)|((s[2]&0x08)>>1)|((s[3]&0x80)>>6)|((s[3]&0x08)>>3); - int d1 = ((s[0]&0x40)<<1)|((s[0]&0x04)<<4)|((s[1]&0x40)>>1)|((s[1]&0x04)<<2)|((s[2]&0x40)>>3)|((s[2]&0x04)>>0)|((s[3]&0x40)>>5)|((s[3]&0x04)>>2); - int d2 = ((s[0]&0x20)<<2)|((s[0]&0x02)<<5)|((s[1]&0x20)<<0)|((s[1]&0x02)<<3)|((s[2]&0x20)>>2)|((s[2]&0x02)<<1)|((s[3]&0x20)>>4)|((s[3]&0x02)>>1); - int d3 = ((s[0]&0x10)<<3)|((s[0]&0x01)<<6)|((s[1]&0x10)<<1)|((s[1]&0x01)<<4)|((s[2]&0x10)>>1)|((s[2]&0x01)<<2)|((s[3]&0x10)>>3)|((s[3]&0x01)>>0); - - d[0] = d3; - d[1] = d1; - d[2] = d2; - d[3] = d0; - d[4] = s[4]; - - s += 5; - d += 5; - } - - INT32 nLen = len; - INT32 Plane[5] = { 32, 24, 8, 16, 0 }; - INT32 XOffs[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; - INT32 YOffs[8] = { 0, 5*8, 5*8*2, 5*8*3, 5*8*4, 5*8*5, 5*8*6, 5*8*7 }; - - UINT8 *tmp = (UINT8*)BurnMalloc(nLen); - - memcpy (tmp, DrvGfxROMExp0, nLen); - - GfxDecode(((nLen * 8) / 5) / 0x40, 5, 8, 8, Plane, XOffs, YOffs, 8*8*5, tmp, DrvGfxROMExp0); -} - -static void DecodeSprites(UINT8 *rom, UINT8 *exprom, INT32 len) -{ - INT32 Plane[5] = { 32, 24, 16, 8, 0 }; - INT32 XOffs[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 40, 41, 42, 43, 44, 45, 46, 47 }; - INT32 YOffs[16] = { 0, 10*8, 10*8*2, 10*8*3, 10*8*4, 10*8*5, 10*8*6, 10*8*7, 10*8*8, - 10*8*9, 10*8*10, 10*8*11, 10*8*12, 10*8*13, 10*8*14, 10*8*15 }; - - INT32 size4 = (len/(1024*1024))/5; - size4 *= 4*1024*1024; - - UINT8 *tmp = (UINT8*)BurnMalloc(size4 * 5); - - UINT8 *d = tmp; - UINT8 *s1 = rom; - UINT8 *s2 = rom + (size4); - - for (INT32 i = 0; i < size4; i+=4) - { - *d++ = *s1++; - *d++ = *s1++; - *d++ = *s1++; - *d++ = *s1++; - *d++ = *s2++; - } - - GfxDecode(size4 / 128, 5, 16, 16, Plane, XOffs, YOffs, 16*16*5, tmp, exprom); - - BurnFree (tmp); -} - -static void Metamrph_sprite_decode() -{ - INT32 Plane[4] = { 24, 16, 8, 0 }; - INT32 XOffs[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 32, 33, 34, 35, 36, 37, 38, 39 }; - INT32 YOffs[16] = { 0, 64, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960 }; - - GfxDecode(0x10000, 4, 16, 16, Plane, XOffs, YOffs, 16*16*4, DrvGfxROM1, DrvGfxROMExp1); -} - -static INT32 MystwarrInit() -{ - nGame = 1; - - GenericTilesInit(); - - AllMem = NULL; - MemIndex(); - INT32 nLen = MemEnd - (UINT8 *)0; - if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1; - memset(AllMem, 0, nLen); - MemIndex(); - - { - if (BurnLoadRom(Drv68KROM + 0x000001, 0, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x000000, 1, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x100001, 2, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x100000, 3, 2)) return 1; - - if (BurnLoadRom(DrvZ80ROM + 0x000000, 4, 1)) return 1; - - if (BurnLoadRomExt(DrvGfxROM0 + 0x000000, 5, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRomExt(DrvGfxROM0 + 0x000002, 6, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRom(DrvGfxROM0 + 0x000004, 7, 5)) return 1; - - if (BurnLoadRomExt(DrvGfxROM1 + 0x000000, 8, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000002, 9, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000004, 10, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000006, 11, 8, 2)) return 1; - if (BurnLoadRom(DrvGfxROM1 + 0x400000, 12, 2)) return 1; - if (BurnLoadRom(DrvGfxROM1 + 0x400001, 13, 2)) return 1; - - if (BurnLoadRom(DrvSndROM + 0x000000, 14, 1)) return 1; - if (BurnLoadRom(DrvSndROM + 0x200000, 15, 1)) return 1; - - if (BurnLoadRom(DrvEeprom + 0x000000, 16, 1)) return 1; - - decode_gfx1(DrvGfxROM0, DrvGfxROMExp0, 0x500000); - DecodeSprites(DrvGfxROM1, DrvGfxROMExp1, 0x500000); - } - - K055555Init(); - K054338Init(); - - K056832Init(DrvGfxROM0, DrvGfxROMExp0, 0x400000, mystwarr_tile_callback); - K056832SetGlobalOffsets(24, 16); - K056832SetLayerOffsets(0, -2-4, 0); - K056832SetLayerOffsets(1, 0-4, 0); - K056832SetLayerOffsets(2, 2-4, 0); - K056832SetLayerOffsets(3, 3-4, 0); - - K053247Init(DrvGfxROM1, DrvGfxROMExp1, 0x7fffff, mystwarr_sprite_callback, 1); - K053247SetSpriteOffset(-24-48, -16-24); - K053247SetBpp(5); - - konamigx_mixer_init(0); - - SekInit(0, 0x68000); - SekOpen(0); - SekMapMemory(Drv68KROM, 0x000000, 0x1fffff, SM_ROM); - SekMapMemory(Drv68KRAM, 0x200000, 0x20ffff, SM_RAM); - SekMapMemory(DrvSpriteRam, 0x400000, 0x40ffff, SM_ROM); - SekMapMemory(DrvPalRAM, 0x700000, 0x701fff, SM_RAM); - SekSetWriteWordHandler(0, mystwarr_main_write_word); - SekSetWriteByteHandler(0, mystwarr_main_write_byte); - SekSetReadWordHandler(0, mystwarr_main_read_word); - SekSetReadByteHandler(0, mystwarr_main_read_byte); - SekClose(); - - ZetInit(0); - ZetOpen(0); - ZetMapMemory(DrvZ80ROM, 0x0000, 0x7fff, ZET_ROM); - ZetMapMemory(DrvZ80RAM, 0xc000, 0xdfff, ZET_RAM); - ZetSetWriteHandler(mystwarr_sound_write); - ZetSetReadHandler(mystwarr_sound_read); - ZetClose(); - - EEPROMInit(&mystwarr_eeprom_interface); - - K054539Init(0, 48000, DrvSndROM, 0x400000); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(0, 0, 0.80); - K054539_set_gain(0, 1, 0.80); - K054539_set_gain(0, 2, 0.80); - K054539_set_gain(0, 3, 0.80); - K054539_set_gain(0, 4, 2.00); - K054539_set_gain(0, 5, 2.00); - K054539_set_gain(0, 6, 2.00); - K054539_set_gain(0, 7, 2.00); - - K054539Init(1, 48000, DrvSndROM, 0x400000); - K054539SetRoute(1, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(1, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(1, 0, 0.50); - K054539_set_gain(1, 1, 0.50); - K054539_set_gain(1, 2, 0.50); - K054539_set_gain(1, 3, 0.50); - K054539_set_gain(1, 4, 0.50); - K054539_set_gain(1, 5, 0.50); - K054539_set_gain(1, 6, 0.50); - K054539_set_gain(1, 7, 0.50); - - DrvDoReset(); - - return 0; -} - -static INT32 MetamrphInit() -{ - nGame = 2; - - GenericTilesInit(); - - AllMem = NULL; - MemIndex(); - INT32 nLen = MemEnd - (UINT8 *)0; - if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1; - memset(AllMem, 0, nLen); - MemIndex(); - - { - if (BurnLoadRom(Drv68KROM + 0x000000, 0, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x000001, 1, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x100000, 2, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x100001, 3, 2)) return 1; - - if (BurnLoadRom(DrvZ80ROM + 0x000000, 4, 1)) return 1; - - if (BurnLoadRomExt(DrvGfxROM0 + 0x000000, 5, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRomExt(DrvGfxROM0 + 0x000002, 6, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - - if (BurnLoadRomExt(DrvGfxROM1 + 0x000000, 7, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000002, 8, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000004, 9, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000006, 10, 8, 2)) return 1; - - if (BurnLoadRom(DrvGfxROM2 + 0x000000, 11, 1)) return 1; - - if (BurnLoadRom(DrvSndROM + 0x000000, 12, 1)) return 1; - if (BurnLoadRom(DrvSndROM + 0x200000, 13, 1)) return 1; - - if (BurnLoadRom(DrvEeprom + 0x000000, 14, 1)) return 1; - - decode_gfx1(DrvGfxROM0, DrvGfxROMExp0, 0x500000); - - Metamrph_sprite_decode(); - } - - K055555Init(); - K054338Init(); - - K056832Init(DrvGfxROM0, DrvGfxROMExp0, 0x200000, metamrph_tile_callback); - K056832SetGlobalOffsets(24, 15); - K056832SetLayerOffsets(0, -2+4, 2); - K056832SetLayerOffsets(1, 0+4, 0); - K056832SetLayerOffsets(2, 2+4, 2); - K056832SetLayerOffsets(3, 3+4, 0); - - K053247Init(DrvGfxROM1, DrvGfxROMExp1, 0x7fffff, metamrph_sprite_callback, 1); - K053247SetSpriteOffset(-51-24, -24-15); - - K053250Init(0, DrvGfxROM2, DrvGfxROMExp2, 0x40000); - K053250SetOffsets(0, -7, 0); // verify - - konamigx_mixer_init(0); - - SekInit(0, 0x68000); - SekOpen(0); - SekMapMemory(Drv68KROM, 0x000000, 0x1fffff, SM_ROM); - SekMapMemory(Drv68KRAM, 0x200000, 0x20ffff, SM_RAM); - SekMapMemory(DrvSpriteRam, 0x211000, 0x21ffff, SM_RAM); - SekMapMemory((UINT8*)K053250Ram, 0x24c000, 0x24ffff, SM_RAM); - SekMapMemory(DrvPalRAM, 0x330000, 0x331fff, SM_RAM); - SekSetWriteWordHandler(0, metamrph_main_write_word); - SekSetWriteByteHandler(0, metamrph_main_write_byte); - SekSetReadWordHandler(0, metamrph_main_read_word); - SekSetReadByteHandler(0, metamrph_main_read_byte); - SekClose(); - - ZetInit(0); - ZetOpen(0); - ZetMapMemory(DrvZ80ROM, 0x0000, 0x7fff, ZET_ROM); - ZetMapMemory(DrvZ80RAM, 0xc000, 0xdfff, ZET_RAM); - ZetSetWriteHandler(mystwarr_sound_write); - ZetSetReadHandler(mystwarr_sound_read); - ZetClose(); - - EEPROMInit(&mystwarr_eeprom_interface); - - K054539Init(0, 48000, DrvSndROM, 0x400000); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(0, 0, 0.80); - K054539_set_gain(0, 1, 0.80); - K054539_set_gain(0, 2, 0.80); - K054539_set_gain(0, 3, 0.80); - K054539_set_gain(0, 4, 1.80); - K054539_set_gain(0, 5, 1.80); - K054539_set_gain(0, 6, 1.80); - K054539_set_gain(0, 7, 1.80); - - K054539Init(1, 48000, DrvSndROM, 0x400000); - K054539SetRoute(1, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(1, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(1, 0, 0.80); - K054539_set_gain(1, 1, 0.80); - K054539_set_gain(1, 2, 0.80); - K054539_set_gain(1, 3, 0.80); - K054539_set_gain(1, 4, 0.80); - K054539_set_gain(1, 5, 0.80); - K054539_set_gain(1, 6, 0.80); - K054539_set_gain(1, 7, 0.80); - - DrvDoReset(); - - return 0; -} - -static INT32 ViostormInit() -{ - nGame = 3; - - GenericTilesInit(); - - AllMem = NULL; - MemIndex(); - INT32 nLen = MemEnd - (UINT8 *)0; - if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1; - memset(AllMem, 0, nLen); - MemIndex(); - - { - if (BurnLoadRom(Drv68KROM + 0x000000, 0, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x000001, 1, 2)) return 1; - - if (BurnLoadRom(DrvZ80ROM + 0x000000, 2, 1)) return 1; - - if (BurnLoadRomExt(DrvGfxROM0 + 0x000000, 3, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRomExt(DrvGfxROM0 + 0x000002, 4, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - - if (BurnLoadRomExt(DrvGfxROM1 + 0x000000, 5, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000002, 6, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000004, 7, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000006, 8, 8, 2)) return 1; - - if (BurnLoadRom(DrvSndROM + 0x000000, 9, 1)) return 1; - if (BurnLoadRom(DrvSndROM + 0x200000, 10, 1)) return 1; - - if (BurnLoadRom(DrvEeprom + 0x000000, 11, 1)) return 1; - - decode_gfx1(DrvGfxROM0, DrvGfxROMExp0, 0x600000); - - Metamrph_sprite_decode(); - } - - K055555Init(); - K054338Init(); - - K056832Init(DrvGfxROM0, DrvGfxROMExp0, 0x200000, metamrph_tile_callback); - K056832SetGlobalOffsets(40, 16); - K056832SetLayerOffsets(0, -2+1, 0); - K056832SetLayerOffsets(1, 0+1, 0); - K056832SetLayerOffsets(2, 2+1, 0); - K056832SetLayerOffsets(3, 3+1, 0); - - K053247Init(DrvGfxROM1, DrvGfxROMExp1, 0x7fffff, metamrph_sprite_callback, 1); - K053247SetSpriteOffset(-62-40, -23-16); - - K053250Init(0, DrvGfxROM2, DrvGfxROMExp2, 1); // doesn't exist on this hardware - - konamigx_mixer_init(0); - - SekInit(0, 0x68000); - SekOpen(0); - SekMapMemory(Drv68KROM, 0x000000, 0x1fffff, SM_ROM); - SekMapMemory(Drv68KRAM, 0x200000, 0x20ffff, SM_RAM); - SekMapMemory(DrvSpriteRam, 0x211000, 0x21ffff, SM_RAM); - SekMapMemory((UINT8*)K053250Ram, 0x24c000, 0x24ffff, SM_RAM); - SekMapMemory(DrvPalRAM, 0x330000, 0x331fff, SM_RAM); - SekSetWriteWordHandler(0, metamrph_main_write_word); - SekSetWriteByteHandler(0, metamrph_main_write_byte); - SekSetReadWordHandler(0, metamrph_main_read_word); - SekSetReadByteHandler(0, metamrph_main_read_byte); - SekClose(); - - ZetInit(0); - ZetOpen(0); - ZetMapMemory(DrvZ80ROM, 0x0000, 0x7fff, ZET_ROM); - ZetMapMemory(DrvZ80RAM, 0xc000, 0xdfff, ZET_RAM); - ZetSetWriteHandler(mystwarr_sound_write); - ZetSetReadHandler(mystwarr_sound_read); - ZetClose(); - - EEPROMInit(&mystwarr_eeprom_interface); - - K054539Init(0, 48000, DrvSndROM, 0x400000); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(0, 0, 2.00); - K054539_set_gain(0, 1, 2.00); - K054539_set_gain(0, 2, 2.00); - K054539_set_gain(0, 3, 2.00); - K054539_set_gain(0, 4, 2.00); - K054539_set_gain(0, 5, 2.00); - K054539_set_gain(0, 6, 2.00); - K054539_set_gain(0, 7, 2.00); - - K054539Init(1, 48000, DrvSndROM, 0x400000); - K054539SetRoute(1, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(1, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - - DrvDoReset(); - - return 0; -} - -static INT32 MartchmpInit() -{ - nGame = 4; - - GenericTilesInit(); - - AllMem = NULL; - MemIndex(); - INT32 nLen = MemEnd - (UINT8 *)0; - if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1; - memset(AllMem, 0, nLen); - MemIndex(); - - { - if (BurnLoadRom(Drv68KROM + 0x000001, 0, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x000000, 1, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x100001, 2, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x100000, 3, 2)) return 1; - - if (BurnLoadRom(DrvZ80ROM + 0x000000, 4, 1)) return 1; - - if (BurnLoadRomExt(DrvGfxROM0 + 0x000000, 5, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRomExt(DrvGfxROM0 + 0x000002, 6, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRom(DrvGfxROM0 + 0x000004, 7, 5)) return 1; - - if (BurnLoadRomExt(DrvGfxROM1 + 0x000000, 8, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000002, 9, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000004, 10, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000006, 11, 8, 2)) return 1; - if (BurnLoadRom(DrvGfxROM1 + 0x800000, 12, 2)) return 1; - if (BurnLoadRom(DrvGfxROM1 + 0x800001, 13, 2)) return 1; - - if (BurnLoadRom(DrvSndROM + 0x000000, 14, 1)) return 1; - if (BurnLoadRom(DrvSndROM + 0x200000, 15, 1)) return 1; - - if (BurnLoadRom(DrvEeprom + 0x000000, 16, 1)) return 1; - - decode_gfx1(DrvGfxROM0, DrvGfxROMExp0, 0x500000); - - DecodeSprites(DrvGfxROM1, DrvGfxROMExp1, 0xa00000); - } - - K055555Init(); - K054338Init(); - - K056832Init(DrvGfxROM0, DrvGfxROMExp0, 0x400000, game5bpp_tile_callback); - K056832SetGlobalOffsets(32, 16); - K056832SetLayerOffsets(0, -2-4, 0); - K056832SetLayerOffsets(1, 0-4, 0); - K056832SetLayerOffsets(2, 2-4, 0); - K056832SetLayerOffsets(3, 3-4, 0); - - K053247Init(DrvGfxROM1, DrvGfxROMExp1, 0x7fffff, martchmp_sprite_callback, 1); - K053247SetSpriteOffset(-23-58, -16-23); - K053247SetBpp(5); - - konamigx_mixer_init(0); - - SekInit(0, 0x68000); - SekOpen(0); - SekMapMemory(Drv68KROM + 0x000000, 0x000000, 0x0fffff, SM_ROM); - SekMapMemory(Drv68KRAM, 0x100000, 0x10ffff, SM_RAM); - SekMapMemory(Drv68KROM + 0x100000, 0x300000, 0x3fffff, SM_ROM); - SekMapMemory(DrvSpriteRam, 0x480000, 0x483fff, SM_ROM); // should be written through handler - SekMapMemory(DrvPalRAM, 0x600000, 0x601fff, SM_RAM); - SekSetWriteWordHandler(0, martchmp_main_write_word); - SekSetWriteByteHandler(0, martchmp_main_write_byte); - SekSetReadWordHandler(0, martchmp_main_read_word); - SekSetReadByteHandler(0, martchmp_main_read_byte); - SekClose(); - - ZetInit(0); - ZetOpen(0); - ZetMapMemory(DrvZ80ROM, 0x0000, 0x7fff, ZET_ROM); - ZetMapMemory(DrvZ80RAM, 0xc000, 0xdfff, ZET_RAM); - ZetSetWriteHandler(mystwarr_sound_write); - ZetSetReadHandler(mystwarr_sound_read); - ZetClose(); - - EEPROMInit(&mystwarr_eeprom_interface); - - K054539Init(0, 48000, DrvSndROM, 0x400000); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(0, 0, 1.40); - K054539_set_gain(0, 1, 1.40); - K054539_set_gain(0, 2, 1.40); - K054539_set_gain(0, 3, 1.40); - K054539_set_gain(0, 4, 1.40); - K054539_set_gain(0, 5, 1.40); - K054539_set_gain(0, 6, 1.40); - K054539_set_gain(0, 7, 1.40); - - K054539Init(1, 48000, DrvSndROM, 0x400000); - K054539SetRoute(1, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(1, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - - DrvDoReset(); - - return 0; -} - -static void DrvGfxExpand(UINT8 *src, INT32 nLen) -{ - for (INT32 i = (nLen - 1) * 2; i >= 0; i-=2) { - src[i+0] = src[(i/2)] >> 4; - src[i+1] = src[(i/2)] & 0xf; - } -} - -// pre-draw the whole roz tilemap... needs a ton of ram! -static void GaiapolisRozTilemapdraw() -{ - UINT8 *dat1 = DrvGfxROM3; - UINT8 *dat2 = DrvGfxROM3 + 0x20000; - UINT8 *dat3 = DrvGfxROM3 + 0x60000; - - K053936_external_bitmap = pMystwarrRozBitmap; - - for (INT32 offs = 0; offs < 512 * 512; offs++) - { - INT32 sx = (offs & 0x1ff) * 16; - INT32 sy = (offs / 0x200) * 16; - - INT32 code = dat3[offs] | ((dat2[offs]&0x3f)<<8); - INT32 color = 0; - - if (offs & 1) - color = dat1[offs>>1]&0xf; - else - color = dat1[offs>>1]>>4; - - if (dat2[offs] & 0x80) color |= 0x10; - - UINT8 *gfx = DrvGfxROM2 + (code * 0x100); - color <<= 4; - - UINT16 *dst = pMystwarrRozBitmap + sy * 0x2000 + sx; - - for (INT32 y = 0; y < 16; y++) { - for (INT32 x = 0; x < 16; x++, gfx++) { - dst[x] = gfx[0] + color; - } - dst += 0x2000; - } - } -} - -static INT32 GaiapolisInit() -{ - nGame = 5; - - GenericTilesInit(); - - AllMem = NULL; - MemIndex(); - INT32 nLen = MemEnd - (UINT8 *)0; - if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1; - memset(AllMem, 0, nLen); - MemIndex(); - - { - if (BurnLoadRom(Drv68KROM + 0x000001, 0, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x000000, 1, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x200001, 2, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x200000, 3, 2)) return 1; - - if (BurnLoadRom(DrvZ80ROM + 0x000000, 4, 1)) return 1; - - if (BurnLoadRomExt(DrvGfxROM0 + 0x000000, 5, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRomExt(DrvGfxROM0 + 0x000002, 6, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - - if (BurnLoadRomExt(DrvGfxROM1 + 0x000000, 7, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000002, 8, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000004, 9, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000006, 10, 8, 2)) return 1; - - if (BurnLoadRom(DrvGfxROM2 + 0x000000, 11, 1)) return 1; - if (BurnLoadRom(DrvGfxROM2 + 0x080000, 12, 1)) return 1; - if (BurnLoadRom(DrvGfxROM2 + 0x100000, 13, 1)) return 1; - - if (BurnLoadRom(DrvGfxROM3 + 0x000000, 14, 1)) return 1; - if (BurnLoadRom(DrvGfxROM3 + 0x020000, 15, 1)) return 1; - if (BurnLoadRom(DrvGfxROM3 + 0x060000, 16, 1)) return 1; - - if (BurnLoadRom(DrvSndROM + 0x000000, 17, 1)) return 1; - if (BurnLoadRom(DrvSndROM + 0x200000, 18, 1)) return 1; - - if (BurnLoadRom(DrvEeprom + 0x000000, 19, 1)) return 1; - - decode_gfx1(DrvGfxROM0, DrvGfxROMExp0, 0x500000); - - Metamrph_sprite_decode(); - } - - K055555Init(); - K054338Init(); - - K056832Init(DrvGfxROM0, DrvGfxROMExp0, 0x400000, metamrph_tile_callback); - K056832SetGlobalOffsets(32, 16); - K056832SetLayerOffsets(0, -2, 0); - K056832SetLayerOffsets(1, 0, 0); - K056832SetLayerOffsets(2, 2, 0); - K056832SetLayerOffsets(3, 3, 0); - - K053247Init(DrvGfxROM1, DrvGfxROMExp1, 0x7fffff, gaiapolis_sprite_callback, 1); - K053247SetSpriteOffset(-24-79, -16-24); - - konamigx_mixer_init(0); - K054338_invert_alpha(0); // otherwise alpha blended roz is too light - - SekInit(0, 0x68000); - SekOpen(0); - SekMapMemory(Drv68KROM, 0x000000, 0x2fffff, SM_ROM); - SekMapMemory(DrvSpriteRam, 0x400000, 0x40ffff, SM_ROM); - SekMapMemory(DrvPalRAM, 0x420000, 0x421fff, SM_RAM); - SekMapMemory(DrvK053936Ctrl, 0x460000, 0x46001f, SM_RAM); - SekMapMemory(DrvK053936RAM, 0x470000, 0x470fff, SM_RAM); - SekMapMemory(Drv68KRAM, 0x600000, 0x60ffff, SM_RAM); - SekSetWriteWordHandler(0, dadandrn_main_write_word); - SekSetWriteByteHandler(0, dadandrn_main_write_byte); - SekSetReadWordHandler(0, dadandrn_main_read_word); - SekSetReadByteHandler(0, dadandrn_main_read_byte); - SekClose(); - - ZetInit(0); - ZetOpen(0); - ZetMapMemory(DrvZ80ROM, 0x0000, 0x7fff, ZET_ROM); - ZetMapMemory(DrvZ80RAM, 0xc000, 0xdfff, ZET_RAM); - ZetSetWriteHandler(mystwarr_sound_write); - ZetSetReadHandler(mystwarr_sound_read); - ZetClose(); - - EEPROMInit(&gaiapolis_eeprom_interface); - - { - DrvGfxExpand(DrvGfxROM2 , 0x180000); - pMystwarrRozBitmap = (UINT16*)BurnMalloc(((512 * 16) * 2) * (512 * 16)); - GaiapolisRozTilemapdraw(); - - m_k053936_0_ctrl = (UINT16*)DrvK053936Ctrl; - m_k053936_0_linectrl = (UINT16*)DrvK053936RAM; - K053936GP_set_offset(0, -44, -17); - } - - K054539Init(0, 48000, DrvSndROM, 0x400000); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(0, 0, 0.80); - K054539_set_gain(0, 1, 0.80); - K054539_set_gain(0, 2, 0.80); - K054539_set_gain(0, 3, 0.80); - K054539_set_gain(0, 4, 2.00); - K054539_set_gain(0, 5, 2.00); - K054539_set_gain(0, 6, 2.00); - K054539_set_gain(0, 7, 2.00); - - K054539Init(1, 48000, DrvSndROM, 0x400000); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(1, 0, 0.50); - K054539_set_gain(1, 1, 0.50); - K054539_set_gain(1, 2, 0.50); - K054539_set_gain(1, 3, 0.50); - K054539_set_gain(1, 4, 0.50); - K054539_set_gain(1, 5, 0.50); - K054539_set_gain(1, 6, 0.50); - K054539_set_gain(1, 7, 0.50); - - DrvDoReset(); - - return 0; -} - -// pre-draw the whole roz tilemap... needs a ton of ram! -static void DadandrnRozTilemapdraw() -{ - UINT8 *dat1 = DrvGfxROM3; - UINT8 *dat2 = DrvGfxROM3 + 0x40000; - - K053936_external_bitmap = pMystwarrRozBitmap; - - for (INT32 offs = 0; offs < 512 * 512; offs++) - { - INT32 sx = (offs & 0x1ff) * 16; - INT32 sy = (offs / 0x200) * 16; - - INT32 code = dat2[offs] | ((dat1[offs]&0x1f)<<8); - INT32 flipx = (dat1[offs] & 0x40) ? 0x0f : 0; - - UINT8 *gfx = DrvGfxROM2 + (code * 0x100); - - UINT16 *dst = pMystwarrRozBitmap + sy * 0x2000 + sx; - - for (INT32 y = 0; y < 16; y++) { - for (INT32 x = 0; x < 16; x++, gfx++) { - dst[x^flipx] = gfx[0]; - } - dst += 0x2000; - } - } -} - -static INT32 DadandrnInit() -{ - nGame = 6; - - GenericTilesInit(); - - AllMem = NULL; - MemIndex(); - INT32 nLen = MemEnd - (UINT8 *)0; - if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1; - memset(AllMem, 0, nLen); - MemIndex(); - - { - if (BurnLoadRom(Drv68KROM + 0x000001, 0, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x000000, 1, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x100001, 2, 2)) return 1; - if (BurnLoadRom(Drv68KROM + 0x100000, 3, 2)) return 1; - - if (BurnLoadRom(DrvZ80ROM + 0x000000, 4, 1)) return 1; - - if (BurnLoadRomExt(DrvGfxROM0 + 0x000000, 5, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRomExt(DrvGfxROM0 + 0x000002, 6, 5, LD_GROUP(2) | LD_REVERSE)) return 1; - if (BurnLoadRom(DrvGfxROM0 + 0x000004, 7, 5)) return 1; - - if (BurnLoadRomExt(DrvGfxROM1 + 0x000000, 8, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000002, 9, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000004, 10, 8, 2)) return 1; - if (BurnLoadRomExt(DrvGfxROM1 + 0x000006, 11, 8, 2)) return 1; - if (BurnLoadRom(DrvGfxROM1 + 0x800000, 12, 2)) return 1; - if (BurnLoadRom(DrvGfxROM1 + 0x800001, 13, 2)) return 1; - - if (BurnLoadRom(DrvGfxROM2 + 0x000000, 14, 1)) return 1; - if (BurnLoadRom(DrvGfxROM2 + 0x080000, 15, 1)) return 1; - if (BurnLoadRom(DrvGfxROM2 + 0x100000, 16, 1)) return 1; - - if (BurnLoadRom(DrvGfxROM3 + 0x000000, 17, 1)) return 1; - if (BurnLoadRom(DrvGfxROM3 + 0x040000, 18, 1)) return 1; - - if (BurnLoadRom(DrvSndROM + 0x000000, 19, 1)) return 1; - if (BurnLoadRom(DrvSndROM + 0x200000, 20, 1)) return 1; - - if (BurnLoadRom(DrvEeprom + 0x000000, 21, 1)) return 1; - - decode_gfx1(DrvGfxROM0, DrvGfxROMExp0, 0x500000); - - DecodeSprites(DrvGfxROM1, DrvGfxROMExp1, 0xa00000); - } - - K055555Init(); - K054338Init(); - - K056832Init(DrvGfxROM0, DrvGfxROMExp0, 0x400000, game5bpp_tile_callback); - K056832SetGlobalOffsets(24, 17); - K056832SetLayerOffsets(0, -2+4, 0); - K056832SetLayerOffsets(1, 0+4, 0); - K056832SetLayerOffsets(2, 2+4, 0); - K056832SetLayerOffsets(3, 3+4, 0); - - K053247Init(DrvGfxROM1, DrvGfxROMExp1, 0x7fffff, gaiapolis_sprite_callback, 1); - K053247SetSpriteOffset(-24-42, -17-22); - K053247SetBpp(5); - - konamigx_mixer_init(0); - konamigx_mixer_primode(1); - - SekInit(0, 0x68000); - SekOpen(0); - SekMapMemory(Drv68KROM, 0x000000, 0x1fffff, SM_ROM); - SekMapMemory(DrvSpriteRam, 0x400000, 0x40ffff, SM_ROM); - SekMapMemory(DrvPalRAM, 0x420000, 0x421fff, SM_RAM); - SekMapMemory(DrvK053936Ctrl, 0x460000, 0x46001f, SM_RAM); - SekMapMemory(DrvK053936RAM, 0x470000, 0x470fff, SM_RAM); - SekMapMemory(Drv68KRAM, 0x600000, 0x60ffff, SM_RAM); - SekSetWriteWordHandler(0, dadandrn_main_write_word); - SekSetWriteByteHandler(0, dadandrn_main_write_byte); - SekSetReadWordHandler(0, dadandrn_main_read_word); - SekSetReadByteHandler(0, dadandrn_main_read_byte); - SekClose(); - - ZetInit(0); - ZetOpen(0); - ZetMapMemory(DrvZ80ROM, 0x0000, 0x7fff, ZET_ROM); - ZetMapMemory(DrvZ80RAM, 0xc000, 0xdfff, ZET_RAM); - ZetSetWriteHandler(mystwarr_sound_write); - ZetSetReadHandler(mystwarr_sound_read); - ZetClose(); - - EEPROMInit(&mystwarr_eeprom_interface); - - { - pMystwarrRozBitmap = (UINT16*)BurnMalloc(((512 * 16) * 2) * (512 * 16)); - DadandrnRozTilemapdraw(); - - m_k053936_0_ctrl = (UINT16*)DrvK053936Ctrl; - m_k053936_0_linectrl = (UINT16*)DrvK053936RAM; - K053936GP_set_offset(0, -24-8, -17); - } - - K054539Init(0, 48000, DrvSndROM, 0x400000); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(0, 0, 1.00); - K054539_set_gain(0, 1, 1.00); - K054539_set_gain(0, 2, 1.00); - K054539_set_gain(0, 3, 1.00); - K054539_set_gain(0, 4, 2.00); - K054539_set_gain(0, 5, 2.00); - K054539_set_gain(0, 6, 2.00); - K054539_set_gain(0, 7, 2.00); - - K054539Init(1, 48000, DrvSndROM, 0x400000); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); - K054539SetRoute(0, BURN_SND_K054539_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); - K054539_set_gain(1, 0, 1.00); - K054539_set_gain(1, 1, 1.00); - K054539_set_gain(1, 2, 1.00); - K054539_set_gain(1, 3, 1.00); - K054539_set_gain(1, 4, 1.00); - K054539_set_gain(1, 5, 1.00); - K054539_set_gain(1, 6, 1.00); - K054539_set_gain(1, 7, 1.00); - - DrvDoReset(); - - return 0; -} - -static INT32 DrvExit() -{ - GenericTilesExit(); - - KonamiICExit(); - - konamigx_mixer_exit(); - - SekExit(); - ZetExit(); - - EEPROMExit(); - - K054539Exit(); - - BurnFree (AllMem); - - return 0; -} - -static void DrvPaletteRecalc() -{ - UINT16 *pal = (UINT16*)DrvPalRAM; - - for (INT32 i = 0; i < 0x2000/2; i+=2) - { - INT32 r = pal[i+0] & 0xff; - INT32 g = pal[i+1] >> 8; - INT32 b = pal[i+1] & 0xff; - - DrvPalette[i/2] = (r << 16) + (g << 8) + b; - } -} - -static INT32 DrvDraw() -{ - DrvPaletteRecalc(); - - KonamiClearBitmaps(0); - - for (INT32 i = 0; i < 4; i++) { - layer_colorbase[i] = K055555GetPaletteIndex(i)<<4; - } - - INT32 blendmode = 0, enable_sub = 0; - - if (nGame == 1) { // mystwarr - blendmode = 0; - sprite_colorbase = K055555GetPaletteIndex(4)<<5; - } - - if (nGame == 2 || nGame == 3) { // viostorm / metamrph - blendmode = GXSUB_K053250 | GXSUB_4BPP; - sprite_colorbase = K055555GetPaletteIndex(4)<<4; - } - - if (nGame == 4) { // mtlchamp - cbparam = K055555ReadRegister(K55_PRIINP_8); - oinprion = K055555ReadRegister(K55_OINPRI_ON); - - blendmode = (oinprion==0xef && K054338_read_register(K338_REG_PBLEND)) ? ((1<<16|GXMIX_BLEND_FORCE)<<2) : 0; - sprite_colorbase = K055555GetPaletteIndex(4)<<5; - } - - if (nGame == 5) // gaiapolis - { - sprite_colorbase = (K055555GetPaletteIndex(4)<<4)&0x7f; - sub1_colorbase = (K055555GetPaletteIndex(5)<<8)&0x700; - blendmode = GXSUB_4BPP; - K053936GP_set_colorbase(0, sub1_colorbase); - enable_sub = 1; - } - - if (nGame == 6) // dadandrn - { - sprite_colorbase = (K055555GetPaletteIndex(4)<<3)&0x7f; - sub1_colorbase = (K055555GetPaletteIndex(5)<<8)&0x700; - blendmode = GXSUB_8BPP; - K053936GP_set_colorbase(0, sub1_colorbase); - enable_sub = 1; - } - - konamigx_mixer(enable_sub, blendmode, 0, 0, 0, 0, 0); - - KonamiBlendCopy(DrvPalette); - - return 0; -} - -static INT32 DrvFrame() -{ - if (DrvReset) { - DrvDoReset(); - } - - { - memset (DrvInputs, 0xff, 5 * sizeof(INT16)); - for (INT32 i = 0; i < 16; i++) { - DrvInputs[0] ^= (DrvJoy1[i] & 1) << i; - DrvInputs[1] ^= (DrvJoy2[i] & 1) << i; - DrvInputs[2] ^= (DrvJoy3[i] & 1) << i; - DrvInputs[3] ^= (DrvJoy4[i] & 1) << i; - DrvInputs[4] ^= (DrvJoy5[i] & 1) << i; - } - - DrvInputs[1] = DrvDips[0] | (DrvInputs[1] & 0xff00) | 2; - } - - SekNewFrame(); - ZetNewFrame(); - - INT32 nInterleave = nBurnSoundLen; - INT32 nSoundBufferPos = 0; - INT32 nCyclesTotal[2] = { 16000000 / 60, 8000000 / 60 }; - INT32 nCyclesDone[2] = { 0, 0 }; - - SekOpen(0); - ZetOpen(0); - - for (INT32 i = 0; i < nInterleave; i++) { - INT32 nNext, nCyclesSegment; - - nNext = (i + 1) * nCyclesTotal[0] / nInterleave; - nCyclesSegment = nNext - nCyclesDone[0]; - nCyclesSegment = SekRun(nCyclesSegment); - nCyclesDone[0] += nCyclesSegment; - - if (nGame == 1) - { - if (mw_irq_control & 1) - { - if (i == 0) - SekSetIRQLine(4, SEK_IRQSTATUS_AUTO); - - if (i == ((nInterleave * 240)/256)) - SekSetIRQLine(2, SEK_IRQSTATUS_AUTO); - } - } - - if (nGame == 2 || nGame == 3) - { - if (i == ((nInterleave * 24) / 256)) - SekSetIRQLine(6, SEK_IRQSTATUS_AUTO); - - if (i == ((nInterleave * 248) / 256) && K053246_is_IRQ_enabled()) - SekSetIRQLine(5, SEK_IRQSTATUS_AUTO); - } - - if (nGame == 4) // martchmp - { - if (mw_irq_control & 2) - { - if (i == ((nInterleave * 23) / 256)) - SekSetIRQLine(2, SEK_IRQSTATUS_AUTO); - - if (i == ((nInterleave * 247) / 256) && K053246_is_IRQ_enabled()) - SekSetIRQLine(6, SEK_IRQSTATUS_AUTO); - } - } - - if (nGame == 5 || nGame == 6) - { - if (i == (nInterleave - 1)) - SekSetIRQLine(5, SEK_IRQSTATUS_AUTO); - } - - nNext = (i + 1) * nCyclesTotal[1] / nInterleave; - nCyclesSegment = nNext - nCyclesDone[1]; - nCyclesSegment = ZetRun(nCyclesSegment); - nCyclesDone[1] += nCyclesSegment; - - if ((i % (nInterleave / 8)) == ((nInterleave / 8) - 1)) {// && sound_nmi_enable && sound_control) { // iq_132 - ZetNmi(); //ZetSetIRQLine(0x20, ZET_IRQSTATUS_ACK); - } - - if (pBurnSoundOut) { - INT32 nSegmentLength = nBurnSoundLen / nInterleave; - INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - memset(pSoundBuf, 0, nSegmentLength * 2 * 2); - K054539Update(0, pSoundBuf, nSegmentLength); - K054539Update(1, pSoundBuf, nSegmentLength); - nSoundBufferPos += nSegmentLength; - } - } - - if (pBurnSoundOut) { - INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos; - INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1); - if (nSegmentLength) { - memset(pSoundBuf, 0, nSegmentLength * 2 * 2); - K054539Update(0, pSoundBuf, nSegmentLength); - K054539Update(1, pSoundBuf, nSegmentLength); - } - } - - ZetClose(); - SekClose(); - - if (pBurnDraw) { - DrvDraw(); - } - - return 0; -} - - - -// Mystic Warriors (ver EAA) - -static struct BurnRomInfo mystwarrRomDesc[] = { - { "128eaa01.20f", 0x040000, 0x508f249c, 1 }, // 0 maincpu - { "128eaa02.20g", 0x040000, 0xf8ffa352, 1 }, // 1 - { "128a03.19f", 0x080000, 0xe98094f3, 1 }, // 2 - { "128a04.19g", 0x080000, 0x88c6a3e4, 1 }, // 3 - - { "128a05.6b", 0x020000, 0x0e5194e0, 2 }, // 4 soundcpu - - { "128a08.1h", 0x100000, 0x63d6cfa0, 3 }, // 5 gfx1 - { "128a09.1k", 0x100000, 0x573a7725, 3 }, // 6 - { "128a10.3h", 0x080000, 0x558e545a, 3 }, // 7 - - { "128a16.22k", 0x100000, 0x459b6407, 4 }, // 8 gfx2 - { "128a15.20k", 0x100000, 0x6bbfedf4, 4 }, // 9 - { "128a14.19k", 0x100000, 0xf7bd89dd, 4 }, // 10 - { "128a13.17k", 0x100000, 0xe89b66a2, 4 }, // 11 - { "128a12.12k", 0x080000, 0x63de93e2, 4 }, // 12 - { "128a11.10k", 0x080000, 0x4eac941a, 4 }, // 13 - - { "128a06.2d", 0x200000, 0x88ed598c, 5 }, // 14 shared - { "128a07.1d", 0x200000, 0xdb79a66e, 5 }, // 15 - - { "mystwarr.nv", 0x000080, 0x28df2269, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mystwarr) -STD_ROM_FN(mystwarr) - -struct BurnDriver BurnDrvMystwarr = { - "mystwarr", NULL, NULL, NULL, "1993", - "Mystic Warriors (ver EAA)\0", NULL, "Konami", "GX128", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, mystwarrRomInfo, mystwarrRomName, NULL, NULL, MystwarrInputInfo, MystwarrDIPInfo, - MystwarrInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x0800, - 288, 224, 4, 3 -}; - - -// Mystic Warriors (ver UAA) - -static struct BurnRomInfo mystwarruRomDesc[] = { - { "128uaa01.20f", 0x040000, 0x3a89aafd, 1 }, // 0 maincpu - { "128uaa02.20g", 0x040000, 0xde07410f, 1 }, // 1 - { "128a03.19f", 0x080000, 0xe98094f3, 1 }, // 2 - { "128a04.19g", 0x080000, 0x88c6a3e4, 1 }, // 3 - - { "128a05.6b", 0x020000, 0x0e5194e0, 2 }, // 4 soundcpu - - { "128a08.1h", 0x100000, 0x63d6cfa0, 3 }, // 5 gfx1 - { "128a09.1k", 0x100000, 0x573a7725, 3 }, // 6 - { "128a10.3h", 0x080000, 0x558e545a, 3 }, // 7 - - { "128a16.22k", 0x100000, 0x459b6407, 4 }, // 8 gfx2 - { "128a15.20k", 0x100000, 0x6bbfedf4, 4 }, // 9 - { "128a14.19k", 0x100000, 0xf7bd89dd, 4 }, // 10 - { "128a13.17k", 0x100000, 0xe89b66a2, 4 }, // 11 - { "128a12.12k", 0x080000, 0x63de93e2, 4 }, // 12 - { "128a11.10k", 0x080000, 0x4eac941a, 4 }, // 13 - - { "128a06.2d", 0x200000, 0x88ed598c, 5 }, // 14 shared - { "128a07.1d", 0x200000, 0xdb79a66e, 5 }, // 15 - - { "mystwarru.nv", 0x000080, 0x1a2597c7, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mystwarru) -STD_ROM_FN(mystwarru) - -struct BurnDriver BurnDrvMystwarru = { - "mystwarru", "mystwarr", NULL, NULL, "1993", - "Mystic Warriors (ver UAA)\0", NULL, "Konami", "GX128", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, mystwarruRomInfo, mystwarruRomName, NULL, NULL, MystwarrInputInfo, MystwarrDIPInfo, - MystwarrInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x0800, - 288, 224, 4, 3 -}; - - -// Mystic Warriors (ver JAA) - -static struct BurnRomInfo mystwarrjRomDesc[] = { - { "128jaa01.20f", 0x040000, 0x49c37bfe, 1 }, // 0 maincpu - { "128jaa02.20g", 0x040000, 0xe39fb3bb, 1 }, // 1 - { "128a03.19f", 0x080000, 0xe98094f3, 1 }, // 2 - { "128a04.19g", 0x080000, 0x88c6a3e4, 1 }, // 3 - - { "128a05.6b", 0x020000, 0x0e5194e0, 2 }, // 4 soundcpu - - { "128a08.1h", 0x100000, 0x63d6cfa0, 3 }, // 5 gfx1 - { "128a09.1k", 0x100000, 0x573a7725, 3 }, // 6 - { "128a10.3h", 0x080000, 0x558e545a, 3 }, // 7 - - { "128a16.22k", 0x100000, 0x459b6407, 4 }, // 8 gfx2 - { "128a15.20k", 0x100000, 0x6bbfedf4, 4 }, // 9 - { "128a14.19k", 0x100000, 0xf7bd89dd, 4 }, // 10 - { "128a13.17k", 0x100000, 0xe89b66a2, 4 }, // 11 - { "128a12.12k", 0x080000, 0x63de93e2, 4 }, // 12 - { "128a11.10k", 0x080000, 0x4eac941a, 4 }, // 13 - - { "128a06.2d", 0x200000, 0x88ed598c, 5 }, // 14 shared - { "128a07.1d", 0x200000, 0xdb79a66e, 5 }, // 15 - - { "mystwarrj.nv", 0x000080, 0x8e259918, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mystwarrj) -STD_ROM_FN(mystwarrj) - -struct BurnDriver BurnDrvMystwarrj = { - "mystwarrj", "mystwarr", NULL, NULL, "1993", - "Mystic Warriors (ver JAA)\0", NULL, "Konami", "GX128", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, mystwarrjRomInfo, mystwarrjRomName, NULL, NULL, MystwarrInputInfo, MystwarrDIPInfo, - MystwarrInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x0800, - 288, 224, 4, 3 -}; - - -// Mystic Warriors (ver AAA) - -static struct BurnRomInfo mystwarraRomDesc[] = { - { "128aaa01.20f", 0x040000, 0x633ead86, 1 }, // 0 maincpu - { "128aaa02.20g", 0x040000, 0x69ab81a2, 1 }, // 1 - { "128a03.19f", 0x080000, 0xe98094f3, 1 }, // 2 - { "128a04.19g", 0x080000, 0x88c6a3e4, 1 }, // 3 - - { "128a05.6b", 0x020000, 0x0e5194e0, 2 }, // 4 soundcpu - - { "128a08.1h", 0x100000, 0x63d6cfa0, 3 }, // 5 gfx1 - { "128a09.1k", 0x100000, 0x573a7725, 3 }, // 6 - { "128a10.3h", 0x080000, 0x558e545a, 3 }, // 7 - - { "128a16.22k", 0x100000, 0x459b6407, 4 }, // 8 gfx2 - { "128a15.20k", 0x100000, 0x6bbfedf4, 4 }, // 9 - { "128a14.19k", 0x100000, 0xf7bd89dd, 4 }, // 10 - { "128a13.17k", 0x100000, 0xe89b66a2, 4 }, // 11 - { "128a12.12k", 0x080000, 0x63de93e2, 4 }, // 12 - { "128a11.10k", 0x080000, 0x4eac941a, 4 }, // 13 - - { "128a06.2d", 0x200000, 0x88ed598c, 5 }, // 14 shared - { "128a07.1d", 0x200000, 0xdb79a66e, 5 }, // 15 - - { "mystwarra.nv", 0x000080, 0x38951263, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mystwarra) -STD_ROM_FN(mystwarra) - -struct BurnDriver BurnDrvMystwarra = { - "mystwarra", "mystwarr", NULL, NULL, "1993", - "Mystic Warriors (ver AAA)\0", NULL, "Konami", "GX128", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, mystwarraRomInfo, mystwarraRomName, NULL, NULL, MystwarrInputInfo, MystwarrDIPInfo, - MystwarrInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x0800, - 288, 224, 4, 3 -}; - - -// Violent Storm (ver EAC) - -static struct BurnRomInfo viostormRomDesc[] = { - { "168eac01.15h", 0x080000, 0x9f6b5c81, 1 }, // 0 maincpu - { "168eac02.15f", 0x080000, 0x126ecf03, 1 }, // 1 - - { "168a05.7c", 0x020000, 0x507fb3eb, 2 }, // 2 soundcpu - - { "168a09.1h", 0x200000, 0x1b34a881, 3 }, // 3 gfx1 - { "168a08.1k", 0x200000, 0xdb0ce743, 3 }, // 4 - - { "168a10.22k", 0x200000, 0xbd2bbdea, 4 }, // 5 gfx2 - { "168a11.19k", 0x200000, 0x7a57c9e7, 4 }, // 6 - { "168a12.20k", 0x200000, 0xb6b1c4ef, 4 }, // 7 - { "168a13.17k", 0x200000, 0xcdec3650, 4 }, // 8 - - { "168a06.1c", 0x200000, 0x25404fd7, 5 }, // 9 shared - { "168a07.1e", 0x200000, 0xfdbbf8cc, 5 }, // 10 - - { "viostorm.nv", 0x000080, 0x3cb1c96c, 6 }, // 11 eeprom -}; - -STD_ROM_PICK(viostorm) -STD_ROM_FN(viostorm) - -struct BurnDriver BurnDrvViostorm = { - "viostorm", NULL, NULL, NULL, "1993", - "Violent Storm (ver EAC)\0", NULL, "Konami", "GX224", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, viostormRomInfo, viostormRomName, NULL, NULL, ViostormInputInfo, ViostormDIPInfo, - ViostormInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Violent Storm (ver EAB) - -static struct BurnRomInfo viostormebRomDesc[] = { - { "168eab01.15h", 0x080000, 0x4eee6a8e, 1 }, // 0 maincpu - { "168eab02.15f", 0x080000, 0x8dd8aa4c, 1 }, // 1 - - { "168a05.7c", 0x020000, 0x507fb3eb, 2 }, // 2 soundcpu - - { "168a09.1h", 0x200000, 0x1b34a881, 3 }, // 3 gfx1 - { "168a08.1k", 0x200000, 0xdb0ce743, 3 }, // 4 - - { "168a10.22k", 0x200000, 0xbd2bbdea, 4 }, // 5 gfx2 - { "168a11.19k", 0x200000, 0x7a57c9e7, 4 }, // 6 - { "168a12.20k", 0x200000, 0xb6b1c4ef, 4 }, // 7 - { "168a13.17k", 0x200000, 0xcdec3650, 4 }, // 8 - - { "168a06.1c", 0x200000, 0x25404fd7, 5 }, // 9 shared - { "168a07.1e", 0x200000, 0xfdbbf8cc, 5 }, // 10 - - { "viostormeb.nv", 0x000080, 0x28b5fe49, 6 }, // 11 eeprom -}; - -STD_ROM_PICK(viostormeb) -STD_ROM_FN(viostormeb) - -struct BurnDriver BurnDrvViostormeb = { - "viostormeb", "viostorm", NULL, NULL, "1993", - "Violent Storm (ver EAB)\0", NULL, "Konami", "GX168", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, viostormebRomInfo, viostormebRomName, NULL, NULL, ViostormInputInfo, ViostormDIPInfo, - ViostormInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Violent Storm (ver UAC) - -static struct BurnRomInfo viostormuRomDesc[] = { - { "168uac01.15h", 0x080000, 0x49853530, 1 }, // 0 maincpu - { "168uac02.15f", 0x080000, 0x055ca6fe, 1 }, // 1 - - { "168a05.7c", 0x020000, 0x507fb3eb, 2 }, // 2 soundcpu - - { "168a09.1h", 0x200000, 0x1b34a881, 3 }, // 3 gfx1 - { "168a08.1k", 0x200000, 0xdb0ce743, 3 }, // 4 - - { "168a10.22k", 0x200000, 0xbd2bbdea, 4 }, // 5 gfx2 - { "168a11.19k", 0x200000, 0x7a57c9e7, 4 }, // 6 - { "168a12.20k", 0x200000, 0xb6b1c4ef, 4 }, // 7 - { "168a13.17k", 0x200000, 0xcdec3650, 4 }, // 8 - - { "168a06.1c", 0x200000, 0x25404fd7, 5 }, // 9 shared - { "168a07.1e", 0x200000, 0xfdbbf8cc, 5 }, // 10 - - { "viostormu.nv", 0x000080, 0x797042a1, 6 }, // 11 eeprom -}; - -STD_ROM_PICK(viostormu) -STD_ROM_FN(viostormu) - -struct BurnDriver BurnDrvViostormu = { - "viostormu", "viostorm", NULL, NULL, "1993", - "Violent Storm (ver UAC)\0", NULL, "Konami", "GX168", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, viostormuRomInfo, viostormuRomName, NULL, NULL, ViostormInputInfo, ViostormDIPInfo, - ViostormInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Violent Storm (ver UAB) - -static struct BurnRomInfo viostormubRomDesc[] = { - { "168uab01.15h", 0x080000, 0x2d6a9fa3, 1 }, // 0 maincpu - { "168uab02.15f", 0x080000, 0x0e75f7cc, 1 }, // 1 - - { "168a05.7c", 0x020000, 0x507fb3eb, 2 }, // 2 soundcpu - - { "168a09.1h", 0x200000, 0x1b34a881, 3 }, // 3 gfx1 - { "168a08.1k", 0x200000, 0xdb0ce743, 3 }, // 4 - - { "168a10.22k", 0x200000, 0xbd2bbdea, 4 }, // 5 gfx2 - { "168a11.19k", 0x200000, 0x7a57c9e7, 4 }, // 6 - { "168a12.20k", 0x200000, 0xb6b1c4ef, 4 }, // 7 - { "168a13.17k", 0x200000, 0xcdec3650, 4 }, // 8 - - { "168a06.1c", 0x200000, 0x25404fd7, 5 }, // 9 shared - { "168a07.1e", 0x200000, 0xfdbbf8cc, 5 }, // 10 - - { "viostormub.nv", 0x000080, 0xb6937413, 6 }, // 11 eeprom -}; - -STD_ROM_PICK(viostormub) -STD_ROM_FN(viostormub) - -struct BurnDriver BurnDrvViostormub = { - "viostormub", "viostorm", NULL, NULL, "1993", - "Violent Storm (ver UAB)\0", NULL, "Konami", "GX168", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, viostormubRomInfo, viostormubRomName, NULL, NULL, ViostormInputInfo, ViostormDIPInfo, - ViostormInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Violent Storm (ver AAC) - -static struct BurnRomInfo viostormaRomDesc[] = { - { "168aac01.15h", 0x080000, 0x3620635c, 1 }, // 0 maincpu - { "168aac02.15f", 0x080000, 0xdb679aec, 1 }, // 1 - - { "168a05.7c", 0x020000, 0x507fb3eb, 2 }, // 2 soundcpu - - { "168a09.1h", 0x200000, 0x1b34a881, 3 }, // 3 gfx1 - { "168a08.1k", 0x200000, 0xdb0ce743, 3 }, // 4 - - { "168a10.22k", 0x200000, 0xbd2bbdea, 4 }, // 5 gfx2 - { "168a11.19k", 0x200000, 0x7a57c9e7, 4 }, // 6 - { "168a12.20k", 0x200000, 0xb6b1c4ef, 4 }, // 7 - { "168a13.17k", 0x200000, 0xcdec3650, 4 }, // 8 - - { "168a06.1c", 0x200000, 0x25404fd7, 5 }, // 9 shared - { "168a07.1e", 0x200000, 0xfdbbf8cc, 5 }, // 10 - - { "viostorma.nv", 0x000080, 0x2cfbf966, 6 }, // 11 eeprom -}; - -STD_ROM_PICK(viostorma) -STD_ROM_FN(viostorma) - -struct BurnDriver BurnDrvViostorma = { - "viostorma", "viostorm", NULL, NULL, "1993", - "Violent Storm (ver AAC)\0", NULL, "Konami", "GX168", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, viostormaRomInfo, viostormaRomName, NULL, NULL, ViostormInputInfo, ViostormDIPInfo, - ViostormInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Violent Storm (ver AAB) - -static struct BurnRomInfo viostormabRomDesc[] = { - { "168aab01.15h", 0x080000, 0x14f78423, 1 }, // 0 maincpu - { "168aab02.15f", 0x080000, 0x3dd1cc83, 1 }, // 1 - - { "168a05.7c", 0x020000, 0x507fb3eb, 2 }, // 2 soundcpu - - { "168a09.1h", 0x200000, 0x1b34a881, 3 }, // 3 gfx1 - { "168a08.1k", 0x200000, 0xdb0ce743, 3 }, // 4 - - { "168a10.22k", 0x200000, 0xbd2bbdea, 4 }, // 5 gfx2 - { "168a11.19k", 0x200000, 0x7a57c9e7, 4 }, // 6 - { "168a12.20k", 0x200000, 0xb6b1c4ef, 4 }, // 7 - { "168a13.17k", 0x200000, 0xcdec3650, 4 }, // 8 - - { "168a06.1c", 0x200000, 0x25404fd7, 5 }, // 9 shared - { "168a07.1e", 0x200000, 0xfdbbf8cc, 5 }, // 10 - - { "viostormab.nv", 0x000080, 0x38ffce43, 6 }, // 11 eeprom -}; - -STD_ROM_PICK(viostormab) -STD_ROM_FN(viostormab) - -struct BurnDriver BurnDrvViostormab = { - "viostormab", "viostorm", NULL, NULL, "1993", - "Violent Storm (ver AAB)\0", NULL, "Konami", "GX168", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, viostormabRomInfo, viostormabRomName, NULL, NULL, ViostormInputInfo, ViostormDIPInfo, - ViostormInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Violent Storm (ver JAC) - -static struct BurnRomInfo viostormjRomDesc[] = { - { "168jac01.b01", 0x080000, 0xf8be1225, 1 }, // 0 maincpu - { "168jac02.b02", 0x080000, 0xf42fd1e5, 1 }, // 1 - - { "168a05.7c", 0x020000, 0x507fb3eb, 2 }, // 2 soundcpu - - { "168a09.1h", 0x200000, 0x1b34a881, 3 }, // 3 gfx1 - { "168a08.1k", 0x200000, 0xdb0ce743, 3 }, // 4 - - { "168a10.22k", 0x200000, 0xbd2bbdea, 4 }, // 5 gfx2 - { "168a11.19k", 0x200000, 0x7a57c9e7, 4 }, // 6 - { "168a12.20k", 0x200000, 0xb6b1c4ef, 4 }, // 7 - { "168a13.17k", 0x200000, 0xcdec3650, 4 }, // 8 - - { "168a06.1c", 0x200000, 0x25404fd7, 5 }, // 9 shared - { "168a07.1e", 0x200000, 0xfdbbf8cc, 5 }, // 10 - - { "viostormj.nv", 0x000080, 0x32f5d8bc, 6 }, // 11 eeprom -}; - -STD_ROM_PICK(viostormj) -STD_ROM_FN(viostormj) - -struct BurnDriver BurnDrvViostormj = { - "viostormj", "viostorm", NULL, NULL, "1993", - "Violent Storm (ver JAC)\0", NULL, "Konami", "GX168", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, viostormjRomInfo, viostormjRomName, NULL, NULL, ViostormInputInfo, ViostormDIPInfo, - ViostormInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Metamorphic Force (ver EAA) - -static struct BurnRomInfo metamrphRomDesc[] = { - { "224eaa01.15h", 0x040000, 0x30962c2b, 1 }, // 0 maincpu - { "224eaa02.15f", 0x040000, 0xe314330a, 1 }, // 1 - { "224a03", 0x080000, 0xa5bedb01, 1 }, // 2 - { "224a04", 0x080000, 0xada53ba4, 1 }, // 3 - - { "224a05", 0x040000, 0x4b4c985c, 2 }, // 4 soundcpu - - { "224a09", 0x100000, 0x1931afce, 3 }, // 5 gfx1 - { "224a08", 0x100000, 0xdc94d53a, 3 }, // 6 - - { "224a10", 0x200000, 0x161287f0, 4 }, // 7 gfx2 - { "224a11", 0x200000, 0xdf5960e1, 4 }, // 8 - { "224a12", 0x200000, 0xca72a4b3, 4 }, // 9 - { "224a13", 0x200000, 0x86b58feb, 4 }, // 10 - - { "224a14", 0x040000, 0x3c79b404, 5 }, // 11 k053250_1 - - { "224a06", 0x200000, 0x972f6abe, 6 }, // 12 shared - { "224a07", 0x100000, 0x61b2f97a, 6 }, // 13 - - { "metamrph.nv", 0x000080, 0x2c51229a, 7 }, // 14 eeprom -}; - -STD_ROM_PICK(metamrph) -STD_ROM_FN(metamrph) - -struct BurnDriver BurnDrvMetamrph = { - "metamrph", NULL, NULL, NULL, "1993", - "Metamorphic Force (ver EAA)\0", NULL, "Konami", "GX224", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, metamrphRomInfo, metamrphRomName, NULL, NULL, MetamrphInputInfo, MetamrphDIPInfo, - MetamrphInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x0800, - 288, 224, 4, 3 -}; - - -// Metamorphic Force (ver UAA) - -static struct BurnRomInfo metamrphuRomDesc[] = { - { "224uaa01.15h", 0x040000, 0xe1d9b516, 1 }, // 0 maincpu - { "224uaa02.15f", 0x040000, 0x289c926b, 1 }, // 1 - { "224a03", 0x080000, 0xa5bedb01, 1 }, // 2 - { "224a04", 0x080000, 0xada53ba4, 1 }, // 3 - - { "224a05", 0x040000, 0x4b4c985c, 2 }, // 4 soundcpu - - { "224a09", 0x100000, 0x1931afce, 3 }, // 5 gfx1 - { "224a08", 0x100000, 0xdc94d53a, 3 }, // 6 - - { "224a10", 0x200000, 0x161287f0, 4 }, // 7 gfx2 - { "224a11", 0x200000, 0xdf5960e1, 4 }, // 8 - { "224a12", 0x200000, 0xca72a4b3, 4 }, // 9 - { "224a13", 0x200000, 0x86b58feb, 4 }, // 10 - - { "224a14", 0x040000, 0x3c79b404, 5 }, // 11 k053250_1 - - { "224a06", 0x200000, 0x972f6abe, 6 }, // 12 shared - { "224a07", 0x100000, 0x61b2f97a, 6 }, // 13 - - { "metamrphu.nv", 0x000080, 0x1af2f855, 7 }, // 14 eeprom -}; - -STD_ROM_PICK(metamrphu) -STD_ROM_FN(metamrphu) - -struct BurnDriver BurnDrvMetamrphu = { - "metamrphu", "metamrph", NULL, NULL, "1993", - "Metamorphic Force (ver UAA)\0", NULL, "Konami", "GX224", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, metamrphuRomInfo, metamrphuRomName, NULL, NULL, MetamrphInputInfo, MetamrphDIPInfo, - MetamrphInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x0800, - 288, 224, 4, 3 -}; - - -// Metamorphic Force (ver JAA) - -static struct BurnRomInfo metamrphjRomDesc[] = { - { "224jaa01.15h", 0x040000, 0x558d2602, 1 }, // 0 maincpu - { "224jaa02.15f", 0x040000, 0x9b252ace, 1 }, // 1 - { "224a03", 0x080000, 0xa5bedb01, 1 }, // 2 - { "224a04", 0x080000, 0xada53ba4, 1 }, // 3 - - { "224a05", 0x040000, 0x4b4c985c, 2 }, // 4 soundcpu - - { "224a09", 0x100000, 0x1931afce, 3 }, // 5 gfx1 - { "224a08", 0x100000, 0xdc94d53a, 3 }, // 6 - - { "224a10", 0x200000, 0x161287f0, 4 }, // 7 gfx2 - { "224a11", 0x200000, 0xdf5960e1, 4 }, // 8 - { "224a12", 0x200000, 0xca72a4b3, 4 }, // 9 - { "224a13", 0x200000, 0x86b58feb, 4 }, // 10 - - { "224a14", 0x040000, 0x3c79b404, 5 }, // 11 k053250_1 - - { "224a06", 0x200000, 0x972f6abe, 6 }, // 12 shared - { "224a07", 0x100000, 0x61b2f97a, 6 }, // 13 - - { "metamrphj.nv", 0x000080, 0x30497478, 7 }, // 14 eeprom -}; - -STD_ROM_PICK(metamrphj) -STD_ROM_FN(metamrphj) - -struct BurnDriver BurnDrvMetamrphj = { - "metamrphj", "metamrph", NULL, NULL, "1993", - "Metamorphic Force (ver JAA)\0", NULL, "Konami", "GX224", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, metamrphjRomInfo, metamrphjRomName, NULL, NULL, MetamrphInputInfo, MetamrphDIPInfo, - MetamrphInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x0800, - 288, 224, 4, 3 -}; - - -// Martial Champion (ver EAB) - -static struct BurnRomInfo mtlchampRomDesc[] = { - { "234eab01.20f", 0x040000, 0x7c4d1e50, 1 }, // 0 maincpu - { "234eab02.20g", 0x040000, 0xd8bc85c9, 1 }, // 1 - { "234_d03.19f", 0x080000, 0xabb577c6, 1 }, // 2 - { "234_d04.19g", 0x080000, 0x030a1925, 1 }, // 3 - - { "234_d05.6b", 0x020000, 0xefb6bcaa, 2 }, // 4 soundcpu - - { "234a08.1h", 0x100000, 0x27e94288, 3 }, // 5 gfx1 - { "234a09.1k", 0x100000, 0x03aad28f, 3 }, // 6 - { "234a10.3h", 0x080000, 0x51f50fe2, 3 }, // 7 - - { "234a16.22k", 0x200000, 0x14d909a5, 4 }, // 8 gfx2 - { "234a15.20k", 0x200000, 0xa5028418, 4 }, // 9 - { "234a14.19k", 0x200000, 0xd7921f47, 4 }, // 10 - { "234a13.17k", 0x200000, 0x5974392e, 4 }, // 11 - { "234a12.12k", 0x100000, 0xc7f2b099, 4 }, // 12 - { "234a11.10k", 0x100000, 0x82923713, 4 }, // 13 - - { "234a06.2d", 0x200000, 0x12d32384, 5 }, // 14 shared - { "234a07.1d", 0x200000, 0x05ee239f, 5 }, // 15 - - { "mtlchamp.nv", 0x000080, 0xcd47858e, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mtlchamp) -STD_ROM_FN(mtlchamp) - -struct BurnDriver BurnDrvMtlchamp = { - "mtlchamp", NULL, NULL, NULL, "1993", - "Martial Champion (ver EAB)\0", NULL, "Konami", "GX234", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING, 2, HARDWARE_PREFIX_KONAMI, GBF_VSFIGHT, 0, - NULL, mtlchampRomInfo, mtlchampRomName, NULL, NULL, MartchmpInputInfo, MartchmpDIPInfo, - MartchmpInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Martial Champion (ver EAA) - -static struct BurnRomInfo mtlchamp1RomDesc[] = { - { "234eaa01.20f", 0x040000, 0x8fa731db, 1 }, // 0 maincpu - { "234eaa02.20g", 0x040000, 0xe7b50b54, 1 }, // 1 - { "234_d03.19f", 0x080000, 0xabb577c6, 1 }, // 2 - { "234_d04.19g", 0x080000, 0x030a1925, 1 }, // 3 - - { "234_d05.6b", 0x020000, 0xefb6bcaa, 2 }, // 4 soundcpu - - { "234a08.1h", 0x100000, 0x27e94288, 3 }, // 5 gfx1 - { "234a09.1k", 0x100000, 0x03aad28f, 3 }, // 6 - { "234a10.3h", 0x080000, 0x51f50fe2, 3 }, // 7 - - { "234a16.22k", 0x200000, 0x14d909a5, 4 }, // 8 gfx2 - { "234a15.20k", 0x200000, 0xa5028418, 4 }, // 9 - { "234a14.19k", 0x200000, 0xd7921f47, 4 }, // 10 - { "234a13.17k", 0x200000, 0x5974392e, 4 }, // 11 - { "234a12.12k", 0x100000, 0xc7f2b099, 4 }, // 12 - { "234a11.10k", 0x100000, 0x82923713, 4 }, // 13 - - { "234a06.2d", 0x200000, 0x12d32384, 5 }, // 14 shared - { "234a07.1d", 0x200000, 0x05ee239f, 5 }, // 15 - - { "mtlchamp1.nv", 0x000080, 0x202f6968, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mtlchamp1) -STD_ROM_FN(mtlchamp1) - -struct BurnDriver BurnDrvMtlchamp1 = { - "mtlchamp1", "mtlchamp", NULL, NULL, "1993", - "Martial Champion (ver EAA)\0", NULL, "Konami", "GX234", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_VSFIGHT, 0, - NULL, mtlchamp1RomInfo, mtlchamp1RomName, NULL, NULL, MartchmpInputInfo, MartchmpDIPInfo, - MartchmpInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Martial Champion (ver AAA) - -static struct BurnRomInfo mtlchampaRomDesc[] = { - { "234aaa01.20f", 0x040000, 0x32c70e65, 1 }, // 0 maincpu - { "234aaa02.20g", 0x040000, 0x2f666d52, 1 }, // 1 - { "234_d03.19f", 0x080000, 0xabb577c6, 1 }, // 2 - { "234_d04.19g", 0x080000, 0x030a1925, 1 }, // 3 - - { "234_d05.6b", 0x020000, 0xefb6bcaa, 2 }, // 4 soundcpu - - { "234a08.1h", 0x100000, 0x27e94288, 3 }, // 5 gfx1 - { "234a09.1k", 0x100000, 0x03aad28f, 3 }, // 6 - { "234a10.3h", 0x080000, 0x51f50fe2, 3 }, // 7 - - { "234a16.22k", 0x200000, 0x14d909a5, 4 }, // 8 gfx2 - { "234a15.20k", 0x200000, 0xa5028418, 4 }, // 9 - { "234a14.19k", 0x200000, 0xd7921f47, 4 }, // 10 - { "234a13.17k", 0x200000, 0x5974392e, 4 }, // 11 - { "234a12.12k", 0x100000, 0xc7f2b099, 4 }, // 12 - { "234a11.10k", 0x100000, 0x82923713, 4 }, // 13 - - { "234a06.2d", 0x200000, 0x12d32384, 5 }, // 14 shared - { "234a07.1d", 0x200000, 0x05ee239f, 5 }, // 15 - - { "mtlchampa.nv", 0x000080, 0x79a6f420, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mtlchampa) -STD_ROM_FN(mtlchampa) - -struct BurnDriver BurnDrvMtlchampa = { - "mtlchampa", "mtlchamp", NULL, NULL, "1993", - "Martial Champion (ver AAA)\0", NULL, "Konami", "GX234", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_VSFIGHT, 0, - NULL, mtlchampaRomInfo, mtlchampaRomName, NULL, NULL, MartchmpInputInfo, MartchmpDIPInfo, - MartchmpInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Martial Champion (ver JAA) - -static struct BurnRomInfo mtlchampjRomDesc[] = { - { "234jaa01.20f", 0x040000, 0x76c3c568, 1 }, // 0 maincpu - { "234jaa02.20g", 0x040000, 0x95eec0aa, 1 }, // 1 - { "234_d03.19f", 0x080000, 0xabb577c6, 1 }, // 2 - { "234_d04.19g", 0x080000, 0x030a1925, 1 }, // 3 - - { "234_d05.6b", 0x020000, 0xefb6bcaa, 2 }, // 4 soundcpu - - { "234a08.1h", 0x100000, 0x27e94288, 3 }, // 5 gfx1 - { "234a09.1k", 0x100000, 0x03aad28f, 3 }, // 6 - { "234a10.3h", 0x080000, 0x51f50fe2, 3 }, // 7 - - { "234a16.22k", 0x200000, 0x14d909a5, 4 }, // 8 gfx2 - { "234a15.20k", 0x200000, 0xa5028418, 4 }, // 9 - { "234a14.19k", 0x200000, 0xd7921f47, 4 }, // 10 - { "234a13.17k", 0x200000, 0x5974392e, 4 }, // 11 - { "234a12.12k", 0x100000, 0xc7f2b099, 4 }, // 12 - { "234a11.10k", 0x100000, 0x82923713, 4 }, // 13 - - { "234a06.2d", 0x200000, 0x12d32384, 5 }, // 14 shared - { "234a07.1d", 0x200000, 0x05ee239f, 5 }, // 15 - - { "mtlchampj.nv", 0x000080, 0xe311816f, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mtlchampj) -STD_ROM_FN(mtlchampj) - -struct BurnDriver BurnDrvMtlchampj = { - "mtlchampj", "mtlchamp", NULL, NULL, "1993", - "Martial Champion (ver JAA)\0", NULL, "Konami", "GX234", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_VSFIGHT, 0, - NULL, mtlchampjRomInfo, mtlchampjRomName, NULL, NULL, MartchmpInputInfo, MartchmpDIPInfo, - MartchmpInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Martial Champion (ver UAE) - -static struct BurnRomInfo mtlchampuRomDesc[] = { - { "234uae01.20f", 0x040000, 0xacecfec9, 1 }, // 0 maincpu - { "234uae02.20g", 0x040000, 0xc54ccf65, 1 }, // 1 - { "234_d03.19f", 0x080000, 0xabb577c6, 1 }, // 2 - { "234_d04.19g", 0x080000, 0x030a1925, 1 }, // 3 - - { "234_d05.6b", 0x020000, 0xefb6bcaa, 2 }, // 4 soundcpu - - { "234a08.1h", 0x100000, 0x27e94288, 3 }, // 5 gfx1 - { "234a09.1k", 0x100000, 0x03aad28f, 3 }, // 6 - { "234a10.3h", 0x080000, 0x51f50fe2, 3 }, // 7 - - { "234a16.22k", 0x200000, 0x14d909a5, 4 }, // 8 gfx2 - { "234a15.20k", 0x200000, 0xa5028418, 4 }, // 9 - { "234a14.19k", 0x200000, 0xd7921f47, 4 }, // 10 - { "234a13.17k", 0x200000, 0x5974392e, 4 }, // 11 - { "234a12.12k", 0x100000, 0xc7f2b099, 4 }, // 12 - { "234a11.10k", 0x100000, 0x82923713, 4 }, // 13 - - { "234a06.2d", 0x200000, 0x12d32384, 5 }, // 14 shared - { "234a07.1d", 0x200000, 0x05ee239f, 5 }, // 15 - - { "mtlchampu.nv", 0x000080, 0x182f146a, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mtlchampu) -STD_ROM_FN(mtlchampu) - -struct BurnDriver BurnDrvMtlchampu = { - "mtlchampu", "mtlchamp", NULL, NULL, "1993", - "Martial Champion (ver UAE)\0", NULL, "Konami", "GX234", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_VSFIGHT, 0, - NULL, mtlchampuRomInfo, mtlchampuRomName, NULL, NULL, MartchmpInputInfo, MartchmpDIPInfo, - MartchmpInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Martial Champion (ver UAD) - -static struct BurnRomInfo mtlchampu1RomDesc[] = { - { "234uad01.20f", 0x040000, 0x5f6c8d09, 1 }, // 0 maincpu - { "234uad02.20g", 0x040000, 0x15ca4fb2, 1 }, // 1 - { "234_d03.19f", 0x080000, 0xabb577c6, 1 }, // 2 - { "234_d04.19g", 0x080000, 0x030a1925, 1 }, // 3 - - { "234_d05.6b", 0x020000, 0xefb6bcaa, 2 }, // 4 soundcpu - - { "234a08.1h", 0x100000, 0x27e94288, 3 }, // 5 gfx1 - { "234a09.1k", 0x100000, 0x03aad28f, 3 }, // 6 - { "234a10.3h", 0x080000, 0x51f50fe2, 3 }, // 7 - - { "234a16.22k", 0x200000, 0x14d909a5, 4 }, // 8 gfx2 - { "234a15.20k", 0x200000, 0xa5028418, 4 }, // 9 - { "234a14.19k", 0x200000, 0xd7921f47, 4 }, // 10 - { "234a13.17k", 0x200000, 0x5974392e, 4 }, // 11 - { "234a12.12k", 0x100000, 0xc7f2b099, 4 }, // 12 - { "234a11.10k", 0x100000, 0x82923713, 4 }, // 13 - - { "234a06.2d", 0x200000, 0x12d32384, 5 }, // 14 shared - { "234a07.1d", 0x200000, 0x05ee239f, 5 }, // 15 - - { "mtlchampu1.nv", 0x000080, 0xf5d84df7, 6 }, // 16 eeprom -}; - -STD_ROM_PICK(mtlchampu1) -STD_ROM_FN(mtlchampu1) - -struct BurnDriver BurnDrvMtlchampu1 = { - "mtlchampu1", "mtlchamp", NULL, NULL, "1993", - "Martial Champion (ver UAD)\0", NULL, "Konami", "GX234", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_VSFIGHT, 0, - NULL, mtlchampu1RomInfo, mtlchampu1RomName, NULL, NULL, MartchmpInputInfo, MartchmpDIPInfo, - MartchmpInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 384, 224, 4, 3 -}; - - -// Gaiapolis (ver EAF) - -static struct BurnRomInfo gaiapolsRomDesc[] = { - { "123e07.24m", 0x100000, 0xf1a1db0f, 1 }, // 0 maincpu - { "123e09.19l", 0x100000, 0x4b3b57e7, 1 }, // 1 - { "123eaf11.19p", 0x040000, 0x9c324ade, 1 }, // 2 - { "123eaf12.17p", 0x040000, 0x1dfa14c5, 1 }, // 3 - - { "123e13.9c", 0x040000, 0xe772f822, 2 }, // 4 soundcpu - - { "123e16.2t", 0x100000, 0xa3238200, 3 }, // 5 gfx1 - { "123e17.2x", 0x100000, 0xbd0b9fb9, 3 }, // 6 - - { "123e19.34u", 0x200000, 0x219a7c26, 4 }, // 7 gfx2 - { "123e21.34y", 0x200000, 0x1888947b, 4 }, // 8 - { "123e18.36u", 0x200000, 0x3719b6d4, 4 }, // 9 - { "123e20.36y", 0x200000, 0x490a6f64, 4 }, // 10 - - { "123e04.32n", 0x080000, 0x0d4d5b8b, 5 }, // 11 gfx3 - { "123e05.29n", 0x080000, 0x7d123f3e, 5 }, // 12 - { "123e06.26n", 0x080000, 0xfa50121e, 5 }, // 13 - - { "123e01.36j", 0x020000, 0x9dbc9678, 6 }, // 14 gfx4 - { "123e02.34j", 0x040000, 0xb8e3f500, 6 }, // 15 - { "123e03.36m", 0x040000, 0xfde4749f, 6 }, // 16 - - { "123e14.2g", 0x200000, 0x65dfd3ff, 7 }, // 17 shared - { "123e15.2m", 0x200000, 0x7017ff07, 7 }, // 18 - - { "gaiapols.nv", 0x000080, 0x44c78184, 8 }, // 19 eeprom -}; - -STD_ROM_PICK(gaiapols) -STD_ROM_FN(gaiapols) - -struct BurnDriver BurnDrvGaiapols = { - "gaiapols", NULL, NULL, NULL, "1993", - "Gaiapolis (ver EAF)\0", NULL, "Konami", "GX123", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, gaiapolsRomInfo, gaiapolsRomName, NULL, NULL, DadandrnInputInfo, DadandrnDIPInfo, - GaiapolisInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 224, 376, 3, 4 -}; - - -// Gaiapolis (ver UAF) - -static struct BurnRomInfo gaiapolsuRomDesc[] = { - { "123e07.24m", 0x100000, 0xf1a1db0f, 1 }, // 0 maincpu - { "123e09.19l", 0x100000, 0x4b3b57e7, 1 }, // 1 - { "123uaf11.19p", 0x040000, 0x39dc1298, 1 }, // 2 - { "123uaf12.17p", 0x040000, 0xc633cf52, 1 }, // 3 - - { "123e13.9c", 0x040000, 0xe772f822, 2 }, // 4 soundcpu - - { "123e16.2t", 0x100000, 0xa3238200, 3 }, // 5 gfx1 - { "123e17.2x", 0x100000, 0xbd0b9fb9, 3 }, // 6 - - { "123e19.34u", 0x200000, 0x219a7c26, 4 }, // 7 gfx2 - { "123e21.34y", 0x200000, 0x1888947b, 4 }, // 8 - { "123e18.36u", 0x200000, 0x3719b6d4, 4 }, // 9 - { "123e20.36y", 0x200000, 0x490a6f64, 4 }, // 10 - - { "123e04.32n", 0x080000, 0x0d4d5b8b, 5 }, // 11 gfx3 - { "123e05.29n", 0x080000, 0x7d123f3e, 5 }, // 12 - { "123e06.26n", 0x080000, 0xfa50121e, 5 }, // 13 - - { "123e01.36j", 0x020000, 0x9dbc9678, 6 }, // 14 gfx4 - { "123e02.34j", 0x040000, 0xb8e3f500, 6 }, // 15 - { "123e03.36m", 0x040000, 0xfde4749f, 6 }, // 16 - - { "123e14.2g", 0x200000, 0x65dfd3ff, 7 }, // 17 shared - { "123e15.2m", 0x200000, 0x7017ff07, 7 }, // 18 - - { "gaiapolsu.nv", 0x000080, 0x7ece27b6, 8 }, // 19 eeprom -}; - -STD_ROM_PICK(gaiapolsu) -STD_ROM_FN(gaiapolsu) - -struct BurnDriver BurnDrvGaiapolsu = { - "gaiapolsu", "gaiapols", NULL, NULL, "1993", - "Gaiapolis (ver UAF)\0", NULL, "Konami", "GX123", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, gaiapolsuRomInfo, gaiapolsuRomName, NULL, NULL, DadandrnInputInfo, DadandrnDIPInfo, - GaiapolisInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 224, 376, 3, 4 -}; - - -// Gaiapolis (ver JAF) - -static struct BurnRomInfo gaiapolsjRomDesc[] = { - { "123e07.24m", 0x100000, 0xf1a1db0f, 1 }, // 0 maincpu - { "123e09.19l", 0x100000, 0x4b3b57e7, 1 }, // 1 - { "123jaf11.19p", 0x040000, 0x19919571, 1 }, // 2 - { "123jaf12.17p", 0x040000, 0x4246e595, 1 }, // 3 - - { "123e13.9c", 0x040000, 0xe772f822, 2 }, // 4 soundcpu - - { "123e16.2t", 0x100000, 0xa3238200, 3 }, // 5 gfx1 - { "123e17.2x", 0x100000, 0xbd0b9fb9, 3 }, // 6 - - { "123e19.34u", 0x200000, 0x219a7c26, 4 }, // 7 gfx2 - { "123e21.34y", 0x200000, 0x1888947b, 4 }, // 8 - { "123e18.36u", 0x200000, 0x3719b6d4, 4 }, // 9 - { "123e20.36y", 0x200000, 0x490a6f64, 4 }, // 10 - - { "123e04.32n", 0x080000, 0x0d4d5b8b, 5 }, // 11 gfx3 - { "123e05.29n", 0x080000, 0x7d123f3e, 5 }, // 12 - { "123e06.26n", 0x080000, 0xfa50121e, 5 }, // 13 - - { "123e01.36j", 0x020000, 0x9dbc9678, 6 }, // 14 gfx4 - { "123e02.34j", 0x040000, 0xb8e3f500, 6 }, // 15 - { "123e03.36m", 0x040000, 0xfde4749f, 6 }, // 16 - - { "123e14.2g", 0x200000, 0x65dfd3ff, 7 }, // 17 shared - { "123e15.2m", 0x200000, 0x7017ff07, 7 }, // 18 - - { "gaiapolsj.nv", 0x000080, 0xc4b970df, 8 }, // 19 eeprom -}; - -STD_ROM_PICK(gaiapolsj) -STD_ROM_FN(gaiapolsj) - -struct BurnDriver BurnDrvGaiapolsj = { - "gaiapolsj", "gaiapols", NULL, NULL, "1993", - "Gaiapolis (ver JAF)\0", NULL, "Konami", "GX123", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, gaiapolsjRomInfo, gaiapolsjRomName, NULL, NULL, DadandrnInputInfo, DadandrnDIPInfo, - GaiapolisInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 224, 376, 3, 4 -}; - - -// Monster Maulers (ver EAA) - -static struct BurnRomInfo mmaulersRomDesc[] = { - { "170eaa07.24m", 0x080000, 0x5458bd93, 1 }, // 0 maincpu - { "170eaa09.19l", 0x080000, 0x99c95c7b, 1 }, // 1 - { "170a08.21m", 0x040000, 0x03c59ba2, 1 }, // 2 - { "170a10.17l", 0x040000, 0x8a340909, 1 }, // 3 - - { "170a13.9c", 0x040000, 0x2ebf4d1c, 2 }, // 4 soundcpu - - { "170a16.2t", 0x100000, 0x41fee912, 3 }, // 5 gfx1 - { "170a17.2x", 0x100000, 0x96957c91, 3 }, // 6 - { "170a24.5r", 0x080000, 0x562ad4bd, 3 }, // 7 - - { "170a19.34u", 0x200000, 0xbe835141, 4 }, // 8 gfx2 - { "170a21.34y", 0x200000, 0xbcb68136, 4 }, // 9 - { "170a18.36u", 0x200000, 0xe1e3c8d2, 4 }, // 10 - { "170a20.36y", 0x200000, 0xccb4d88c, 4 }, // 11 - { "170a23.29y", 0x100000, 0x6b5390e4, 4 }, // 12 - { "170a22.32y", 0x100000, 0x21628106, 4 }, // 13 - - { "170a04.33n", 0x080000, 0x64b9a73b, 5 }, // 14 gfx3 - { "170a05.30n", 0x080000, 0xf2c101d0, 5 }, // 15 - { "170a06.27n", 0x080000, 0xb032e59b, 5 }, // 16 - - { "170a02.34j", 0x040000, 0xb040cebf, 6 }, // 17 gfx4 - { "170a03.36m", 0x040000, 0x7fb412b2, 6 }, // 18 - - { "170a14.2g", 0x200000, 0x83317cda, 7 }, // 19 shared - { "170a15.2m", 0x200000, 0xd4113ae9, 7 }, // 20 - - { "mmaulers.nv", 0x000080, 0x8324f517, 8 }, // 21 eeprom -}; - -STD_ROM_PICK(mmaulers) -STD_ROM_FN(mmaulers) - -struct BurnDriver BurnDrvMmaulers = { - "mmaulers", NULL, NULL, NULL, "1993", - "Monster Maulers (ver EAA)\0", NULL, "Konami", "GX170", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, mmaulersRomInfo, mmaulersRomName, NULL, NULL, DadandrnInputInfo, DadandrnDIPInfo, - DadandrnInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 288, 224, 4, 3 -}; - - -// Kyukyoku Sentai Dadandarn (ver JAA) - -static struct BurnRomInfo dadandrnRomDesc[] = { - { "170jaa07.24m", 0x080000, 0x6a55e828, 1 }, // 0 maincpu - { "170jaa09.19l", 0x080000, 0x9e821cd8, 1 }, // 1 - { "170a08.21m", 0x040000, 0x03c59ba2, 1 }, // 2 - { "170a10.17l", 0x040000, 0x8a340909, 1 }, // 3 - - { "170a13.9c", 0x040000, 0x2ebf4d1c, 2 }, // 4 soundcpu - - { "170a16.2t", 0x100000, 0x41fee912, 3 }, // 5 gfx1 - { "170a17.2x", 0x100000, 0x96957c91, 3 }, // 6 - { "170a24.5r", 0x080000, 0x562ad4bd, 3 }, // 7 - - { "170a19.34u", 0x200000, 0xbe835141, 4 }, // 8 gfx2 - { "170a21.34y", 0x200000, 0xbcb68136, 4 }, // 9 - { "170a18.36u", 0x200000, 0xe1e3c8d2, 4 }, // 10 - { "170a20.36y", 0x200000, 0xccb4d88c, 4 }, // 11 - { "170a23.29y", 0x100000, 0x6b5390e4, 4 }, // 12 - { "170a22.32y", 0x100000, 0x21628106, 4 }, // 13 - - { "170a04.33n", 0x080000, 0x64b9a73b, 5 }, // 14 gfx3 - { "170a05.30n", 0x080000, 0xf2c101d0, 5 }, // 15 - { "170a06.27n", 0x080000, 0xb032e59b, 5 }, // 16 - - { "170a02.34j", 0x040000, 0xb040cebf, 6 }, // 17 gfx4 - { "170a03.36m", 0x040000, 0x7fb412b2, 6 }, // 18 - - { "170a14.2g", 0x200000, 0x83317cda, 7 }, // 19 shared - { "170a15.2m", 0x200000, 0xd4113ae9, 7 }, // 20 - - { "dadandrn.nv", 0x000080, 0x346ae0cf, 8 }, // 21 eeprom -}; - -STD_ROM_PICK(dadandrn) -STD_ROM_FN(dadandrn) - -struct BurnDriver BurnDrvDadandrn = { - "dadandrn", "mmaulers", NULL, NULL, "1993", - "Kyukyoku Sentai Dadandarn (ver JAA)\0", NULL, "Konami", "GX170", - NULL, NULL, NULL, NULL, - BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_PREFIX_KONAMI, GBF_SCRFIGHT, 0, - NULL, dadandrnRomInfo, dadandrnRomName, NULL, NULL, DadandrnInputInfo, DadandrnDIPInfo, - DadandrnInit, DrvExit, DrvFrame, DrvDraw, NULL, &DrvRecalc, 0x800, - 288, 224, 4, 3 -};