From be02a45506b2819e1fd607f9a7e173d19bae56f8 Mon Sep 17 00:00:00 2001 From: MASH Date: Mon, 25 Jul 2016 21:44:06 +0100 Subject: [PATCH 001/116] Fixed proms in Dribbling f205v from EMMA Italian dumped a Dribbling PCB with different proms. See http://www.citylan.it/wiki/index.php/Dribbling_(set_2) The PROMs are 63s140n-d8.3e, 93453pc-d9.3c and tbp24s10n.2d. I checked the types and they are all 4bit: 63S140 = Monolithic Memories 256 x 4 TTL PROM Memory 93453 = Fairchild Semiconductor 1K x 4 TTL PROM Memory TBP24S10N = Texas Instruments 256 x 4 bit PROM The ones in MAME are dumped as 8bit types. But if you compare them, you will see that they have the same data in 4bit. --- src/mame/drivers/dribling.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/dribling.cpp b/src/mame/drivers/dribling.cpp index f59060e0b51..2ac6caa7181 100644 --- a/src/mame/drivers/dribling.cpp +++ b/src/mame/drivers/dribling.cpp @@ -322,9 +322,9 @@ ROM_START( dribling ) ROM_LOAD( "3n.bin", 0x1000, 0x1000, CRC(356c9803) SHA1(8e2ce52f32b33886f4747dadf3aeb78148538173) ) ROM_REGION( 0x600, "proms", 0 ) - ROM_LOAD( "prom_3c.bin", 0x0000, 0x0400, CRC(25f068de) SHA1(ea4c56c47fe8153069acb9df80df0b099f3b81f1) ) - ROM_LOAD( "prom_3e.bin", 0x0400, 0x0100, CRC(73eba798) SHA1(7be0e253624df53092e26c28eb18afdcf71434aa) ) - ROM_LOAD( "prom_2d.bin", 0x0500, 0x0100, CRC(5d8c57c6) SHA1(abfb54812d66a36e797be47653dadda4843e8a90) ) + ROM_LOAD( "93453-d9.3c", 0x0000, 0x0400, CRC(b045d005) SHA1(7e3ac10a99aa37f6348b3a57a747116b7025103e) ) + ROM_LOAD( "63s140-d8.3e", 0x0400, 0x0100, CRC(8f1a9908) SHA1(12c513c589757f1282e9979d3589f9b49d30ec0f) ) + ROM_LOAD( "tbp24s10.2d", 0x0500, 0x0100, CRC(a17d6956) SHA1(81724daf2e2d319f55cc34cc881b6a9a4e64e7ac) ) ROM_END @@ -341,9 +341,9 @@ ROM_START( driblingo ) ROM_LOAD( "3n.bin", 0x1000, 0x1000, CRC(356c9803) SHA1(8e2ce52f32b33886f4747dadf3aeb78148538173) ) ROM_REGION( 0x600, "proms", 0 ) - ROM_LOAD( "prom_3c.bin", 0x0000, 0x0400, CRC(25f068de) SHA1(ea4c56c47fe8153069acb9df80df0b099f3b81f1) ) - ROM_LOAD( "prom_3e.bin", 0x0400, 0x0100, CRC(73eba798) SHA1(7be0e253624df53092e26c28eb18afdcf71434aa) ) - ROM_LOAD( "prom_2d.bin", 0x0500, 0x0100, CRC(5d8c57c6) SHA1(abfb54812d66a36e797be47653dadda4843e8a90) ) + ROM_LOAD( "93453-d9.3c", 0x0000, 0x0400, CRC(b045d005) SHA1(7e3ac10a99aa37f6348b3a57a747116b7025103e) ) + ROM_LOAD( "63s140-d8.3e", 0x0400, 0x0100, CRC(8f1a9908) SHA1(12c513c589757f1282e9979d3589f9b49d30ec0f) ) + ROM_LOAD( "tbp24s10.2d", 0x0500, 0x0100, CRC(a17d6956) SHA1(81724daf2e2d319f55cc34cc881b6a9a4e64e7ac) ) ROM_END ROM_START( driblingbr ) @@ -359,9 +359,9 @@ ROM_START( driblingbr ) ROM_LOAD( "7", 0x1000, 0x1000, CRC(356c9803) SHA1(8e2ce52f32b33886f4747dadf3aeb78148538173) ) ROM_REGION( 0x600, "proms", 0 ) - ROM_LOAD( "prom_3c.bin", 0x0000, 0x0400, CRC(25f068de) SHA1(ea4c56c47fe8153069acb9df80df0b099f3b81f1) ) - ROM_LOAD( "prom_3e.bin", 0x0400, 0x0100, CRC(73eba798) SHA1(7be0e253624df53092e26c28eb18afdcf71434aa) ) - ROM_LOAD( "prom_2d.bin", 0x0500, 0x0100, CRC(5d8c57c6) SHA1(abfb54812d66a36e797be47653dadda4843e8a90) ) + ROM_LOAD( "93453-d9.3c", 0x0000, 0x0400, CRC(b045d005) SHA1(7e3ac10a99aa37f6348b3a57a747116b7025103e) ) + ROM_LOAD( "63s140-d8.3e", 0x0400, 0x0100, CRC(8f1a9908) SHA1(12c513c589757f1282e9979d3589f9b49d30ec0f) ) + ROM_LOAD( "tbp24s10.2d", 0x0500, 0x0100, CRC(a17d6956) SHA1(81724daf2e2d319f55cc34cc881b6a9a4e64e7ac) ) ROM_END From e86fd713e7bf65ebcb13b35acf4f6307c20bb36b Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Thu, 28 Jul 2016 00:34:17 +0300 Subject: [PATCH 002/116] keyboard: add F16..F20 keys (present on DEC LK201 keyboard and its clones) --- src/emu/input.cpp | 5 +++++ src/emu/input.h | 15 +++++++++++++++ src/emu/ioport.cpp | 5 +++++ 3 files changed, 25 insertions(+) diff --git a/src/emu/input.cpp b/src/emu/input.cpp index 360810a3b6c..592089cb221 100644 --- a/src/emu/input.cpp +++ b/src/emu/input.cpp @@ -240,6 +240,11 @@ static const code_string_table itemid_token_table[] = { ITEM_ID_F13, "F13" }, { ITEM_ID_F14, "F14" }, { ITEM_ID_F15, "F15" }, + { ITEM_ID_F16, "F16" }, + { ITEM_ID_F17, "F17" }, + { ITEM_ID_F18, "F18" }, + { ITEM_ID_F19, "F19" }, + { ITEM_ID_F20, "F20" }, { ITEM_ID_ESC, "ESC" }, { ITEM_ID_TILDE, "TILDE" }, { ITEM_ID_MINUS, "MINUS" }, diff --git a/src/emu/input.h b/src/emu/input.h index a14f08099c0..d7012c1f779 100644 --- a/src/emu/input.h +++ b/src/emu/input.h @@ -141,6 +141,11 @@ enum input_item_id ITEM_ID_F13, ITEM_ID_F14, ITEM_ID_F15, + ITEM_ID_F16, + ITEM_ID_F17, + ITEM_ID_F18, + ITEM_ID_F19, + ITEM_ID_F20, ITEM_ID_ESC, ITEM_ID_TILDE, ITEM_ID_MINUS, @@ -758,6 +763,11 @@ private: #define KEYCODE_F13_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F13) #define KEYCODE_F14_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F14) #define KEYCODE_F15_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F15) +#define KEYCODE_F16_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F16) +#define KEYCODE_F17_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F17) +#define KEYCODE_F18_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F18) +#define KEYCODE_F19_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F19) +#define KEYCODE_F20_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_F20) #define KEYCODE_ESC_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_ESC) #define KEYCODE_TILDE_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_TILDE) #define KEYCODE_MINUS_INDEXED(n) input_code(DEVICE_CLASS_KEYBOARD, n, ITEM_CLASS_SWITCH, ITEM_MODIFIER_NONE, ITEM_ID_MINUS) @@ -868,6 +878,11 @@ private: #define KEYCODE_F13 KEYCODE_F13_INDEXED(0) #define KEYCODE_F14 KEYCODE_F14_INDEXED(0) #define KEYCODE_F15 KEYCODE_F15_INDEXED(0) +#define KEYCODE_F16 KEYCODE_F16_INDEXED(0) +#define KEYCODE_F17 KEYCODE_F17_INDEXED(0) +#define KEYCODE_F18 KEYCODE_F18_INDEXED(0) +#define KEYCODE_F19 KEYCODE_F19_INDEXED(0) +#define KEYCODE_F20 KEYCODE_F20_INDEXED(0) #define KEYCODE_ESC KEYCODE_ESC_INDEXED(0) #define KEYCODE_TILDE KEYCODE_TILDE_INDEXED(0) #define KEYCODE_MINUS KEYCODE_MINUS_INDEXED(0) diff --git a/src/emu/ioport.cpp b/src/emu/ioport.cpp index 0590f22c71a..9720a2aba31 100644 --- a/src/emu/ioport.cpp +++ b/src/emu/ioport.cpp @@ -439,6 +439,11 @@ const char_info charinfo[] = { UCHAR_MAMEKEY(F13), "F13", nullptr }, // F13 function key { UCHAR_MAMEKEY(F14), "F14", nullptr }, // F14 function key { UCHAR_MAMEKEY(F15), "F15", nullptr }, // F15 function key + { UCHAR_MAMEKEY(F16), "F16", nullptr }, // F16 function key + { UCHAR_MAMEKEY(F17), "F17", nullptr }, // F17 function key + { UCHAR_MAMEKEY(F18), "F18", nullptr }, // F18 function key + { UCHAR_MAMEKEY(F19), "F19", nullptr }, // F19 function key + { UCHAR_MAMEKEY(F20), "F20", nullptr }, // F20 function key { UCHAR_MAMEKEY(ESC), "Esc", "\033" }, // Esc key { UCHAR_MAMEKEY(INSERT), "Insert", nullptr }, // Insert key { UCHAR_MAMEKEY(DEL), "Delete", "\010" }, // Delete key From f9db568146503c253230295ace2deba8433f6754 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Tue, 2 Aug 2016 07:01:29 -0400 Subject: [PATCH 003/116] Redo of split of src/emu/softlist.[cpp|h] This is a redo of the split first submitted in #137, with the following differences: * The newly refactored rom_entry data structure is used * I've kept the refactored softlist code in src/emu, in order to defer the mechanical process of moving it * I've kept includes of softlist[_dev].h out of diimage.h, so that changes to either do not trigger an emu.h recompilation * Obviously, this goes against the latest master --- scripts/src/emu.lua | 2 + src/devices/bus/a7800/a78_slot.h | 2 + src/devices/bus/a800/a800_slot.h | 2 + src/devices/bus/adam/exp.h | 2 +- src/devices/bus/apf/slot.h | 2 + src/devices/bus/arcadia/slot.h | 3 + src/devices/bus/astrocde/slot.h | 3 + src/devices/bus/c64/exp.h | 1 + src/devices/bus/cbm2/exp.h | 1 + src/devices/bus/chanf/slot.h | 3 + src/devices/bus/coco/cococart.h | 2 + src/devices/bus/coleco/exp.h | 2 +- src/devices/bus/crvision/slot.h | 3 + src/devices/bus/gameboy/gb_slot.h | 3 + src/devices/bus/gba/gba_slot.h | 3 + src/devices/bus/generic/slot.h | 3 + src/devices/bus/hp_optroms/hp_optrom.h | 2 + src/devices/bus/intv/slot.h | 3 + src/devices/bus/iq151/iq151.h | 2 + src/devices/bus/isa/sc499.h | 2 + src/devices/bus/kc/kc.h | 2 + src/devices/bus/m5/slot.h | 3 + src/devices/bus/megadrive/md_slot.h | 2 + src/devices/bus/msx_slot/cartridge.h | 1 + src/devices/bus/neogeo/slot.h | 2 + src/devices/bus/nes/aladdin.h | 1 + src/devices/bus/nes/datach.h | 1 + src/devices/bus/nes/karastudio.h | 1 + src/devices/bus/nes/nes_slot.h | 3 + src/devices/bus/nes/sunsoft_dcs.h | 1 + src/devices/bus/odyssey2/slot.h | 3 + src/devices/bus/pce/pce_slot.h | 3 + src/devices/bus/plus4/exp.h | 2 +- src/devices/bus/ql/rom.h | 2 +- src/devices/bus/saturn/sat_slot.h | 3 + src/devices/bus/scv/slot.h | 3 + src/devices/bus/sega8/sega8_slot.h | 3 + src/devices/bus/snes/snes_slot.h | 3 + src/devices/bus/ti99x/gromport.h | 2 + src/devices/bus/vboy/slot.h | 3 + src/devices/bus/vc4000/slot.h | 3 + src/devices/bus/vcs/vcs_slot.h | 2 + src/devices/bus/vectrex/slot.h | 3 + src/devices/bus/vic10/exp.h | 2 +- src/devices/bus/vic20/exp.h | 2 +- src/devices/bus/vidbrain/exp.h | 2 +- src/devices/bus/wswan/slot.h | 3 + src/devices/bus/z88/z88.h | 3 + src/devices/imagedev/cassette.h | 1 + src/devices/imagedev/chd_cd.h | 1 + src/devices/imagedev/diablo.h | 1 + src/devices/imagedev/flopdrv.h | 1 + src/devices/imagedev/floppy.h | 1 + src/devices/imagedev/harddriv.h | 1 + src/devices/imagedev/snapquik.h | 2 + src/devices/machine/smartmed.h | 1 + src/emu/diimage.cpp | 58 ++- src/emu/diimage.h | 9 +- src/emu/drivenum.cpp | 4 +- src/emu/romload.cpp | 4 +- src/emu/softlist.cpp | 655 ++----------------------- src/emu/softlist.h | 218 +++----- src/emu/softlist_dev.cpp | 523 ++++++++++++++++++++ src/emu/softlist_dev.h | 195 ++++++++ src/frontend/mame/audit.cpp | 11 +- src/frontend/mame/audit.h | 2 +- src/frontend/mame/clifront.cpp | 18 +- src/frontend/mame/info.cpp | 4 +- src/frontend/mame/mameopts.cpp | 2 +- src/frontend/mame/ui/imgcntrl.cpp | 2 +- src/frontend/mame/ui/inifile.cpp | 2 +- src/frontend/mame/ui/selgame.cpp | 2 +- src/frontend/mame/ui/selsoft.cpp | 6 +- src/frontend/mame/ui/swlist.cpp | 4 +- src/mame/drivers/c65.cpp | 2 +- src/mame/drivers/sega_sawatte.cpp | 2 +- src/mame/machine/at.cpp | 1 + src/mame/machine/microdrv.h | 1 + src/mame/machine/psion_pack.h | 2 + 79 files changed, 1023 insertions(+), 823 deletions(-) create mode 100644 src/emu/softlist_dev.cpp create mode 100644 src/emu/softlist_dev.h diff --git a/scripts/src/emu.lua b/scripts/src/emu.lua index 2302811a058..78b61d03d54 100644 --- a/scripts/src/emu.lua +++ b/scripts/src/emu.lua @@ -158,6 +158,8 @@ files { MAME_DIR .. "src/emu/screen.h", MAME_DIR .. "src/emu/softlist.cpp", MAME_DIR .. "src/emu/softlist.h", + MAME_DIR .. "src/emu/softlist_dev.cpp", + MAME_DIR .. "src/emu/softlist_dev.h", MAME_DIR .. "src/emu/sound.cpp", MAME_DIR .. "src/emu/sound.h", MAME_DIR .. "src/emu/speaker.cpp", diff --git a/src/devices/bus/a7800/a78_slot.h b/src/devices/bus/a7800/a78_slot.h index d6a635b1a82..0f4fd9d2e92 100644 --- a/src/devices/bus/a7800/a78_slot.h +++ b/src/devices/bus/a7800/a78_slot.h @@ -3,6 +3,8 @@ #ifndef __A78_SLOT_H #define __A78_SLOT_H +#include "softlist_dev.h" + /*************************************************************************** TYPE DEFINITIONS diff --git a/src/devices/bus/a800/a800_slot.h b/src/devices/bus/a800/a800_slot.h index 0d1bf674bd5..d1cf620bdc4 100644 --- a/src/devices/bus/a800/a800_slot.h +++ b/src/devices/bus/a800/a800_slot.h @@ -3,6 +3,8 @@ #ifndef __A800_SLOT_H #define __A800_SLOT_H +#include "softlist_dev.h" + /*************************************************************************** TYPE DEFINITIONS diff --git a/src/devices/bus/adam/exp.h b/src/devices/bus/adam/exp.h index c7bd5abc12a..f1b004d67a8 100644 --- a/src/devices/bus/adam/exp.h +++ b/src/devices/bus/adam/exp.h @@ -12,7 +12,7 @@ #define __ADAM_EXPANSION_SLOT__ #include "emu.h" - +#include "softlist_dev.h" //************************************************************************** diff --git a/src/devices/bus/apf/slot.h b/src/devices/bus/apf/slot.h index 076759e18b3..c2dba02fc08 100644 --- a/src/devices/bus/apf/slot.h +++ b/src/devices/bus/apf/slot.h @@ -3,6 +3,8 @@ #ifndef __APF_SLOT_H #define __APF_SLOT_H +#include "softlist_dev.h" + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/arcadia/slot.h b/src/devices/bus/arcadia/slot.h index abc95db625f..2f7f2dbc67a 100644 --- a/src/devices/bus/arcadia/slot.h +++ b/src/devices/bus/arcadia/slot.h @@ -3,6 +3,9 @@ #ifndef __ARCADIA_SLOT_H #define __ARCADIA_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/astrocde/slot.h b/src/devices/bus/astrocde/slot.h index 6866f787655..edd94af5ca1 100644 --- a/src/devices/bus/astrocde/slot.h +++ b/src/devices/bus/astrocde/slot.h @@ -3,6 +3,9 @@ #ifndef __ASTROCADE_SLOT_H #define __ASTROCADE_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/c64/exp.h b/src/devices/bus/c64/exp.h index 3522942e823..4e4555173fa 100644 --- a/src/devices/bus/c64/exp.h +++ b/src/devices/bus/c64/exp.h @@ -37,6 +37,7 @@ #define __C64_EXPANSION_SLOT__ #include "emu.h" +#include "softlist_dev.h" #include "formats/cbm_crt.h" diff --git a/src/devices/bus/cbm2/exp.h b/src/devices/bus/cbm2/exp.h index 2a9fa80d051..ad66454a746 100644 --- a/src/devices/bus/cbm2/exp.h +++ b/src/devices/bus/cbm2/exp.h @@ -30,6 +30,7 @@ #define __CBM2_EXPANSION_SLOT__ #include "emu.h" +#include "softlist_dev.h" diff --git a/src/devices/bus/chanf/slot.h b/src/devices/bus/chanf/slot.h index 68599ffad1c..f1d3f0d2c88 100644 --- a/src/devices/bus/chanf/slot.h +++ b/src/devices/bus/chanf/slot.h @@ -3,6 +3,9 @@ #ifndef __CHANF_SLOT_H #define __CHANF_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h index 7ba1e301d50..9415b5956c8 100644 --- a/src/devices/bus/coco/cococart.h +++ b/src/devices/bus/coco/cococart.h @@ -11,6 +11,8 @@ #ifndef __COCOCART_H__ #define __COCOCART_H__ +#include "softlist_dev.h" + /*************************************************************************** CONSTANTS diff --git a/src/devices/bus/coleco/exp.h b/src/devices/bus/coleco/exp.h index 25f503b378e..19fa5b5e69c 100644 --- a/src/devices/bus/coleco/exp.h +++ b/src/devices/bus/coleco/exp.h @@ -31,7 +31,7 @@ #define __COLECOVISION_CARTRIDGE_SLOT__ #include "emu.h" - +#include "softlist_dev.h" //************************************************************************** diff --git a/src/devices/bus/crvision/slot.h b/src/devices/bus/crvision/slot.h index 47fed8c1583..7643ca7fb1b 100644 --- a/src/devices/bus/crvision/slot.h +++ b/src/devices/bus/crvision/slot.h @@ -3,6 +3,9 @@ #ifndef __CRVISION_SLOT_H #define __CRVISION_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/gameboy/gb_slot.h b/src/devices/bus/gameboy/gb_slot.h index 67db3cda7f0..75a8b4e7cde 100644 --- a/src/devices/bus/gameboy/gb_slot.h +++ b/src/devices/bus/gameboy/gb_slot.h @@ -3,6 +3,9 @@ #ifndef __GB_SLOT_H #define __GB_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/gba/gba_slot.h b/src/devices/bus/gba/gba_slot.h index 5cbc103e8dc..f9918744d97 100644 --- a/src/devices/bus/gba/gba_slot.h +++ b/src/devices/bus/gba/gba_slot.h @@ -3,6 +3,9 @@ #ifndef __GBA_SLOT_H #define __GBA_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h index 6ba2e1a1fd5..a3e07f68ef4 100644 --- a/src/devices/bus/generic/slot.h +++ b/src/devices/bus/generic/slot.h @@ -3,6 +3,9 @@ #ifndef __GENERIC_SLOT_H #define __GENERIC_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/hp_optroms/hp_optrom.h b/src/devices/bus/hp_optroms/hp_optrom.h index d82f8962f4f..6ca5440cce5 100644 --- a/src/devices/bus/hp_optroms/hp_optrom.h +++ b/src/devices/bus/hp_optroms/hp_optrom.h @@ -14,6 +14,8 @@ #define _HP_OPTROM_H_ #include "emu.h" +#include "softlist_dev.h" + class hp_optrom_cart_device : public device_t, public device_slot_card_interface diff --git a/src/devices/bus/intv/slot.h b/src/devices/bus/intv/slot.h index ced41e71fd0..11d88aed25c 100644 --- a/src/devices/bus/intv/slot.h +++ b/src/devices/bus/intv/slot.h @@ -3,6 +3,9 @@ #ifndef __INTV_SLOT_H #define __INTV_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h index 1c75ff6c9a0..684aa00b8fd 100644 --- a/src/devices/bus/iq151/iq151.h +++ b/src/devices/bus/iq151/iq151.h @@ -45,6 +45,8 @@ #ifndef __IQ151CART_H__ #define __IQ151CART_H__ +#include "softlist_dev.h" + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/isa/sc499.h b/src/devices/bus/isa/sc499.h index 7bbdaedfb8b..ad536a66df0 100644 --- a/src/devices/bus/isa/sc499.h +++ b/src/devices/bus/isa/sc499.h @@ -15,6 +15,8 @@ #include "emu.h" #include "bus/isa/isa.h" +#include "softlist_dev.h" + //************************************************************************** // TYPE DEFINITIONS diff --git a/src/devices/bus/kc/kc.h b/src/devices/bus/kc/kc.h index 7f9ed65f7d0..6f5e30f4943 100644 --- a/src/devices/bus/kc/kc.h +++ b/src/devices/bus/kc/kc.h @@ -11,6 +11,8 @@ #ifndef __KCEXP_H__ #define __KCEXP_H__ +#include "softlist_dev.h" + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/m5/slot.h b/src/devices/bus/m5/slot.h index cd12d43f3a8..27345e34a99 100644 --- a/src/devices/bus/m5/slot.h +++ b/src/devices/bus/m5/slot.h @@ -3,6 +3,9 @@ #ifndef __M5_SLOT_H #define __M5_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/megadrive/md_slot.h b/src/devices/bus/megadrive/md_slot.h index 4a86749d991..008ae917fb5 100644 --- a/src/devices/bus/megadrive/md_slot.h +++ b/src/devices/bus/megadrive/md_slot.h @@ -3,6 +3,8 @@ #ifndef __MD_SLOT_H #define __MD_SLOT_H +#include "softlist_dev.h" + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/msx_slot/cartridge.h b/src/devices/bus/msx_slot/cartridge.h index b9e1ca5e4f7..63530699b2b 100644 --- a/src/devices/bus/msx_slot/cartridge.h +++ b/src/devices/bus/msx_slot/cartridge.h @@ -5,6 +5,7 @@ #include "slot.h" #include "bus/msx_cart/cartridge.h" +#include "softlist_dev.h" extern const device_type MSX_SLOT_CARTRIDGE; diff --git a/src/devices/bus/neogeo/slot.h b/src/devices/bus/neogeo/slot.h index 158ff77e706..83de22b0a4b 100644 --- a/src/devices/bus/neogeo/slot.h +++ b/src/devices/bus/neogeo/slot.h @@ -4,6 +4,8 @@ #define __NEOGEO_SLOT_H #include "emu.h" +#include "softlist_dev.h" + /* PCB */ enum diff --git a/src/devices/bus/nes/aladdin.h b/src/devices/bus/nes/aladdin.h index b49ecbf964e..1ef34502618 100644 --- a/src/devices/bus/nes/aladdin.h +++ b/src/devices/bus/nes/aladdin.h @@ -4,6 +4,7 @@ #define __NES_ALADDIN_H #include "nxrom.h" +#include "softlist_dev.h" //---------------------------------- diff --git a/src/devices/bus/nes/datach.h b/src/devices/bus/nes/datach.h index 80157a83a5c..980be7a6492 100644 --- a/src/devices/bus/nes/datach.h +++ b/src/devices/bus/nes/datach.h @@ -4,6 +4,7 @@ #define __NES_DATACH_H #include "bandai.h" +#include "softlist_dev.h" #include "machine/i2cmem.h" #include "machine/bcreader.h" diff --git a/src/devices/bus/nes/karastudio.h b/src/devices/bus/nes/karastudio.h index e2b5ef874b5..8af386d9e33 100644 --- a/src/devices/bus/nes/karastudio.h +++ b/src/devices/bus/nes/karastudio.h @@ -4,6 +4,7 @@ #define __NES_KARASTUDIO_H #include "nxrom.h" +#include "softlist_dev.h" //----------------------------------------- diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index d9b64cfa30a..27790c208e0 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -3,6 +3,9 @@ #ifndef __NES_SLOT_H__ #define __NES_SLOT_H__ +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/nes/sunsoft_dcs.h b/src/devices/bus/nes/sunsoft_dcs.h index 04f8011d29a..bc56a5a2079 100644 --- a/src/devices/bus/nes/sunsoft_dcs.h +++ b/src/devices/bus/nes/sunsoft_dcs.h @@ -4,6 +4,7 @@ #define __NES_SUNSOFT_DCS_H #include "sunsoft.h" +#include "softlist_dev.h" //----------------------------------------------- diff --git a/src/devices/bus/odyssey2/slot.h b/src/devices/bus/odyssey2/slot.h index 88dde833dca..50f04e74b7e 100644 --- a/src/devices/bus/odyssey2/slot.h +++ b/src/devices/bus/odyssey2/slot.h @@ -3,6 +3,9 @@ #ifndef __O2_SLOT_H #define __O2_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/pce/pce_slot.h b/src/devices/bus/pce/pce_slot.h index c6cb11096e1..579945229bf 100644 --- a/src/devices/bus/pce/pce_slot.h +++ b/src/devices/bus/pce/pce_slot.h @@ -3,6 +3,9 @@ #ifndef __PCE_SLOT_H #define __PCE_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h index c63d2b618f1..2d18efaa207 100644 --- a/src/devices/bus/plus4/exp.h +++ b/src/devices/bus/plus4/exp.h @@ -40,7 +40,7 @@ #define __PLUS4_EXPANSION_SLOT__ #include "emu.h" - +#include "softlist_dev.h" //************************************************************************** diff --git a/src/devices/bus/ql/rom.h b/src/devices/bus/ql/rom.h index 606ffe4e67b..5649804df66 100644 --- a/src/devices/bus/ql/rom.h +++ b/src/devices/bus/ql/rom.h @@ -31,7 +31,7 @@ #define __QL_ROM_CARTRIDGE_SLOT__ #include "emu.h" - +#include "softlist_dev.h" //************************************************************************** diff --git a/src/devices/bus/saturn/sat_slot.h b/src/devices/bus/saturn/sat_slot.h index af16ecbdeaa..f87ce9bf0d3 100644 --- a/src/devices/bus/saturn/sat_slot.h +++ b/src/devices/bus/saturn/sat_slot.h @@ -3,6 +3,9 @@ #ifndef __SAT_SLOT_H #define __SAT_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/scv/slot.h b/src/devices/bus/scv/slot.h index 1d921f8d607..cbf87dd7d06 100644 --- a/src/devices/bus/scv/slot.h +++ b/src/devices/bus/scv/slot.h @@ -3,6 +3,9 @@ #ifndef __SCV_SLOT_H #define __SCV_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/sega8/sega8_slot.h b/src/devices/bus/sega8/sega8_slot.h index d27e993f0f7..5a0ce0af010 100644 --- a/src/devices/bus/sega8/sega8_slot.h +++ b/src/devices/bus/sega8/sega8_slot.h @@ -3,6 +3,9 @@ #ifndef __SEGA8_SLOT_H #define __SEGA8_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/snes/snes_slot.h b/src/devices/bus/snes/snes_slot.h index 7ebfefaa7f2..f6d4208eb1c 100644 --- a/src/devices/bus/snes/snes_slot.h +++ b/src/devices/bus/snes/snes_slot.h @@ -3,6 +3,9 @@ #ifndef __SNS_SLOT_H #define __SNS_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/ti99x/gromport.h b/src/devices/bus/ti99x/gromport.h index 81fa024f995..11727076ffb 100644 --- a/src/devices/bus/ti99x/gromport.h +++ b/src/devices/bus/ti99x/gromport.h @@ -12,6 +12,8 @@ #include "emu.h" #include "ti99defs.h" #include "machine/tmc0430.h" +#include "softlist_dev.h" + extern const device_type GROMPORT; diff --git a/src/devices/bus/vboy/slot.h b/src/devices/bus/vboy/slot.h index cf031e75f85..71adadd6a2a 100644 --- a/src/devices/bus/vboy/slot.h +++ b/src/devices/bus/vboy/slot.h @@ -3,6 +3,9 @@ #ifndef __VBOY_SLOT_H #define __VBOY_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/vc4000/slot.h b/src/devices/bus/vc4000/slot.h index 069593208bc..ed3425d0ddc 100644 --- a/src/devices/bus/vc4000/slot.h +++ b/src/devices/bus/vc4000/slot.h @@ -3,6 +3,9 @@ #ifndef __VC4000_SLOT_H #define __VC4000_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/vcs/vcs_slot.h b/src/devices/bus/vcs/vcs_slot.h index 142c30f9622..b8532dc216d 100755 --- a/src/devices/bus/vcs/vcs_slot.h +++ b/src/devices/bus/vcs/vcs_slot.h @@ -3,6 +3,8 @@ #ifndef __VCS_SLOT_H #define __VCS_SLOT_H +#include "softlist_dev.h" + /*************************************************************************** TYPE DEFINITIONS diff --git a/src/devices/bus/vectrex/slot.h b/src/devices/bus/vectrex/slot.h index 5c0183327ae..261574556cd 100644 --- a/src/devices/bus/vectrex/slot.h +++ b/src/devices/bus/vectrex/slot.h @@ -3,6 +3,9 @@ #ifndef __VECTREX_SLOT_H #define __VECTREX_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h index 4221991e124..a3ff118c891 100644 --- a/src/devices/bus/vic10/exp.h +++ b/src/devices/bus/vic10/exp.h @@ -37,10 +37,10 @@ #define __VIC10_EXPANSION_SLOT__ #include "emu.h" +#include "softlist_dev.h" #include "formats/cbm_crt.h" - //************************************************************************** // CONSTANTS //************************************************************************** diff --git a/src/devices/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h index 1bd6092e400..9f161fb5c28 100644 --- a/src/devices/bus/vic20/exp.h +++ b/src/devices/bus/vic20/exp.h @@ -37,7 +37,7 @@ #define __VIC20_EXPANSION_SLOT__ #include "emu.h" - +#include "softlist_dev.h" //************************************************************************** diff --git a/src/devices/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h index f662dd7cfa7..c9cd6677b55 100644 --- a/src/devices/bus/vidbrain/exp.h +++ b/src/devices/bus/vidbrain/exp.h @@ -40,7 +40,7 @@ #define __VIDEOBRAIN_EXPANSION_SLOT__ #include "emu.h" - +#include "softlist_dev.h" //************************************************************************** diff --git a/src/devices/bus/wswan/slot.h b/src/devices/bus/wswan/slot.h index 72036eab9ca..bd9d74fbe85 100644 --- a/src/devices/bus/wswan/slot.h +++ b/src/devices/bus/wswan/slot.h @@ -3,6 +3,9 @@ #ifndef __WS_SLOT_H #define __WS_SLOT_H +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/bus/z88/z88.h b/src/devices/bus/z88/z88.h index 60dfa2f924c..73d64575976 100644 --- a/src/devices/bus/z88/z88.h +++ b/src/devices/bus/z88/z88.h @@ -54,6 +54,9 @@ #ifndef __Z88CART_H__ #define __Z88CART_H__ +#include "softlist_dev.h" + + /*************************************************************************** TYPE DEFINITIONS ***************************************************************************/ diff --git a/src/devices/imagedev/cassette.h b/src/devices/imagedev/cassette.h index 1e6198ddeed..036fc77c534 100644 --- a/src/devices/imagedev/cassette.h +++ b/src/devices/imagedev/cassette.h @@ -12,6 +12,7 @@ #define CASSETTE_H #include "formats/cassimg.h" +#include "softlist_dev.h" enum cassette_state diff --git a/src/devices/imagedev/chd_cd.h b/src/devices/imagedev/chd_cd.h index 02d39071604..9e2ec9f9a29 100644 --- a/src/devices/imagedev/chd_cd.h +++ b/src/devices/imagedev/chd_cd.h @@ -12,6 +12,7 @@ #define CHD_CD_H #include "cdrom.h" +#include "softlist_dev.h" /*************************************************************************** TYPE DEFINITIONS diff --git a/src/devices/imagedev/diablo.h b/src/devices/imagedev/diablo.h index 806a825a1fe..8ab2ac1addc 100644 --- a/src/devices/imagedev/diablo.h +++ b/src/devices/imagedev/diablo.h @@ -8,6 +8,7 @@ #define _IMAGEDEV_DIABLO_H_ #include "harddisk.h" +#include "softlist_dev.h" #define DIABLO_TAG(_id) "diablo"#_id diff --git a/src/devices/imagedev/flopdrv.h b/src/devices/imagedev/flopdrv.h index 9d571c9f390..34e54100364 100644 --- a/src/devices/imagedev/flopdrv.h +++ b/src/devices/imagedev/flopdrv.h @@ -7,6 +7,7 @@ #define __FLOPDRV_H__ #include "formats/flopimg.h" +#include "softlist_dev.h" #define FLOPPY_TYPE_REGULAR 0 #define FLOPPY_TYPE_APPLE 1 diff --git a/src/devices/imagedev/floppy.h b/src/devices/imagedev/floppy.h index ec5e4b983e2..5e93da56c69 100644 --- a/src/devices/imagedev/floppy.h +++ b/src/devices/imagedev/floppy.h @@ -20,6 +20,7 @@ #include "formats/cqm_dsk.h" #include "formats/dsk_dsk.h" #include "sound/samples.h" +#include "softlist_dev.h" #define MCFG_FLOPPY_DRIVE_ADD(_tag, _slot_intf, _def_slot, _formats) \ MCFG_DEVICE_ADD(_tag, FLOPPY_CONNECTOR, 0) \ diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h index 583a5f53e9f..d2ce6aeaef9 100644 --- a/src/devices/imagedev/harddriv.h +++ b/src/devices/imagedev/harddriv.h @@ -12,6 +12,7 @@ #define HARDDRIV_H #include "harddisk.h" +#include "softlist_dev.h" /*************************************************************************** TYPE DEFINITIONS diff --git a/src/devices/imagedev/snapquik.h b/src/devices/imagedev/snapquik.h index e14b1d6da6a..1c1a9a3b3df 100644 --- a/src/devices/imagedev/snapquik.h +++ b/src/devices/imagedev/snapquik.h @@ -11,6 +11,8 @@ #ifndef __SNAPQUIK_H__ #define __SNAPQUIK_H__ +#include "softlist_dev.h" + typedef delegate snapquick_load_delegate; // ======================> snapshot_image_device diff --git a/src/devices/machine/smartmed.h b/src/devices/machine/smartmed.h index 0b69fd05886..f1da965c4e9 100644 --- a/src/devices/machine/smartmed.h +++ b/src/devices/machine/smartmed.h @@ -8,6 +8,7 @@ #define __SMARTMEDIA_H__ #include "formats/imageutl.h" +#include "softlist_dev.h" //#define SMARTMEDIA_IMAGE_SAVE diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 34a64ddf0f8..8e3d6d04da3 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -15,6 +15,7 @@ #include "ui/uimain.h" #include "zippath.h" #include "softlist.h" +#include "softlist_dev.h" #include "formats/ioprocs.h" #include @@ -840,9 +841,9 @@ bool device_image_interface::load_software(software_list_device &swlist, const c UINT32 supported = swinfo->supported(); if (supported == SOFTWARE_SUPPORTED_PARTIAL) - osd_printf_error("WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name()); + osd_printf_error("WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name().c_str()); if (supported == SOFTWARE_SUPPORTED_NO) - osd_printf_error("WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()); + osd_printf_error("WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name().c_str()); // attempt reading up the chain through the parents and create a locationtag std::string in the format // " swlist % clonename % parentname " @@ -1036,7 +1037,8 @@ image_init_result device_image_interface::load_software(const std::string &softl m_is_loading = true; // Check if there's a software list defined for this device and use that if we're not creating an image - bool softload = load_software_part(softlist_name.c_str(), m_software_part_ptr); + std::string list_name; + bool softload = load_software_part(softlist_name.c_str(), m_software_part_ptr, &list_name); if (!softload) { m_is_loading = false; @@ -1045,8 +1047,8 @@ image_init_result device_image_interface::load_software(const std::string &softl // set up softlist stuff m_software_info_ptr = &m_software_part_ptr->info(); - m_software_list_name.assign(m_software_info_ptr->list().list_name()); - m_full_software_name.assign(m_software_part_ptr->info().shortname()); + m_software_list_name = std::move(list_name); + m_full_software_name = m_software_part_ptr->info().shortname(); // specify image name with softlist-derived names m_image_name = m_full_software_name; @@ -1301,7 +1303,11 @@ void device_image_interface::software_name_split(const char *swlist_swname, std: } -const software_part *device_image_interface::find_software_item(const char *path, bool restrict_to_interface) const +//------------------------------------------------- +// find_software_item +//------------------------------------------------- + +const software_part *device_image_interface::find_software_item(const char *path, bool restrict_to_interface, software_list_device **dev) const { // split full software name into software list name and short software name std::string swlist_name, swinfo_name, swpart_name; @@ -1322,7 +1328,11 @@ const software_part *device_image_interface::find_software_item(const char *path { const software_part *part = info->find_part(swpart_name.c_str(), interface); if (part != nullptr) + { + if (dev != nullptr) + *dev = &swlistdev; return part; + } } } @@ -1337,16 +1347,32 @@ const software_part *device_image_interface::find_software_item(const char *path { const software_part *part = info->find_part(nullptr, interface); if (part != nullptr) + { + if (dev != nullptr) + *dev = &swlistdev; return part; + } } } } // if explicitly specified and not found, just error here + if (dev != nullptr) + *dev = nullptr; return nullptr; } +//------------------------------------------------- +// get_software_list_loader +//------------------------------------------------- + +const software_list_loader &device_image_interface::get_software_list_loader() const +{ + return false_software_list_loader::instance(); +} + + //------------------------------------------------- // load_software_part // @@ -1360,10 +1386,11 @@ const software_part *device_image_interface::find_software_item(const char *path // sw_info and sw_part are also set. //------------------------------------------------- -bool device_image_interface::load_software_part(const char *path, const software_part *&swpart) +bool device_image_interface::load_software_part(const char *path, const software_part *&swpart, std::string *list_name) { // if no match has been found, we suggest similar shortnames - swpart = find_software_item(path, true); + software_list_device *swlist; + swpart = find_software_item(path, true, &swlist); if (swpart == nullptr) { software_list_device::display_matches(device().machine().config(), image_interface(), path); @@ -1371,11 +1398,10 @@ bool device_image_interface::load_software_part(const char *path, const software } // Load the software part - software_list_device &swlist = swpart->info().list(); const char *swname = swpart->info().shortname().c_str(); - const rom_entry *start_entry = swpart->romdata(); + const rom_entry *start_entry = swpart->romdata().data(); const software_list_loader &loader = get_software_list_loader(); - bool result = loader.load_software(*this, swlist, swname, start_entry); + bool result = loader.load_software(*this, *swlist, swname, start_entry); #ifdef UNUSED_VARIABLE // Tell the world which part we actually loaded @@ -1383,17 +1409,17 @@ bool device_image_interface::load_software_part(const char *path, const software #endif // check compatibility - switch (swpart->is_compatible(swlist)) + switch (swlist->is_compatible(*swpart)) { case SOFTWARE_IS_COMPATIBLE: break; case SOFTWARE_IS_INCOMPATIBLE: - swlist.popmessage("WARNING! the set %s might not work on this system due to incompatible filter(s) '%s'\n", swpart->info().shortname(), swlist.filter()); + swlist->popmessage("WARNING! the set %s might not work on this system due to incompatible filter(s) '%s'\n", swpart->info().shortname(), swlist->filter()); break; case SOFTWARE_NOT_COMPATIBLE: - swlist.popmessage("WARNING! the set %s might not work on this system due to missing filter(s) '%s'\n", swpart->info().shortname(), swlist.filter()); + swlist->popmessage("WARNING! the set %s might not work on this system due to missing filter(s) '%s'\n", swpart->info().shortname(), swlist->filter()); break; } @@ -1404,7 +1430,7 @@ bool device_image_interface::load_software_part(const char *path, const software const software_part *req_swpart = find_software_item(requirement, false); if (req_swpart != nullptr) { - device_image_interface *req_image = req_swpart->find_mountable_image(device().mconfig()); + device_image_interface *req_image = software_list_device::find_mountable_image(device().mconfig(), *req_swpart); if (req_image != nullptr) { req_image->set_init_phase(); @@ -1412,6 +1438,8 @@ bool device_image_interface::load_software_part(const char *path, const software } } } + if (list_name != nullptr) + *list_name = swlist->list_name(); return result; } diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 1d066527b49..0f12c2169ba 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -21,8 +21,6 @@ #include #include -#include "softlist.h" - //************************************************************************** // TYPE DEFINITIONS @@ -31,6 +29,7 @@ extern struct io_procs image_ioprocs; class software_list; +class software_list_loader; enum iodevice_t { @@ -252,7 +251,7 @@ public: bool user_loadable() const { return m_user_loadable; } protected: - virtual const software_list_loader &get_software_list_loader() const { return false_software_list_loader::instance(); } + virtual const software_list_loader &get_software_list_loader() const; image_init_result load_internal(const std::string &path, bool is_create, int create_format, util::option_resolution *create_args, bool just_load); void determine_open_plan(int is_create, UINT32 *open_plan); @@ -273,8 +272,8 @@ protected: void image_checkhash(); void update_names(const device_type device_type = nullptr, const char *inst = nullptr, const char *brief = nullptr); - const software_part *find_software_item(const char *path, bool restrict_to_interface) const; - bool load_software_part(const char *path, const software_part *&swpart); + const software_part *find_software_item(const char *path, bool restrict_to_interface, software_list_device **device = nullptr) const; + bool load_software_part(const char *path, const software_part *&swpart, std::string *list_name = nullptr); std::string software_get_default_slot(const char *default_card_slot) const; void add_format(std::unique_ptr &&format); diff --git a/src/emu/drivenum.cpp b/src/emu/drivenum.cpp index 1d2f6d79f06..450790eb55a 100644 --- a/src/emu/drivenum.cpp +++ b/src/emu/drivenum.cpp @@ -2,7 +2,7 @@ // copyright-holders:Aaron Giles /*************************************************************************** - drivenum.c + drivenum.cpp Driver enumeration helpers. @@ -10,7 +10,7 @@ #include "emu.h" #include "drivenum.h" -#include "softlist.h" +#include "softlist_dev.h" #include diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index 989539259cc..0a54658c926 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -2,7 +2,7 @@ // copyright-holders:Nicola Salmoria,Paul Priest,Aaron Giles /********************************************************************* - romload.c + romload.cpp ROM loading functions. *********************************************************************/ @@ -10,7 +10,7 @@ #include "emu.h" #include "emuopts.h" #include "drivenum.h" -#include "softlist.h" +#include "softlist_dev.h" #include "ui/uimain.h" diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp index 2d6793db3af..67178a1b4bb 100644 --- a/src/emu/softlist.cpp +++ b/src/emu/softlist.cpp @@ -2,137 +2,16 @@ // copyright-holders:Wilbert Pol /*************************************************************************** - softlist.c + softlist.cpp Software list construction helpers. ***************************************************************************/ -#include "emu.h" -#include "emuopts.h" #include "softlist.h" -#include "validity.h" +#include "hash.h" #include "expat.h" -#include - - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -typedef std::unordered_map softlist_map; - - -// ======================> softlist_parser - -class softlist_parser -{ -public: - // construction (== execution) - softlist_parser(software_list_device &list, std::ostringstream &errors); - -private: - enum parse_position - { - POS_ROOT, - POS_MAIN, - POS_SOFT, - POS_PART, - POS_DATA - }; - - // internal parsing helpers - const char *filename() const { return m_list.filename(); } - const char *infoname() const { return (m_current_info != nullptr) ? m_current_info->shortname().c_str() : "???"; } - int line() const { return XML_GetCurrentLineNumber(m_parser); } - int column() const { return XML_GetCurrentColumnNumber(m_parser); } - const char *parser_error() const { return XML_ErrorString(XML_GetErrorCode(m_parser)); } - - // internal error helpers - template void parse_error(Format &&fmt, Params &&... args); - void unknown_tag(const char *tagname) { parse_error("Unknown tag: %s", tagname); } - void unknown_attribute(const char *attrname) { parse_error("Unknown attribute: %s", attrname); } - - // internal helpers - template std::vector parse_attributes(const char **attributes, const T &attrlist); - bool parse_name_and_value(const char **attributes, std::string &name, std::string &value); - void add_rom_entry(std::string &&name, std::string &&hashdata, UINT32 offset, UINT32 length, UINT32 flags); - - // expat callbacks - static void start_handler(void *data, const char *tagname, const char **attributes); - static void data_handler(void *data, const XML_Char *s, int len); - static void end_handler(void *data, const char *name); - - // internal parsing - void parse_root_start(const char *tagname, const char **attributes); - void parse_main_start(const char *tagname, const char **attributes); - void parse_soft_start(const char *tagname, const char **attributes); - void parse_part_start(const char *tagname, const char **attributes); - void parse_data_start(const char *tagname, const char **attributes); - void parse_soft_end(const char *name); - - // internal parsing state - software_list_device & m_list; - std::ostringstream & m_errors; - XML_Parser m_parser; - bool m_done; - bool m_data_accum_expected; - std::string m_data_accum; - software_info * m_current_info; - software_part * m_current_part; - parse_position m_pos; -}; - - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - -// device type definition -const device_type SOFTWARE_LIST = &device_creator; -false_software_list_loader false_software_list_loader::s_instance; -rom_software_list_loader rom_software_list_loader::s_instance; -image_software_list_loader image_software_list_loader::s_instance; - - - -//************************************************************************** -// SOFTWARE LIST LOADER -//************************************************************************** - -//------------------------------------------------- -// false_software_list_loader::load_software -//------------------------------------------------- - -bool false_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const -{ - return false; -} - - -//------------------------------------------------- -// rom_software_list_loader::load_software -//------------------------------------------------- - -bool rom_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const -{ - swlist.machine().rom_load().load_software_part_region(device, swlist, swname, start_entry); - return true; -} - - -//------------------------------------------------- -// image_software_list_loader::load_software -//------------------------------------------------- - -bool image_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const -{ - return device.load_software(swlist, swname, start_entry); -} - - //************************************************************************** // FEATURE LIST ITEM //************************************************************************** @@ -194,56 +73,6 @@ const char *software_part::feature(const std::string &feature_name) const } -//------------------------------------------------- -// is_compatible - determine if we are compatible -// with the given software_list_device -//------------------------------------------------- - -software_compatibility software_part::is_compatible(const software_list_device &swlistdev) const -{ - // get the softlist filter; if null, assume compatible - const char *filter = swlistdev.filter(); - if (filter == nullptr) - return SOFTWARE_IS_COMPATIBLE; - - // copy the comma-delimited string and ensure it ends with a final comma - std::string filt = std::string(filter).append(","); - - // get the incompatibility filter and test against it first if it exists - const char *incompatibility = feature("incompatibility"); - if (incompatibility != nullptr) - { - // copy the comma-delimited string and ensure it ends with a final comma - std::string incomp = std::string(incompatibility).append(","); - - // iterate over filter items and see if they exist in the list; if so, it's incompatible - for (int start = 0, end = filt.find_first_of(',',start); end != -1; start = end + 1, end = filt.find_first_of(',', start)) - { - std::string token(filt, start, end - start + 1); - if (incomp.find(token) != -1) - return SOFTWARE_IS_INCOMPATIBLE; - } - } - - // get the compatibility feature; if null, assume compatible - const char *compatibility = feature("compatibility"); - if (compatibility == nullptr) - return SOFTWARE_IS_COMPATIBLE; - - // copy the comma-delimited string and ensure it ends with a final comma - std::string comp = std::string(compatibility).append(","); - - // iterate over filter items and see if they exist in the compatibility list; if so, it's compatible - for (int start = 0, end = filt.find_first_of(',',start); end != -1; start = end + 1, end = filt.find_first_of(',', start)) - { - std::string token(filt, start, end - start + 1); - if (comp.find(token) != -1) - return SOFTWARE_IS_COMPATIBLE; - } - return SOFTWARE_NOT_COMPATIBLE; -} - - //------------------------------------------------- // matches_interface - determine if we match // an interface in the provided list @@ -264,35 +93,6 @@ bool software_part::matches_interface(const char *interface_list) const } -//------------------------------------------------- -// find_mountable_image - find an image interface -// that can automatically mount this software part -//------------------------------------------------- - -device_image_interface *software_part::find_mountable_image(const machine_config &mconfig) const -{ - // if automount="no", don't bother - const char *mount = feature("automount"); - if (mount != nullptr && strcmp(mount, "no") == 0) - return nullptr; - - for (device_image_interface &image : image_interface_iterator(mconfig.root_device())) - { - const char *interface = image.image_interface(); - if (interface != nullptr && matches_interface(interface)) - { - // mount only if not already mounted - const char *option = mconfig.options().value(image.brief_instance_name()); - if (*option == '\0' && !image.filename()) - - return ℑ - } - } - return nullptr; -} - - - //************************************************************************** // SOFTWARE INFO //************************************************************************** @@ -301,9 +101,8 @@ device_image_interface *software_part::find_mountable_image(const machine_config // software_info - constructor //------------------------------------------------- -software_info::software_info(software_list_device &list, std::string &&name, std::string &&parent, const char *supported) +software_info::software_info(std::string &&name, std::string &&parent, const char *supported) : m_next(nullptr), - m_list(list), m_supported(SOFTWARE_SUPPORTED_YES), m_shortname(std::move(name)), m_parentname(std::move(parent)) @@ -365,383 +164,6 @@ bool software_info::has_multiple_parts(const char *interface) const } - -//************************************************************************** -// SOFTWARE LIST DEVICE -//************************************************************************** - -//------------------------------------------------- -// software_list_device - constructor -//------------------------------------------------- - -software_list_device::software_list_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, SOFTWARE_LIST, "Software list", tag, owner, clock, "software_list", __FILE__), - m_list_type(SOFTWARE_LIST_ORIGINAL_SYSTEM), - m_filter(nullptr), - m_parsed(false), - m_file(mconfig.options().hash_path(), OPEN_FLAG_READ), - m_description("") -{ -} - - -//------------------------------------------------- -// static_set_type - configuration helper -// to set the list type -//------------------------------------------------- - -void software_list_device::static_set_type(device_t &device, const char *list, softlist_type list_type) -{ - software_list_device &swlistdev = downcast(device); - swlistdev.m_list_name.assign(list); - swlistdev.m_list_type = list_type; -} - - -//------------------------------------------------- -// static_set_custom_handler - configuration -// helper to set a custom callback -//------------------------------------------------- - -void software_list_device::static_set_filter(device_t &device, const char *filter) -{ - downcast(device).m_filter = filter; -} - - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void software_list_device::device_start() -{ -} - - -//------------------------------------------------- -// find_approx_matches - search ourselves for -// a list of possible matches of the given name -// and optional interface -//------------------------------------------------- - -void software_list_device::find_approx_matches(const char *name, int matches, const software_info **list, const char *interface) -{ - // if no name, return - if (name == nullptr || name[0] == 0) - return; - - // initialize everyone's states - std::vector penalty(matches); - for (int matchnum = 0; matchnum < matches; matchnum++) - { - penalty[matchnum] = 9999; - list[matchnum] = nullptr; - } - - // iterate over our info (will cause a parse if needed) - for (const software_info &swinfo : get_info()) - { - const software_part &part = swinfo.parts().front(); - if ((interface == nullptr || part.matches_interface(interface)) && part.is_compatible(*this) == SOFTWARE_IS_COMPATIBLE) - { - // pick the best match between driver name and description - int longpenalty = driver_list::penalty_compare(name, swinfo.longname().c_str()); - int shortpenalty = driver_list::penalty_compare(name, swinfo.shortname().c_str()); - int curpenalty = std::min(longpenalty, shortpenalty); - - // insert into the sorted table of matches - for (int matchnum = matches - 1; matchnum >= 0; matchnum--) - { - // stop if we're worse than the current entry - if (curpenalty >= penalty[matchnum]) - break; - - // as long as this isn't the last entry, bump this one down - if (matchnum < matches - 1) - { - penalty[matchnum + 1] = penalty[matchnum]; - list[matchnum + 1] = list[matchnum]; - } - list[matchnum] = &swinfo; - penalty[matchnum] = curpenalty; - } - } - } -} - - -//------------------------------------------------- -// release - reset to a pre-parsed state -//------------------------------------------------- - -void software_list_device::release() -{ - osd_printf_verbose("Resetting %s\n", m_file.filename()); - m_parsed = false; - m_description.clear(); - m_errors.clear(); - m_infolist.clear(); -} - - -//------------------------------------------------- -// find_by_name - find a software list by name -// across all software list devices -//------------------------------------------------- - -software_list_device *software_list_device::find_by_name(const machine_config &config, const char *name) -{ - // iterate over each device in the system and find a match - for (software_list_device &swlistdev : software_list_device_iterator(config.root_device())) - if (strcmp(swlistdev.list_name(), name) == 0) - return &swlistdev; - return nullptr; -} - - -//------------------------------------------------- -// software_display_matches - display a list of -// possible matches in the system to the given -// name, across all software list devices -//------------------------------------------------- - -void software_list_device::display_matches(const machine_config &config, const char *interface, const char *name) -{ - // check if there is at least one software list - software_list_device_iterator deviter(config.root_device()); - if (deviter.first() != nullptr) - osd_printf_error("\n\"%s\" approximately matches the following\n" - "supported software items (best match first):\n\n", name); - - // iterate through lists - for (software_list_device &swlistdev : deviter) - { - // get the top 16 approximate matches for the selected device interface (i.e. only carts for cartslot, etc.) - const software_info *matches[16] = { nullptr }; - swlistdev.find_approx_matches(name, ARRAY_LENGTH(matches), matches, interface); - - // if we found some, print them - if (matches[0] != nullptr) - { - // different output depending on original system or compatible - if (swlistdev.list_type() == SOFTWARE_LIST_ORIGINAL_SYSTEM) - osd_printf_error("* Software list \"%s\" (%s) matches: \n", swlistdev.list_name(), swlistdev.description()); - else - osd_printf_error("* Compatible software list \"%s\" (%s) matches: \n", swlistdev.list_name(), swlistdev.description()); - - // print them out - for (auto &match : matches) - { - if (match != nullptr) - osd_printf_error("%-18s%s\n", match->shortname().c_str(), match->longname().c_str()); - } - - osd_printf_error("\n"); - } - } -} - - -//------------------------------------------------- -// find - find an item by name in the software -// list, using wildcards and optionally starting -// from an intermediate point -//------------------------------------------------- - -const software_info *software_list_device::find(const char *look_for) -{ - // nullptr search returns nothing - if (look_for == nullptr) - return nullptr; - - bool iswild = strchr(look_for, '*') != nullptr || strchr(look_for, '?'); - - // find a match (will cause a parse if needed when calling get_info) - const auto &info_list = get_info(); - auto iter = std::find_if( - info_list.begin(), - info_list.end(), - [&](const software_info &info) - { - const char *shortname = info.shortname().c_str(); - return (iswild && core_strwildcmp(look_for, shortname) == 0) - || core_stricmp(look_for, shortname) == 0; - }); - - return iter != info_list.end() - ? &*iter - : nullptr; -} - - -//------------------------------------------------- -// parse - parse our softlist file -//------------------------------------------------- - -void software_list_device::parse() -{ - // skip if done - if (m_parsed) - return; - - // reset the errors - m_errors.clear(); - - // attempt to open the file - osd_file::error filerr = m_file.open(m_list_name.c_str(), ".xml"); - if (filerr == osd_file::error::NONE) - { - // parse if no error - std::ostringstream errs; - softlist_parser parser(*this, errs); - m_file.close(); - m_errors = errs.str(); - } - else - m_errors = string_format("Error opening file: %s\n", filename()); - - // indicate that we've been parsed - m_parsed = true; -} - - -//------------------------------------------------- -// device_validity_check - validate the device -// configuration -//------------------------------------------------- - -void software_list_device::device_validity_check(validity_checker &valid) const -{ - // add to the global map whenever we check a list so we don't re-check - // it in the future - if (valid.already_checked(std::string("softlist/").append(m_list_name).c_str())) - return; - - // do device validation only in case of validate command - if (!valid.validate_all()) - return; - - // actually do the validate - const_cast(this)->internal_validity_check(valid); -} - - -//------------------------------------------------- -// internal_validity_check - internal helper to -// check the list -//------------------------------------------------- - -void software_list_device::internal_validity_check(validity_checker &valid) -{ - enum { NAME_LEN_PARENT = 8, NAME_LEN_CLONE = 16 }; - - softlist_map names; - softlist_map descriptions; - for (const software_info &swinfo : get_info()) - { - // first parse and output core errors if any - if (m_errors.length() > 0) - { - osd_printf_error("%s: Errors parsing software list:\n%s", filename(), errors_string()); - break; - } - - // Now check if the xml data is valid: - - // Did we lost any description? - if (swinfo.longname().empty()) - { - osd_printf_error("%s: %s has no description\n", filename(), swinfo.shortname().c_str()); - break; - } - - // Did we lost any year? - if (swinfo.year().empty()) - { - osd_printf_error("%s: %s has no year\n", filename(), swinfo.shortname().c_str()); - break; - } - - // Did we lost any publisher? - if (swinfo.publisher().empty()) - { - osd_printf_error("%s: %s has no publisher\n", filename(), swinfo.shortname().c_str()); - break; - } - - // Did we lost the software parts? - if (swinfo.parts().empty()) - { - osd_printf_error("%s: %s has no part\n", filename(), swinfo.shortname().c_str()); - break; - } - - // Second, since the xml is fine, run additional checks: - - // check for duplicate names - if (!names.insert(std::make_pair(swinfo.shortname(), &swinfo)).second) - { - const software_info *match = names.find(swinfo.shortname())->second; - osd_printf_error("%s: %s is a duplicate name (%s)\n", filename(), swinfo.shortname().c_str(), match->shortname().c_str()); - } - - // check for duplicate descriptions - std::string longname = std::string(swinfo.longname()); - if (!descriptions.insert(std::make_pair(strmakelower(longname), &swinfo)).second) - osd_printf_error("%s: %s is a duplicate description (%s)\n", filename(), swinfo.longname().c_str(), swinfo.shortname().c_str()); - - bool is_clone = false; - if (!swinfo.parentname().empty()) - { - is_clone = true; - if (swinfo.parentname() == swinfo.shortname()) - { - osd_printf_error("%s: %s is set as a clone of itself\n", filename(), swinfo.shortname().c_str()); - break; - } - - // make sure the parent exists - const software_info *swinfo2 = find(swinfo.parentname().c_str()); - - if (swinfo2 == nullptr) - osd_printf_error("%s: parent '%s' software for '%s' not found\n", filename(), swinfo.parentname().c_str(), swinfo.shortname().c_str()); - else if (!swinfo2->parentname().empty()) - osd_printf_error("%s: %s is a clone of a clone\n", filename(), swinfo.shortname().c_str()); - } - - // make sure the driver name is 8 chars or less - if ((is_clone && swinfo.shortname().length() > NAME_LEN_CLONE) || (!is_clone && swinfo.shortname().length() > NAME_LEN_PARENT)) - osd_printf_error("%s: %s %s driver name must be %d characters or less\n", filename(), swinfo.shortname().c_str(), - is_clone ? "clone" : "parent", is_clone ? NAME_LEN_CLONE : NAME_LEN_PARENT); - - // make sure the year is only digits, '?' or '+' - for (const char *s = swinfo.year().c_str(); *s != 0; s++) - if (!isdigit((UINT8)*s) && *s != '?' && *s != '+') - { - osd_printf_error("%s: %s has an invalid year '%s'\n", filename(), swinfo.shortname().c_str(), swinfo.year().c_str()); - break; - } - - softlist_map part_names; - for (const software_part &part : swinfo.parts()) - { - if (part.interface().empty()) - osd_printf_error("%s: %s has a part (%s) without interface\n", filename(), swinfo.shortname().c_str(), part.name().c_str()); - - if (part.romdata() == nullptr) - osd_printf_error("%s: %s has a part (%s) with no data\n", filename(), swinfo.shortname().c_str(), part.name().c_str()); - - if (!part_names.insert(std::make_pair(part.name(), &swinfo)).second) - osd_printf_error("%s: %s has a part (%s) whose name is duplicate\n", filename(), swinfo.shortname().c_str(), part.name().c_str()); - } - } - - // release all the memory - release(); -} - - - //************************************************************************** // SOFTWARE LIST PARSER //************************************************************************** @@ -750,8 +172,10 @@ void software_list_device::internal_validity_check(validity_checker &valid) // softlist_parser - constructor //------------------------------------------------- -softlist_parser::softlist_parser(software_list_device &list, std::ostringstream &errors) - : m_list(list), +softlist_parser::softlist_parser(util::core_file &file, const std::string &filename, std::list &infolist, std::ostringstream &errors) + : m_file(file), + m_filename(filename), + m_infolist(infolist), m_errors(errors), m_done(false), m_data_accum_expected(false), @@ -759,8 +183,6 @@ softlist_parser::softlist_parser(software_list_device &list, std::ostringstream m_current_part(nullptr), m_pos(POS_ROOT) { - osd_printf_verbose("Parsing %s\n", m_list.m_file.filename()); - // create the parser m_parser = XML_ParserCreate_MM(nullptr, nullptr, nullptr); if (m_parser == nullptr) @@ -772,12 +194,12 @@ softlist_parser::softlist_parser(software_list_device &list, std::ostringstream XML_SetCharacterDataHandler(m_parser, &softlist_parser::data_handler); // parse the file contents - m_list.m_file.seek(0, SEEK_SET); + m_file.seek(0, SEEK_SET); char buffer[1024]; while (!m_done) { - UINT32 length = m_list.m_file.read(buffer, sizeof(buffer)); - m_done = m_list.m_file.eof(); + UINT32 length = m_file.read(buffer, sizeof(buffer)); + m_done = m_file.eof(); if (XML_Parse(m_parser, buffer, length, m_done) == XML_STATUS_ERROR) { parse_error("%s", parser_error()); @@ -787,9 +209,39 @@ softlist_parser::softlist_parser(software_list_device &list, std::ostringstream // free the parser XML_ParserFree(m_parser); - osd_printf_verbose("Parsing complete\n"); } + +//------------------------------------------------- +// line +//------------------------------------------------- + +int softlist_parser::line() const +{ + return XML_GetCurrentLineNumber(m_parser); +} + + +//------------------------------------------------- +// column +//------------------------------------------------- + +int softlist_parser::column() const +{ + return XML_GetCurrentColumnNumber(m_parser); +} + + +//------------------------------------------------- +// parser_error +//------------------------------------------------- + +const char *softlist_parser::parser_error() const +{ + return XML_ErrorString(XML_GetErrorCode(m_parser)); +} + + //------------------------------------------------- // parse_error - append a parsing error with // filename, line and column information @@ -799,7 +251,7 @@ template inline void softlist_parser::parse_error(Format &&fmt, Params &&... args) { // always start with filename(line.column): - util::stream_format(m_errors, "%s(%d.%d): ", filename(), line(), column()); + util::stream_format(m_errors, "%s(%d.%d): ", m_filename, line(), column()); // append the remainder of the string util::stream_format(m_errors, std::forward(fmt), std::forward(args)...); @@ -894,17 +346,13 @@ void softlist_parser::add_rom_entry(std::string &&name, std::string &&hashdata, // make sure we don't add duplicate regions if (!name.empty() && (flags & ROMENTRY_TYPEMASK) == ROMENTRYTYPE_REGION) + { for (auto &elem : m_current_part->m_romdata) - if (!elem.name().empty() && elem.name() == name) + if (elem.name() == name) parse_error("Duplicated dataarea %s in software %s", name, infoname()); + } - // create the new entry and append it - m_current_part->m_romdata.emplace_back( - std::move(name), - std::move(hashdata), - offset, - length, - flags); + m_current_part->m_romdata.emplace_back(std::move(name), std::move(hashdata), offset, length, flags); } @@ -986,7 +434,7 @@ void softlist_parser::end_handler(void *data, const char *name) // data_handler - expat data handler //------------------------------------------------- -void softlist_parser::data_handler(void *data, const XML_Char *s, int len) +void softlist_parser::data_handler(void *data, const char *s, int len) { softlist_parser *state = reinterpret_cast(data); @@ -1018,7 +466,7 @@ void softlist_parser::parse_root_start(const char *tagname, const char **attribu const auto attrvalues = parse_attributes(attributes, attrnames); if (!attrvalues[1].empty()) - m_list.m_description = attrvalues[1]; + m_description = attrvalues[1]; } else unknown_tag(tagname); @@ -1040,8 +488,8 @@ void softlist_parser::parse_main_start(const char *tagname, const char **attribu if (!attrvalues[0].empty()) { - m_list.m_infolist.emplace_back(m_list, std::move(attrvalues[0]), std::move(attrvalues[1]), attrvalues[2].c_str()); - m_current_info = &m_list.m_infolist.back(); + m_infolist.emplace_back(std::move(attrvalues[0]), std::move(attrvalues[1]), attrvalues[2].c_str()); + m_current_info = &m_infolist.back(); } else parse_error("No name defined for item"); @@ -1354,7 +802,7 @@ void softlist_parser::parse_soft_end(const char *tagname) return; // was any dataarea/rom information encountered? if so, add a terminator - if (m_current_part->romdata() != nullptr) + if (!m_current_part->m_romdata.empty()) add_rom_entry("", "", 0, 0, ROMENTRYTYPE_END); // get the info; if present, copy shared data (we assume name/value strings live @@ -1364,3 +812,4 @@ void softlist_parser::parse_soft_end(const char *tagname) m_current_part->m_featurelist.emplace_back(item.name(), item.value()); } } + diff --git a/src/emu/softlist.h b/src/emu/softlist.h index 9b6cfd829bf..19ebc73e973 100644 --- a/src/emu/softlist.h +++ b/src/emu/softlist.h @@ -4,15 +4,16 @@ softlist.h - Software and software list information. + Software list file format. *********************************************************************/ #ifndef __SOFTLIST_H_ #define __SOFTLIST_H_ -#include "cstrpool.h" - +#include +#include "romentry.h" +#include "corefile.h" //************************************************************************** @@ -23,108 +24,13 @@ #define SOFTWARE_SUPPORTED_PARTIAL 1 #define SOFTWARE_SUPPORTED_NO 2 -enum softlist_type -{ - SOFTWARE_LIST_ORIGINAL_SYSTEM, - SOFTWARE_LIST_COMPATIBLE_SYSTEM -}; - -enum software_compatibility -{ - SOFTWARE_IS_COMPATIBLE, - SOFTWARE_IS_INCOMPATIBLE, - SOFTWARE_NOT_COMPATIBLE -}; - - -//************************************************************************** -// MACROS -//************************************************************************** - -#define MCFG_SOFTWARE_LIST_CONFIG(_list,_list_type) \ - software_list_device::static_set_type(*device, _list, _list_type); - -#define MCFG_SOFTWARE_LIST_ADD( _tag, _list ) \ - MCFG_DEVICE_ADD( _tag, SOFTWARE_LIST, 0 ) \ - MCFG_SOFTWARE_LIST_CONFIG(_list, SOFTWARE_LIST_ORIGINAL_SYSTEM) - -#define MCFG_SOFTWARE_LIST_COMPATIBLE_ADD( _tag, _list ) \ - MCFG_DEVICE_ADD( _tag, SOFTWARE_LIST, 0 ) \ - MCFG_SOFTWARE_LIST_CONFIG(_list, SOFTWARE_LIST_COMPATIBLE_SYSTEM) - -#define MCFG_SOFTWARE_LIST_MODIFY( _tag, _list ) \ - MCFG_DEVICE_MODIFY( _tag ) \ - MCFG_SOFTWARE_LIST_CONFIG(_list, SOFTWARE_LIST_ORIGINAL_SYSTEM) - -#define MCFG_SOFTWARE_LIST_COMPATIBLE_MODIFY( _tag, _list ) \ - MCFG_DEVICE_MODIFY( _tag ) \ - MCFG_SOFTWARE_LIST_CONFIG(_list, SOFTWARE_LIST_COMPATIBLE_SYSTEM) - -#define MCFG_SOFTWARE_LIST_FILTER( _tag, _filter ) \ - MCFG_DEVICE_MODIFY( _tag ) \ - software_list_device::static_set_filter(*device, _filter); - -#define MCFG_SOFTWARE_LIST_REMOVE( _tag ) \ - MCFG_DEVICE_REMOVE( _tag ) - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -class rom_entry; +struct XML_ParserStruct; class software_info; -class device_image_interface; -class software_list_device; - -// ======================> software_list_loader - -class software_list_loader -{ -public: - virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const = 0; -}; - - -// ======================> false_software_list_loader - -class false_software_list_loader : public software_list_loader -{ -public: - virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; - static const software_list_loader &instance() { return s_instance; } - -private: - static false_software_list_loader s_instance; -}; - - -// ======================> rom_software_list_loader - -class rom_software_list_loader : public software_list_loader -{ -public: - virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; - static const software_list_loader &instance() { return s_instance; } - -private: - static rom_software_list_loader s_instance; -}; - - -// ======================> image_software_list_loader - -class image_software_list_loader : public software_list_loader -{ -public: - virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; - static const software_list_loader &instance() { return s_instance; } - -private: - static image_software_list_loader s_instance; -}; - // ======================> feature_list_item @@ -174,13 +80,11 @@ public: const std::string &name() const { return m_name; } const std::string &interface() const { return m_interface; } const std::list &featurelist() const { return m_featurelist; } - const rom_entry *romdata(unsigned int index = 0) const { return (index < m_romdata.size()) ? &m_romdata[index] : nullptr; } + const std::vector &romdata() const { return m_romdata; } // helpers - software_compatibility is_compatible(const software_list_device &swlist) const; bool matches_interface(const char *interface) const; const char *feature(const std::string &feature_name) const; - device_image_interface *find_mountable_image(const machine_config &mconfig) const; private: // internal state @@ -202,7 +106,7 @@ class software_info public: // construction/destruction - software_info(software_list_device &list, std::string &&name, std::string &&parent, const char *supported); + software_info(std::string &&name, std::string &&parent, const char *supported); software_info(software_info const &) = delete; software_info(software_info &&) = delete; software_info& operator=(software_info const &) = delete; @@ -210,7 +114,6 @@ public: // getters software_info *next() const { return m_next; } - software_list_device &list() const { return m_list; } const std::string &shortname() const { return m_shortname; } const std::string &longname() const { return m_longname; } const std::string &parentname() const { return m_parentname; } @@ -228,7 +131,6 @@ public: private: // internal state software_info * m_next; - software_list_device & m_list; UINT32 m_supported; std::string m_shortname; std::string m_longname; @@ -242,74 +144,68 @@ private: }; -// ======================> software_list_device +// ======================> softlist_parser -// device representing a software list -class software_list_device : public device_t +class softlist_parser { - friend class softlist_parser; - public: - // construction/destruction - software_list_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + // construction (== execution) + softlist_parser(util::core_file &file, const std::string &filename, std::list &infolist, std::ostringstream &errors); - // inline configuration helpers - static void static_set_type(device_t &device, const char *list, softlist_type list_type); - static void static_set_filter(device_t &device, const char *filter); +private: + enum parse_position + { + POS_ROOT, + POS_MAIN, + POS_SOFT, + POS_PART, + POS_DATA + }; - // getters - const char *list_name() const { return m_list_name.c_str(); } - softlist_type list_type() const { return m_list_type; } - const char *filter() const { return m_filter; } - const char *filename() { return m_file.filename(); } + // internal parsing helpers + const char *infoname() const { return (m_current_info != nullptr) ? m_current_info->shortname().c_str() : "???"; } + int line() const; + int column() const; + const char *parser_error() const; - // getters that may trigger a parse - const char *description() { if (!m_parsed) parse(); return m_description.c_str(); } - bool valid() { if (!m_parsed) parse(); return !m_infolist.empty(); } - const char *errors_string() { if (!m_parsed) parse(); return m_errors.c_str(); } - const std::list &get_info() { if (!m_parsed) parse(); return m_infolist; } + // internal error helpers + template void parse_error(Format &&fmt, Params &&... args); + void unknown_tag(const char *tagname) { parse_error("Unknown tag: %s", tagname); } + void unknown_attribute(const char *attrname) { parse_error("Unknown attribute: %s", attrname); } - // operations - const software_info *find(const char *look_for); - void find_approx_matches(const char *name, int matches, const software_info **list, const char *interface); - void release(); - - // string pool helpers - const char *add_string(const char *string) { return m_stringpool.add(string); } - - // static helpers - static software_list_device *find_by_name(const machine_config &mconfig, const char *name); - static void display_matches(const machine_config &config, const char *interface, const char *name); - -protected: // internal helpers - void parse(); - void internal_validity_check(validity_checker &valid) ATTR_COLD; + template std::vector parse_attributes(const char **attributes, const T &attrlist); + bool parse_name_and_value(const char **attributes, std::string &name, std::string &value); + void add_rom_entry(std::string &&name, std::string &&hashdata, UINT32 offset, UINT32 length, UINT32 flags); - // device-level overrides - virtual void device_start() override; - virtual void device_validity_check(validity_checker &valid) const override ATTR_COLD; + // expat callbacks + static void start_handler(void *data, const char *tagname, const char **attributes); + static void data_handler(void *data, const char *s, int len); + static void end_handler(void *data, const char *name); - // configuration state - std::string m_list_name; - softlist_type m_list_type; - const char * m_filter; + // internal parsing + void parse_root_start(const char *tagname, const char **attributes); + void parse_main_start(const char *tagname, const char **attributes); + void parse_soft_start(const char *tagname, const char **attributes); + void parse_part_start(const char *tagname, const char **attributes); + void parse_data_start(const char *tagname, const char **attributes); + void parse_soft_end(const char *name); - // internal state - bool m_parsed; - emu_file m_file; - std::string m_description; - std::string m_errors; - std::list m_infolist; - const_string_pool m_stringpool; + // internal parsing state + util::core_file & m_file; + const std::string & m_filename; + std::list & m_infolist; + std::ostringstream & m_errors; + struct XML_ParserStruct * m_parser; + bool m_done; + std::string m_description; + bool m_data_accum_expected; + std::string m_data_accum; + software_info * m_current_info; + software_part * m_current_part; + parse_position m_pos; }; -// device type definition -extern const device_type SOFTWARE_LIST; +#endif // __SOFTLIST_H_ -// device type iterator -typedef device_type_iterator<&device_creator, software_list_device> software_list_device_iterator; - - -#endif diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp new file mode 100644 index 00000000000..eac92c08939 --- /dev/null +++ b/src/emu/softlist_dev.cpp @@ -0,0 +1,523 @@ +// license:BSD-3-Clause +// copyright-holders:Wilbert Pol +/*************************************************************************** + + softlist_dev.cpp + + Software list construction helpers. + +***************************************************************************/ + +#include "emu.h" +#include "emuopts.h" +#include "diimage.h" +#include "softlist_dev.h" +#include "validity.h" + +#include + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +typedef std::unordered_map softlist_map; + + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +// device type definition +const device_type SOFTWARE_LIST = &device_creator; +false_software_list_loader false_software_list_loader::s_instance; +rom_software_list_loader rom_software_list_loader::s_instance; +image_software_list_loader image_software_list_loader::s_instance; + + +//************************************************************************** +// SOFTWARE LIST LOADER +//************************************************************************** + +//------------------------------------------------- +// false_software_list_loader::load_software +//------------------------------------------------- + +bool false_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const +{ + return false; +} + + +//------------------------------------------------- +// rom_software_list_loader::load_software +//------------------------------------------------- + +bool rom_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const +{ + swlist.machine().rom_load().load_software_part_region(device, swlist, swname, start_entry); + return true; +} + + +//------------------------------------------------- +// image_software_list_loader::load_software +//------------------------------------------------- + +bool image_software_list_loader::load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const +{ + return device.load_software(swlist, swname, start_entry); +} + + +//************************************************************************** +// SOFTWARE LIST DEVICE +//************************************************************************** + +//------------------------------------------------- +// software_list_device - constructor +//------------------------------------------------- + +software_list_device::software_list_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, SOFTWARE_LIST, "Software list", tag, owner, clock, "software_list", __FILE__), + m_list_type(SOFTWARE_LIST_ORIGINAL_SYSTEM), + m_filter(nullptr), + m_parsed(false), + m_file(mconfig.options().hash_path(), OPEN_FLAG_READ), + m_description("") +{ +} + + +//------------------------------------------------- +// static_set_type - configuration helper +// to set the list type +//------------------------------------------------- + +void software_list_device::static_set_type(device_t &device, const char *list, softlist_type list_type) +{ + software_list_device &swlistdev = downcast(device); + swlistdev.m_list_name.assign(list); + swlistdev.m_list_type = list_type; +} + + +//------------------------------------------------- +// static_set_custom_handler - configuration +// helper to set a custom callback +//------------------------------------------------- + +void software_list_device::static_set_filter(device_t &device, const char *filter) +{ + downcast(device).m_filter = filter; +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void software_list_device::device_start() +{ +} + + +//------------------------------------------------- +// find_approx_matches - search ourselves for +// a list of possible matches of the given name +// and optional interface +//------------------------------------------------- + +void software_list_device::find_approx_matches(const char *name, int matches, const software_info **list, const char *interface) +{ + // if no name, return + if (name == nullptr || name[0] == 0) + return; + + // initialize everyone's states + std::vector penalty(matches); + for (int matchnum = 0; matchnum < matches; matchnum++) + { + penalty[matchnum] = 9999; + list[matchnum] = nullptr; + } + + // iterate over our info (will cause a parse if needed) + for (const software_info &swinfo : get_info()) + { + const software_part &part = swinfo.parts().front(); + if ((interface == nullptr || part.matches_interface(interface)) && is_compatible(part) == SOFTWARE_IS_COMPATIBLE) + { + // pick the best match between driver name and description + int longpenalty = driver_list::penalty_compare(name, swinfo.longname().c_str()); + int shortpenalty = driver_list::penalty_compare(name, swinfo.shortname().c_str()); + int curpenalty = std::min(longpenalty, shortpenalty); + + // insert into the sorted table of matches + for (int matchnum = matches - 1; matchnum >= 0; matchnum--) + { + // stop if we're worse than the current entry + if (curpenalty >= penalty[matchnum]) + break; + + // as long as this isn't the last entry, bump this one down + if (matchnum < matches - 1) + { + penalty[matchnum + 1] = penalty[matchnum]; + list[matchnum + 1] = list[matchnum]; + } + list[matchnum] = &swinfo; + penalty[matchnum] = curpenalty; + } + } + } +} + + +//------------------------------------------------- +// release - reset to a pre-parsed state +//------------------------------------------------- + +void software_list_device::release() +{ + osd_printf_verbose("Resetting %s\n", m_file.filename()); + m_parsed = false; + m_description.clear(); + m_errors.clear(); + m_infolist.clear(); +} + + +//------------------------------------------------- +// find_by_name - find a software list by name +// across all software list devices +//------------------------------------------------- + +software_list_device *software_list_device::find_by_name(const machine_config &config, const std::string &name) +{ + // iterate over each device in the system and find a match + for (software_list_device &swlistdev : software_list_device_iterator(config.root_device())) + if (swlistdev.list_name() == name) + return &swlistdev; + return nullptr; +} + + +//------------------------------------------------- +// software_display_matches - display a list of +// possible matches in the system to the given +// name, across all software list devices +//------------------------------------------------- + +void software_list_device::display_matches(const machine_config &config, const char *interface, const char *name) +{ + // check if there is at least one software list + software_list_device_iterator deviter(config.root_device()); + if (deviter.first() != nullptr) + osd_printf_error("\n\"%s\" approximately matches the following\n" + "supported software items (best match first):\n\n", name); + + // iterate through lists + for (software_list_device &swlistdev : deviter) + { + // get the top 16 approximate matches for the selected device interface (i.e. only carts for cartslot, etc.) + const software_info *matches[16] = { nullptr }; + swlistdev.find_approx_matches(name, ARRAY_LENGTH(matches), matches, interface); + + // if we found some, print them + if (matches[0] != nullptr) + { + // different output depending on original system or compatible + if (swlistdev.list_type() == SOFTWARE_LIST_ORIGINAL_SYSTEM) + osd_printf_error("* Software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description()); + else + osd_printf_error("* Compatible software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description()); + + // print them out + for (auto &match : matches) + { + if (match != nullptr) + osd_printf_error("%-18s%s\n", match->shortname().c_str(), match->longname().c_str()); + } + + osd_printf_error("\n"); + } + } +} + + +//------------------------------------------------- +// find - find an item by name in the software +// list, using wildcards and optionally starting +// from an intermediate point +//------------------------------------------------- + +const software_info *software_list_device::find(const char *look_for) +{ + // nullptr search returns nothing + if (look_for == nullptr) + return nullptr; + + bool iswild = strchr(look_for, '*') != nullptr || strchr(look_for, '?'); + + // find a match (will cause a parse if needed when calling get_info) + const auto &info_list = get_info(); + auto iter = std::find_if( + info_list.begin(), + info_list.end(), + [&](const software_info &info) + { + const char *shortname = info.shortname().c_str(); + return (iswild && core_strwildcmp(look_for, shortname) == 0) + || core_stricmp(look_for, shortname) == 0; + }); + + return iter != info_list.end() + ? &*iter + : nullptr; +} + + +//------------------------------------------------- +// parse - parse our softlist file +//------------------------------------------------- + +void software_list_device::parse() +{ + // skip if done + if (m_parsed) + return; + + // reset the errors + m_errors.clear(); + + // attempt to open the file + osd_file::error filerr = m_file.open(m_list_name.c_str(), ".xml"); + if (filerr == osd_file::error::NONE) + { + // parse if no error + std::ostringstream errs; + softlist_parser parser(m_file, m_description, m_infolist, errs); + m_file.close(); + m_errors = errs.str(); + } + else + m_errors = string_format("Error opening file: %s\n", filename()); + + // indicate that we've been parsed + m_parsed = true; +} + + +//------------------------------------------------- +// is_compatible - determine if we are compatible +// with the given software_list_device +//------------------------------------------------- + +software_compatibility software_list_device::is_compatible(const software_part &swpart) const +{ + // get the softlist filter; if null, assume compatible + if (m_filter == nullptr) + return SOFTWARE_IS_COMPATIBLE; + + // copy the comma-delimited string and ensure it ends with a final comma + std::string filt = std::string(m_filter).append(","); + + // get the incompatibility filter and test against it first if it exists + const char *incompatibility = swpart.feature("incompatibility"); + if (incompatibility != nullptr) + { + // copy the comma-delimited string and ensure it ends with a final comma + std::string incomp = std::string(incompatibility).append(","); + + // iterate over filter items and see if they exist in the list; if so, it's incompatible + for (int start = 0, end = filt.find_first_of(',', start); end != -1; start = end + 1, end = filt.find_first_of(',', start)) + { + std::string token(filt, start, end - start + 1); + if (incomp.find(token) != -1) + return SOFTWARE_IS_INCOMPATIBLE; + } + } + + // get the compatibility feature; if null, assume compatible + const char *compatibility = swpart.feature("compatibility"); + if (compatibility == nullptr) + return SOFTWARE_IS_COMPATIBLE; + + // copy the comma-delimited string and ensure it ends with a final comma + std::string comp = std::string(compatibility).append(","); + + // iterate over filter items and see if they exist in the compatibility list; if so, it's compatible + for (int start = 0, end = filt.find_first_of(',', start); end != -1; start = end + 1, end = filt.find_first_of(',', start)) + { + std::string token(filt, start, end - start + 1); + if (comp.find(token) != -1) + return SOFTWARE_IS_COMPATIBLE; + } + return SOFTWARE_NOT_COMPATIBLE; +} + + +//------------------------------------------------- +// find_mountable_image - find an image interface +// that can automatically mount this software part +//------------------------------------------------- + +device_image_interface *software_list_device::find_mountable_image(const machine_config &mconfig, const software_part &part) +{ + // if automount="no", don't bother + const char *mount = part.feature("automount"); + if (mount != nullptr && strcmp(mount, "no") == 0) + return nullptr; + + for (device_image_interface &image : image_interface_iterator(mconfig.root_device())) + { + const char *interface = image.image_interface(); + if (interface != nullptr && part.matches_interface(interface)) + { + // mount only if not already mounted + const char *option = mconfig.options().value(image.brief_instance_name()); + if (*option == '\0' && !image.filename()) + return ℑ + } + } + return nullptr; +} + + +//------------------------------------------------- +// device_validity_check - validate the device +// configuration +//------------------------------------------------- + +void software_list_device::device_validity_check(validity_checker &valid) const +{ + // add to the global map whenever we check a list so we don't re-check + // it in the future + if (valid.already_checked(std::string("softlist/").append(m_list_name).c_str())) + return; + + // do device validation only in case of validate command + if (!valid.validate_all()) + return; + + // actually do the validate + const_cast(this)->internal_validity_check(valid); +} + + +//------------------------------------------------- +// internal_validity_check - internal helper to +// check the list +//------------------------------------------------- + +void software_list_device::internal_validity_check(validity_checker &valid) +{ + enum { NAME_LEN_PARENT = 8, NAME_LEN_CLONE = 16 }; + + softlist_map names; + softlist_map descriptions; + for (const software_info &swinfo : get_info()) + { + // first parse and output core errors if any + if (m_errors.length() > 0) + { + osd_printf_error("%s: Errors parsing software list:\n%s", filename(), errors_string()); + break; + } + + // Now check if the xml data is valid: + + // Did we lost any description? + if (swinfo.longname().empty()) + { + osd_printf_error("%s: %s has no description\n", filename(), swinfo.shortname().c_str()); + break; + } + + // Did we lost any year? + if (swinfo.year().empty()) + { + osd_printf_error("%s: %s has no year\n", filename(), swinfo.shortname().c_str()); + break; + } + + // Did we lost any publisher? + if (swinfo.publisher().empty()) + { + osd_printf_error("%s: %s has no publisher\n", filename(), swinfo.shortname().c_str()); + break; + } + + // Did we lost the software parts? + if (swinfo.parts().empty()) + { + osd_printf_error("%s: %s has no part\n", filename(), swinfo.shortname().c_str()); + break; + } + + // Second, since the xml is fine, run additional checks: + + // check for duplicate names + if (!names.insert(std::make_pair(swinfo.shortname(), &swinfo)).second) + { + const software_info *match = names.find(swinfo.shortname())->second; + osd_printf_error("%s: %s is a duplicate name (%s)\n", filename(), swinfo.shortname().c_str(), match->shortname().c_str()); + } + + // check for duplicate descriptions + std::string longname = std::string(swinfo.longname()); + if (!descriptions.insert(std::make_pair(strmakelower(longname), &swinfo)).second) + osd_printf_error("%s: %s is a duplicate description (%s)\n", filename(), swinfo.longname().c_str(), swinfo.shortname().c_str()); + + bool is_clone = false; + if (!swinfo.parentname().empty()) + { + is_clone = true; + if (swinfo.parentname() == swinfo.shortname()) + { + osd_printf_error("%s: %s is set as a clone of itself\n", filename(), swinfo.shortname().c_str()); + break; + } + + // make sure the parent exists + const software_info *swinfo2 = find(swinfo.parentname().c_str()); + + if (swinfo2 == nullptr) + osd_printf_error("%s: parent '%s' software for '%s' not found\n", filename(), swinfo.parentname().c_str(), swinfo.shortname().c_str()); + else if (!swinfo2->parentname().empty()) + osd_printf_error("%s: %s is a clone of a clone\n", filename(), swinfo.shortname().c_str()); + } + + // make sure the driver name is 8 chars or less + if ((is_clone && swinfo.shortname().length() > NAME_LEN_CLONE) || (!is_clone && swinfo.shortname().length() > NAME_LEN_PARENT)) + osd_printf_error("%s: %s %s driver name must be %d characters or less\n", filename(), swinfo.shortname().c_str(), + is_clone ? "clone" : "parent", is_clone ? NAME_LEN_CLONE : NAME_LEN_PARENT); + + // make sure the year is only digits, '?' or '+' + for (const char *s = swinfo.year().c_str(); *s != 0; s++) + if (!isdigit((UINT8)*s) && *s != '?' && *s != '+') + { + osd_printf_error("%s: %s has an invalid year '%s'\n", filename(), swinfo.shortname().c_str(), swinfo.year().c_str()); + break; + } + + softlist_map part_names; + for (const software_part &part : swinfo.parts()) + { + if (part.interface().empty()) + osd_printf_error("%s: %s has a part (%s) without interface\n", filename(), swinfo.shortname().c_str(), part.name().c_str()); + + if (part.romdata().empty()) + osd_printf_error("%s: %s has a part (%s) with no data\n", filename(), swinfo.shortname().c_str(), part.name().c_str()); + + if (!part_names.insert(std::make_pair(part.name(), &swinfo)).second) + osd_printf_error("%s: %s has a part (%s) whose name is duplicate\n", filename(), swinfo.shortname().c_str(), part.name().c_str()); + } + } + + // release all the memory + release(); +} + + diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h new file mode 100644 index 00000000000..49ab4fad1ff --- /dev/null +++ b/src/emu/softlist_dev.h @@ -0,0 +1,195 @@ +// license:BSD-3-Clause +// copyright-holders:Wilbert Pol +/********************************************************************* + + softlist_dev.h + + Software and software list information. + +*********************************************************************/ + +#ifndef __SOFTLIST_DEV_H_ +#define __SOFTLIST_DEV_H_ + +#include "softlist.h" + + +//************************************************************************** +// CONSTANTS +//************************************************************************** + +#define SOFTWARE_SUPPORTED_YES 0 +#define SOFTWARE_SUPPORTED_PARTIAL 1 +#define SOFTWARE_SUPPORTED_NO 2 + +enum softlist_type +{ + SOFTWARE_LIST_ORIGINAL_SYSTEM, + SOFTWARE_LIST_COMPATIBLE_SYSTEM +}; + +enum software_compatibility +{ + SOFTWARE_IS_COMPATIBLE, + SOFTWARE_IS_INCOMPATIBLE, + SOFTWARE_NOT_COMPATIBLE +}; + + +//************************************************************************** +// MACROS +//************************************************************************** + +#define MCFG_SOFTWARE_LIST_CONFIG(_list,_list_type) \ + software_list_device::static_set_type(*device, _list, _list_type); + +#define MCFG_SOFTWARE_LIST_ADD( _tag, _list ) \ + MCFG_DEVICE_ADD( _tag, SOFTWARE_LIST, 0 ) \ + MCFG_SOFTWARE_LIST_CONFIG(_list, SOFTWARE_LIST_ORIGINAL_SYSTEM) + +#define MCFG_SOFTWARE_LIST_COMPATIBLE_ADD( _tag, _list ) \ + MCFG_DEVICE_ADD( _tag, SOFTWARE_LIST, 0 ) \ + MCFG_SOFTWARE_LIST_CONFIG(_list, SOFTWARE_LIST_COMPATIBLE_SYSTEM) + +#define MCFG_SOFTWARE_LIST_MODIFY( _tag, _list ) \ + MCFG_DEVICE_MODIFY( _tag ) \ + MCFG_SOFTWARE_LIST_CONFIG(_list, SOFTWARE_LIST_ORIGINAL_SYSTEM) + +#define MCFG_SOFTWARE_LIST_COMPATIBLE_MODIFY( _tag, _list ) \ + MCFG_DEVICE_MODIFY( _tag ) \ + MCFG_SOFTWARE_LIST_CONFIG(_list, SOFTWARE_LIST_COMPATIBLE_SYSTEM) + +#define MCFG_SOFTWARE_LIST_FILTER( _tag, _filter ) \ + MCFG_DEVICE_MODIFY( _tag ) \ + software_list_device::static_set_filter(*device, _filter); + +#define MCFG_SOFTWARE_LIST_REMOVE( _tag ) \ + MCFG_DEVICE_REMOVE( _tag ) + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class device_image_interface; +class software_list_device; + + +// ======================> software_list_loader + +class software_list_loader +{ +public: + virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const = 0; +}; + + +// ======================> false_software_list_loader + +class false_software_list_loader : public software_list_loader +{ +public: + virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + static const software_list_loader &instance() { return s_instance; } + +private: + static false_software_list_loader s_instance; +}; + + +// ======================> rom_software_list_loader + +class rom_software_list_loader : public software_list_loader +{ +public: + virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + static const software_list_loader &instance() { return s_instance; } + +private: + static rom_software_list_loader s_instance; +}; + + +// ======================> image_software_list_loader + +class image_software_list_loader : public software_list_loader +{ +public: + virtual bool load_software(device_image_interface &device, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + static const software_list_loader &instance() { return s_instance; } + +private: + static image_software_list_loader s_instance; +}; + + +// ======================> software_list_device + +// device representing a software list +class software_list_device : public device_t +{ + friend class softlist_parser; + +public: + // construction/destruction + software_list_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // inline configuration helpers + static void static_set_type(device_t &device, const char *list, softlist_type list_type); + static void static_set_filter(device_t &device, const char *filter); + + // getters + const std::string &list_name() const { return m_list_name; } + softlist_type list_type() const { return m_list_type; } + const char *filter() const { return m_filter; } + const char *filename() { return m_file.filename(); } + + // getters that may trigger a parse + const char *description() { if (!m_parsed) parse(); return m_description.c_str(); } + bool valid() { if (!m_parsed) parse(); return !m_infolist.empty(); } + const char *errors_string() { if (!m_parsed) parse(); return m_errors.c_str(); } + const std::list &get_info() { if (!m_parsed) parse(); return m_infolist; } + + // operations + const software_info *find(const char *look_for); + void find_approx_matches(const char *name, int matches, const software_info **list, const char *interface); + void release(); + software_compatibility is_compatible(const software_part &part) const; + + // static helpers + static software_list_device *find_by_name(const machine_config &mconfig, const std::string &name); + static void display_matches(const machine_config &config, const char *interface, const char *name); + static device_image_interface *find_mountable_image(const machine_config &mconfig, const software_part &part); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_validity_check(validity_checker &valid) const override ATTR_COLD; + +private: + // internal helpers + void parse(); + void internal_validity_check(validity_checker &valid) ATTR_COLD; + + // configuration state + std::string m_list_name; + softlist_type m_list_type; + const char * m_filter; + + // internal state + bool m_parsed; + emu_file m_file; + std::string m_description; + std::string m_errors; + std::list m_infolist; +}; + + +// device type definition +extern const device_type SOFTWARE_LIST; + +// device type iterator +typedef device_type_iterator<&device_creator, software_list_device> software_list_device_iterator; + + +#endif // __SOFTLIST_DEV_H_ diff --git a/src/frontend/mame/audit.cpp b/src/frontend/mame/audit.cpp index 9dfc99940f2..6adb5539747 100644 --- a/src/frontend/mame/audit.cpp +++ b/src/frontend/mame/audit.cpp @@ -2,7 +2,7 @@ // copyright-holders:Aaron Giles /*************************************************************************** - audit.c + audit.cpp ROM set auditing functions. @@ -14,7 +14,8 @@ #include "chd.h" #include "drivenum.h" #include "sound/samples.h" -#include "softlist.h" +#include "softlist_dev.h" + //************************************************************************** // CORE FUNCTIONS @@ -149,7 +150,7 @@ media_auditor::summary media_auditor::audit_device(device_t &device, const char //------------------------------------------------- // audit_software //------------------------------------------------- -media_auditor::summary media_auditor::audit_software(const char *list_name, const software_info *swinfo, const char *validation) +media_auditor::summary media_auditor::audit_software(const std::string &list_name, const software_info *swinfo, const char *validation) { // start fresh m_record_list.clear(); @@ -171,7 +172,7 @@ media_auditor::summary media_auditor::audit_software(const char *list_name, cons // now iterate over software parts for (const software_part &part : swinfo->parts()) - audit_regions(part.romdata(), locationtag.c_str(), found, required); + audit_regions(part.romdata().data(), locationtag.c_str(), found, required); if ((found == 0) && (required > 0)) { @@ -180,7 +181,7 @@ media_auditor::summary media_auditor::audit_software(const char *list_name, cons } // return a summary - return summarize(list_name); + return summarize(list_name.c_str()); } diff --git a/src/frontend/mame/audit.h b/src/frontend/mame/audit.h index 1999fb229fa..9e0e131e2ca 100644 --- a/src/frontend/mame/audit.h +++ b/src/frontend/mame/audit.h @@ -158,7 +158,7 @@ public: // audit operations summary audit_media(const char *validation = AUDIT_VALIDATE_FULL); summary audit_device(device_t &device, const char *validation = AUDIT_VALIDATE_FULL); - summary audit_software(const char *list_name, const software_info *swinfo, const char *validation = AUDIT_VALIDATE_FULL); + summary audit_software(const std::string &list_name, const software_info *swinfo, const char *validation = AUDIT_VALIDATE_FULL); summary audit_samples(); summary summarize(const char *name, std::ostream *output = nullptr) const; diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index 2ce5a6a5581..bc98768242a 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -25,7 +25,7 @@ #include "drivenum.h" #include "osdepend.h" -#include "softlist.h" +#include "softlist_dev.h" #include "ui/moptions.h" #include "language.h" @@ -374,7 +374,7 @@ int media_identifier::find_by_hash(const util::hash_collection &hashes, int leng { for (const software_info &swinfo : swlistdev.get_info()) for (const software_part &part : swinfo.parts()) - for (const rom_entry *region = part.romdata(); region != nullptr; region = rom_next_region(region)) + for (const rom_entry *region = part.romdata().data(); region != nullptr; region = rom_next_region(region)) for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) { util::hash_collection romhashes(ROM_GETHASHDATA(rom)); @@ -385,7 +385,7 @@ int media_identifier::find_by_hash(const util::hash_collection &hashes, int leng // output information about the match if (found) osd_printf_info(" "); - osd_printf_info("= %s%-20s %s:%s %s\n", baddump ? "(BAD) " : "", ROM_GETNAME(rom), swlistdev.list_name(), swinfo.shortname().c_str(), swinfo.longname().c_str()); + osd_printf_info("= %s%-20s %s:%s %s\n", baddump ? "(BAD) " : "", ROM_GETNAME(rom), swlistdev.list_name().c_str(), swinfo.shortname().c_str(), swinfo.longname().c_str()); found++; } } @@ -527,9 +527,9 @@ int cli_frontend::execute(int argc, char **argv) for (const software_part &swpart : swinfo->parts()) { // only load compatible software this way - if (swpart.is_compatible(swlistdev) == SOFTWARE_IS_COMPATIBLE) + if (swlistdev.is_compatible(swpart) == SOFTWARE_IS_COMPATIBLE) { - device_image_interface *image = swpart.find_mountable_image(config); + device_image_interface *image = software_list_device::find_mountable_image(config, swpart); if (image != nullptr) { std::string val = string_format("%s:%s:%s", swlistdev.list_name(), m_options.software_name(), swpart.name()); @@ -1387,7 +1387,7 @@ void cli_frontend::verifysamples(const char *gamename) void cli_frontend::output_single_softlist(FILE *out, software_list_device &swlistdev) { - fprintf(out, "\t\n", swlistdev.list_name(), xml_normalize_string(swlistdev.description())); + fprintf(out, "\t\n", swlistdev.list_name().c_str(), xml_normalize_string(swlistdev.description())); for (const software_info &swinfo : swlistdev.get_info()) { fprintf(out, "\t\t\n", flist.name().c_str(), xml_normalize_string(flist.value().c_str())); /* TODO: display rom region information */ - for (const rom_entry *region = part.romdata(); region; region = rom_next_region(region)) + for (const rom_entry *region = part.romdata().data(); region; region = rom_next_region(region)) { int is_disk = ROMREGION_ISDISKDATA(region); @@ -1626,7 +1626,7 @@ void cli_frontend::getsoftlist(const char *gamename) while (drivlist.next()) { for (software_list_device &swlistdev : software_list_device_iterator(drivlist.config().root_device())) - if (core_strwildcmp(gamename, swlistdev.list_name()) == 0 && list_map.insert(swlistdev.list_name()).second) + if (core_strwildcmp(gamename, swlistdev.list_name().c_str()) == 0 && list_map.insert(swlistdev.list_name()).second) if (!swlistdev.get_info().empty()) { if (isfirst) { fprintf( out, SOFTLIST_XML_BEGIN); isfirst = false; } @@ -1660,7 +1660,7 @@ void cli_frontend::verifysoftlist(const char *gamename) { for (software_list_device &swlistdev : software_list_device_iterator(drivlist.config().root_device())) { - if (core_strwildcmp(gamename, swlistdev.list_name()) == 0 && list_map.insert(swlistdev.list_name()).second) + if (core_strwildcmp(gamename, swlistdev.list_name().c_str()) == 0 && list_map.insert(swlistdev.list_name()).second) { if (!swlistdev.get_info().empty()) { diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index 918cd07f673..a278288defb 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -16,7 +16,7 @@ #include "xmlfile.h" #include "config.h" #include "drivenum.h" -#include "softlist.h" +#include "softlist_dev.h" #include @@ -1561,7 +1561,7 @@ void info_xml_creator::output_software_list() { for (const software_list_device &swlist : software_list_device_iterator(m_drivlist.config().root_device())) { - fprintf(m_output, "\t\t diff --git a/src/frontend/mame/ui/imgcntrl.cpp b/src/frontend/mame/ui/imgcntrl.cpp index b046acbe66c..a0ab3a99359 100644 --- a/src/frontend/mame/ui/imgcntrl.cpp +++ b/src/frontend/mame/ui/imgcntrl.cpp @@ -20,7 +20,7 @@ #include "audit.h" #include "drivenum.h" #include "emuopts.h" -#include "softlist.h" +#include "softlist_dev.h" #include "zippath.h" diff --git a/src/frontend/mame/ui/inifile.cpp b/src/frontend/mame/ui/inifile.cpp index fd93bb6d1f7..fc56ca18dc4 100644 --- a/src/frontend/mame/ui/inifile.cpp +++ b/src/frontend/mame/ui/inifile.cpp @@ -11,7 +11,7 @@ #include "emu.h" #include "ui/moptions.h" #include "ui/inifile.h" -#include "softlist.h" +#include "softlist_dev.h" #include "drivenum.h" //------------------------------------------------- diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index 3019bff9d0f..9fa2e466360 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -31,7 +31,7 @@ #include "mame.h" #include "rendfont.h" #include "rendutil.h" -#include "softlist.h" +#include "softlist_dev.h" #include "uiinput.h" extern const char UI_VERSION_TAG[]; diff --git a/src/frontend/mame/ui/selsoft.cpp b/src/frontend/mame/ui/selsoft.cpp index 1a6b6842df5..e3848e31691 100644 --- a/src/frontend/mame/ui/selsoft.cpp +++ b/src/frontend/mame/ui/selsoft.cpp @@ -24,7 +24,7 @@ #include "mame.h" #include "rendfont.h" #include "rendutil.h" -#include "softlist.h" +#include "softlist_dev.h" #include "uiinput.h" @@ -528,7 +528,7 @@ void menu_select_software::build_software_list() for (const software_info &swinfo : swlist.get_info()) { const software_part &part = swinfo.parts().front(); - if (part.is_compatible(swlist) == SOFTWARE_IS_COMPATIBLE) + if (swlist.is_compatible(part) == SOFTWARE_IS_COMPATIBLE) { const char *instance_name = nullptr; const char *type_name = nullptr; @@ -560,7 +560,7 @@ void menu_select_software::build_software_list() tmpmatches.supported = swinfo.supported(); tmpmatches.part = part.name(); tmpmatches.driver = m_driver; - tmpmatches.listname = strensure(swlist.list_name()); + tmpmatches.listname = swlist.list_name(); tmpmatches.interface = part.interface(); tmpmatches.startempty = 0; tmpmatches.parentlongname.clear(); diff --git a/src/frontend/mame/ui/swlist.cpp b/src/frontend/mame/ui/swlist.cpp index b9a25a18535..4ac67f607dd 100644 --- a/src/frontend/mame/ui/swlist.cpp +++ b/src/frontend/mame/ui/swlist.cpp @@ -13,7 +13,7 @@ #include "ui/ui.h" #include "ui/swlist.h" -#include "softlist.h" +#include "softlist_dev.h" namespace ui { @@ -173,7 +173,7 @@ void menu_software_list::append_software_entry(const software_info &swinfo) // check if at least one of the parts has the correct interface and add a menu entry only in this case for (const software_part &swpart : swinfo.parts()) { - if (swpart.matches_interface(m_interface) && swpart.is_compatible(*m_swlist) == SOFTWARE_IS_COMPATIBLE) + if (swpart.matches_interface(m_interface) && m_swlist->is_compatible(swpart) == SOFTWARE_IS_COMPATIBLE) { entry_updated = true; entry.short_name.assign(swinfo.shortname()); diff --git a/src/mame/drivers/c65.cpp b/src/mame/drivers/c65.cpp index fb9f882ead7..1f007bd15f0 100644 --- a/src/mame/drivers/c65.cpp +++ b/src/mame/drivers/c65.cpp @@ -21,7 +21,7 @@ Note: #include "emu.h" #include "cpu/m6502/m4510.h" #include "machine/mos6526.h" -#include "softlist.h" +#include "softlist_dev.h" #define MAIN_CLOCK XTAL_3_5MHz diff --git a/src/mame/drivers/sega_sawatte.cpp b/src/mame/drivers/sega_sawatte.cpp index 9ef349c81e4..04dd9fa432e 100644 --- a/src/mame/drivers/sega_sawatte.cpp +++ b/src/mame/drivers/sega_sawatte.cpp @@ -25,7 +25,7 @@ http://mamedev.emulab.it/haze/reference/sawatte/cartridge_example.jpg */ #include "emu.h" -#include "softlist.h" +#include "softlist_dev.h" class sawatte_state : public driver_device diff --git a/src/mame/machine/at.cpp b/src/mame/machine/at.cpp index 8096b50e289..14508efb797 100644 --- a/src/mame/machine/at.cpp +++ b/src/mame/machine/at.cpp @@ -12,6 +12,7 @@ #include "machine/at_keybc.h" #include "bus/pc_kbd/pc_kbdc.h" #include "sound/dac.h" +#include "softlist_dev.h" #define LOG_PORT80 0 diff --git a/src/mame/machine/microdrv.h b/src/mame/machine/microdrv.h index 5e1547b9dc5..e7d98d8e838 100644 --- a/src/mame/machine/microdrv.h +++ b/src/mame/machine/microdrv.h @@ -13,6 +13,7 @@ #ifndef __MICRODRV__ #define __MICRODRV__ +#include "softlist_dev.h" //************************************************************************** diff --git a/src/mame/machine/psion_pack.h b/src/mame/machine/psion_pack.h index 1c0cd8189d8..f0358844e93 100644 --- a/src/mame/machine/psion_pack.h +++ b/src/mame/machine/psion_pack.h @@ -9,6 +9,8 @@ #ifndef __PSION_PACK_H__ #define __PSION_PACK_H__ +#include "softlist_dev.h" + /*************************************************************************** TYPE DEFINITIONS From 938371b64fdd15599c4ce4dbb8525ebda512f5ad Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Wed, 3 Aug 2016 13:56:52 +1000 Subject: [PATCH 004/116] remove leftover crud (nw) --- src/tools/srcclean.cpp | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/tools/srcclean.cpp b/src/tools/srcclean.cpp index 53377cbffe7..1c23c2e14a6 100644 --- a/src/tools/srcclean.cpp +++ b/src/tools/srcclean.cpp @@ -1464,24 +1464,6 @@ bool is_xml_extension(char const *ext) int main(int argc, char *argv[]) { -#if 0 - int removed_tabs = 0; - int added_tabs = 0; - int removed_spaces = 0; - int removed_continuations = 0; - int removed_newlines = 0; - int dst = 0; - bool in_multiline_comment = false; - bool in_singleline_comment = false; - int indent_multiline_comment = 0; - int in_c_string = FALSE; - int hichars = 0; - int bytes; - int col = 0; - int escape = 0; - const int tab_size = 4; -#endif - bool keep_backup(false); bool dry_run(false); #if defined(WIN32) From ae0e3fbf570a3eda623c4c729fce78684b190dd3 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Wed, 3 Aug 2016 14:54:28 +1000 Subject: [PATCH 005/116] quick fixes to some more stuff that isn't supplementary plane clean --- src/emu/rendfont.cpp | 24 +++++++++++++++--------- src/emu/rendfont.h | 4 ++-- src/frontend/mame/ui/menu.cpp | 1 - src/frontend/mame/ui/text.cpp | 22 ++++++++++++---------- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/emu/rendfont.cpp b/src/emu/rendfont.cpp index 2f27fd0e506..7aebe9d9b35 100644 --- a/src/emu/rendfont.cpp +++ b/src/emu/rendfont.cpp @@ -18,6 +18,10 @@ #include "ui/cmdrender.h" +#include +#include + + const UINT64 render_font::CACHED_BDF_HASH_SIZE; //************************************************************************** @@ -55,6 +59,8 @@ inline render_font::glyph &render_font::get_char(unicode_char chnum) static glyph dummy_glyph; // grab the table; if none, return the dummy character + if ((chnum / 256) >= ARRAY_LENGTH(m_glyphs)) + return dummy_glyph; if (!m_glyphs[chnum / 256] && m_format == FF_OSD) m_glyphs[chnum / 256] = new glyph[256]; if (!m_glyphs[chnum / 256]) @@ -444,19 +450,19 @@ float render_font::string_width(float height, float aspect, const char *string) float render_font::utf8string_width(float height, float aspect, const char *utf8string) { - int length = strlen(utf8string); + std::size_t const length = std::strlen(utf8string); // loop over the string and accumulate widths int count; - int totwidth = 0; - for (int offset = 0; offset < length; offset += count) + INT32 totwidth = 0; + for (std::size_t offset = 0U; offset < length; offset += unsigned(count)) { unicode_char uchar; count = uchar_from_utf8(&uchar, utf8string + offset, length - offset); - if (count == -1) + if (count < 0) break; - if (uchar < 0x10000) - totwidth += get_char(uchar).width; + + totwidth += get_char(uchar).width; } // scale the final result based on height @@ -617,7 +623,7 @@ bool render_font::load_bdf() } // if we have everything, allocate a new character - if (charnum >= 0 && charnum < 65536 && rawdata != nullptr && bmwidth >= 0 && bmheight >= 0) + if (charnum >= 0 && charnum < (256 * ARRAY_LENGTH(m_glyphs)) && rawdata != nullptr && bmwidth >= 0 && bmheight >= 0) { // if we don't have a subtable yet, make one if (!m_glyphs[charnum / 256]) @@ -741,7 +747,7 @@ bool render_font::save_cached(const char *filename, UINT32 hash) // determine the number of characters int numchars = 0; - for (int chnum = 0; chnum < 65536; chnum++) + for (int chnum = 0; chnum < (256 * ARRAY_LENGTH(m_glyphs)); chnum++) { if (m_glyphs[chnum / 256]) { @@ -789,7 +795,7 @@ bool render_font::save_cached(const char *filename, UINT32 hash) // loop over all characters int tableindex = 0; - for (int chnum = 0; chnum < 65536; chnum++) + for (int chnum = 0; chnum < (256 * ARRAY_LENGTH(m_glyphs)); chnum++) { glyph &gl = get_char(chnum); if (gl.width > 0) diff --git a/src/emu/rendfont.h b/src/emu/rendfont.h index 88445510a45..52a65527282 100644 --- a/src/emu/rendfont.h +++ b/src/emu/rendfont.h @@ -96,14 +96,14 @@ private: int m_height; // height of the font, from ascent to descent int m_yoffs; // y offset from baseline to descent float m_scale; // 1 / height precomputed - glyph *m_glyphs[256]; // array of glyph subtables + glyph *m_glyphs[17*256]; // array of glyph subtables std::vector m_rawdata; // pointer to the raw data for the font UINT64 m_rawsize; // size of the raw font data std::unique_ptr m_osdfont; // handle to the OSD font int m_height_cmd; // height of the font, from ascent to descent int m_yoffs_cmd; // y offset from baseline to descent - glyph *m_glyphs_cmd[256]; // array of glyph subtables + EQUIVALENT_ARRAY(m_glyphs, glyph *) m_glyphs_cmd; // array of glyph subtables std::vector m_rawdata_cmd; // pointer to the raw data for the font // constants diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp index 154fda55e31..32039886450 100644 --- a/src/frontend/mame/ui/menu.cpp +++ b/src/frontend/mame/ui/menu.cpp @@ -53,7 +53,6 @@ menu::global_state_ptr menu::get_global_state(running_machine &machine) std::lock_guard guard(s_global_state_guard); auto const it(s_global_states.find(&machine)); return (it != s_global_states.end()) ? it->second : global_state_ptr(); - } //------------------------------------------------- diff --git a/src/frontend/mame/ui/text.cpp b/src/frontend/mame/ui/text.cpp index ea6ebc743df..50e7cf6bbfe 100644 --- a/src/frontend/mame/ui/text.cpp +++ b/src/frontend/mame/ui/text.cpp @@ -12,6 +12,10 @@ #include "rendfont.h" #include "render.h" +#include +#include + + namespace ui { /*************************************************************************** INLINE FUNCTIONS @@ -111,10 +115,10 @@ text_layout::~text_layout() void text_layout::add_text(const char *text, const char_style &style) { - int position = 0; - int text_length = strlen(text); + std::size_t position = 0; + std::size_t const text_length = std::strlen(text); - while(position < text_length) + while (position < text_length) { // adding a character - we might change the width invalidate_calculated_actual_width(); @@ -124,16 +128,15 @@ void text_layout::add_text(const char *text, const char_style &style) { // get the current character unicode_char schar; - int scharcount; - scharcount = uchar_from_utf8(&schar, &text[position], text_length - position); - if (scharcount == -1) + int const scharcount = uchar_from_utf8(&schar, &text[position], text_length - position); + if (scharcount < 0) break; // if the line starts with a tab character, center it regardless text_justify line_justify = justify(); if (schar == '\t') { - position += scharcount; + position += unsigned(scharcount); line_justify = text_layout::CENTER; } @@ -142,12 +145,11 @@ void text_layout::add_text(const char *text, const char_style &style) } // get the current character - int scharcount; unicode_char ch; - scharcount = uchar_from_utf8(&ch, &text[position], text_length - position); + int const scharcount = uchar_from_utf8(&ch, &text[position], text_length - position); if (scharcount < 0) break; - position += scharcount; + position += unsigned(scharcount); // set up source information source_info source = { 0, }; From 4b5b14829ce7bc4633bde384d4f297e98c785e1c Mon Sep 17 00:00:00 2001 From: yz70s Date: Wed, 3 Aug 2016 12:24:10 +0200 Subject: [PATCH 006/116] chihiro.cpp: games hotd3 and vcop3 boot too, mj2c throws an exception (nw) --- src/mame/drivers/chihiro.cpp | 3 ++- src/mame/video/chihiro.cpp | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp index 1ea32a63cb9..d2f15f54fcf 100644 --- a/src/mame/drivers/chihiro.cpp +++ b/src/mame/drivers/chihiro.cpp @@ -710,7 +710,7 @@ void chihiro_state::hack_eeprom() m_maincpu->space(0).write_byte(0x3b767, 0xc3); } -#define HACK_ITEMS 4 +#define HACK_ITEMS 5 static const struct { const char *game_name; const bool disable_usb; @@ -722,6 +722,7 @@ static const struct { { "outr2", true, { { 0x12e4cf, 0x01 }, { 0x12e4d0, 0x00 }, { 0x4793e, 0x01 }, { 0x4793f, 0x00 }, { 0x47aa3, 0x01 }, { 0x47aa4, 0x00 }, { 0x14f2b6, 0x84 }, { 0x14f2d1, 0x75 }, { 0x8732f, 0x7d }, { 0x87384, 0x7d }, { 0x87388, 0xeb }, { 0, 0 } } }, { "crtaxihr", false, { { 0x14ada5/*11fda5*/, 0x90 },{ 0x14ada6/*11fda6*/, 0x90 }, { 0, 0 } } }, { "ghostsqu", false, { { 0x78833/*4d833*/, 0x90 },{ 0x78834/*4d834*/, 0x90 }, { 0, 0 } } }, + { "vcop3", false, { { 0x61a23/*36a23*/, 0x90 },{ 0x61a24/*36a24*/, 0x90 }, { 0, 0 } } }, }; void chihiro_state::hack_usb() diff --git a/src/mame/video/chihiro.cpp b/src/mame/video/chihiro.cpp index dfe867e78cc..4fea75339c1 100644 --- a/src/mame/video/chihiro.cpp +++ b/src/mame/video/chihiro.cpp @@ -4657,6 +4657,9 @@ WRITE32_MEMBER(nv2a_renderer::geforce_w) ((*dmaput == 0x045cd000) && (*dmaget == 0x07f4d000)) || // only for scg06nt ((*dmaput == 0x0494c000) && (*dmaget == 0x07f4d000)) || // only for wangmid ((*dmaput == 0x05acd000) && (*dmaget == 0x07f4d000)) || // only for ghostsqu + ((*dmaput == 0x0574d000) && (*dmaget == 0x07f4d000)) || // only for mj2c + ((*dmaput == 0x07ca3000) && (*dmaget == 0x07f4d000)) || // only for hotd3 + ((*dmaput == 0x063cd000) && (*dmaget == 0x07f4d000)) || // only for vcop3 ((*dmaput == 0x07dca000) && (*dmaget == 0x07f4d000))) // only for crtaxihr { *dmaget = *dmaput; From 7b1d37d1f4ea739f63f82a308b12be938a1b27b4 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Wed, 3 Aug 2016 07:38:58 -0400 Subject: [PATCH 007/116] Changed m_entrylist to be std::list; inserts are expensive in std::vector --- src/frontend/mame/ui/swlist.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/mame/ui/swlist.h b/src/frontend/mame/ui/swlist.h index eef09f1c03d..17aab85c785 100644 --- a/src/frontend/mame/ui/swlist.h +++ b/src/frontend/mame/ui/swlist.h @@ -77,7 +77,7 @@ private: software_list_device * m_swlist; // currently selected list const char * m_interface; std::string & m_result; - std::vector m_entrylist; + std::list m_entrylist; char m_filename_buffer[1024]; bool m_ordered_by_shortname; From ba8559e8973d4d5beffa1ab225c479aa401fe71b Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Wed, 3 Aug 2016 08:03:11 -0400 Subject: [PATCH 008/116] Moved input_character() template method to ui/utils.h, and changed menu_software_list::m_filename_buffer to be std::string --- src/frontend/mame/ui/filecreate.cpp | 29 +---------------- src/frontend/mame/ui/swlist.cpp | 50 ++++++++++++----------------- src/frontend/mame/ui/swlist.h | 2 +- src/frontend/mame/ui/utils.h | 35 ++++++++++++++++++++ 4 files changed, 57 insertions(+), 59 deletions(-) diff --git a/src/frontend/mame/ui/filecreate.cpp b/src/frontend/mame/ui/filecreate.cpp index 07f0abdf9c5..aa2de97ad1c 100644 --- a/src/frontend/mame/ui/filecreate.cpp +++ b/src/frontend/mame/ui/filecreate.cpp @@ -15,6 +15,7 @@ #include "ui/filecreate.h" #include "ui/ui.h" +#include "ui/utils.h" #include "imagedev/floppy.h" @@ -44,34 +45,6 @@ CONSTANTS MENU HELPERS ***************************************************************************/ -//------------------------------------------------- -// input_character - inputs a typed character -// into a buffer -//------------------------------------------------- - -template -static void input_character(std::string &buffer, unicode_char unichar, F &&filter) -{ - auto buflen = buffer.size(); - - if ((unichar == 8) || (unichar == 0x7f)) - { - // backspace - if (0 < buflen) - { - auto buffer_oldend = buffer.c_str() + buflen; - auto buffer_newend = utf8_previous_char(buffer_oldend); - buffer.resize(buffer_newend - buffer.c_str()); - } - } - else if ((unichar >= ' ') && (!filter || filter(unichar))) - { - // append this character - buffer += utf8_from_uchar(unichar); - } -} - - /*************************************************************************** CONFIRM SAVE AS MENU ***************************************************************************/ diff --git a/src/frontend/mame/ui/swlist.cpp b/src/frontend/mame/ui/swlist.cpp index b9a25a18535..babe5690f75 100644 --- a/src/frontend/mame/ui/swlist.cpp +++ b/src/frontend/mame/ui/swlist.cpp @@ -12,6 +12,7 @@ #include "ui/ui.h" #include "ui/swlist.h" +#include "ui/utils.h" #include "softlist.h" @@ -29,6 +30,18 @@ namespace ui { SOFTWARE PARTS ***************************************************************************/ +//------------------------------------------------- +// is_valid_softlist_part_char - returns whether +// this character is a valid char for a softlist +// part +//------------------------------------------------- + +static bool is_valid_softlist_part_char(unicode_char ch) +{ + return (ch == (char)ch) && isalnum(ch); +} + + //------------------------------------------------- // ctor //------------------------------------------------- @@ -233,7 +246,7 @@ void menu_software_list::handle() m_ordered_by_shortname = !m_ordered_by_shortname; // reset the char buffer if we change ordering criterion - memset(m_filename_buffer, '\0', ARRAY_LENGTH(m_filename_buffer)); + m_filename_buffer.clear(); // reload the menu with the new order reset(reset_options::REMEMBER_REF); @@ -248,33 +261,11 @@ void menu_software_list::handle() } else if (event->iptkey == IPT_SPECIAL) { - auto const buflen = std::strlen(m_filename_buffer); - bool update_selected = false; - - if ((event->unichar == 8) || (event->unichar == 0x7f)) + if (input_character(m_filename_buffer, event->unichar, &is_valid_softlist_part_char)) { - // if it's a backspace and we can handle it, do so - if (0 < buflen) - { - *const_cast(utf8_previous_char(&m_filename_buffer[buflen])) = 0; - update_selected = true; + // display the popup + ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); - ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); - } - } - else if (event->is_char_printable()) - { - // if it's any other key and we're not maxed out, update - if (event->append_char(m_filename_buffer, buflen)) - { - update_selected = true; - - ui().popup_time(ERROR_MESSAGE_TIME, "%s", m_filename_buffer); - } - } - - if (update_selected) - { // identify the selected entry entry_info const *const cur_selected = (FPTR(event->itemref) != 1) ? reinterpret_cast(get_selection_ref()) @@ -289,9 +280,9 @@ void menu_software_list::handle() auto &compare_name = m_ordered_by_shortname ? entry.short_name : entry.long_name; int match = 0; - for (int i = 0; i < ARRAY_LENGTH(m_filename_buffer); i++) + for (int i = 0; i < m_filename_buffer.length(); i++) { - if (core_strnicmp(compare_name.c_str(), m_filename_buffer, i) == 0) + if (core_strnicmp(compare_name.c_str(), m_filename_buffer.c_str(), i) == 0) match = i; } @@ -313,8 +304,7 @@ void menu_software_list::handle() else if (event->iptkey == IPT_UI_CANCEL) { // reset the char buffer also in this case - if (m_filename_buffer[0] != '\0') - memset(m_filename_buffer, '\0', ARRAY_LENGTH(m_filename_buffer)); + m_filename_buffer.clear(); m_result = m_filename_buffer; stack_pop(); } diff --git a/src/frontend/mame/ui/swlist.h b/src/frontend/mame/ui/swlist.h index 17aab85c785..77b2267f7da 100644 --- a/src/frontend/mame/ui/swlist.h +++ b/src/frontend/mame/ui/swlist.h @@ -78,7 +78,7 @@ private: const char * m_interface; std::string & m_result; std::list m_entrylist; - char m_filename_buffer[1024]; + std::string m_filename_buffer; bool m_ordered_by_shortname; // functions diff --git a/src/frontend/mame/ui/utils.h b/src/frontend/mame/ui/utils.h index d2cd12c1beb..a5c6626f675 100644 --- a/src/frontend/mame/ui/utils.h +++ b/src/frontend/mame/ui/utils.h @@ -13,6 +13,8 @@ #ifndef __UI_UTILS_H__ #define __UI_UTILS_H__ +#include "unicode.h" + #define MAX_CHAR_INFO 256 #define MAX_CUST_FILTER 8 @@ -249,4 +251,37 @@ const char* strensure(const char* s); int getprecisionchr(const char* s); std::vector tokenize(const std::string &text, char sep); + +//------------------------------------------------- +// input_character - inputs a typed character +// into a buffer +//------------------------------------------------- + +template +bool input_character(std::string &buffer, unicode_char unichar, F &&filter) +{ + bool result = false; + auto buflen = buffer.size(); + + if ((unichar == 8) || (unichar == 0x7f)) + { + // backspace + if (0 < buflen) + { + auto buffer_oldend = buffer.c_str() + buflen; + auto buffer_newend = utf8_previous_char(buffer_oldend); + buffer.resize(buffer_newend - buffer.c_str()); + result = true; + } + } + else if ((unichar >= ' ') && (!filter || filter(unichar))) + { + // append this character + buffer += utf8_from_uchar(unichar); + result = true; + } + return result; +} + + #endif /* __UI_UTILS_H__ */ From 8b32480113a2620bc2482ea6aee8fc6bcfcb4f7c Mon Sep 17 00:00:00 2001 From: jbu Date: Wed, 3 Aug 2016 15:38:18 +0200 Subject: [PATCH 009/116] alto2: further cleanup + remove cruft Get rid of the fake status display. Refactor mouse positioning code. --- src/devices/cpu/alto2/a2curt.cpp | 18 +- src/devices/cpu/alto2/a2disk.cpp | 42 ----- src/devices/cpu/alto2/a2disp.cpp | 285 +---------------------------- src/devices/cpu/alto2/a2disp.h | 3 - src/devices/cpu/alto2/a2mem.cpp | 266 +++++++++++++-------------- src/devices/cpu/alto2/a2mem.h | 4 +- src/devices/cpu/alto2/a2mouse.cpp | 22 +-- src/devices/cpu/alto2/a2mrt.cpp | 2 +- src/devices/cpu/alto2/alto2cpu.h | 3 - src/devices/cpu/alto2/alto2dsm.cpp | 6 + src/mame/drivers/alto2.cpp | 9 +- 11 files changed, 157 insertions(+), 503 deletions(-) diff --git a/src/devices/cpu/alto2/a2curt.cpp b/src/devices/cpu/alto2/a2curt.cpp index bc934afef45..3d23ba2ef44 100644 --- a/src/devices/cpu/alto2/a2curt.cpp +++ b/src/devices/cpu/alto2/a2curt.cpp @@ -28,6 +28,15 @@ void alto2_cpu_device::f2_late_load_xpreg() /** * @brief f2_load_csr late: load the cursor shift register from BUS[0-15] + */ +void alto2_cpu_device::f2_late_load_csr() +{ + m_dsp.csr = m_bus; + LOG((this,LOG_CURT, m_dsp.csr ? 2 : 9," CSR<- BUS (%#o)\n", m_dsp.csr)); +} + +/** + * @brief curt_activate: called by the CPU when the cursor task becomes active * * Shift CSR to xpreg % 16 position to make it easier to * to handle the word xor in unload_word(). @@ -43,15 +52,6 @@ void alto2_cpu_device::f2_late_load_xpreg() * 15 000000000000000xxxxxxxxxxxxxxxx0 * */ -void alto2_cpu_device::f2_late_load_csr() -{ - m_dsp.csr = m_bus; - LOG((this,LOG_CURT, m_dsp.csr ? 2 : 9," CSR<- BUS (%#o)\n", m_dsp.csr)); -} - -/** - * @brief curt_activate: called by the CPU when the cursor task becomes active - */ void alto2_cpu_device::activate_curt() { m_task_wakeup &= ~(1 << m_task); diff --git a/src/devices/cpu/alto2/a2disk.cpp b/src/devices/cpu/alto2/a2disk.cpp index 4ad6be9ab74..c5088872e15 100644 --- a/src/devices/cpu/alto2/a2disk.cpp +++ b/src/devices/cpu/alto2/a2disk.cpp @@ -61,22 +61,6 @@ #define GET_KCOM_SENDADR(kcom) X_RDBITS(kcom,16,5,5) //!< get send address flag from controller command (hardware command register) #define PUT_KCOM_SENDADR(kcom,val) X_WRBITS(kcom,16,5,5,val) //!< put send address flag into controller command (hardware command register) -#if defined(ALTO2_FAKE_STATUS_H) && (ALTO2_FAKE_STATUS_H > 0) -#define STATUS_DP0 28 -#define STATUS_DP1 58 -#define STATUS_RGATE 0, "%c" -#define STATUS_WGATE 1, "%c" -#define STATUS_KWRC 2, "%c" -#define STATUS_CYL 4, "C%03d" -#define STATUS_HEAD 9, "H%d" -#define STATUS_SECT 12, "S%02d" -#define STATUS_PAGE 16, "[%04d]" -#define FAKE_STATUS(_unit,_which,...) do { \ - int x = (_unit) ? STATUS_DP1 : STATUS_DP0; \ - fake_status_printf(x + _which, __VA_ARGS__); \ -} while (0) -#endif - /** @brief completion codes (only for documentation, since this is microcode defined) */ enum { STATUS_COMPLETION_GOOD, @@ -769,8 +753,6 @@ void alto2_cpu_device::kwd_timing(int bitclk, int datin, int block) dhd->set_egate(m_dsk.egate = 1); dhd->set_wrgate(m_dsk.wrgate = 1); dhd->set_rdgate(m_dsk.rdgate = 1); - FAKE_STATUS(m_dsk.drive, STATUS_WGATE, '-'); - FAKE_STATUS(m_dsk.drive, STATUS_RGATE, '-'); } else { if (m_dsk.krwc & RWC_WRITE) { if (m_dsk.ok_to_run) { @@ -789,7 +771,6 @@ void alto2_cpu_device::kwd_timing(int bitclk, int datin, int block) // assert erase and write gates dhd->set_egate(m_dsk.egate = 0); dhd->set_wrgate(m_dsk.wrgate = 0); - FAKE_STATUS(m_dsk.drive, STATUS_WGATE, 'W'); } } else { #if ALTO2_DEBUG @@ -799,7 +780,6 @@ void alto2_cpu_device::kwd_timing(int bitclk, int datin, int block) #endif // assert read gate dhd->set_rdgate(m_dsk.rdgate = 0); - FAKE_STATUS(m_dsk.drive, STATUS_RGATE, 'R'); } } @@ -920,8 +900,6 @@ void alto2_cpu_device::disk_strobon(void* ptr, INT32 arg) } else { m_dsk.strobon_timer->reset(); } - FAKE_STATUS(unit, STATUS_CYL, dhd->get_cylinder()); - FAKE_STATUS(unit, STATUS_HEAD, dhd->get_head()); } /** @brief timer callback to change the READY monoflop 31a */ @@ -1182,7 +1160,6 @@ void alto2_cpu_device::f1_late_increcno() break; } // TODO: show disk indicator - FAKE_STATUS(m_dsk.drive, STATUS_KWRC, "HPLD"[m_dsk.krecno]); } /** @@ -1707,13 +1684,6 @@ void alto2_cpu_device::next_sector(int unit) m_bitclk_index = 0; } #endif -#if defined(ALTO2_FAKE_STATUS_H) && (ALTO2_FAKE_STATUS_H > 0) - if (debug_read_mem(0521) && unit == GET_KADDR_DRIVE(debug_read_mem(0523))) - { - FAKE_STATUS(unit, STATUS_SECT, dhd->get_sector()); - FAKE_STATUS(unit, STATUS_PAGE, dhd->get_page()); - } -#endif } /** @@ -1880,16 +1850,4 @@ void alto2_cpu_device::reset_disk() m_dsk.ff_44b = JKFF_0; m_dsk.ff_45a = JKFF_0; m_dsk.ff_45b = JKFF_0; - -#if defined(ALTO2_FAKE_STATUS_H) && (ALTO2_FAKE_STATUS_H > 0) - for (int unit = 0; unit < 2; unit++) { - FAKE_STATUS(unit, STATUS_RGATE, '-'); - FAKE_STATUS(unit, STATUS_WGATE, '-'); - FAKE_STATUS(unit, STATUS_KWRC, '-'); - FAKE_STATUS(unit, STATUS_CYL, 0); - FAKE_STATUS(unit, STATUS_HEAD, 0); - FAKE_STATUS(unit, STATUS_SECT, 0); - FAKE_STATUS(unit, STATUS_PAGE, 0); - } -#endif } diff --git a/src/devices/cpu/alto2/a2disp.cpp b/src/devices/cpu/alto2/a2disp.cpp index 6ec42384dcb..cf3b5aa8bc6 100644 --- a/src/devices/cpu/alto2/a2disp.cpp +++ b/src/devices/cpu/alto2/a2disp.cpp @@ -521,11 +521,11 @@ void alto2_cpu_device::init_disp() for (int x = 0; x < 16; x++) *dst++ = (y >> (15 - x)) & 1; } - m_dsp.scanline = auto_alloc_array(machine(), UINT8*, ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H); - for (int y = 0; y < ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H; y++) + m_dsp.scanline = auto_alloc_array(machine(), UINT8*, ALTO2_DISPLAY_HEIGHT); + for (int y = 0; y < ALTO2_DISPLAY_HEIGHT; y++) m_dsp.scanline[y] = auto_alloc_array(machine(), UINT8, ALTO2_DISPLAY_TOTAL_WIDTH); - m_dsp.bitmap = std::make_unique(ALTO2_DISPLAY_WIDTH, ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H); + m_dsp.bitmap = std::make_unique(ALTO2_DISPLAY_WIDTH, ALTO2_DISPLAY_HEIGHT); m_dsp.state = 0; } @@ -559,10 +559,6 @@ void alto2_cpu_device::reset_disp() for (int y = 0; y < ALTO2_DISPLAY_HEIGHT; y++) memset(m_dsp.scanline[y], 0, sizeof(UINT8) * ALTO2_DISPLAY_TOTAL_WIDTH); m_dsp.odd_frame = false; - - for (int y = ALTO2_DISPLAY_HEIGHT; y < ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H; y++) - memset(m_dsp.scanline[y], 1, sizeof(UINT8) * ALTO2_DISPLAY_TOTAL_WIDTH); - fake_status_printf(1, "Disk status info"); } /* Video update */ @@ -573,8 +569,6 @@ UINT32 alto2_cpu_device::screen_update(screen_device &screen, bitmap_ind16 &bitm palette_bw[1] = screen.palette().black_pen(); for (int y = m_dsp.odd_frame ? 1 : 0; y < ALTO2_DISPLAY_HEIGHT; y += 2) draw_scanline8(*m_dsp.bitmap, 0, y, ALTO2_DISPLAY_WIDTH, m_dsp.scanline[y], palette_bw); - for (int y = ALTO2_DISPLAY_HEIGHT; y < ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H; y++) - draw_scanline8(*m_dsp.bitmap, 0, y, ALTO2_DISPLAY_WIDTH, m_dsp.scanline[y], palette_bw); copybitmap(bitmap, *m_dsp.bitmap, 0, 0, 0, 0, cliprect); return 0; } @@ -584,276 +578,3 @@ void alto2_cpu_device::screen_eof(screen_device &screen, bool state) if (state) m_dsp.odd_frame = !m_dsp.odd_frame; } - -/***************************************************************************** - * - * FAKE STATUS LINE - * - *****************************************************************************/ - -typedef struct { - UINT8 code; - UINT8 bits[10]; -} bdf_6x10_t; - -/** - * STARTFONT 2.1 - * COMMENT "$ucs-fonts: 6x10.bdf,v 1.34 2002-11-10 19:12:30+00 mgk25 Rel $" - * COMMENT "Send bug reports to Markus Kuhn " - * FONT -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO10646-1 - * SIZE 10 75 75 - * FONTBOUNDINGBOX 6 10 0 -2 - * STARTPROPERTIES 22 - * FONTNAME_REGISTRY "" - * FOUNDRY "Misc" - * FAMILY_NAME "Fixed" - * WEIGHT_NAME "Medium" - * SLANT "R" - * SETWIDTH_NAME "Normal" - * ADD_STYLE_NAME "" - * PIXEL_SIZE 10 - * POINT_SIZE 100 - * RESOLUTION_X 75 - * RESOLUTION_Y 75 - * SPACING "C" - * AVERAGE_WIDTH 60 - * CHARSET_REGISTRY "ISO10646" - * CHARSET_ENCODING "1" - * FONT_ASCENT 8 - * FONT_DESCENT 2 - * DEFAULT_CHAR 0 - * COPYRIGHT "Public domain terminal emulator font. Share and enjoy." - * _XMBDFED_INFO "Edited with xmbdfed 4.5." - * CAP_HEIGHT 7 - * X_HEIGHT 5 - * ENDPROPERTIES - * CHARS 1597 - */ -static const bdf_6x10_t bdf_6x10[] = { -/* space */ { 32, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* exclam */ { 33, {0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x20, 0x00, 0x00 }}, -/* quotedbl */ { 34, {0x00, 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* numbersign */ { 35, {0x00, 0x50, 0x50, 0xF8, 0x50, 0xF8, 0x50, 0x50, 0x00, 0x00 }}, -/* dollar */ { 36, {0x00, 0x20, 0x70, 0xA0, 0x70, 0x28, 0x70, 0x20, 0x00, 0x00 }}, -/* percent */ { 37, {0x00, 0x48, 0xA8, 0x50, 0x20, 0x50, 0xA8, 0x90, 0x00, 0x00 }}, -/* ampersand */ { 38, {0x00, 0x40, 0xA0, 0xA0, 0x40, 0xA8, 0x90, 0x68, 0x00, 0x00 }}, -/* quotesingle */ { 39, {0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* parenleft */ { 40, {0x00, 0x10, 0x20, 0x40, 0x40, 0x40, 0x20, 0x10, 0x00, 0x00 }}, -/* parenright */ { 41, {0x00, 0x40, 0x20, 0x10, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00 }}, -/* asterisk */ { 42, {0x00, 0x00, 0x88, 0x50, 0xF8, 0x50, 0x88, 0x00, 0x00, 0x00 }}, -/* plus */ { 43, {0x00, 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00 }}, -/* comma */ { 44, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x40, 0x00 }}, -/* hyphen */ { 45, {0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* period */ { 46, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, 0x20, 0x00 }}, -/* slash */ { 47, {0x00, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00 }}, -/* zero */ { 48, {0x00, 0x20, 0x50, 0x88, 0x88, 0x88, 0x50, 0x20, 0x00, 0x00 }}, -/* one */ { 49, {0x00, 0x20, 0x60, 0xA0, 0x20, 0x20, 0x20, 0xF8, 0x00, 0x00 }}, -/* two */ { 50, {0x00, 0x70, 0x88, 0x08, 0x30, 0x40, 0x80, 0xF8, 0x00, 0x00 }}, -/* three */ { 51, {0x00, 0xF8, 0x08, 0x10, 0x30, 0x08, 0x88, 0x70, 0x00, 0x00 }}, -/* four */ { 52, {0x00, 0x10, 0x30, 0x50, 0x90, 0xF8, 0x10, 0x10, 0x00, 0x00 }}, -/* five */ { 53, {0x00, 0xF8, 0x80, 0xB0, 0xC8, 0x08, 0x88, 0x70, 0x00, 0x00 }}, -/* six */ { 54, {0x00, 0x30, 0x40, 0x80, 0xB0, 0xC8, 0x88, 0x70, 0x00, 0x00 }}, -/* seven */ { 55, {0x00, 0xF8, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x00, 0x00 }}, -/* eight */ { 56, {0x00, 0x70, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* nine */ { 57, {0x00, 0x70, 0x88, 0x98, 0x68, 0x08, 0x10, 0x60, 0x00, 0x00 }}, -/* colon */ { 58, {0x00, 0x00, 0x20, 0x70, 0x20, 0x00, 0x20, 0x70, 0x20, 0x00 }}, -/* semicolon */ { 59, {0x00, 0x00, 0x20, 0x70, 0x20, 0x00, 0x30, 0x20, 0x40, 0x00 }}, -/* less */ { 60, {0x00, 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00 }}, -/* equal */ { 61, {0x00, 0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00 }}, -/* greater */ { 62, {0x00, 0x40, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00 }}, -/* question */ { 63, {0x00, 0x70, 0x88, 0x10, 0x20, 0x20, 0x00, 0x20, 0x00, 0x00 }}, -/* at */ { 64, {0x00, 0x70, 0x88, 0x98, 0xA8, 0xB0, 0x80, 0x70, 0x00, 0x00 }}, -/* A */ { 65, {0x00, 0x20, 0x50, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00 }}, -/* B */ { 66, {0x00, 0xF0, 0x48, 0x48, 0x70, 0x48, 0x48, 0xF0, 0x00, 0x00 }}, -/* C */ { 67, {0x00, 0x70, 0x88, 0x80, 0x80, 0x80, 0x88, 0x70, 0x00, 0x00 }}, -/* D */ { 68, {0x00, 0xF0, 0x48, 0x48, 0x48, 0x48, 0x48, 0xF0, 0x00, 0x00 }}, -/* E */ { 69, {0x00, 0xF8, 0x80, 0x80, 0xF0, 0x80, 0x80, 0xF8, 0x00, 0x00 }}, -/* F */ { 70, {0x00, 0xF8, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00 }}, -/* G */ { 71, {0x00, 0x70, 0x88, 0x80, 0x80, 0x98, 0x88, 0x70, 0x00, 0x00 }}, -/* H */ { 72, {0x00, 0x88, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x88, 0x00, 0x00 }}, -/* I */ { 73, {0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* J */ { 74, {0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, 0x00 }}, -/* K */ { 75, {0x00, 0x88, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x88, 0x00, 0x00 }}, -/* L */ { 76, {0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xF8, 0x00, 0x00 }}, -/* M */ { 77, {0x00, 0x88, 0x88, 0xD8, 0xA8, 0x88, 0x88, 0x88, 0x00, 0x00 }}, -/* N */ { 78, {0x00, 0x88, 0x88, 0xC8, 0xA8, 0x98, 0x88, 0x88, 0x00, 0x00 }}, -/* O */ { 79, {0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* P */ { 80, {0x00, 0xF0, 0x88, 0x88, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00 }}, -/* Q */ { 81, {0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0xA8, 0x70, 0x08, 0x00 }}, -/* R */ { 82, {0x00, 0xF0, 0x88, 0x88, 0xF0, 0xA0, 0x90, 0x88, 0x00, 0x00 }}, -/* S */ { 83, {0x00, 0x70, 0x88, 0x80, 0x70, 0x08, 0x88, 0x70, 0x00, 0x00 }}, -/* T */ { 84, {0x00, 0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 }}, -/* U */ { 85, {0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* V */ { 86, {0x00, 0x88, 0x88, 0x88, 0x50, 0x50, 0x50, 0x20, 0x00, 0x00 }}, -/* W */ { 87, {0x00, 0x88, 0x88, 0x88, 0xA8, 0xA8, 0xD8, 0x88, 0x00, 0x00 }}, -/* X */ { 88, {0x00, 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88, 0x00, 0x00 }}, -/* Y */ { 89, {0x00, 0x88, 0x88, 0x50, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 }}, -/* Z */ { 90, {0x00, 0xF8, 0x08, 0x10, 0x20, 0x40, 0x80, 0xF8, 0x00, 0x00 }}, -/* bracketleft */ { 91, {0x00, 0x70, 0x40, 0x40, 0x40, 0x40, 0x40, 0x70, 0x00, 0x00 }}, -/* backslash */ { 92, {0x00, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00 }}, -/* bracketright */ { 93, {0x00, 0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00, 0x00 }}, -/* asciicircum */ { 94, {0x00, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* underscore */ { 95, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00 }}, -/* grave */ { 96, {0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* a */ { 97, {0x00, 0x00, 0x00, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, 0x00 }}, -/* b */ { 98, {0x00, 0x80, 0x80, 0xB0, 0xC8, 0x88, 0xC8, 0xB0, 0x00, 0x00 }}, -/* c */ { 99, {0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0x88, 0x70, 0x00, 0x00 }}, -/* d */ { 100, {0x00, 0x08, 0x08, 0x68, 0x98, 0x88, 0x98, 0x68, 0x00, 0x00 }}, -/* e */ { 101, {0x00, 0x00, 0x00, 0x70, 0x88, 0xF8, 0x80, 0x70, 0x00, 0x00 }}, -/* f */ { 102, {0x00, 0x30, 0x48, 0x40, 0xF0, 0x40, 0x40, 0x40, 0x00, 0x00 }}, -/* g */ { 103, {0x00, 0x00, 0x00, 0x78, 0x88, 0x88, 0x78, 0x08, 0x88, 0x70 }}, -/* h */ { 104, {0x00, 0x80, 0x80, 0xB0, 0xC8, 0x88, 0x88, 0x88, 0x00, 0x00 }}, -/* i */ { 105, {0x00, 0x20, 0x00, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* j */ { 106, {0x00, 0x08, 0x00, 0x18, 0x08, 0x08, 0x08, 0x48, 0x48, 0x30 }}, -/* k */ { 107, {0x00, 0x80, 0x80, 0x88, 0x90, 0xE0, 0x90, 0x88, 0x00, 0x00 }}, -/* l */ { 108, {0x00, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* m */ { 109, {0x00, 0x00, 0x00, 0xD0, 0xA8, 0xA8, 0xA8, 0x88, 0x00, 0x00 }}, -/* n */ { 110, {0x00, 0x00, 0x00, 0xB0, 0xC8, 0x88, 0x88, 0x88, 0x00, 0x00 }}, -/* o */ { 111, {0x00, 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* p */ { 112, {0x00, 0x00, 0x00, 0xB0, 0xC8, 0x88, 0xC8, 0xB0, 0x80, 0x80 }}, -/* q */ { 113, {0x00, 0x00, 0x00, 0x68, 0x98, 0x88, 0x98, 0x68, 0x08, 0x08 }}, -/* r */ { 114, {0x00, 0x00, 0x00, 0xB0, 0xC8, 0x80, 0x80, 0x80, 0x00, 0x00 }}, -/* s */ { 115, {0x00, 0x00, 0x00, 0x70, 0x80, 0x70, 0x08, 0xF0, 0x00, 0x00 }}, -/* t */ { 116, {0x00, 0x40, 0x40, 0xF0, 0x40, 0x40, 0x48, 0x30, 0x00, 0x00 }}, -/* u */ { 117, {0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x98, 0x68, 0x00, 0x00 }}, -/* v */ { 118, {0x00, 0x00, 0x00, 0x88, 0x88, 0x50, 0x50, 0x20, 0x00, 0x00 }}, -/* w */ { 119, {0x00, 0x00, 0x00, 0x88, 0x88, 0xA8, 0xA8, 0x50, 0x00, 0x00 }}, -/* x */ { 120, {0x00, 0x00, 0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00 }}, -/* y */ { 121, {0x00, 0x00, 0x00, 0x88, 0x88, 0x98, 0x68, 0x08, 0x88, 0x70 }}, -/* z */ { 122, {0x00, 0x00, 0x00, 0xF8, 0x10, 0x20, 0x40, 0xF8, 0x00, 0x00 }}, -/* braceleft */ { 123, {0x00, 0x18, 0x20, 0x10, 0x60, 0x10, 0x20, 0x18, 0x00, 0x00 }}, -/* bar */ { 124, {0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 }}, -/* braceright */ { 125, {0x00, 0x60, 0x10, 0x20, 0x18, 0x20, 0x10, 0x60, 0x00, 0x00 }}, -/* asciitilde */ { 126, {0x00, 0x48, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* space */ { 160, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* exclamdown */ { 161, {0x00, 0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 }}, -/* cent */ { 162, {0x00, 0x00, 0x20, 0x78, 0xA0, 0xA0, 0xA0, 0x78, 0x20, 0x00 }}, -/* sterling */ { 163, {0x00, 0x30, 0x48, 0x40, 0xE0, 0x40, 0x48, 0xB0, 0x00, 0x00 }}, -/* currency */ { 164, {0x00, 0x00, 0x00, 0x88, 0x70, 0x50, 0x70, 0x88, 0x00, 0x00 }}, -/* yen */ { 165, {0x00, 0x88, 0x88, 0x50, 0x20, 0xF8, 0x20, 0x20, 0x20, 0x00 }}, -/* brokenbar */ { 166, {0x00, 0x20, 0x20, 0x20, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00 }}, -/* section */ { 167, {0x00, 0x70, 0x80, 0xE0, 0x90, 0x48, 0x38, 0x08, 0x70, 0x00 }}, -/* dieresis */ { 168, {0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* copyright */ { 169, {0x00, 0x70, 0x88, 0xA8, 0xC8, 0xA8, 0x88, 0x70, 0x00, 0x00 }}, -/* ordfeminine */ { 170, {0x00, 0x38, 0x48, 0x58, 0x28, 0x00, 0x78, 0x00, 0x00, 0x00 }}, -/* guillemotleft */ { 171, {0x00, 0x00, 0x00, 0x24, 0x48, 0x90, 0x48, 0x24, 0x00, 0x00 }}, -/* logicalnot */ { 172, {0x00, 0x00, 0x00, 0x00, 0x78, 0x08, 0x00, 0x00, 0x00, 0x00 }}, -/* hyphen */ { 173, {0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* registered */ { 174, {0x00, 0x70, 0x88, 0xE8, 0xC8, 0xC8, 0x88, 0x70, 0x00, 0x00 }}, -/* macron */ { 175, {0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* degree */ { 176, {0x00, 0x20, 0x50, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* plusminus */ { 177, {0x00, 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0xF8, 0x00, 0x00 }}, -/* twosuperior */ { 178, {0x30, 0x48, 0x10, 0x20, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* threesuperior */ { 179, {0x70, 0x08, 0x30, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* acute */ { 180, {0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* mu */ { 181, {0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xC8, 0xB0, 0x80, 0x00 }}, -/* paragraph */ { 182, {0x00, 0x78, 0xE8, 0xE8, 0x68, 0x28, 0x28, 0x28, 0x00, 0x00 }}, -/* periodcentered */ { 183, {0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* cedilla */ { 184, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20 }}, -/* onesuperior */ { 185, {0x20, 0x60, 0x20, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00 }}, -/* ordmasculine */ { 186, {0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0x78, 0x00, 0x00, 0x00 }}, -/* guillemotright */ { 187, {0x00, 0x00, 0x00, 0x90, 0x48, 0x24, 0x48, 0x90, 0x00, 0x00 }}, -/* onequarter */ { 188, {0x40, 0xC0, 0x40, 0x40, 0xE4, 0x0C, 0x14, 0x3C, 0x04, 0x00 }}, -/* onehalf */ { 189, {0x40, 0xC0, 0x40, 0x40, 0xE8, 0x14, 0x04, 0x08, 0x1C, 0x00 }}, -/* threequarters */ { 190, {0xC0, 0x20, 0x40, 0x20, 0xC8, 0x18, 0x28, 0x78, 0x08, 0x00 }}, -/* questiondown */ { 191, {0x00, 0x20, 0x00, 0x20, 0x20, 0x40, 0x88, 0x70, 0x00, 0x00 }}, -/* Agrave */ { 192, {0x40, 0x20, 0x70, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00 }}, -/* Aacute */ { 193, {0x10, 0x20, 0x70, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00 }}, -/* Acircumflex */ { 194, {0x20, 0x50, 0x70, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00 }}, -/* Atilde */ { 195, {0x48, 0xB0, 0x70, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00 }}, -/* Adieresis */ { 196, {0x50, 0x00, 0x70, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00 }}, -/* Aring */ { 197, {0x20, 0x50, 0x70, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, 0x00 }}, -/* AE */ { 198, {0x00, 0x3C, 0x50, 0x90, 0x9C, 0xF0, 0x90, 0x9C, 0x00, 0x00 }}, -/* Ccedilla */ { 199, {0x00, 0x70, 0x88, 0x80, 0x80, 0x80, 0x88, 0x70, 0x20, 0x40 }}, -/* Egrave */ { 200, {0x40, 0xF8, 0x80, 0x80, 0xF0, 0x80, 0x80, 0xF8, 0x00, 0x00 }}, -/* Eacute */ { 201, {0x10, 0xF8, 0x80, 0x80, 0xF0, 0x80, 0x80, 0xF8, 0x00, 0x00 }}, -/* Ecircumflex */ { 202, {0x20, 0xF8, 0x80, 0x80, 0xF0, 0x80, 0x80, 0xF8, 0x00, 0x00 }}, -/* Edieresis */ { 203, {0x50, 0xF8, 0x80, 0x80, 0xF0, 0x80, 0x80, 0xF8, 0x00, 0x00 }}, -/* Igrave */ { 204, {0x40, 0x20, 0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* Iacute */ { 205, {0x10, 0x20, 0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* Icircumflex */ { 206, {0x20, 0x50, 0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* Idieresis */ { 207, {0x50, 0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* Eth */ { 208, {0x00, 0xF0, 0x48, 0x48, 0xE8, 0x48, 0x48, 0xF0, 0x00, 0x00 }}, -/* Ntilde */ { 209, {0x28, 0x50, 0x88, 0xC8, 0xA8, 0x98, 0x88, 0x88, 0x00, 0x00 }}, -/* Ograve */ { 210, {0x40, 0x20, 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* Oacute */ { 211, {0x10, 0x20, 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* Ocircumflex */ { 212, {0x20, 0x50, 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* Otilde */ { 213, {0x28, 0x50, 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* Odieresis */ { 214, {0x50, 0x00, 0x70, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* multiply */ { 215, {0x00, 0x00, 0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00 }}, -/* Oslash */ { 216, {0x00, 0x70, 0x98, 0x98, 0xA8, 0xC8, 0xC8, 0x70, 0x00, 0x00 }}, -/* Ugrave */ { 217, {0x40, 0x20, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* Uacute */ { 218, {0x10, 0x20, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* Ucircumflex */ { 219, {0x20, 0x50, 0x00, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* Udieresis */ { 220, {0x50, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* Yacute */ { 221, {0x10, 0x20, 0x88, 0x88, 0x50, 0x20, 0x20, 0x20, 0x00, 0x00 }}, -/* Thorn */ { 222, {0x00, 0x80, 0xF0, 0x88, 0xF0, 0x80, 0x80, 0x80, 0x00, 0x00 }}, -/* germandbls */ { 223, {0x00, 0x70, 0x88, 0x90, 0xA0, 0x90, 0x88, 0xB0, 0x00, 0x00 }}, -/* agrave */ { 224, {0x40, 0x20, 0x00, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, 0x00 }}, -/* aacute */ { 225, {0x10, 0x20, 0x00, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, 0x00 }}, -/* acircumflex */ { 226, {0x20, 0x50, 0x00, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, 0x00 }}, -/* atilde */ { 227, {0x28, 0x50, 0x00, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, 0x00 }}, -/* adieresis */ { 228, {0x00, 0x50, 0x00, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, 0x00 }}, -/* aring */ { 229, {0x20, 0x50, 0x20, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, 0x00 }}, -/* ae */ { 230, {0x00, 0x00, 0x00, 0x78, 0x14, 0x7C, 0x90, 0x7C, 0x00, 0x00 }}, -/* ccedilla */ { 231, {0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0x88, 0x70, 0x20, 0x40 }}, -/* egrave */ { 232, {0x40, 0x20, 0x00, 0x70, 0x88, 0xF8, 0x80, 0x70, 0x00, 0x00 }}, -/* eacute */ { 233, {0x10, 0x20, 0x00, 0x70, 0x88, 0xF8, 0x80, 0x70, 0x00, 0x00 }}, -/* ecircumflex */ { 234, {0x20, 0x50, 0x00, 0x70, 0x88, 0xF8, 0x80, 0x70, 0x00, 0x00 }}, -/* edieresis */ { 235, {0x00, 0x50, 0x00, 0x70, 0x88, 0xF8, 0x80, 0x70, 0x00, 0x00 }}, -/* igrave */ { 236, {0x40, 0x20, 0x00, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* iacute */ { 237, {0x20, 0x40, 0x00, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* icircumflex */ { 238, {0x20, 0x50, 0x00, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* idieresis */ { 239, {0x00, 0x50, 0x00, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, 0x00 }}, -/* eth */ { 240, {0x00, 0xC0, 0x30, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* ntilde */ { 241, {0x28, 0x50, 0x00, 0xB0, 0xC8, 0x88, 0x88, 0x88, 0x00, 0x00 }}, -/* ograve */ { 242, {0x40, 0x20, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* oacute */ { 243, {0x10, 0x20, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* ocircumflex */ { 244, {0x20, 0x50, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* otilde */ { 245, {0x28, 0x50, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* odieresis */ { 246, {0x00, 0x50, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00 }}, -/* divide */ { 247, {0x00, 0x00, 0x20, 0x00, 0xF8, 0x00, 0x20, 0x00, 0x00, 0x00 }}, -/* oslash */ { 248, {0x00, 0x00, 0x00, 0x78, 0x98, 0xA8, 0xC8, 0xF0, 0x00, 0x00 }}, -/* ugrave */ { 249, {0x40, 0x20, 0x00, 0x88, 0x88, 0x88, 0x98, 0x68, 0x00, 0x00 }}, -/* uacute */ { 250, {0x10, 0x20, 0x00, 0x88, 0x88, 0x88, 0x98, 0x68, 0x00, 0x00 }}, -/* ucircumflex */ { 251, {0x20, 0x50, 0x00, 0x88, 0x88, 0x88, 0x98, 0x68, 0x00, 0x00 }}, -/* udieresis */ { 252, {0x00, 0x50, 0x00, 0x88, 0x88, 0x88, 0x98, 0x68, 0x00, 0x00 }}, -/* yacute */ { 253, {0x00, 0x10, 0x20, 0x88, 0x88, 0x98, 0x68, 0x08, 0x88, 0x70 }}, -/* thorn */ { 254, {0x00, 0x00, 0x80, 0xF0, 0x88, 0x88, 0x88, 0xF0, 0x80, 0x80 }}, -/* ydieresis */ { 255, {0x00, 0x50, 0x00, 0x88, 0x88, 0x98, 0x68, 0x08, 0x88, 0x70 }}, -/* char0 */ { 0, {0x00, 0xA8, 0x00, 0x88, 0x00, 0x88, 0x00, 0xA8, 0x00, 0x00 }} -}; - -void alto2_cpu_device::fake_status_putch(int x, UINT8 ch) -{ - const bdf_6x10_t* pf = bdf_6x10; - while (pf->code != ch && pf->code != 0) - pf++; - int dx = 6 * x; - if (dx >= ALTO2_DISPLAY_WIDTH) - return; - for (int dy = 0; dy < 10; dy++) - { - UINT8* pix = m_dsp.scanline[ALTO2_DISPLAY_HEIGHT + 1 + dy] + dx; - UINT8 bits = ~pf->bits[dy]; - pix[0] = (bits >> 7) & 1; - pix[1] = (bits >> 6) & 1; - pix[2] = (bits >> 5) & 1; - pix[3] = (bits >> 4) & 1; - pix[4] = (bits >> 3) & 1; - pix[5] = (bits >> 2) & 1; - } - -} - -void alto2_cpu_device::fake_status_printf(int x, const char* format, ...) -{ - static char buff[256]; - va_list ap; - va_start(ap, format); - vsnprintf(buff, sizeof(buff), format, ap); - va_end(ap); - char* src = buff; - while (*src) - fake_status_putch(x++, *src++); -} diff --git a/src/devices/cpu/alto2/a2disp.h b/src/devices/cpu/alto2/a2disp.h index ceb55a2a100..07815ea1a65 100644 --- a/src/devices/cpu/alto2/a2disp.h +++ b/src/devices/cpu/alto2/a2disp.h @@ -295,8 +295,5 @@ void init_disp(); //!< initialize the display context void exit_disp(); //!< deinitialize the display context void reset_disp(); //!< reset the display context -void fake_status_putch(int x, UINT8 ch); -void fake_status_printf(int x, const char* format, ...); - #endif // _A2DISP_H_ #endif // ALTO2_DEFINE_CONSTANTS diff --git a/src/devices/cpu/alto2/a2mem.cpp b/src/devices/cpu/alto2/a2mem.cpp index e64dd4a0a28..1b562db944e 100644 --- a/src/devices/cpu/alto2/a2mem.cpp +++ b/src/devices/cpu/alto2/a2mem.cpp @@ -201,11 +201,11 @@ * * chip A B C D E F G H I even odd * --------------------------------------------------------------------------------- - * a75: WD01 WD04 WD08 WD11 WD15 WD19 WD23 WD26 WD30 --- HC(0)A - * a76: WD00 WD03 WD06 WD10 WD13 WD17 WD21 WD25 WD28 HC(0B1) --- - * a86: WD02 WD05 WD09 WD12 WD16 WD20 WD24 WD27 WD31 HC(1)A --- - * a64: WD01 WD02 WD03 WD07 WD08 WD09 WD10 WD14 WD15 --- HC(2)A - * a85: WD16 WD17 WD22 WD23 WD24 WD25 WD29 WD30 WD31 HC(2)B --- + * A75: WD01 WD04 WD08 WD11 WD15 WD19 WD23 WD26 WD30 --- HC(0)A + * A76: WD00 WD03 WD06 WD10 WD13 WD17 WD21 WD25 WD28 HC(0B1) --- + * A86: WD02 WD05 WD09 WD12 WD16 WD20 WD24 WD27 WD31 HC(1)A --- + * A64: WD01 WD02 WD03 WD07 WD08 WD09 WD10 WD14 WD15 --- HC(2)A + * A85: WD16 WD17 WD22 WD23 WD24 WD25 WD29 WD30 WD31 HC(2)B --- * * H(0) ^ HC(0)A ^ HC(0B1) -> HC(0) * H(1) ^ HC(1)A ^ HC(0B1) -> HC(1) @@ -214,10 +214,10 @@ * * chip A B C D E F G H I even odd * --------------------------------------------------------------------------------- - * a66: WD04 WD05 WD06 WD07 WD08 WD09 WD10 H(3) 0 --- HC(3)A - * a84: WD18 WD19 WD20 WD21 WD22 WD23 WD24 WD25 0 HC(3/4) HCPA - * a63: WD11 WD12 WD13 WD14 WD15 WD16 WD17 H(4) 0 --- HC(4)A - * a87: WD26 WD27 WD28 WD29 WD30 WD31 H(5) 0 0 HC(5) HCPB + * A66: WD04 WD05 WD06 WD07 WD08 WD09 WD10 H(3) 0 --- HC(3)A + * A84: WD18 WD19 WD20 WD21 WD22 WD23 WD24 WD25 0 HC(3/4) HCPA + * A63: WD11 WD12 WD13 WD14 WD15 WD16 WD17 H(4) 0 --- HC(4)A + * A87: WD26 WD27 WD28 WD29 WD30 WD31 H(5) 0 0 HC(5) HCPB * * HC(3)A ^ HC(3/4) -> HC(3) * HC(4)A ^ HC(3/4) -> HC(4) @@ -226,53 +226,52 @@ * * chip A B C D E F G H I even odd * --------------------------------------------------------------------------------- - * a54: HC(3)A HC(4)A HCPA HCPB H(0/2) XX01 WD02 WD03 RP PERR --- - * a65: WD00 WD01 WD02 WD04 WD05 WD07 WD10 WD11 WD12 --- PCA - * a74: WD14 WD17 WD18 WD21 WD23 WD24 WD26 WD27 WD29 PCB --- + * A54: HC(3)A HC(4)A HCPA HCPB H(0/2) XX01 WD02 WD03 RP PERR --- + * A65: WD00 WD01 WD02 WD04 WD05 WD07 WD10 WD11 WD12 --- PCA + * A74: WD14 WD17 WD18 WD21 WD23 WD24 WD26 WD27 WD29 PCB --- * * PCA ^ PCB -> PC + * * * Whoa ;-) - * */ -#if USE_HAMMING_CHECK #define WD(x) (1ul<<(31-x)) -/* a75: WD01 WD04 WD08 WD11 WD15 WD19 WD23 WD26 WD30 --- HC(0)A */ +//! Data double word mask for chip A75. #define A75 (WD( 1)|WD( 4)|WD( 8)|WD(11)|WD(15)|WD(19)|WD(23)|WD(26)|WD(30)) -/* a76: WD00 WD03 WD06 WD10 WD13 WD17 WD21 WD25 WD29 HC(0B1) --- */ +//! Data double word mask for chip A76. #define A76 (WD( 0)|WD( 3)|WD( 6)|WD(10)|WD(13)|WD(17)|WD(21)|WD(25)|WD(28)) -/* a86: WD02 WD05 WD09 WD12 WD16 WD20 WD24 WD27 WD31 HC(1)A --- */ +//! Data double word mask for chip A86. #define A86 (WD( 2)|WD( 5)|WD( 9)|WD(12)|WD(16)|WD(20)|WD(24)|WD(27)|WD(31)) -/* a64: WD01 WD02 WD03 WD07 WD08 WD09 WD10 WD14 WD15 --- HC(2)A */ +//! Data double word mask for chip A64. #define A64 (WD( 1)|WD( 2)|WD( 3)|WD( 7)|WD( 8)|WD( 9)|WD(10)|WD(14)|WD(15)) -/* a85: WD16 WD17 WD22 WD23 WD24 WD25 WD29 WD30 WD31 HC(2)B --- */ +//! Data double word mask for chip A85. #define A85 (WD(16)|WD(17)|WD(22)|WD(23)|WD(24)|WD(25)|WD(29)|WD(30)|WD(31)) -/* a66: WD04 WD05 WD06 WD07 WD08 WD09 WD10 H(3) 0 --- HC(3)A */ +//! Data double word mask for chip A66. #define A66 (WD( 4)|WD( 5)|WD( 6)|WD( 7)|WD( 8)|WD( 9)|WD(10)) -/* a84: WD18 WD19 WD20 WD21 WD22 WD23 WD24 WD25 0 HC(3/4) HCPA */ +//! Data double word mask for chip A84. #define A84 (WD(18)|WD(19)|WD(20)|WD(21)|WD(22)|WD(23)|WD(24)|WD(25)) -/* a63: WD11 WD12 WD13 WD14 WD15 WD16 WD17 H(4) 0 --- HC(4)A */ +//! Data double word mask for chip A63. #define A63 (WD(11)|WD(12)|WD(13)|WD(14)|WD(15)|WD(16)|WD(17)) -/* a87: WD26 WD27 WD28 WD29 WD30 WD31 H(5) 0 0 HC(5) HCPB */ +//! Data double word mask for chip A87. #define A87 (WD(26)|WD(27)|WD(28)|WD(29)|WD(30)|WD(31)) -/* a54: HC(3)A HC(4)A HCPA HCPB H(0/2) XX01 WD02 WD03 P PERR --- */ +//! Data double word mask for chip A54. #define A54 (WD( 2)|WD( 3)) -/* a65: WD00 WD01 WD02 WD04 WD05 WD07 WD10 WD11 WD12 --- PCA */ +//! Data double word mask for chip A65. #define A65 (WD( 0)|WD( 1)|WD( 2)|WD( 4)|WD( 5)|WD( 7)|WD(10)|WD(11)|WD(12)) -/* a74: WD14 WD17 WD18 WD21 WD23 WD24 WD26 WD27 WD29 PCB --- */ +//! Data double word mask for chip A74. #define A74 (WD(14)|WD(17)|WD(18)|WD(21)|WD(23)|WD(24)|WD(26)|WD(27)|WD(29)) #define H0(hpb) X_BIT(hpb,8,0) //!< get Hamming code bit 0 from hpb data (really bit 32) @@ -283,23 +282,29 @@ #define H5(hpb) X_BIT(hpb,8,5) //!< get Hamming code bit 5 from hpb data (really bit 37) #define RH(hpb) X_RDBITS(hpb,8,0,5) //!< get Hamming code from hpb data (bits 32 to 37) #define RP(hpb) X_BIT(hpb,8,6) //!< get parity bit from hpb data (really bit 38) +#define RU(hpb) X_BIT(hpb,8,7) //!< get unused bit from hpb data (really bit 39) [unused] -/** @brief return even parity of a (masked) 32 bit value */ +/** + * @brief Return even parity of a (masked) 32 bit value. + * @param val 32 bits + * @return 1 for even parity, 0 for odd parity + */ static __inline UINT8 parity_even(UINT32 val) { - val -= ((val >> 1) & 0x55555555); - val = (((val >> 2) & 0x33333333) + (val & 0x33333333)); - val = (((val >> 4) + val) & 0x0f0f0f0f); - val += (val >> 8); - val += (val >> 16); - return (val & 1); + val -= ((val >> 1) & 0x55555555); + val = (((val >> 2) & 0x33333333) + (val & 0x33333333)); + val = (((val >> 4) + val) & 0x0f0f0f0f); + val += (val >> 8); + val += (val >> 16); + // val now has number of 1 bits + return val & 1; } -/** @brief return odd parity of a (masked) 32 bit value */ +/** @brief Return odd parity of a (masked) 32 bit value. */ #define parity_odd(val) (parity_even(val)^1) /** - * @brief lookup table to convert a Hamming syndrome into a bit number to correct + * @brief Lookup table to convert a Hamming syndrome into a bit number to correct. */ static const int hamming_lut[64] = { -1, -1, -1, 0, -1, 1, 2, 3, /* A69: HR(5):0 HR(4):0 HR(3):0 */ @@ -313,100 +318,88 @@ static const int hamming_lut[64] = { }; /** - * @brief read or write a memory double-word and caluclate its Hamming code + * @brief Caluclate a Hamming code after reading or before writing a memory double-word. * - * Hamming code generation according to the schematics described above. + * Hamming code generation is according to the schematics described above. + * * It's certainly overkill to do this on a modern PC, but I think we'll - * need it for perfect emulation anyways (Hamming code hardware checking). + * need it for perfect emulation anyways, e.g. Hamming code hardware checking. * - * @param write non-zero if this is a memory write (don't check for error) + * @param write true, if this is a memory write (don't check for error) * @param dw_addr the double-word address - * @param dw_data the double-word data to write - * @return dw_data + * @param dw_data the double-word data + * @return dw_data, possibly with 1 bit error corrected */ -UINT32 alto2_cpu_device::hamming_code(int write, UINT32 dw_addr, UINT32 dw_data) +UINT32 alto2_cpu_device::hamming_code(bool write, UINT32 dw_addr, UINT32 dw_data) { - UINT8 hpb = write ? 0 : m_mem.hpb[dw_addr]; - UINT8 hc_0_a; - UINT8 hc_0b1; - UINT8 hc_1_a; - UINT8 hc_2_a; - UINT8 hc_2_b; - UINT8 hc_0; - UINT8 hc_1; - UINT8 hc_2; - UINT8 h_0_2; - UINT8 hc_3_a; - UINT8 hc_3_4; - UINT8 hcpa; - UINT8 hc_4_a; - UINT8 hc_3; - UINT8 hc_4; - UINT8 hc_5; - UINT8 hcpb; - UINT8 perr; - UINT8 pca; - UINT8 pcb; - UINT8 pc; - int syndrome; + const UINT8 hpb = write ? 0 : m_mem.hpb[dw_addr]; /* a75: WD01 WD04 WD08 WD11 WD15 WD19 WD23 WD26 WD30 --- HC(0)A */ - hc_0_a = parity_odd (dw_data & A75); - /* a76: WD00 WD03 WD06 WD10 WD13 WD17 WD21 WD25 WD29 HC(0B1) --- */ - hc_0b1 = parity_even(dw_data & A76); - /* a86: WD02 WD05 WD09 WD12 WD16 WD20 WD24 WD27 WD31 HC(1)A --- */ - hc_1_a = parity_even(dw_data & A86); - /* a64: WD01 WD02 WD03 WD07 WD08 WD09 WD10 WD14 WD15 --- HC(2)A */ - hc_2_a = parity_odd (dw_data & A64); - /* a85: WD16 WD17 WD22 WD23 WD24 WD25 WD29 WD30 WD31 HC(2)B --- */ - hc_2_b = parity_even(dw_data & A85); + const UINT8 hc_0_a = parity_odd (dw_data & A75); - hc_0 = H0(hpb) ^ hc_0_a ^ hc_0b1; - hc_1 = H1(hpb) ^ hc_1_a ^ hc_0b1; - hc_2 = hc_2_a ^ hc_2_b ^ H2(hpb); - h_0_2 = H0(hpb) ^ H1(hpb) ^ H2(hpb); + /* a76: WD00 WD03 WD06 WD10 WD13 WD17 WD21 WD25 WD29 HC(0B1) --- */ + const UINT8 hc_0b1 = parity_even(dw_data & A76); + + /* a86: WD02 WD05 WD09 WD12 WD16 WD20 WD24 WD27 WD31 HC(1)A --- */ + const UINT8 hc_1_a = parity_even(dw_data & A86); + + /* a64: WD01 WD02 WD03 WD07 WD08 WD09 WD10 WD14 WD15 --- HC(2)A */ + const UINT8 hc_2_a = parity_odd (dw_data & A64); + + /* a85: WD16 WD17 WD22 WD23 WD24 WD25 WD29 WD30 WD31 HC(2)B --- */ + const UINT8 hc_2_b = parity_even(dw_data & A85); + + const UINT8 hc_0 = H0(hpb) ^ hc_0_a ^ hc_0b1; + const UINT8 hc_1 = H1(hpb) ^ hc_1_a ^ hc_0b1; + const UINT8 hc_2 = hc_2_a ^ hc_2_b ^ H2(hpb); + const UINT8 h_0_2 = H0(hpb) ^ H1(hpb) ^ H2(hpb); /* a66: WD04 WD05 WD06 WD07 WD08 WD09 WD10 H(3) 0 --- HC(3)A */ - hc_3_a = parity_odd ((dw_data & A66) ^ H3(hpb)); + const UINT8 hc_3_a = parity_odd ((dw_data & A66) ^ H3(hpb)); + /* a84: WD18 WD19 WD20 WD21 WD22 WD23 WD24 WD25 0 HC(3/4) HCPA */ - hcpa = parity_odd (dw_data & A84); - hc_3_4 = hcpa ^ 1; + const UINT8 hcpa = parity_odd (dw_data & A84); + const UINT8 hc_3_4 = hcpa ^ 1; + /* a63: WD11 WD12 WD13 WD14 WD15 WD16 WD17 H(4) 0 --- HC(4)A */ - hc_4_a = parity_odd ((dw_data & A63) ^ H4(hpb)); + const UINT8 hc_4_a = parity_odd ((dw_data & A63) ^ H4(hpb)); /* a87: WD26 WD27 WD28 WD29 WD30 WD31 H(5) 0 0 HC(5) HCPB */ - hcpb = parity_odd ((dw_data & A87) ^ H5(hpb)); - hc_3 = hc_3_a ^ hc_3_4; - hc_4 = hc_4_a ^ hc_3_4; - hc_5 = hcpb ^ 1; + const UINT8 hcpb = parity_odd ((dw_data & A87) ^ H5(hpb)); + const UINT8 hc_3 = hc_3_a ^ hc_3_4; + const UINT8 hc_4 = hc_4_a ^ hc_3_4; + const UINT8 hc_5 = hcpb ^ 1; - syndrome = (hc_0<<5)|(hc_1<<4)|(hc_2<<3)|(hc_3<<2)|(hc_4<<1)|(hc_5); + const UINT8 syndrome = 32*hc_0 + 16*hc_1 + 8*hc_2 + 4*hc_3 + 2*hc_4 + hc_5; - /* + + /* a54: HC(3)A HC(4)A HCPA HCPB H(0/2) XX01 WD02 WD03 P PERR --- + * * Note: Here I XOR all the non dw_data inputs into bit 0, * which has the same effect as spreading them over some bits * and then counting them... I hope ;-) */ - /* a54: HC(3)A HC(4)A HCPA HCPB H(0/2) XX01 WD02 WD03 P PERR --- */ - perr = parity_even( + const UINT8 perr = parity_even( hc_3_a ^ hc_4_a ^ hcpa ^ hcpb ^ h_0_2 ^ - (X_RDBITS(dw_data,32,0,0) ^ X_RDBITS(dw_data,32,1,1)) ^ + X_RDBITS(dw_data,32,0,0) ^ + X_RDBITS(dw_data,32,1,1) ^ (dw_data & A54) ^ RP(hpb) ^ 1); /* a65: WD00 WD01 WD02 WD04 WD05 WD07 WD10 WD11 WD12 --- PCA */ - pca = parity_odd (dw_data & A65); + const UINT8 pca = parity_odd (dw_data & A65); + /* a74: WD14 WD17 WD18 WD21 WD23 WD24 WD26 WD27 WD29 PCB --- */ - pcb = parity_even(dw_data & A74); - pc = pca ^ pcb; + const UINT8 pcb = parity_even(dw_data & A74); + const UINT8 pc = pca ^ pcb; if (write) { - /* update the hamming code and parity bit store */ + /* Update the hamming code and parity bit store */ m_mem.hpb[dw_addr] = (syndrome << 2) | (pc << 1); return dw_data; @@ -429,11 +422,11 @@ UINT32 alto2_cpu_device::hamming_code(int write, UINT32 dw_addr, UINT32 dw_data) * output signal * ------------------------- * 8 ERROR + * * - * Remembering De Morgan this can be simplified: + * Using De Morgan this can be simplified: * ERROR is 0, whenever all of PERR and HC(0) to HC(5) are 0. * Or the other way round: any of perr or syndrome non-zero means ERROR=1. - * */ if (perr || syndrome) { /* latch data on the first error */ @@ -478,7 +471,6 @@ UINT32 alto2_cpu_device::hamming_code(int write, UINT32 dw_addr, UINT32 dw_data) } return dw_data; } -#endif /* USE_HAMMING_CHECK */ /** * @brief memory error address register read @@ -522,11 +514,7 @@ READ16_MEMBER( alto2_cpu_device::mesr_r ) LOG((this,LOG_MEM,6," Hamming code read : %#o\n", GET_MESR_HAMMING(data))); LOG((this,LOG_MEM,6," Parity error : %o\n", GET_MESR_PERR(data))); LOG((this,LOG_MEM,6," Memory parity bit : %o\n", GET_MESR_PARITY(data))); -#if USE_HAMMING_CHECK LOG((this,LOG_MEM,6," Hamming syndrome : %#o (bit #%d)\n", GET_MESR_SYNDROME(data), hamming_lut[GET_MESR_SYNDROME(data)])); -#else - LOG((this,LOG_MEM,6," Hamming syndrome : %#o\n", GET_MESR_SYNDROME(data))); -#endif LOG((this,LOG_MEM,6," Memory bank : %#o\n", GET_MESR_BANK(data))); } return data; @@ -536,10 +524,10 @@ WRITE16_MEMBER( alto2_cpu_device::mesr_w ) { if (!space.debugger_access()) { LOG((this,LOG_MEM,2," MESR write %07o (clear MESR; was %07o)\n", data, m_mem.mesr)); + m_mem.mesr = 0; // set all bits to 0 + m_mem.error = 0; // reset the error flag + m_task_wakeup &= ~(1 << task_part); // clear the task wakeup for the parity error task } - m_mem.mesr = 0; // set all bits to 0 - m_mem.error = 0; // reset the error flag - m_task_wakeup &= ~(1 << task_part); // clear the task wakeup for the parity error task } /** @@ -566,6 +554,7 @@ WRITE16_MEMBER( alto2_cpu_device::mesr_w ) WRITE16_MEMBER( alto2_cpu_device::mecr_w ) { m_mem.mecr = data ^ 0177777; + // clear spare bits X_WRBITS(m_mem.mecr,16, 0, 3,0); X_WRBITS(m_mem.mecr,16,15,15,0); if (!space.debugger_access()) { @@ -584,7 +573,7 @@ WRITE16_MEMBER( alto2_cpu_device::mecr_w ) READ16_MEMBER( alto2_cpu_device::mecr_r ) { UINT16 data = m_mem.mecr ^ 0177777; - /* set all spare bits */ + // all spare bits are set if (!space.debugger_access()) { LOG((this,LOG_MEM,2," MECR read %07o\n", data)); LOG((this,LOG_MEM,6," Test Hamming code : %#o\n", GET_MECR_TEST_CODE(data))); @@ -599,18 +588,18 @@ READ16_MEMBER( alto2_cpu_device::mecr_r ) //! read i/o space RAM READ16_MEMBER ( alto2_cpu_device::ioram_r ) { - offs_t dword_addr = offset / 2; - return static_cast(offset & 1 ? GET_ODD(m_mem.ram[dword_addr]) : GET_EVEN(m_mem.ram[dword_addr])); + offs_t dw_addr = offset / 2; + return static_cast(offset & 1 ? GET_ODD(m_mem.ram[dw_addr]) : GET_EVEN(m_mem.ram[dw_addr])); } //! write i/o space RAM WRITE16_MEMBER( alto2_cpu_device::ioram_w ) { - offs_t dword_addr = offset / 2; + offs_t dw_addr = offset / 2; if (offset & 1) - PUT_ODD(m_mem.ram[dword_addr], data); + PUT_ODD(m_mem.ram[dw_addr], data); else - PUT_EVEN(m_mem.ram[dword_addr], data); + PUT_EVEN(m_mem.ram[dw_addr], data); } /** @@ -627,7 +616,7 @@ void alto2_cpu_device::load_mar(UINT8 rsel, UINT32 addr) * currently we don't do anything special */ LOG((this,LOG_MEM,5, " MAR<-; refresh cycle @ %#o\n", addr)); - m_mem.mar = addr; + m_mem.mar = addr & ~3; m_mem.access = ALTO2_MEM_REFRESH; m_mem.cycle = cycle(); return; @@ -639,8 +628,7 @@ void alto2_cpu_device::load_mar(UINT8 rsel, UINT32 addr) m_mem.access = ALTO2_MEM_RAM; // fetch the memory double-word to the read/write latches m_mem.rmdd = m_mem.wmdd = m_mem.ram[m_mem.mar/2]; - // keep track of the current CPU cycle - m_mem.cycle = cycle(); + m_mem.cycle = cycle(); // keep track of the current CPU cycle } else { m_mem.access = ALTO2_MEM_INVALID; m_mem.rmdd = m_mem.wmdd = ~0; @@ -678,11 +666,10 @@ UINT16 alto2_cpu_device::read_mem() return m_mem.md; } -#if USE_HAMMING_CHECK - /* check for errors on the first access */ + /* check for errors on the first access (even address) */ if (!(m_mem.access & ALTO2_MEM_ODD)) - m_mem.rmdd = hamming_code(0, m_mem.mar/2, m_mem.rmdd); -#endif + m_mem.rmdd = hamming_code(false, m_mem.mar/2, m_mem.rmdd); + m_mem.md = (m_mem.mar & ALTO2_MEM_ODD) ? GET_ODD(m_mem.rmdd) : GET_EVEN(m_mem.rmdd); LOG((this,LOG_MEM,6," MD = RAM[%#o] (%#o)\n", m_mem.mar, m_mem.md)); @@ -741,21 +728,18 @@ void alto2_cpu_device::write_mem(UINT16 data) else PUT_EVEN(m_mem.wmdd, m_mem.md); -#if USE_HAMMING_CHECK if (m_mem.access & ALTO2_MEM_RAM) - m_mem.ram[m_mem.mar/2] = hamming_code(1, m_mem.mar/2, m_mem.wmdd); -#else - if (m_mem.access & ALTO2_MEM_RAM) - m_mem.ram[m_mem.mar/2] = m_mem.wmdd; -#endif + m_mem.ram[m_mem.mar/2] = hamming_code(true, m_mem.mar/2, m_mem.wmdd); #if ALTO2_DEBUG watch_write(m_mem.mar, m_mem.md); #endif + // Toggle the odd/even word access flag // NB: don't reset mem.access to permit double word exchange - m_mem.mar ^= ALTO2_MEM_ODD; + m_mem.mar ^= 1; m_mem.access ^= ALTO2_MEM_ODD; + // extend the write succeeds window by one cycle m_mem.cycle++; } @@ -768,15 +752,15 @@ void alto2_cpu_device::write_mem(UINT16 data) */ UINT16 alto2_cpu_device::debug_read_mem(UINT32 addr) { - space(AS_2).set_debugger_access(true); int base_addr = addr & 0177777; int data; - if (base_addr >= ALTO2_IO_PAGE_BASE && addr < ALTO2_RAM_SIZE) { + if (addr >= ALTO2_IO_PAGE_BASE && addr < ALTO2_RAM_SIZE) { + space(AS_2).set_debugger_access(true); data = m_iomem->read_word(m_iomem->address_to_byte(base_addr)); + space(AS_2).set_debugger_access(false); } else { data = (addr & ALTO2_MEM_ODD) ? GET_ODD(m_mem.ram[addr/2]) : GET_EVEN(m_mem.ram[addr/2]); } - space(AS_2).set_debugger_access(false); return data; } @@ -788,16 +772,16 @@ UINT16 alto2_cpu_device::debug_read_mem(UINT32 addr) */ void alto2_cpu_device::debug_write_mem(UINT32 addr, UINT16 data) { - space(AS_2).set_debugger_access(true); int base_addr = addr & 0177777; - if (base_addr >= ALTO2_IO_PAGE_BASE && addr < ALTO2_RAM_SIZE) { + if (addr >= ALTO2_IO_PAGE_BASE && addr < ALTO2_RAM_SIZE) { + space(AS_2).set_debugger_access(true); m_iomem->write_word(m_iomem->address_to_byte(base_addr), data); + space(AS_2).set_debugger_access(false); } else if (addr & ALTO2_MEM_ODD) { PUT_ODD(m_mem.ram[addr/2], data); } else { PUT_EVEN(m_mem.ram[addr/2], data); } - space(AS_2).set_debugger_access(false); } /** @@ -837,23 +821,19 @@ void alto2_cpu_device::reset_memory() } // allocate 64K or 128K words of main memory ioport_port* config = ioport(":CONFIG"); + m_mem.size = ALTO2_RAM_SIZE; // config should be valid, unless the driver doesn't define it - if (config) - m_mem.size = config->read() & 1 ? ALTO2_RAM_SIZE : 2 * ALTO2_RAM_SIZE; - else - m_mem.size = ALTO2_RAM_SIZE; + if (config && 0 == config->read()) + m_mem.size *= 2; logerror("Main memory %u KiB\n", static_cast(sizeof(UINT16) * m_mem.size / 1024)); m_mem.ram = make_unique_clear(sizeof(UINT16) * m_mem.size); - m_mem.hpb = make_unique_clear( sizeof(UINT16) * m_mem.size); + m_mem.hpb = make_unique_clear (sizeof(UINT16) * m_mem.size); + + // Initialize the hamming codes and parity bits + for (UINT32 addr = 0; addr < m_mem.size; addr++) + hamming_code(true, addr, 0); -#if USE_HAMMING_CHECK - // Initialize the hamming codes and parity bit - for (UINT32 addr = 0; addr < ALTO2_IO_PAGE_BASE; addr++) { - hamming_code(1, addr, 0); - hamming_code(1, 0200000 + addr, 0); - } -#endif m_mem.mar = 0; m_mem.rmdd = 0; m_mem.wmdd = 0; diff --git a/src/devices/cpu/alto2/a2mem.h b/src/devices/cpu/alto2/a2mem.h index 50b2b53d345..cc44f09d152 100644 --- a/src/devices/cpu/alto2/a2mem.h +++ b/src/devices/cpu/alto2/a2mem.h @@ -108,8 +108,8 @@ DECLARE_WRITE16_MEMBER( mesr_w ); //!< memory error status register write DECLARE_READ16_MEMBER ( mecr_r ); //!< memory error control register read DECLARE_WRITE16_MEMBER( mecr_w ); //!< memory error control register write -//! Read or write a memory double-word and caluclate its Hamming code. -UINT32 hamming_code(int write, UINT32 dw_addr, UINT32 dw_data); +//! Read or write a memory double-word and caluclate or compare its Hamming code. +UINT32 hamming_code(bool write, UINT32 dw_addr, UINT32 dw_data); //! Load the memory address register with some value. void load_mar(UINT8 rsel, UINT32 addr); diff --git a/src/devices/cpu/alto2/a2mouse.cpp b/src/devices/cpu/alto2/a2mouse.cpp index 6bf0760285c..411e9135b21 100644 --- a/src/devices/cpu/alto2/a2mouse.cpp +++ b/src/devices/cpu/alto2/a2mouse.cpp @@ -120,8 +120,8 @@ UINT16 alto2_cpu_device::mouse_read() break; case 1: m_mouse.latch |= MACTIVE; - m_mouse.x -= SIGN(m_mouse.x - m_mouse.dx); - m_mouse.y -= SIGN(m_mouse.y - m_mouse.dy); + m_mouse.x += SIGN(m_mouse.dx - m_mouse.x); + m_mouse.y += SIGN(m_mouse.dy - m_mouse.y); break; case 2: m_mouse.latch ^= MOVEX(m_mouse.dx - m_mouse.x); @@ -129,8 +129,8 @@ UINT16 alto2_cpu_device::mouse_read() break; case 3: m_mouse.latch |= MACTIVE; - m_mouse.x -= SIGN(m_mouse.x - m_mouse.dx); - m_mouse.y -= SIGN(m_mouse.y - m_mouse.dy); + m_mouse.x += SIGN(m_mouse.dx - m_mouse.x); + m_mouse.y += SIGN(m_mouse.dy - m_mouse.y); } m_mouse.phase = (m_mouse.phase + 1) % 4; return data; @@ -145,10 +145,9 @@ UINT16 alto2_cpu_device::mouse_read() */ INPUT_CHANGED_MEMBER( alto2_cpu_device::mouse_motion_x ) { - // set new destination (absolute) mouse x coordinate - INT32 x = m_mouse.dx + newval - oldval; - x = x < 0 ? 0 : x > 605 ? 605 : x; - m_mouse.dx = x; + INT16 ox = static_cast(oldval); + INT16 nx = static_cast(newval); + m_mouse.dx = std::min(std::max(0, m_mouse.dx + (nx - ox)), 639); } /** @@ -160,10 +159,9 @@ INPUT_CHANGED_MEMBER( alto2_cpu_device::mouse_motion_x ) */ INPUT_CHANGED_MEMBER( alto2_cpu_device::mouse_motion_y ) { - // set new destination (absolute) mouse y coordinate - INT32 y = m_mouse.dy + newval - oldval; - y = y < 0 ? 0 : y > 807 ? 807 : y; - m_mouse.dy = y; + INT16 oy = static_cast(oldval); + INT16 ny = static_cast(newval); + m_mouse.dy = std::min(std::max(0, m_mouse.dy + (ny - oy)), 824); } /** diff --git a/src/devices/cpu/alto2/a2mrt.cpp b/src/devices/cpu/alto2/a2mrt.cpp index 92a7aa6333a..93fedbdbf6a 100644 --- a/src/devices/cpu/alto2/a2mrt.cpp +++ b/src/devices/cpu/alto2/a2mrt.cpp @@ -26,7 +26,7 @@ void alto2_cpu_device::activate_mrt() } } - //! memory refresh task slots initialization +//! memory refresh task slots initialization void alto2_cpu_device::init_mrt(int task) { set_f1(task, f1_block, &alto2_cpu_device::f1_early_mrt_block, nullptr); diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h index a0b7af2442a..92a737c403a 100644 --- a/src/devices/cpu/alto2/alto2cpu.h +++ b/src/devices/cpu/alto2/alto2cpu.h @@ -49,11 +49,8 @@ enum { #define ALTO2_CRAM_CONFIG 2 //!< use default CROM/CRAM configuration 2 #endif -#define ALTO2_FAKE_STATUS_H 12 //!< number of extra scanlines to display some status info - #define USE_PRIO_F9318 0 //!< define to 1 to use the F9318 priority encoder code (broken) #define USE_BITCLK_TIMER 0 //!< define to 1 to use a very high rate timer for the disk bit clock -#define USE_HAMMING_CHECK 1 //!< define to 1 to use the Hamming code and Parity check in a2mem #define ALTO2_TASKS 16 //!< 16 task slots #define ALTO2_REGS 32 //!< 32 16-bit words in the R register file diff --git a/src/devices/cpu/alto2/alto2dsm.cpp b/src/devices/cpu/alto2/alto2dsm.cpp index 121ab50b398..7139243d0ba 100644 --- a/src/devices/cpu/alto2/alto2dsm.cpp +++ b/src/devices/cpu/alto2/alto2dsm.cpp @@ -386,5 +386,11 @@ offs_t alto2_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS<-F2_%02o ", f2); break; } + + // Simplify output based on text + // ALUF(BUS) is a no-op if followed by BUS<- + while (NULL != (dst = strstr(buffer, "ALUF(BUS) BUS<-"))) + strcpy(dst, dst + 15); + return result; } diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp index 4b9e7542b65..2064a3fb6f1 100644 --- a/src/mame/drivers/alto2.cpp +++ b/src/mame/drivers/alto2.cpp @@ -153,13 +153,10 @@ static INPUT_PORTS_START( alto2 ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("Mouse YELLOW (middle)") PORT_PLAYER(1) PORT_CODE(MOUSECODE_BUTTON3) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_button_2, nullptr ) PORT_START("mousex") // Mouse - X AXIS - PORT_BIT( 0xffff, 0x00, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_motion_x, nullptr ) + PORT_BIT( 0xffff, 0, IPT_MOUSE_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_motion_x, nullptr ) PORT_START("mousey") // Mouse - Y AXIS - PORT_BIT( 0xffff, 0x00, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_motion_y, nullptr ) - - PORT_START("utilout") // Speaker connected to UTILOUT - PORT_BIT( 0xff, 0x00, IPT_PORT ) PORT_WRITE_LINE_DEVICE_MEMBER(":speaker", speaker_sound_device, level_w) + PORT_BIT( 0xffff, 0, IPT_MOUSE_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CHANGED_MEMBER( ":maincpu", alto2_cpu_device, mouse_motion_y, nullptr ) PORT_START("CONFIG") /* Memory switch on AIM board */ PORT_CONFNAME( 0x01, 0x01, "Memory switch") @@ -279,7 +276,7 @@ static MACHINE_CONFIG_START( alto2, alto2_state ) MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::white) MCFG_SCREEN_RAW_PARAMS(XTAL_20_16MHz, ALTO2_DISPLAY_TOTAL_WIDTH, 0, ALTO2_DISPLAY_WIDTH, - ALTO2_DISPLAY_TOTAL_HEIGHT, 0, ALTO2_DISPLAY_HEIGHT + ALTO2_FAKE_STATUS_H) + ALTO2_DISPLAY_TOTAL_HEIGHT, 0, ALTO2_DISPLAY_HEIGHT) MCFG_SCREEN_REFRESH_RATE(60) // two interlaced fields MCFG_SCREEN_VBLANK_TIME(ALTO2_DISPLAY_VBLANK_TIME) MCFG_SCREEN_UPDATE_DEVICE("maincpu", alto2_cpu_device, screen_update) From ef7710c1be64d051a59ef42fae32b161fce36fc0 Mon Sep 17 00:00:00 2001 From: jbu Date: Wed, 3 Aug 2016 18:40:58 +0200 Subject: [PATCH 010/116] alto2: remove extra screen buffer Save copying odd / even frame scanlines by immediately updating the m_dsp.bitmap when a frame buffer word changes. --- src/devices/cpu/alto2/a2disp.cpp | 64 +++++++++++++------------------- src/devices/cpu/alto2/a2disp.h | 10 ++--- 2 files changed, 29 insertions(+), 45 deletions(-) diff --git a/src/devices/cpu/alto2/a2disp.cpp b/src/devices/cpu/alto2/a2disp.cpp index cf3b5aa8bc6..825699f69af 100644 --- a/src/devices/cpu/alto2/a2disp.cpp +++ b/src/devices/cpu/alto2/a2disp.cpp @@ -155,10 +155,10 @@ static const prom_load_t pl_displ_a63 = * Address lines are driven by H[1] to H[128] of the horz. line counters. * PROM is enabled when H[256] and H[512] are both 0. * - * Q1 is VSYNC for the odd field (with H1024=0) - * Q2 is VSYNC for the even field (with H1024=1) - * Q3 is VBLANK for the odd field (with H1024=0) - * Q4 is VBLANK for the even field (with H1024=1) + * Q1 is VSYNC for the odd field (with H1024=1) + * Q2 is VSYNC for the even field (with H1024=0) + * Q3 is VBLANK for the odd field (with H1024=1) + * Q4 is VBLANK for the even field (with H1024=0) * */ @@ -242,8 +242,8 @@ static const UINT16 double_bits[256] = { //!< helper to extract A3-A0 from a PROM a63 value #define A63_NEXT(n) ((n >> 2) & 017) -//! update the internal bitmap to a byte array -void alto2_cpu_device::update_bitmap_word(UINT16* bitmap, int x, int y, UINT16 word) +//! update the internal frame buffer and draw the scanline segment if changed +void alto2_cpu_device::update_framebuf_word(UINT16* framebuf, int x, int y, UINT16 word) { // mixing with the cursor if (x == m_dsp.curxpos + 0) @@ -251,11 +251,10 @@ void alto2_cpu_device::update_bitmap_word(UINT16* bitmap, int x, int y, UINT16 w if (x == m_dsp.curxpos + 1) word ^= m_dsp.cursor1; // no change? - if (word == bitmap[x]) + if (word == framebuf[x]) return; - bitmap[x] = word; - UINT8* pix = m_dsp.scanline[y] + x * 16; - memcpy(pix, m_dsp.patterns + 16 * word, 16); + framebuf[x] = word; + draw_scanline8(*m_dsp.bitmap, x * 16, y, 16, m_dsp.patterns + 16 * word, nullptr); } /** @@ -271,7 +270,7 @@ void alto2_cpu_device::unload_word() m_unload_time = -1; return; } - UINT16* bitmap = m_dsp.raw_bitmap.get() + y * ALTO2_DISPLAY_SCANLINE_WORDS; + UINT16* framebuf = m_dsp.framebuf.get() + y * ALTO2_DISPLAY_SCANLINE_WORDS; UINT16 word = m_dsp.inverse; UINT8 a38 = m_disp_a38[m_dsp.ra * 16 + m_dsp.wa]; if (FIFO_MBEMPTY(a38)) @@ -290,18 +289,18 @@ void alto2_cpu_device::unload_word() { UINT16 word1 = double_bits[word / 256]; UINT16 word2 = double_bits[word % 256]; - update_bitmap_word(bitmap, x, y, word1); + update_framebuf_word(framebuf, x, y, word1); x++; if (x < ALTO2_DISPLAY_VISIBLE_WORDS) { - update_bitmap_word(bitmap, x, y, word2); + update_framebuf_word(framebuf, x, y, word2); x++; } m_unload_time += ALTO2_DISPLAY_BITTIME(32); } else { - update_bitmap_word(bitmap, x, y, word); + update_framebuf_word(framebuf, x, y, word); x++; m_unload_time += ALTO2_DISPLAY_BITTIME(16); } @@ -325,26 +324,26 @@ void alto2_cpu_device::display_state_machine() LOG((this,LOG_DISPL,2," HLC=%d", m_dsp.hlc)); } - UINT8 a63 = m_disp_a63[m_dsp.state]; + const UINT8 a63 = m_disp_a63[m_dsp.state]; if (A63_HLCGATE(a63)) { // count horizontal line counters and wrap m_dsp.hlc += 1; - if (m_dsp.hlc > ALTO2_DISPLAY_HLC_END) + if (m_dsp.hlc == ALTO2_DISPLAY_HLC_END) m_dsp.hlc = ALTO2_DISPLAY_HLC_START; // wake up the memory refresh task _twice_ on each scanline m_task_wakeup |= 1 << task_mrt; } // PROM a66 is disabled, if any of HLC256 or HLC512 are high - UINT8 a66 = (HLC256 || HLC512) ? 017 : m_disp_a66[m_dsp.hlc & 0377]; + const UINT8 a66 = (HLC256 | HLC512) ? 017 : m_disp_a66[m_dsp.hlc & 0377]; // next address from PROM a63, use A4 from HLC1 - UINT8 next = ((HLC1 ^ 1) << 4) | A63_NEXT(a63); + const UINT8 next = ((HLC1 ^ 1) << 4) | A63_NEXT(a63); if (A66_VBLANK(a66)) { // Rising edge of VBLANK: remember HLC[1-10] where the VBLANK starts - m_dsp.vblank = m_dsp.hlc & ~02000; + m_dsp.vblank = m_dsp.hlc & ~(1 << 10); LOG((this,LOG_DISPL,1, " VBLANK")); @@ -357,7 +356,6 @@ void alto2_cpu_device::display_state_machine() * at the beginning of vertical retrace. */ m_task_wakeup |= 1 << task_dvt; - // TODO: upade odd or even field of the internal bitmap now? } } else @@ -480,9 +478,9 @@ void alto2_cpu_device::f2_late_evenfield() /** * @brief initialize the display context to useful values * - * Zap the display context to all 0s. - * Allocate a bitmap array to save blitting to the screen when - * there is no change in the data words. + * Zap the display context. + * Allocate a framebuf array to save updating the bitmap when + * there is no change in the data word. */ void alto2_cpu_device::init_disp() { @@ -514,16 +512,13 @@ void alto2_cpu_device::init_disp() m_dsp.hlc = ALTO2_DISPLAY_HLC_START; - m_dsp.raw_bitmap = std::make_unique(ALTO2_DISPLAY_HEIGHT * ALTO2_DISPLAY_SCANLINE_WORDS); + m_dsp.framebuf = std::make_unique(ALTO2_DISPLAY_HEIGHT * ALTO2_DISPLAY_SCANLINE_WORDS); m_dsp.patterns = auto_alloc_array(machine(), UINT8, 65536 * 16); for (int y = 0; y < 65536; y++) { UINT8* dst = m_dsp.patterns + y * 16; for (int x = 0; x < 16; x++) - *dst++ = (y >> (15 - x)) & 1; + *dst++ = (~y >> (15 - x)) & 1; } - m_dsp.scanline = auto_alloc_array(machine(), UINT8*, ALTO2_DISPLAY_HEIGHT); - for (int y = 0; y < ALTO2_DISPLAY_HEIGHT; y++) - m_dsp.scanline[y] = auto_alloc_array(machine(), UINT8, ALTO2_DISPLAY_TOTAL_WIDTH); m_dsp.bitmap = std::make_unique(ALTO2_DISPLAY_WIDTH, ALTO2_DISPLAY_HEIGHT); m_dsp.state = 0; @@ -555,26 +550,17 @@ void alto2_cpu_device::reset_disp() m_dsp.curxpos = 0; m_dsp.cursor0 = 0; m_dsp.cursor1 = 0; - memset(m_dsp.raw_bitmap.get(), 0, sizeof(UINT16) * ALTO2_DISPLAY_HEIGHT * ALTO2_DISPLAY_SCANLINE_WORDS); - for (int y = 0; y < ALTO2_DISPLAY_HEIGHT; y++) - memset(m_dsp.scanline[y], 0, sizeof(UINT8) * ALTO2_DISPLAY_TOTAL_WIDTH); - m_dsp.odd_frame = false; + memset(m_dsp.framebuf.get(), 1, sizeof(UINT16) * ALTO2_DISPLAY_HEIGHT * ALTO2_DISPLAY_SCANLINE_WORDS); } /* Video update */ UINT32 alto2_cpu_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - pen_t palette_bw[2]; - palette_bw[0] = screen.palette().white_pen(); - palette_bw[1] = screen.palette().black_pen(); - for (int y = m_dsp.odd_frame ? 1 : 0; y < ALTO2_DISPLAY_HEIGHT; y += 2) - draw_scanline8(*m_dsp.bitmap, 0, y, ALTO2_DISPLAY_WIDTH, m_dsp.scanline[y], palette_bw); copybitmap(bitmap, *m_dsp.bitmap, 0, 0, 0, 0, cliprect); return 0; } void alto2_cpu_device::screen_eof(screen_device &screen, bool state) { - if (state) - m_dsp.odd_frame = !m_dsp.odd_frame; + // FIXME: do we need this in some way? } diff --git a/src/devices/cpu/alto2/a2disp.h b/src/devices/cpu/alto2/a2disp.h index 07815ea1a65..fed97913d46 100644 --- a/src/devices/cpu/alto2/a2disp.h +++ b/src/devices/cpu/alto2/a2disp.h @@ -16,7 +16,7 @@ * 67: A=1 B=0 C=0 D=1 * 75: A=0 B=0 C=0 D=0 * - * The value is 150 + * The value is 2+4+16+128 = 150 */ #define ALTO2_DISPLAY_HLC_START (2+4+16+128) @@ -192,11 +192,9 @@ struct { UINT32 curxpos; //!< helper: first cursor word in scanline UINT16 cursor0; //!< helper: shifted cursor data for left word UINT16 cursor1; //!< helper: shifted cursor data for right word - std::unique_ptr raw_bitmap; //!< array of words of the raw bitmap that is displayed + std::unique_ptr framebuf; //!< array of words of the raw bitmap that is displayed UINT8 *patterns; //!< array of 65536 patterns (16 bytes) with 1 byte per pixel - UINT8 **scanline; //!< array of scanlines with 1 byte per pixel std::unique_ptr bitmap; //!< MAME bitmap with 16 bit indices - bool odd_frame; //!< true, if odd frame is drawn } m_dsp; /** @@ -285,9 +283,9 @@ enum { disp_a66_VBLANK_EVEN = (1 << 3) //!< Q4 (010) is VBLANK for the even field (with H1024=0) }; -void update_bitmap_word(UINT16* bitmap, int x, int y, UINT16 word); //!< update a word in the screen bitmap +void update_framebuf_word(UINT16* framebuf, int x, int y, UINT16 word); void unload_word(); //!< unload the next word from the display FIFO and shift it to the screen -void display_state_machine(); //!< function called by the CPU to enter the next display state +void display_state_machine(); //!< function called by the CPU execution loop to enter the next display state void f2_late_evenfield(void); //!< branch on the evenfield flip-flop From c459eaac5086df2a5d8af193ccf231ccec12da0b Mon Sep 17 00:00:00 2001 From: MetalliC <0vetal0@gmail.com> Date: Wed, 3 Aug 2016 20:29:28 +0300 Subject: [PATCH 011/116] Ferrari F355 Japan BIOS dumped [ShouTime] --- src/mame/drivers/naomi.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp index bed2b2c44b6..5c64c0020f6 100644 --- a/src/mame/drivers/naomi.cpp +++ b/src/mame/drivers/naomi.cpp @@ -2982,7 +2982,9 @@ Probably at some stage of development NAOMI was planned as non-JVS system as wel ROM_SYSTEM_BIOS( 0, "bios0", "Ferrari F355 (Export)" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-22851.ic27", 0x000000, 0x200000, CRC(62483677) SHA1(3e3bcacf5f972c376b569f45307ee7fd0b5031b7) ) \ ROM_SYSTEM_BIOS( 1, "bios1", "Ferrari F355 (USA)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-22850.ic27", 0x000000, 0x200000, CRC(28aa539d) SHA1(14485368656af80504b212da620179c49f84c1a2) ) + ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-22850.ic27", 0x000000, 0x200000, CRC(28aa539d) SHA1(14485368656af80504b212da620179c49f84c1a2) ) \ + ROM_SYSTEM_BIOS( 2, "bios2", "Ferrari F355 (Japan)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-22849.ic27", 0x000000, 0x200000, CRC(121e009c) SHA1(3beb91f660e60590491b209b6be8584b05a90548) ) #define AIRLINE_BIOS \ ROM_REGION( 0x200000, "maincpu", 0) \ From 440c2ffe9474bf4fd9bcf73dd18075d10e6128c3 Mon Sep 17 00:00:00 2001 From: MetalliC <0vetal0@gmail.com> Date: Wed, 3 Aug 2016 20:36:42 +0300 Subject: [PATCH 012/116] c/p typo (nw) --- src/mame/drivers/naomi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp index 5c64c0020f6..50647f3f674 100644 --- a/src/mame/drivers/naomi.cpp +++ b/src/mame/drivers/naomi.cpp @@ -2984,7 +2984,7 @@ Probably at some stage of development NAOMI was planned as non-JVS system as wel ROM_SYSTEM_BIOS( 1, "bios1", "Ferrari F355 (USA)" ) \ ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-22850.ic27", 0x000000, 0x200000, CRC(28aa539d) SHA1(14485368656af80504b212da620179c49f84c1a2) ) \ ROM_SYSTEM_BIOS( 2, "bios2", "Ferrari F355 (Japan)" ) \ - ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-22849.ic27", 0x000000, 0x200000, CRC(121e009c) SHA1(3beb91f660e60590491b209b6be8584b05a90548) ) + ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-22849.ic27", 0x000000, 0x200000, CRC(121e009c) SHA1(3beb91f660e60590491b209b6be8584b05a90548) ) #define AIRLINE_BIOS \ ROM_REGION( 0x200000, "maincpu", 0) \ From 5e5e07cc3fe842da8caf78f9c26aea12e0b474ea Mon Sep 17 00:00:00 2001 From: jbu Date: Wed, 3 Aug 2016 20:18:55 +0200 Subject: [PATCH 013/116] alto2: fix i/o memory read; reduce frame rate The frame rate is really 30 frames (60 fields) per second. Reading memory after cycle #5 after the MAR<- is possible, because the Alto 2 contains a latch for the most recent RAM dword. Thanks to the LCM and ContrAlto source for the hint! --- src/devices/cpu/alto2/a2mem.cpp | 61 ++++++++++++++++++++------------- src/devices/cpu/alto2/a2mem.h | 5 +-- src/mame/drivers/alto2.cpp | 2 +- 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/src/devices/cpu/alto2/a2mem.cpp b/src/devices/cpu/alto2/a2mem.cpp index 1b562db944e..f31c8d77878 100644 --- a/src/devices/cpu/alto2/a2mem.cpp +++ b/src/devices/cpu/alto2/a2mem.cpp @@ -585,14 +585,22 @@ READ16_MEMBER( alto2_cpu_device::mecr_r ) return data; } -//! read i/o space RAM +/** + * @brief Read i/o space RAM. + * Note: This is for debugger access. Regular memory access is + * only through load_mar, read_mem and write_mem. + */ READ16_MEMBER ( alto2_cpu_device::ioram_r ) { offs_t dw_addr = offset / 2; return static_cast(offset & 1 ? GET_ODD(m_mem.ram[dw_addr]) : GET_EVEN(m_mem.ram[dw_addr])); } -//! write i/o space RAM +/** + * @brief Write i/o space RAM. + * Note: This is for debugger access. Regular memory access is + * only through load_mar, read_mem and write_mem. + */ WRITE16_MEMBER( alto2_cpu_device::ioram_w ) { offs_t dw_addr = offset / 2; @@ -603,7 +611,7 @@ WRITE16_MEMBER( alto2_cpu_device::ioram_w ) } /** - * @brief load the memory address register with some value + * @brief Load the memory address register with some value. * * @param rsel selected register (to detect refresh cycles) * @param addr memory address @@ -636,26 +644,31 @@ void alto2_cpu_device::load_mar(UINT8 rsel, UINT32 addr) } /** - * @brief read memory or memory mapped I/O from the address in mar to md + * @brief Read RAM or memory mapped I/O from the address in MAR to MD. + * + * Since the Alto II has a latch for the memory dword, + * reading it after cycle +4 is very well possible. + * We simply return the most recent m_mem.md in this case. + * + * This fixes calculator.run and ti55.run, probably others, + * which were making the mouse cursor displaying weird things. + * + * Thanks go to LCM and ContrAlto source for the hint! * * @result returns value from memory (RAM or MMIO) */ UINT16 alto2_cpu_device::read_mem() { - UINT32 base_addr; - if (ALTO2_MEM_NONE == m_mem.access) { LOG((this,LOG_MEM,0," fatal: mem read with no preceding address\n")); return 0177777; } - if (cycle() > m_mem.cycle + 4) { - LOG((this,LOG_MEM,0," fatal: mem read (MAR %#o) too late (+%lld cyc)\n", m_mem.mar, cycle() - m_mem.cycle)); - m_mem.access = ALTO2_MEM_NONE; - return 0177777; + if ((m_mem.access & ALTO2_MEM_LATCHED) && cycle() > m_mem.cycle + 4) { + return m_mem.md; } - base_addr = m_mem.mar & 0177777; + const UINT32 base_addr = m_mem.mar & 0177777; if (base_addr >= ALTO2_IO_PAGE_BASE && m_mem.mar < ALTO2_RAM_SIZE) { m_mem.md = m_iomem->read_word(m_iomem->address_to_byte(base_addr)); LOG((this,LOG_MEM,6," MD = MMIO[%#o] (%#o)\n", base_addr, m_mem.md)); @@ -678,11 +691,12 @@ UINT16 alto2_cpu_device::read_mem() #endif if (m_mem.access & ALTO2_MEM_ODD) { - // after reading the odd word, reset the access flag - m_mem.access = ALTO2_MEM_NONE; + // after reading the odd word, set the access flag to LATCHED + m_mem.access = ALTO2_MEM_LATCHED; } else { - // after reading the even word word, toggle access flag (and address) to the odd word - m_mem.mar ^= ALTO2_MEM_ODD; + // after reading the even word word, + // toggle access flag (and address) to the odd word + m_mem.mar ^= 1; m_mem.access ^= ALTO2_MEM_ODD; // extend the read succeeds window by one cycle m_mem.cycle++; @@ -691,7 +705,7 @@ UINT16 alto2_cpu_device::read_mem() } /** - * @brief write memory or memory mapped I/O from md to the address in mar + * @brief Write RAM or memory mapped I/O from MD to the address in MAR. * * @param data data to write to RAM or MMIO */ @@ -706,6 +720,8 @@ void alto2_cpu_device::write_mem(UINT16 data) } if (cycle() > m_mem.cycle + 4) { + // FIXME: what really happens if a write occurs too late? + // Need to revisit the schematics to tell for sure. LOG((this,LOG_MEM,0," fatal: mem write (MAR %#o, data %#o) too late (+%lld cyc)\n", m_mem.mar, data, cycle() - m_mem.cycle)); m_mem.access = ALTO2_MEM_NONE; return; @@ -745,7 +761,7 @@ void alto2_cpu_device::write_mem(UINT16 data) } /** - * @brief debugger interface to read memory + * @brief Debugger interface to read memory. * * @param addr address to read * @return memory contents at address (16 bits) @@ -765,7 +781,7 @@ UINT16 alto2_cpu_device::debug_read_mem(UINT32 addr) } /** - * @brief debugger interface to write memory + * @brief Debugger interface to write memory. * * @param addr address to write * @param data data to write (16 bits used) @@ -785,12 +801,10 @@ void alto2_cpu_device::debug_write_mem(UINT32 addr, UINT16 data) } /** - * @brief initialize the memory system + * @brief Initialize the memory system. * - * Zeroes the memory context, including RAM and installs dummy - * handlers for the memory mapped I/O area. - * Sets handlers for access to the memory error address, status, - * and control registers at 0177024 to 0177026. + * Zeroes the RAM and registers the memory registers + * for state saving. */ void alto2_cpu_device::init_memory() { @@ -819,6 +833,7 @@ void alto2_cpu_device::reset_memory() if (m_mem.hpb) { m_mem.hpb = nullptr; } + // allocate 64K or 128K words of main memory ioport_port* config = ioport(":CONFIG"); m_mem.size = ALTO2_RAM_SIZE; diff --git a/src/devices/cpu/alto2/a2mem.h b/src/devices/cpu/alto2/a2mem.h index cc44f09d152..3985c065060 100644 --- a/src/devices/cpu/alto2/a2mem.h +++ b/src/devices/cpu/alto2/a2mem.h @@ -19,8 +19,9 @@ enum { ALTO2_MEM_NONE, ALTO2_MEM_ODD = (1 << 0), ALTO2_MEM_RAM = (1 << 1), - ALTO2_MEM_REFRESH = (1 << 2), - ALTO2_MEM_INVALID = (1 << 3) + ALTO2_MEM_LATCHED = (1 << 2), + ALTO2_MEM_REFRESH = (1 << 3), + ALTO2_MEM_INVALID = (1 << 4) }; struct { diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp index 2064a3fb6f1..1585759759f 100644 --- a/src/mame/drivers/alto2.cpp +++ b/src/mame/drivers/alto2.cpp @@ -277,7 +277,7 @@ static MACHINE_CONFIG_START( alto2, alto2_state ) MCFG_SCREEN_RAW_PARAMS(XTAL_20_16MHz, ALTO2_DISPLAY_TOTAL_WIDTH, 0, ALTO2_DISPLAY_WIDTH, ALTO2_DISPLAY_TOTAL_HEIGHT, 0, ALTO2_DISPLAY_HEIGHT) - MCFG_SCREEN_REFRESH_RATE(60) // two interlaced fields + MCFG_SCREEN_REFRESH_RATE(30) // two interlaced fields MCFG_SCREEN_VBLANK_TIME(ALTO2_DISPLAY_VBLANK_TIME) MCFG_SCREEN_UPDATE_DEVICE("maincpu", alto2_cpu_device, screen_update) MCFG_SCREEN_VBLANK_DEVICE("maincpu", alto2_cpu_device, screen_eof) From 434c885e4725b6e914090fd05d423055fe1c9d14 Mon Sep 17 00:00:00 2001 From: angelosa Date: Wed, 3 Aug 2016 22:48:23 +0200 Subject: [PATCH 014/116] Mahjong Kyo Retsuden is claimed to not work with a mahjong panel ... it does actually? (nw) --- src/mame/drivers/neodriv.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/neodriv.hxx b/src/mame/drivers/neodriv.hxx index 519f6941966..6d8a8416830 100644 --- a/src/mame/drivers/neodriv.hxx +++ b/src/mame/drivers/neodriv.hxx @@ -8589,7 +8589,7 @@ GAME( 1990, nam1975, neogeo, neobase, neogeo, neogeo_state, neogeo, R GAME( 1990, bstars, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Baseball Stars Professional (NGM-002)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, bstarsh, bstars, neobase, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Baseball Stars Professional (NGH-002)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, tpgolf, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Top Player's Golf (NGM-003 ~ NGH-003)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, mahretsu, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Mahjong Kyo Retsuden (NGM-004 ~ NGH-004)", MACHINE_SUPPORTS_SAVE ) // does not support mahjong panel in MVS mode +GAME( 1990, mahretsu, neogeo, neogeo_mj, mjneogeo, neogeo_state, neogeo, ROT0, "SNK", "Mahjong Kyo Retsuden (NGM-004 ~ NGH-004)", MACHINE_SUPPORTS_SAVE ) // does not support mahjong panel in MVS mode <- it actually works fine??? GAME( 1990, ridhero, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Riding Hero (NGM-006 ~ NGH-006)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, ridheroh, ridhero, neobase, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Riding Hero (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, alpham2, neogeo, neobase, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Alpha Mission II / ASO II - Last Guardian (NGM-007 ~ NGH-007)", MACHINE_SUPPORTS_SAVE ) From 3e1996ec5a3fc228dcb04d1de9ec6fb48652ebbb Mon Sep 17 00:00:00 2001 From: jbu Date: Wed, 3 Aug 2016 23:25:45 +0200 Subject: [PATCH 015/116] alto2: replace decoded MIR bit fields Instead of using a number of UINT8 with the decoded bit fields of the MIR (micro instruction register), add inline functions to extract the bits from m_mir. That ought to be faster, because there are fewer memory accesses in cases where bit fields are not actually used by an instruction. --- src/devices/cpu/alto2/a2emu.cpp | 4 +- src/devices/cpu/alto2/a2ether.cpp | 16 +++---- src/devices/cpu/alto2/a2ram.cpp | 14 +++--- src/devices/cpu/alto2/alto2cpu.cpp | 68 ++++++++++++------------------ src/devices/cpu/alto2/alto2cpu.h | 16 ++++--- 5 files changed, 53 insertions(+), 65 deletions(-) diff --git a/src/devices/cpu/alto2/a2emu.cpp b/src/devices/cpu/alto2/a2emu.cpp index 75fe6588d67..e01ebe2c342 100644 --- a/src/devices/cpu/alto2/a2emu.cpp +++ b/src/devices/cpu/alto2/a2emu.cpp @@ -365,7 +365,7 @@ void alto2_cpu_device::f2_late_busodd() void alto2_cpu_device::f2_late_magic() { int XC; - switch (m_d_f1) { + switch (f1()) { case f1_l_lsh_1: // <-L MLSH 1 XC = (m_t >> 15) & 1; m_shifter = (m_l << 1) | XC; @@ -441,7 +441,7 @@ void alto2_cpu_device::f2_late_load_dns() UINT8 DSKIP; UINT8 SHZERO; - switch (m_d_f1) { + switch (f1()) { case f1_l_rsh_1: // <-L RSH 1 NEWCARRY = m_l & 1; m_shifter = ((m_l >> 1) | (XC << 15)) & 0177777; diff --git a/src/devices/cpu/alto2/a2ether.cpp b/src/devices/cpu/alto2/a2ether.cpp index c0922a6b831..39959ce4360 100644 --- a/src/devices/cpu/alto2/a2ether.cpp +++ b/src/devices/cpu/alto2/a2ether.cpp @@ -863,7 +863,7 @@ void alto2_cpu_device::update_sysclk(int sysclk) * Q' OCMD' */ s0 = m_eth.ff_35a; - s1 = (m_d_f1 == f1_emu_startf && sysclk) ? JKFF_CLK : JKFF_0; + s1 = (f1() == f1_emu_startf && sysclk) ? JKFF_CLK : JKFF_0; if (X_BIT(m_bus,16,15)) s1 |= JKFF_J; s1 |= JKFF_K; @@ -885,7 +885,7 @@ void alto2_cpu_device::update_sysclk(int sysclk) * Q' ICMD' */ s0 = m_eth.ff_35b; - s1 = (m_d_f1 == f1_emu_startf && sysclk) ? JKFF_CLK : JKFF_0; + s1 = (f1() == f1_emu_startf && sysclk) ? JKFF_CLK : JKFF_0; if (X_BIT(m_bus,16,14)) s1 |= JKFF_J; s1 |= JKFF_K; @@ -905,7 +905,7 @@ void alto2_cpu_device::update_sysclk(int sysclk) */ s0 = m_eth.ff_10a; s1 = sysclk ? JKFF_CLK : JKFF_0; - if (m_d_f2 != f2_ether_eisfct) + if (f2() != f2_ether_eisfct) s1 |= JKFF_K; s1 |= JKFF_C; m_eth.ff_10a = update_jkff(s0, s1, "10a IBUSY "); @@ -931,15 +931,15 @@ void alto2_cpu_device::update_sysclk(int sysclk) UINT8 RR; UINT8 WLL0; if (m_eth.ff_10a & JKFF_Q) { - WLLOAD = ~(sysclk & (m_d_f2 == f2_ether_eodfct)) & 1; + WLLOAD = ~(sysclk & (f2() == f2_ether_eodfct)) & 1; RDCNT0 = m_eth.ff_52b & JKFF_Q ? 1 : 0; RR = m_eth.ff_52b & JKFF_Q0 ? 1 : 0; - WLL0 = ~(sysclk & (m_d_f2 == f2_ether_eodfct)) & 1; + WLL0 = ~(sysclk & (f2() == f2_ether_eodfct)) & 1; } else { // ISRFULL WLLOAD = (m_eth.serin >> 1) & 1; - RDCNT0 = ~(sysclk & (m_d_bs == bs_ether_eidfct)) & 1; - RR = m_d_bs == bs_ether_eidfct || m_d_f1 == f1_ether_eilfct; + RDCNT0 = ~(sysclk & (bs() == bs_ether_eidfct)) & 1; + RR = bs() == bs_ether_eidfct || f1() == f1_ether_eilfct; WLL0 = m_eth.ff_77b & JKFF_Q0 ? 1 : 0; } // TODO: use the signals @@ -960,7 +960,7 @@ void alto2_cpu_device::update_sysclk(int sysclk) */ s0 = m_eth.ff_10b; s1 = sysclk ? JKFF_CLK : JKFF_0; - if (m_d_f2 != f2_ether_eosfct) + if (f2() != f2_ether_eosfct) s1 |= JKFF_K; m_eth.ff_10b = update_jkff(s0, s1, "10b OBUSY "); diff --git a/src/devices/cpu/alto2/a2ram.cpp b/src/devices/cpu/alto2/a2ram.cpp index 159415d0605..9d2f5b37c2d 100644 --- a/src/devices/cpu/alto2/a2ram.cpp +++ b/src/devices/cpu/alto2/a2ram.cpp @@ -153,13 +153,13 @@ void alto2_cpu_device::bs_early_read_sreg() { UINT16 r; - if (m_d_rsel) { + if (rsel()) { UINT8 bank = m_s_reg_bank[m_task]; - r = m_s[bank][m_d_rsel]; - LOG((this,LOG_RAM,2," <-S%02o; bus &= S[%o][%02o] (%#o)\n", m_d_rsel, bank, m_d_rsel, r)); + r = m_s[bank][rsel()]; + LOG((this,LOG_RAM,2," <-S%02o; bus &= S[%o][%02o] (%#o)\n", rsel(), bank, rsel(), r)); } else { r = m_m; - LOG((this,LOG_RAM,2," <-S%02o; bus &= M (%#o)\n", m_d_rsel, r)); + LOG((this,LOG_RAM,2," <-S%02o; bus &= M (%#o)\n", rsel(), r)); } m_bus &= r; } @@ -170,7 +170,7 @@ void alto2_cpu_device::bs_early_read_sreg() void alto2_cpu_device::bs_early_load_sreg() { int r = 0; /* ??? */ - LOG((this,LOG_RAM,2," S%02o<- BUS &= garbage (%#o)\n", m_d_rsel, r)); + LOG((this,LOG_RAM,2," S%02o<- BUS &= garbage (%#o)\n", rsel(), r)); m_bus &= r; } @@ -180,8 +180,8 @@ void alto2_cpu_device::bs_early_load_sreg() void alto2_cpu_device::bs_late_load_sreg() { UINT8 bank = m_s_reg_bank[m_task]; - m_s[bank][m_d_rsel] = m_m; - LOG((this,LOG_RAM,2," S%02o<- S[%o][%02o] := %#o\n", m_d_rsel, bank, m_d_rsel, m_m)); + m_s[bank][rsel()] = m_m; + LOG((this,LOG_RAM,2," S%02o<- S[%o][%02o] := %#o\n", rsel(), bank, rsel(), m_m)); } /** diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp index 49db9fb2297..bd447e09583 100644 --- a/src/devices/cpu/alto2/alto2cpu.cpp +++ b/src/devices/cpu/alto2/alto2cpu.cpp @@ -135,13 +135,6 @@ alto2_cpu_device::alto2_cpu_device(const machine_config& mconfig, const char* ta m_mpc(0), m_mir(0), m_rsel(0), - m_d_rsel(0), - m_d_aluf(0), - m_d_bs(0), - m_d_f1(0), - m_d_f2(0), - m_d_loadt(0), - m_d_loadl(0), m_next(0), m_next2(0), m_bus(0), @@ -1293,42 +1286,42 @@ void alto2_cpu_device::watch_write(UINT32 addr, UINT32 data) void alto2_cpu_device::fn_bs_bad_0() { fatal(9,"fatal: bad early bus source pointer for task %s, mpc:%05o bs:%s\n", - task_name(m_task), m_mpc, bs_name(m_d_bs)); + task_name(m_task), m_mpc, bs_name(bs())); } /** @brief fatal exit on unitialized latching phase BUS source */ void alto2_cpu_device::fn_bs_bad_1() { fatal(9,"fatal: bad late bus source pointer for task %s, mpc:%05o bs: %s\n", - task_name(m_task), m_mpc, bs_name(m_d_bs)); + task_name(m_task), m_mpc, bs_name(bs())); } /** @brief fatal exit on unitialized dynamic phase F1 function */ void alto2_cpu_device::fn_f1_bad_0() { fatal(9,"fatal: bad early f1 function pointer for task %s, mpc:%05o f1: %s\n", - task_name(m_task), m_mpc, f1_name(m_d_f1)); + task_name(m_task), m_mpc, f1_name(f1())); } /** @brief fatal exit on unitialized latching phase F1 function */ void alto2_cpu_device::fn_f1_bad_1() { fatal(9,"fatal: bad late f1 function pointer for task %s, mpc:%05o f1: %s\n", - task_name(m_task), m_mpc, f1_name(m_d_f1)); + task_name(m_task), m_mpc, f1_name(f1())); } /** @brief fatal exit on unitialized dynamic phase F2 function */ void alto2_cpu_device::fn_f2_bad_0() { fatal(9,"fatal: bad early f2 function pointer for task %s, mpc:%05o f2: %s\n", - task_name(m_task), m_mpc, f2_name(m_d_f2)); + task_name(m_task), m_mpc, f2_name(f2())); } /** @brief fatal exit on unitialized latching phase F2 function */ void alto2_cpu_device::fn_f2_bad_1() { fatal(9,"fatal: bad late f2 function pointer for task %s, mpc:%05o f2: %s\n", - task_name(m_task), m_mpc, f2_name(m_d_f2)); + task_name(m_task), m_mpc, f2_name(f2())); } #if ALTO2_DEBUG @@ -1463,7 +1456,7 @@ void alto2_cpu_device::bs_early_load_r() */ void alto2_cpu_device::bs_late_load_r() { - if (m_d_f2 != f2_emu_load_dns) { + if (f2() != f2_emu_load_dns) { m_r[m_rsel] = m_shifter; LOG((this,LOG_CPU,2," R%02o<-; %s = SHIFTER (%#o)\n", m_rsel, r_name(m_rsel), m_shifter)); } @@ -1513,7 +1506,7 @@ void alto2_cpu_device::f1_late_load_mar() { UINT8 bank = m_bank_reg[m_task]; UINT32 msb; - if (m_d_f2 == f2_load_md) { + if (f2() == f2_load_md) { msb = GET_BANK_EXTENDED(bank) << 16; LOG((this,LOG_CPU,7, " XMAR %#o\n", msb | m_alu)); } else { @@ -1892,7 +1885,7 @@ void alto2_cpu_device::f2_late_load_md() #if ALTO2_DEBUG UINT16 mar = m_mem.mar; #endif - if (m_d_f1 == f1_load_mar) { + if (f1() == f1_load_mar) { /* part of an XMAR */ LOG((this,LOG_CPU,2, " XMAR %#o (%#o)\n", mar, m_bus)); } else { @@ -2291,24 +2284,17 @@ void alto2_cpu_device::execute_run() m_mpc = m_next; // next instruction's micro program counter m_mir = RD_UCODE(m_mpc); // fetch the micro code - // extract the bit fields - m_d_rsel = m_rsel = X_RDBITS(m_mir, 32, DRSEL0, DRSEL4); - m_d_aluf = X_RDBITS(m_mir, 32, DALUF0, DALUF3); - m_d_bs = X_RDBITS(m_mir, 32, DBS0, DBS2); - m_d_f1 = X_RDBITS(m_mir, 32, DF1_0, DF1_3); - m_d_f2 = X_RDBITS(m_mir, 32, DF2_0, DF2_3); - m_d_loadt = X_BIT(m_mir, 32, DLOADT); - m_d_loadl = X_BIT(m_mir, 32, DLOADL); + m_rsel = rsel(); debugger_instruction_hook(this, m_mpc); m_cycle++; - if (m_d_f1 == f1_load_mar && check_mem_load_mar_stall(m_rsel)) { + if (f1() == f1_load_mar && check_mem_load_mar_stall(m_rsel)) { LOG((this,LOG_CPU,3, " MAR<- stall\n")); continue; } - if (m_d_f2 == f2_load_md && check_mem_write_stall()) { + if (f2() == f2_load_md && check_mem_write_stall()) { LOG((this,LOG_CPU,3, " MD<- stall\n")); continue; } @@ -2317,17 +2303,17 @@ void alto2_cpu_device::execute_run() * or f2 == f2_const. These functions use the MIR BS field to * provide a part of the address to the constant ROM instead. */ - do_bs = !(m_d_f1 == f1_const || m_d_f2 == f2_const); - if (do_bs && m_d_bs == bs_read_md && check_mem_read_stall()) { + do_bs = !(f1() == f1_const || f2() == f2_const); + if (do_bs && bs() == bs_read_md && check_mem_read_stall()) { LOG((this,LOG_CPU,3, " <-MD stall\n")); continue; } // now read the next instruction field from the MIR and modify it - m_next = X_RDBITS(m_mir, 32, NEXT0, NEXT9) | m_next2; + m_next = next() | m_next2; // prefetch the next instruction's next field as next2 m_next2 = X_RDBITS(RD_UCODE(m_next), 32, NEXT0, NEXT9) | (m_next2 & ~ALTO2_UCODE_PAGE_MASK); LOG((this,LOG_CPU,2,"%s-%04o: %011o r:%02o aluf:%02o bs:%02o f1:%02o f2:%02o t:%o l:%o next:%05o next2:%05o\n", - task_name(m_task), m_mpc, m_mir, m_rsel, m_d_aluf, m_d_bs, m_d_f1, m_d_f2, m_d_loadt, m_d_loadl, m_next, m_next2)); + task_name(m_task), m_mpc, m_mir, m_rsel, aluf(), bs(), f1(), f2(), loadt(), loadl(), m_next, m_next2)); // BUS is all ones at the start of each cycle m_bus = 0177777; @@ -2336,8 +2322,8 @@ void alto2_cpu_device::execute_run() rdram(); // The constant memory is gated to the bus by F1 == f1_const, F2 == f2_const, or BS >= 4 - if (!do_bs || m_d_bs >= bs_task_4) { - UINT32 addr = 8 * m_rsel + m_d_bs; + if (!do_bs || bs() >= bs_task_4) { + UINT32 addr = 8 * m_rsel + bs(); // FIXME: is the format of m_const_data endian safe? UINT16 data = m_const_data[2*addr] | (m_const_data[2*addr+1] << 8); m_bus &= data; @@ -2349,14 +2335,14 @@ void alto2_cpu_device::execute_run() * because the emulator task F2 acsource or acdest may * change the m_rsel */ - ((*this).*m_f2[0][m_task][m_d_f2])(); + ((*this).*m_f2[0][m_task][f2()])(); // early BS function can be done now if (do_bs) - ((*this).*m_bs[0][m_task][m_d_bs])(); + ((*this).*m_bs[0][m_task][bs()])(); // early F1 function - ((*this).*m_f1[0][m_task][m_d_f1])(); + ((*this).*m_f1[0][m_task][f1()])(); /** * The ALU a10 PROM address lines are @@ -2367,7 +2353,7 @@ void alto2_cpu_device::execute_run() * * B1 and B3-B7 are inverted on loading the PROM */ - UINT8 a10 = m_alu_a10[(m_emu.skip << 4) | m_d_aluf]; + UINT8 a10 = m_alu_a10[(m_emu.skip << 4) | aluf()]; UINT32 alu = alu_74181(m_bus, m_t, a10); m_aluc0 = (alu >> 16) & 1; flags = a10 & (TSELECT | ALUM); @@ -2381,17 +2367,17 @@ void alto2_cpu_device::execute_run() m_shifter = m_l; // late F1 function call now - ((*this).*m_f1[1][m_task][m_d_f1])(); + ((*this).*m_f1[1][m_task][f1()])(); // late F2 function call now - ((*this).*m_f2[1][m_task][m_d_f2])(); + ((*this).*m_f2[1][m_task][f2()])(); // late BS function call now, if no constant was put on the bus if (do_bs) - ((*this).*m_bs[1][m_task][m_d_bs])(); + ((*this).*m_bs[1][m_task][bs()])(); // update T register, if LOADT is set - if (m_d_loadt) { + if (loadt()) { m_cram_addr = m_alu; // latch CRAM address if (flags & TSELECT) { m_t = m_alu; // T source is ALU @@ -2403,7 +2389,7 @@ void alto2_cpu_device::execute_run() } // update L register and LALUC0 if LOADL is set - if (m_d_loadl) { + if (loadl()) { m_l = m_alu; // load L from ALU if (flags & ALUM) { m_laluc0 = 0; // logic operation - put 0 into latched carry diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h index 92a737c403a..72567af3ae3 100644 --- a/src/devices/cpu/alto2/alto2cpu.h +++ b/src/devices/cpu/alto2/alto2cpu.h @@ -549,6 +549,15 @@ private: UINT16 m_mpc; //!< micro program counter UINT32 m_mir; //!< micro instruction register + inline UINT32 rsel() const { return X_RDBITS(m_mir, 32, DRSEL0, DRSEL4); } + inline UINT32 aluf() const { return X_RDBITS(m_mir, 32, DALUF0, DALUF3); } + inline UINT32 bs() const { return X_RDBITS(m_mir, 32, DBS0, DBS2); } + inline UINT32 f1() const { return X_RDBITS(m_mir, 32, DF1_0, DF1_3); } + inline UINT32 f2() const { return X_RDBITS(m_mir, 32, DF2_0, DF2_3); } + inline UINT32 loadt() const { return X_BIT(m_mir, 32, DLOADT); } + inline UINT32 loadl() const { return X_BIT(m_mir, 32, DLOADL); } + inline UINT32 next() const { return X_RDBITS(m_mir, 32, NEXT0, NEXT9); } + /** * \brief current micro instruction's register selection * The emulator F2s ACSOURCE and ACDEST modify this. @@ -556,13 +565,6 @@ private: * even when the emulator modifies this. */ UINT8 m_rsel; - UINT8 m_d_rsel; //!< decoded RSEL[0-4] - UINT8 m_d_aluf; //!< decoded ALUF[0-3] function - UINT8 m_d_bs; //!< decoded BS[0-2] bus source - UINT8 m_d_f1; //!< decoded F1[0-3] function - UINT8 m_d_f2; //!< decoded F2[0-3] function - UINT8 m_d_loadt; //!< decoded LOADT flag - UINT8 m_d_loadl; //!< decoded LOADL flag UINT16 m_next; //!< current micro instruction's next UINT16 m_next2; //!< next micro instruction's next UINT16 m_r[ALTO2_REGS]; //!< R register file From fb5cc92470319da895054f3747bf83257b889c78 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Thu, 4 Aug 2016 01:04:00 +0200 Subject: [PATCH 016/116] Improved logging; fixed missed CTS signal, outgoing RTS, incoming DTR --- src/devices/bus/ti99_peb/ti_rs232.cpp | 138 +++++++++++++------------- src/devices/machine/tms9902.cpp | 21 ++-- 2 files changed, 83 insertions(+), 76 deletions(-) diff --git a/src/devices/bus/ti99_peb/ti_rs232.cpp b/src/devices/bus/ti99_peb/ti_rs232.cpp index ce062b9a839..5d0ae9b13bc 100644 --- a/src/devices/bus/ti99_peb/ti_rs232.cpp +++ b/src/devices/bus/ti99_peb/ti_rs232.cpp @@ -111,8 +111,13 @@ #define RECV_MODE_ESC 2 #define RECV_MODE_ESC_LINES 3 -#define VERBOSE 1 -#define LOG logerror +#define TRACE_LINES 0 +#define TRACE_SETTING 0 +#define TRACE_STATE 0 +#define TRACE_MAP 0 +#define TRACE_IN 0 +#define TRACE_OUT 0 +#define TRACE_ILA 0 #define ESC 0x1b @@ -177,7 +182,6 @@ int ti_rs232_attached_device::get_index_from_tagname() image_init_result ti_rs232_attached_device::call_load() { tms9902_device* tms9902; -// ti_rs232_pio_device* card = static_cast(owner()); int devnumber = get_index_from_tagname(); if (devnumber==0) @@ -194,7 +198,7 @@ image_init_result ti_rs232_attached_device::call_load() } else { - LOG("ti99/rs232: Could not find device tag number\n"); + logerror("Could not find device tag number\n"); return image_init_result::FAIL; } @@ -374,13 +378,13 @@ WRITE8_MEMBER(ti_rs232_pio_device::cruwrite) case 5: // Set the CTS line for RS232/1 - if (VERBOSE>5) LOG("TI-RS232/1/3: Setting CTS* via CRU to %d\n", data); + if (TRACE_LINES) logerror("(1/3) Setting CTS* via CRU to %d\n", data); output_line_state(0, CTS, (data==0)? CTS : 0); break; case 6: // Set the CTS line for RS232/2 - if (VERBOSE>5) LOG("TI-RS232/2/4: Setting CTS* via CRU to %d\n", data); + if (TRACE_LINES) logerror("(2/4) Setting CTS* via CRU to %d\n", data); output_line_state(1, CTS, (data==0)? CTS : 0); break; @@ -399,7 +403,7 @@ READ8Z_MEMBER( ti_rs232_pio_device::readz ) { if (m_senila==ASSERT_LINE) { - if (VERBOSE>3) LOG("ti99/rs232: Sensing ILA\n"); + if (TRACE_ILA) logerror("Sensing ILA\n"); *value = m_ila; // The card ROM must be unselected, or we get two values // on the data bus @@ -437,16 +441,13 @@ WRITE8_MEMBER( ti_rs232_pio_device::write ) /**************************************************************************/ - -// ========================================================== - /* The DTR line of the interface card is wired to the CTS and DSR of the UART. */ void ti_rs232_pio_device::incoming_dtr(int uartind, line_state value) { - if (VERBOSE>2) LOG("TI-RS232/%d: incoming DTR = %d\n", uartind+1, (value==ASSERT_LINE)? 1:0); + if (TRACE_LINES) logerror("(RS232/%d) Incoming DTR = %d\n", uartind+1, (value==ASSERT_LINE)? 1:0); m_uart[uartind]->rcv_cts(value); m_uart[uartind]->rcv_dsr(value); @@ -463,17 +464,21 @@ void ti_rs232_pio_device::transmit_data(int uartind, UINT8 value) serial = dynamic_cast(m_serdev[uartind]); if (!serial->exists()) { - if (VERBOSE>1) LOG("TI-RS232/%d: No serial output attached\n", uartind+1); + logerror("(RS232/%d) No serial output attached\n", uartind+1); return; } // Send a double ESC if this is not a control operation if (buf==0x1b) { - if (VERBOSE>2) LOG("TI-RS232/%d: send ESC (requires another ESC)\n", uartind+1); + if (TRACE_OUT) logerror("(RS232/%d) send ESC (requires another ESC)\n", uartind+1); serial->fwrite(&buf, 1); } - if (VERBOSE>3) LOG("TI-RS232/%d: send %c <%02x>\n", uartind+1, buf, buf); + if (TRACE_OUT) + { + char cbuf = (buf < 0x20 || buf > 0x7e)? '.' : (char)buf; + logerror("(RS232/%d) send %c <%02x>\n", uartind+1, cbuf, buf); + } serial->fwrite(&buf, 1); } @@ -522,11 +527,11 @@ UINT8 ti_rs232_pio_device::map_lines_out(int uartind, UINT8 value) // 00ab cdef = setting line RTS=a, CTS=b, DSR=c, DCD=d, DTR=e, RI=f - if (VERBOSE>3) LOG("TI-RS232/%d: out connector pins = 0x%02x; translate for DTE\n", uartind+1, value); + if (TRACE_LINES) logerror("(RS232/%d) out connector pins = 0x%02x; translate for DTE\n", uartind+1, value); if (value & BRK) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... sending BRK\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Sending BRK\n", uartind+1); ret |= EXCEPT | BRK; } @@ -535,17 +540,17 @@ UINT8 ti_rs232_pio_device::map_lines_out(int uartind, UINT8 value) // V1 if (value & CTS) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... cannot map CTS line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map CTS line, ignoring\n", uartind+1); } if (value & DSR) { ret |= DTR; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting DTR line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1); } if (value & DCD) { ret |= RTS; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting RTS line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting RTS line\n", uartind+1); } } else @@ -556,12 +561,12 @@ UINT8 ti_rs232_pio_device::map_lines_out(int uartind, UINT8 value) if (value & CTS) { ret |= RTS; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting RTS line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting RTS line\n", uartind+1); } if (value & DCD) { ret |= DTR; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting DTR line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1); } } else @@ -570,16 +575,16 @@ UINT8 ti_rs232_pio_device::map_lines_out(int uartind, UINT8 value) if (value & CTS) { ret |= DTR; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting DTR line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1); } if (value & DSR) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... cannot map DSR line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map DSR line, ignoring\n", uartind+1); } if (value & DCD) { ret |= RTS; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting RTS line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting RTS line\n", uartind+1); } } } @@ -594,11 +599,11 @@ UINT8 ti_rs232_pio_device::map_lines_in(int uartind, UINT8 value) // 00ab cdef = setting line RTS=a, CTS=b, DSR=c, DCD=d, DTR=e, RI=f - if (VERBOSE>3) LOG("TI-RS232/%d: in connector pins = 0x%02x; translate from DTE\n", uartind+1, value); + if (TRACE_LINES) logerror("(RS232/%d) in connector pins = 0x%02x; translate from DTE\n", uartind+1, value); if (value & BRK) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... getting BRK\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Getting BRK\n", uartind+1); ret |= EXCEPT | BRK; } @@ -607,16 +612,16 @@ UINT8 ti_rs232_pio_device::map_lines_in(int uartind, UINT8 value) // V1 if (value & CTS) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... cannot map CTS line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map CTS line, ignoring\n", uartind+1); } if (value & DSR) { ret |= DTR; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting DTR line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1); } if (value & DCD) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... cannot map DCD line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map DCD line, ignoring\n", uartind+1); } } else @@ -627,15 +632,15 @@ UINT8 ti_rs232_pio_device::map_lines_in(int uartind, UINT8 value) if (value & CTS) { ret |= DTR; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting DTR line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1); } if (value & DSR) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... cannot map DSR line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map DSR line, ignoring\n", uartind+1); } if (value & DCD) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... cannot map DCD line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map DCD line, ignoring\n", uartind+1); } } else @@ -643,15 +648,15 @@ UINT8 ti_rs232_pio_device::map_lines_in(int uartind, UINT8 value) if (value & CTS) { ret |= DTR; - if (VERBOSE>5) LOG("TI-RS232/%d: ... setting DTR line\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1); } if (value & DSR) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... cannot map DSR line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map DSR line, ignoring\n", uartind+1); } if (value & DCD) { - if (VERBOSE>5) LOG("TI-RS232/%d: ... cannot map DCD line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map DCD line, ignoring\n", uartind+1); } } } @@ -691,7 +696,7 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind) if (!serial->exists()) { - if (VERBOSE>1) LOG("TI-RS232/%d: No serial input attached\n", uartind+1); + logerror("(RS232/%d) No serial input attached\n", uartind+1); return; } @@ -718,18 +723,20 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind) return; } + char cbuf = (buffer < 0x20 || buffer > 0x7e)? '.' : (char)buffer; + // No config parameters here, only data or line setting switch (m_recv_mode[uartind]) { case RECV_MODE_NORMAL: if (buffer==0x1b) { - if (VERBOSE>2) LOG("TI-RS232/%d: received: %c <%02x>, switch to ESC mode\n", uartind+1, buffer, buffer); + if (TRACE_IN) logerror("(RS232/%d) Received: %c <%02x>, switch to ESC mode\n", uartind+1, cbuf, buffer); m_recv_mode[uartind] = RECV_MODE_ESC; } else { - if (VERBOSE>3) LOG("TI-RS232/%d: received: %c <%02x>, pass to UART\n", uartind+1, buffer, buffer); + if (TRACE_IN) logerror("(RS232/%d) Received: %c <%02x>, pass to UART\n", uartind+1, cbuf, buffer); m_uart[uartind]->rcv_data(buffer); m_time_hold[uartind] = 0.0; } @@ -738,17 +745,17 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind) if (buffer==0x1b) { m_recv_mode[uartind] = RECV_MODE_NORMAL; - if (VERBOSE>2) LOG("TI-RS232/%d: leaving ESC mode, received: %c <%02x>, pass to UART\n", uartind+1, buffer, buffer); + if (TRACE_STATE) logerror("(RS232/%d) Received another ESC, passing to UART, leaving ESC mode\n", uartind+1); m_uart[uartind]->rcv_data(buffer); m_time_hold[uartind] = 0.0; } else { // the byte in buffer is the length byte - if (VERBOSE>3) LOG("TI-RS232/%d: received length byte <%02x> in ESC mode\n", uartind+1, buffer); + if (TRACE_STATE) logerror("(RS232/%d) Received length byte <%02x> in ESC mode\n", uartind+1, buffer); if (buffer != 1) { - LOG("TI-RS232/%d: expected length 1 but got %02x, leaving ESC mode.\n", uartind+1, buffer); + logerror("(RS232/%d) ** ERROR: Expected length byte 1 but got 0x%02x, leaving ESC mode.\n", uartind+1, buffer); m_recv_mode[uartind] = RECV_MODE_NORMAL; } else @@ -762,6 +769,7 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind) if (buffer & EXCEPT) { // Exception states: BRK, FRMERR, PARERR + if (TRACE_LINES) logerror("(RS232/%d) Received BRK or ERROR <%02x>\n", uartind+1, buffer); m_uart[uartind]->rcv_break(((buffer & BRK)!=0)); if (buffer & FRMERR) m_uart[uartind]->rcv_framing_error(); @@ -770,7 +778,7 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind) else { buffer = map_lines_in(uartind, buffer); - if (VERBOSE>2) LOG("TI-RS232/%d: received (remapped) <%02x> in ESC mode\n", uartind+1, buffer); + if (TRACE_LINES) logerror("(RS232/%d) Received (remapped) <%02x> in ESC mode\n", uartind+1, buffer); // The DTR line on the RS232 connector of the board is wired to both the // CTS and the DSR pin of the TMS9902 @@ -782,7 +790,7 @@ void ti_rs232_pio_device::receive_data_or_line_state(int uartind) break; default: - if (VERBOSE>1) LOG("TI-RS232/%d: unknown mode: %d\n", uartind+1, m_recv_mode[uartind]); + logerror("(RS232/%d) Unknown mode: %d\n", uartind+1, m_recv_mode[uartind]); } } @@ -799,7 +807,7 @@ void ti_rs232_pio_device::configure_interface(int uartind, int type, int value) if (!serial->exists()) { - if (VERBOSE>1) LOG("TI-RS232/%d: No serial output attached\n", uartind+1); + logerror("(RS232/%d) No serial output attached\n", uartind+1); return; } @@ -809,7 +817,7 @@ void ti_rs232_pio_device::configure_interface(int uartind, int type, int value) switch (type) { case RATERECV: - if (VERBOSE>2) LOG("TI-RS232/%d: send receive rate %04x\n", uartind+1, value); + if (TRACE_SETTING) logerror("(RS232/%d) Send receive rate %04x\n", uartind+1, value); // value has 12 bits // 1ccc xaaa = config adapter type a // 1111 xaaa rrrr rrrr rrrr 0000 = config receive rate on a @@ -820,29 +828,29 @@ void ti_rs232_pio_device::configure_interface(int uartind, int type, int value) bufctrl[3] = (value & 0x0f)<<4; break; case RATEXMIT: - if (VERBOSE>2) LOG("TI-RS232/%d: send transmit rate %04x\n", uartind+1, value); + if (TRACE_SETTING) logerror("(RS232/%d) Send transmit rate %04x\n", uartind+1, value); bufctrl[0] = 0x03; // length bufctrl[1] |= RATEXMIT; bufctrl[2] = (value & 0x0ff0)>>4; bufctrl[3] = (value & 0x0f)<<4; break; case STOPBITS: - if (VERBOSE>2) LOG("TI-RS232/%d: send stop bit config %02x\n", uartind+1, value&0x03); + if (TRACE_SETTING) logerror("(RS232/%d) Send stop bit config %02x\n", uartind+1, value&0x03); bufctrl[1] |= STOPBITS; bufctrl[2] = (value & 0x03); break; case DATABITS: - if (VERBOSE>2) LOG("TI-RS232/%d: send data bit config %02x\n", uartind+1, value&0x03); + if (TRACE_SETTING) logerror("(RS232/%d) Send data bit config %02x\n", uartind+1, value&0x03); bufctrl[1] |= DATABITS; bufctrl[2] = (value & 0x03); break; case PARITY: - if (VERBOSE>2) LOG("TI-RS232/%d: send parity config %02x\n", uartind+1, value&0x03); + if (TRACE_SETTING) logerror("(RS232/%d) Send parity config %02x\n", uartind+1, value&0x03); bufctrl[1] |= PARITY; bufctrl[2] = (value & 0x03); break; default: - if (VERBOSE>1) LOG("TI-RS232/%d: error - unknown config type %02x\n", uartind+1, type); + logerror("(RS232/%d) Error - unknown config type %02x\n", uartind+1, type); } serial->fwrite(bufctrl, bufctrl[0]+1); @@ -850,13 +858,13 @@ void ti_rs232_pio_device::configure_interface(int uartind, int type, int value) void ti_rs232_pio_device::set_bit(int uartind, int line, int value) { - if (VERBOSE>5) + if (TRACE_LINES) { switch (line) { - case CTS: LOG("TI-RS232/%d: set CTS(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break; - case DCD: LOG("TI-RS232/%d: set DCD(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break; - case BRK: LOG("TI-RS232/%d: set BRK(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break; + case CTS: logerror("(RS232/%d) Set CTS(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break; + case DCD: logerror("(RS232/%d) Set DCD(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break; + case BRK: logerror("(RS232/%d) Set BRK(out)=%s\n", uartind+1, (value!=0)? "asserted" : "cleared"); break; } } @@ -877,7 +885,7 @@ void ti_rs232_pio_device::output_exception(int uartind, int param, UINT8 value) if (!serial->exists()) { - if (VERBOSE>1) LOG("TI-RS232/%d: No serial output attached\n", uartind+1); + logerror("(RS232/%d) No serial output attached\n", uartind+1); return; } @@ -903,15 +911,18 @@ void ti_rs232_pio_device::output_line_state(int uartind, int mask, UINT8 value) if (!serial->exists()) { - if (VERBOSE>1) LOG("TI-RS232/%d: No serial output attached\n", uartind+1); + logerror("(RS232/%d) No serial output attached\n", uartind+1); return; } + // Send ESC to serial bridge serial->fwrite(&esc, 1); - // 01ab cdef = setting line RTS=a, CTS=b, DSR=c, DCD=d, DTR=e, RI=f + // Length 1 bufctrl[0] = 1; + // 01ab cdef = setting line RTS=a, CTS=b, DSR=c, DCD=d, DTR=e, RI=f + // The CTS line (coming from a CRU bit) is connected to the CTS pin if (mask & CTS) set_bit(uartind, CTS, value & CTS); @@ -1069,16 +1080,9 @@ void ti_rs232_pio_device::device_reset() m_time_hold[0] = m_time_hold[1] = 0.0; - // The GenMod modification changes the address bus width of the Geneve. - // All peripheral cards need to be manually modified to properly decode - // the wider address. The next lines perform this soldering job - // automagically. - /* if (device->machine().root_device().ioport("MODE")->read()==GENMOD) - { - // GenMod card modification - card->select_mask = 0x1fe000; - card->select_value = 0x174000; - }*/ + // Both DTRs are pulled up + incoming_dtr(0, ASSERT_LINE); + incoming_dtr(1, ASSERT_LINE); } static MACHINE_CONFIG_FRAGMENT( ti_rs232 ) diff --git a/src/devices/machine/tms9902.cpp b/src/devices/machine/tms9902.cpp index 7702eeadf1d..424bcfdd821 100644 --- a/src/devices/machine/tms9902.cpp +++ b/src/devices/machine/tms9902.cpp @@ -135,7 +135,7 @@ void tms9902_device::rcv_cts(line_state state) else { m_DSCH = false; - if (TRACE_LINES) logerror("no change in CTS line, no interrupt."); + if (TRACE_LINES) logerror("no change in CTS line, no interrupt.\n"); } } @@ -165,7 +165,7 @@ void tms9902_device::rcv_dsr(line_state state) else { m_DSCH = false; - if (TRACE_LINES) logerror("no change in DSR line, no interrupt."); + if (TRACE_LINES) logerror("no change in DSR line, no interrupt.\n"); } } @@ -188,7 +188,7 @@ void tms9902_device::rcv_data(UINT8 data) // Receive buffer was empty m_RBRL = true; m_ROVER = false; - if (TRACE_BUFFER) logerror("Receive buffer loaded with byte %02x\n", data); + if (TRACE_BUFFER) logerror("Receive buffer loaded with byte %02x; RIENB=%d\n", data, m_RIENB); field_interrupts(); } else @@ -387,7 +387,7 @@ void tms9902_device::transmit_line_state() // The 9902 only outputs RTS and BRK if (TRACE_SETTING) logerror("transmitting line state (only RTS) = %02x\n", (m_RTSout)? 1:0); m_last_config_value = (m_RTSout)? RTS : 0; - m_ctrl_cb((offs_t)LINES, RTS); + m_ctrl_cb((offs_t)(LINES | RTS), RTS); } void tms9902_device::set_rts(line_state state) @@ -422,7 +422,6 @@ void tms9902_device::initiate_transmit() set_rts(CLEAR_LINE); else { - if (TRACE_BUFFER) logerror("transferring XBR to XSR; XSRE=false, XBRE=true\n"); m_XSR = m_XBR; m_XSRE = false; m_XBRE = true; @@ -502,10 +501,11 @@ READ8_MEMBER( tms9902_device::cruread ) break; case 0: // Bits 7-0 + if (TRACE_CRU) logerror("Reading received byte = %02x\n", m_RBR); answer = m_RBR; break; } - if (TRACE_CRU) logerror("Reading flag bits %d - %d = %02x\n", ((offset+1)*8-1), offset*8, answer); + if (TRACE_CRU && TRACE_DETAIL) logerror("Reading flag bits %d - %d = %02x\n", ((offset+1)*8-1), offset*8, answer); return answer; } @@ -560,7 +560,7 @@ void tms9902_device::reset_uart() m_DSCH = false; m_TIMELP = false; - m_CTSin = false; +// m_CTSin = false; // not a good idea - this is the latch of an incoming line m_TMR = 0; m_STOPB = 0; @@ -585,7 +585,7 @@ WRITE8_MEMBER( tms9902_device::cruwrite ) data &= 1; /* clear extra bits */ offset &= 0x1F; - if (TRACE_CRU) logerror("Setting bit %d = %02x\n", offset, data); + if (TRACE_CRU && TRACE_DETAIL) logerror("Setting bit %d = %02x\n", offset, data); if (offset <= 10) { @@ -777,7 +777,7 @@ WRITE8_MEMBER( tms9902_device::cruwrite ) // (the only way to clear the flag!) m_RIENB = (data!=0); m_RBRL = false; - if (TRACE_CRU) logerror("set RBRL=0, set RIENB=%d\n", data); + if (TRACE_CRU) logerror("Set RBRL=0, set RIENB=%d\n", data); field_interrupts(); return; case 19: @@ -828,6 +828,9 @@ void tms9902_device::device_stop() void tms9902_device::device_reset() { + // This must be true because we may have missed a CTS* assertion + // on startup, and the whole implementation relies on pushing + m_CTSin = true; reset_uart(); } From 3c47e784195846e647612204b483d9c0e9793634 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Thu, 4 Aug 2016 13:30:57 +1000 Subject: [PATCH 017/116] clang didn't like that... --- src/tools/srcclean.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tools/srcclean.cpp b/src/tools/srcclean.cpp index 1c23c2e14a6..0e08fa57c52 100644 --- a/src/tools/srcclean.cpp +++ b/src/tools/srcclean.cpp @@ -768,7 +768,11 @@ void cleaner_base::handle_codepoint(unicode_char cp) class text_cleaner : public cleaner_base { public: - using cleaner_base::cleaner_base; + template + text_cleaner(OutputIt &&output, newline newline_mode, unsigned tab_width) + : cleaner_base(std::forward(output), newline_mode, tab_width) + { + } private: virtual void process_characters(unicode_char const *begin, unicode_char const *end) override From 0646ca8b1a62be748b48b16205f02f640b5945a7 Mon Sep 17 00:00:00 2001 From: Roberto Benfatto Date: Thu, 4 Aug 2016 07:39:32 +0200 Subject: [PATCH 018/116] Fix .hi file load and write hiscore.dat and hi folder path were not resolved as expected (their path was relative to mame executable, not to the plugin folder). Explicitly writing them as absolute paths gives the desired behavior. --- plugins/hiscore/init.lua | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/hiscore/init.lua b/plugins/hiscore/init.lua index c4276514f62..21766d52167 100644 --- a/plugins/hiscore/init.lua +++ b/plugins/hiscore/init.lua @@ -22,8 +22,8 @@ end function hiscore.startplugin() - local hiscoredata_path = "hiscore.dat"; - local hiscore_path = "hi"; + local hiscoredata_path = hiscore_plugin_path .. "/hiscore.dat"; + local hiscore_path = hiscore_plugin_path .. "/hi"; local current_checksum = 0; local default_checksum = 0; @@ -65,9 +65,6 @@ function hiscore.startplugin() local function read_hiscore_dat () local file = io.open( hiscoredata_path, "r" ); local rm_match; - if not file then - file = io.open( hiscore_plugin_path .. "/hiscore.dat", "r" ); - end if emu.softname() ~= "" then rm_match = '^' .. emu.romname() .. ',' .. emu.softname() .. ':'; else From ff064ba37aa158a46acc8cae459df21c2521d8c9 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Thu, 4 Aug 2016 07:21:27 -0400 Subject: [PATCH 019/116] More conversion of 'const char *' --> std::string in diimage --- src/emu/diimage.cpp | 4 ++-- src/emu/diimage.h | 8 ++++---- src/emu/image.cpp | 2 +- src/frontend/mame/ui/imgcntrl.cpp | 4 ++-- src/frontend/mame/ui/inifile.cpp | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 748d455c665..087fefc20e3 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -398,13 +398,13 @@ void device_image_interface::setup_working_directory() // valid even if not mounted //------------------------------------------------- -const char * device_image_interface::working_directory() +const std::string &device_image_interface::working_directory() { // check to see if we've never initialized the working directory if (m_working_directory.empty()) setup_working_directory(); - return m_working_directory.c_str(); + return m_working_directory; } diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 1d066527b49..fa30dc71cad 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -195,9 +195,9 @@ public: // configuration access void set_init_phase() { m_init_phase = true; } - const char* longname() const { return m_longname.c_str(); } - const char* manufacturer() const { return m_manufacturer.c_str(); } - const char* year() const { return m_year.c_str(); } + const std::string &longname() const { return m_longname; } + const std::string &manufacturer() const { return m_manufacturer; } + const std::string &year() const { return m_year; } UINT32 supported() const { return m_supported; } const software_info *software_entry() const { return m_software_info_ptr; } @@ -206,7 +206,7 @@ public: bool loaded_through_softlist() const { return m_software_info_ptr != nullptr; } void set_working_directory(const char *working_directory) { m_working_directory = working_directory; } - const char * working_directory(); + const std::string &working_directory(); UINT8 *get_software_region(const char *tag); UINT32 get_software_region_length(const char *tag); diff --git a/src/emu/image.cpp b/src/emu/image.cpp index af46f9d51f3..a08acad47cf 100644 --- a/src/emu/image.cpp +++ b/src/emu/image.cpp @@ -145,7 +145,7 @@ void image_manager::config_save(config_type cfg_type, xml_data_node *parentnode) if (node != nullptr) { xml_set_attribute(node, "instance", dev_instance); - xml_set_attribute(node, "directory", image.working_directory()); + xml_set_attribute(node, "directory", image.working_directory().c_str()); } } } diff --git a/src/frontend/mame/ui/imgcntrl.cpp b/src/frontend/mame/ui/imgcntrl.cpp index ca6d4f55724..0fabfc57d5d 100644 --- a/src/frontend/mame/ui/imgcntrl.cpp +++ b/src/frontend/mame/ui/imgcntrl.cpp @@ -51,7 +51,7 @@ menu_control_device_image::menu_control_device_image(mame_ui_manager &mui, rende if (m_swi != nullptr) { m_state = START_OTHER_PART; - m_current_directory.assign(m_image.working_directory()); + m_current_directory = m_image.working_directory(); } else { @@ -65,7 +65,7 @@ menu_control_device_image::menu_control_device_image(mame_ui_manager &mui, rende } else { - m_current_directory.assign(m_image.working_directory()); + m_current_directory = m_image.working_directory(); } // check to see if the path exists; if not clear it diff --git a/src/frontend/mame/ui/inifile.cpp b/src/frontend/mame/ui/inifile.cpp index fd93bb6d1f7..c9b99153522 100644 --- a/src/frontend/mame/ui/inifile.cpp +++ b/src/frontend/mame/ui/inifile.cpp @@ -195,10 +195,10 @@ void favorite_manager::add_favorite_game() auto part = image.part_entry(); ui_software_info tmpmatches; tmpmatches.shortname = swinfo->shortname(); - tmpmatches.longname = strensure(image.longname()); + tmpmatches.longname = image.longname(); tmpmatches.parentname = swinfo->parentname(); - tmpmatches.year = strensure(image.year()); - tmpmatches.publisher = strensure(image.manufacturer()); + tmpmatches.year = image.year(); + tmpmatches.publisher = image.manufacturer(); tmpmatches.supported = image.supported(); tmpmatches.part = part->name(); tmpmatches.driver = &machine().system(); From 267701595b4834d6df43411db491f169e7c70f76 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Thu, 4 Aug 2016 13:43:13 +0200 Subject: [PATCH 020/116] ti99: Fixed RS232 line mapping --- src/devices/bus/ti99_peb/ti_rs232.cpp | 70 ++++++++++++++------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/src/devices/bus/ti99_peb/ti_rs232.cpp b/src/devices/bus/ti99_peb/ti_rs232.cpp index 5d0ae9b13bc..3a54f023870 100644 --- a/src/devices/bus/ti99_peb/ti_rs232.cpp +++ b/src/devices/bus/ti99_peb/ti_rs232.cpp @@ -483,42 +483,45 @@ void ti_rs232_pio_device::transmit_data(int uartind, UINT8 value) } /* - Map the DCE-like wiring to a DTE-like wiring (and vice versa), V1 + Map the DCE-like wiring to a DTE-like wiring and vice versa (mapping==0) + No handshake - Emulated PC serial - TI RS232 interface - XOUT 2 -----------( 3) ---> TXD - RIN 3 -----------( 2) <--- RXD - nc 4 -----------( 5) <--- CTS (cable) - CRU 5 -| |-( 8) <--- DCD - DSR+CTS 20 -----------( 6) <--- DSR - +12V 6 -----------(20) ---> DTR - RTS 8 -----------( 4) ---> RTS + Emulated PC serial + TI RS232 interface + XOUT 2 TXD ----->-----( 3) ---> TXD + RIN 3 RXD -----<-----( 2) <--- RXD + CRU 5 CTS -| |-( 8) <--- DCD (cable) + +12V 6 DSR ----->-----(20) ---> DTR + RTS 8 DCD ----->-----( 4) ---> RTS + DSR+CTS 20 DTR -----<-----( 6) <--- DSR + |-( 5) <--- CTS + Alternative mapping: (mapping==1) + RTS/CTS handshake - Alternative mapping for the PORT terminal emulator: (V2) + Emulated PC serial + TI RS232 interface + XOUT 2 TXD ----->-----( 3) ---> TXD + RIN 3 RXD -----<-----( 2) <--- RXD + CRU 5 CTS ----->-----( 4) ---> RTS + +12V 6 DSR -| |-( 6) <--- DSR + RTS 8 DCD ----->-----(20) ---> DTR + DSR+CTS 20 DTR -----<-----( 8) <--- DCD + |-( 5) <--- CTS - Emulated PC serial - TI RS232 interface - XOUT 2 -----------( 3) ---> TXD - RIN 3 -----------( 2) <--- RXD - DSR+CTS 20 -----------( 5) <--- CTS (cable) - RTS 8 -----------(20) ---> DTR - CRU 5 -----------( 4) ---> RTS - +12V 6 -| |-( 6) <--- DSR - nc 4 -----------( 8) <--- DCD + Yet another mapping: (mapping==2) + CRU-based handshake - Yet another mapping for the PORT terminal emulator: (V3) + Emulated PC serial + TI RS232 interface + XOUT 2 TXD ----->-----( 3) ---> TXD + RIN 3 RXD -----<-----( 2) <--- RXD + CRU 5 CTS ----->-----(20) ---> DTR + +12V 6 DSR -| |-( 6) <--- DSR + RTS 8 DCD ----->-----( 4) ---> RTS + DSR+CTS 20 DTR -----<-----( 5) <--- CTS (cable) + |-( 8) <--- DCD - Emulated PC serial - TI RS232 interface - XOUT 2 -----------( 3) ---> TXD - RIN 3 -----------( 2) <--- RXD - DSR+CTS 20 -----------( 5) <--- CTS (cable) - CRU 5 -----------(20) ---> DTR - RTS 8 -----------( 4) ---> RTS - +12V 6 -| |-( 6) <--- DSR - nc 4 -----------( 8) <--- DCD */ UINT8 ti_rs232_pio_device::map_lines_out(int uartind, UINT8 value) { @@ -628,8 +631,7 @@ UINT8 ti_rs232_pio_device::map_lines_in(int uartind, UINT8 value) { if (mapping==1) { - // V2 (PORT application) - if (value & CTS) + if (value & DCD) { ret |= DTR; if (TRACE_MAP) logerror("(RS232/%d) Setting DTR line\n", uartind+1); @@ -638,9 +640,9 @@ UINT8 ti_rs232_pio_device::map_lines_in(int uartind, UINT8 value) { if (TRACE_MAP) logerror("(RS232/%d) Cannot map DSR line, ignoring\n", uartind+1); } - if (value & DCD) + if (value & CTS) { - if (TRACE_MAP) logerror("(RS232/%d) Cannot map DCD line, ignoring\n", uartind+1); + if (TRACE_MAP) logerror("(RS232/%d) Cannot map CTS line, ignoring\n", uartind+1); } } else From 4f8363438069eee23815165675197e186cae0ad1 Mon Sep 17 00:00:00 2001 From: Roberto Benfatto Date: Thu, 4 Aug 2016 20:27:16 +0200 Subject: [PATCH 021/116] Make hiscore path configurable by ini file --- plugins/hiscore/init.lua | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/plugins/hiscore/init.lua b/plugins/hiscore/init.lua index 21766d52167..00707aca092 100644 --- a/plugins/hiscore/init.lua +++ b/plugins/hiscore/init.lua @@ -24,16 +24,38 @@ function hiscore.startplugin() local hiscoredata_path = hiscore_plugin_path .. "/hiscore.dat"; local hiscore_path = hiscore_plugin_path .. "/hi"; - + local config_path = manager:options().entries.inipath:value():match("[^;]+") .. "/hiscore.ini"; + config_path = config_path:gsub("%$(%w+)", os.getenv); + local current_checksum = 0; local default_checksum = 0; + local config_read = false; local scores_have_been_read = false; local mem_check_passed = false; local found_hiscore_entry = false; local positions = {}; - + -- Configuration file will be searched in the first path defined + -- in mame inipath option. + local function read_config() + if config_read then return true end; + local file = io.open( config_path, "r" ); + if file then + file:close() + emu.print_verbose( "hiscore: config found" ); + local _conf = {} + for line in io.lines(config_path) do + token, value = string.match(line, '([^ ]+) ([^ ]+)'); + _conf[token] = value:gsub("%$(%w+)", os.getenv); + end + hiscore_path = _conf["hi_path"]; + -- hiscoredata_path = _conf["dat_path"]; -- don't know if I should do it, but wathever + return true + end + return false + end + local function parse_table ( dsting ) local _table = {}; for line in string.gmatch(dsting, '([^\n]+)') do @@ -244,6 +266,7 @@ function hiscore.startplugin() scores_have_been_read = false; last_write_time = -10 emu.print_verbose("Starting " .. emu.gamename()) + config_read = read_config(); local dat = read_hiscore_dat() if dat and dat ~= "" then emu.print_verbose( "hiscore: found hiscore.dat entry for " .. emu.romname() ); From 2fb36796fb56a03be31f15b15419906fc2a24260 Mon Sep 17 00:00:00 2001 From: James Wallace Date: Thu, 4 Aug 2016 20:12:01 +0100 Subject: [PATCH 022/116] Separation of the LDP-1450 laserdisc player to its own device. --- scripts/src/machine.lua | 12 + scripts/target/mame/arcade.lua | 1 + src/devices/machine/ldp1450.cpp | 355 ++++++++++++++++++++ src/devices/machine/ldp1450.h | 104 ++++++ src/devices/machine/ldstub.cpp | 1 - src/devices/machine/ldstub.h | 25 -- src/mame/drivers/alg.cpp | 4 +- src/mame/drivers/cops.cpp | 552 +++++++++++++++++++------------- 8 files changed, 799 insertions(+), 255 deletions(-) create mode 100644 src/devices/machine/ldp1450.cpp create mode 100644 src/devices/machine/ldp1450.h diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua index fd9fd3d8ee4..16388610870 100644 --- a/scripts/src/machine.lua +++ b/scripts/src/machine.lua @@ -1201,6 +1201,18 @@ if (MACHINES["LDP1000"]~=null) then } end +--------------------------------------------------- +-- +--@src/devices/machine/ldp1000.h,MACHINES["LDP1450"] = true +--------------------------------------------------- + +if (MACHINES["LDP1450"]~=null) then + files { + MAME_DIR .. "src/devices/machine/ldp1450.cpp", + MAME_DIR .. "src/devices/machine/ldp1450.h", + } +end + --------------------------------------------------- -- --@src/devices/machine/ldvp931.h,MACHINES["LDVP931"] = true diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 136f01b063b..e201b3ca8e2 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -431,6 +431,7 @@ MACHINES["LDPR8210"] = true MACHINES["LDSTUB"] = true MACHINES["LDV1000"] = true MACHINES["LDP1000"] = true +MACHINES["LDP1450"] = true MACHINES["LDVP931"] = true --MACHINES["LH5810"] = true MACHINES["LINFLASH"] = true diff --git a/src/devices/machine/ldp1450.cpp b/src/devices/machine/ldp1450.cpp new file mode 100644 index 00000000000..c94da138188 --- /dev/null +++ b/src/devices/machine/ldp1450.cpp @@ -0,0 +1,355 @@ +// license:BSD-3-Clause +/*************************************************************************** + + Sony LDP-1450 laserdisc emulation. + + TODO: + - Dump MCU BIOS(more than one?) + - Many players support this command set, split out other device stubs (such as LDP-1550P, PAL) + - Text overlay (needed for practically everything) +***************************************************************************/ + +#include "emu.h" +#include "machine/ldp1450.h" + +#define DUMP_BCD 1 +#define FIFO_MAX 0x10 + +#define LDP_STAT_UNDEF 0x00 +#define LDP_STAT_COMPLETION 0x01 +#define LDP_STAT_ERROR 0x02 +#define LDP_STAT_PGM_END 0x04 +#define LDP_STAT_NOT_TARGET 0x05 +#define LDP_STAT_NO_FRAME 0x06 +#define LDP_STAT_ACK 0x0a +#define LDP_STAT_NAK 0x0b + +ROM_START( ldp1450 ) + ROM_REGION( 0x2000, "ldp1450", 0 ) + ROM_LOAD( "ldp1450_bios.bin", 0x0000, 0x2000, NO_DUMP ) +ROM_END + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +// device type definition +const device_type SONY_LDP1450 = &device_creator; + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// ldp1450_device - constructor +//------------------------------------------------- + +sony_ldp1450_device::sony_ldp1450_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : laserdisc_device(mconfig, SONY_LDP1450, "Sony LDP-1450", tag, owner, clock, "ldp1450", __FILE__) +{ +} + + +//------------------------------------------------- +// device_validity_check - perform validity checks +// on this device +//------------------------------------------------- + +void sony_ldp1450_device::device_validity_check(validity_checker &valid) const +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void sony_ldp1450_device::device_start() +{ + laserdisc_device::device_start(); +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void sony_ldp1450_device::device_reset() +{ + laserdisc_device::device_reset(); + + for(int i=0;i<0x10;i++) + m_internal_bcd[i] = 0; + + m_ld_input_state = LD_INPUT_GET_COMMAND; + m_ld_command_current_byte = m_ld_command_total_bytes = 0; + m_ld_frame_index = 0; + +} + +//------------------------------------------------- +// device_rom_region - return a pointer to our +// ROM region definitions +//------------------------------------------------- + +const rom_entry *sony_ldp1450_device::device_rom_region() const +{ + return ROM_NAME(ldp1450); +} + + +//------------------------------------------------- +// player_vsync - VSYNC callback, called at the +// start of the blanking period +//------------------------------------------------- + +void sony_ldp1450_device::player_vsync(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) +{ + //printf("%d vsync\n",fieldnum); +} + + +//------------------------------------------------- +// player_update - update callback, called on +// the first visible line of the frame +//------------------------------------------------- + +INT32 sony_ldp1450_device::player_update(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) +{ + //printf("%d update\n",fieldnum); + + return fieldnum; +} + + +//************************************************************************** +// READ/WRITE HANDLERS +//************************************************************************** + +void sony_ldp1450_device::set_new_player_state(ldp1450_player_state which) +{ + m_player_state = which; + m_index_state = 0; +} + +void sony_ldp1450_device::set_new_player_bcd(UINT8 data) +{ + printf("Frame data BCD %02x\n",data); + + m_internal_bcd[m_index_state] = data; + m_index_state ++; + if(m_index_state >= FIFO_MAX) + throw emu_fatalerror("FIFO MAX reached"); + + m_status = LDP_STAT_ACK; +} + +UINT32 sony_ldp1450_device::bcd_to_raw() +{ + UINT32 res = 0; + for(int i=0;i<6;i++) + res |= (m_internal_bcd[i] & 0xf) << i*4; + return res; +} + +void sony_ldp1450_device::exec_enter_cmd() +{ + const UINT32 saved_frame = bcd_to_raw(); + + switch(m_player_state) + { + case player_standby: + throw emu_fatalerror("Unimplemented standby state detected"); + + case player_search: + // TODO: move to timer + advance_slider(1); + set_slider_speed(saved_frame); + break; + + default: + //not handling all states yet + break; + } + m_player_state = player_standby; +} + +void sony_ldp1450_device::command_w(UINT8 data) +{ + printf("CMD %02x\n",data); + m_command = data; + + if((m_command & 0xf0) == 0x30 && (m_command & 0xf) < 0x0a) + { + set_new_player_bcd(data); + return; + } + + switch(m_command) + { + + case 0x00: /* text handling (start gotoxy) */ + if ( m_ld_input_state == LD_INPUT_TEXT_COMMAND ) + { + m_ld_input_state = LD_INPUT_TEXT_GET_X; + } + break; + case 0x01: /* text handling (end of text)*/ + if ( m_ld_input_state == LD_INPUT_TEXT_COMMAND ) + { + m_ld_input_state = LD_INPUT_TEXT_GET_STRING; + } + break; + case 0x02: /* text 'set window' command */ + if ( m_ld_input_state == LD_INPUT_TEXT_COMMAND ) + { + m_ld_input_state = LD_INPUT_TEXT_GET_SET_WINDOW; + } + break; + case 0x1a: /* text sent */ + break; + case 0x24: /* Audio On */ + m_status = LDP_STAT_ACK; + break; + case 0x25: /* Audio Off */ + m_status = LDP_STAT_ACK; + break; + case 0x26: /* Video off */ + printf("Video OFF \n"); + m_status = LDP_STAT_ACK; + break; + case 0x27: /* Video on */ + printf("Video ON \n"); + m_status = LDP_STAT_ACK; + break; + case 0x28: /* Stop Codes Enable */ + printf("Stop Code ON \n"); + break; + case 0x29: /* Stop Codes Disable */ + printf("Stop Code OFF \n"); + break; + case 0x2a: /* Eject */ + break; + case 0x2b: /* Step forward */ + break; + case 0x2c: /* Step reverse */ + break; + //30 to 39 handled separately, as they are the frame commands + case 0x3a: /* Play (answer should have delay) */ + printf("play\n"); + set_new_player_state(player_play); + m_status = LDP_STAT_ACK; + break; + case 0x3b: /* Play fast */ + break; + case 0x3c: /* Play slow */ + break; + case 0x3d: /* Play step */ + break; + case 0x3e: /* Play scan */ + break; + case 0x3f: /* Stop */ + printf("stop\n"); + set_new_player_state(player_stop); + m_status = LDP_STAT_ACK; + break; + + case 0x40: // enter, process BCD command + printf("CMD Enter\n"); + exec_enter_cmd(); + m_status = LDP_STAT_ACK; + break; + case 0x41: /* CE */ + break; + + case 0x43: // search + printf("Search \n"); + set_new_player_state(player_search); + m_status = LDP_STAT_ACK; + break; + + case 0x44: // repeat play + printf("CMD Repeat\n"); + set_new_player_state(player_repeat); + m_status = LDP_STAT_ACK; + break; + + /* + audio channels absolute enable / disable + ---- --x- select channel + ---- ---x enable channel (active low) + */ + case 0x46: + case 0x47: + case 0x48: + case 0x49: + printf("Audio channel %x\n",(m_command & 2) >> 1); + printf("Audio status %x\n",(m_command & 1) == 0); + m_audio_enable[(m_command & 2) >> 1] = (m_command & 1) == 0; + m_status = LDP_STAT_ACK; + break; + case 0x4a: /* Play reverse(answer should have delay) */ + printf("play reverse\n"); + break; + case 0x4b: /* Play rev fast */ + break; + case 0x4c: /* Play rev slow */ + break; + case 0x4d: /* Play rev step */ + break; + case 0x4e: /* Play rev scan */ + break; + + case 0x4f: /* Still (not implemented)*/ + if (m_player_state == player_stop) + { + m_status = LDP_STAT_NAK; + } + else + { + m_status = LDP_STAT_ACK; + } + break; + case 0x55: /* 'frame mode' (unknown function) */ + break; + + case 0x56: // Clear All + if (m_player_state == player_search) + { + printf("clear all\n"); + + set_new_player_state(player_search_clr); + } + + m_status = LDP_STAT_ACK; + // reset any pending operation here + break; + + case 0x60: /* Addr Inq (get current frame number) */ + for (UINT8 & elem : m_internal_bcd) + { + printf("Return frame %02x\n",elem); + m_status = elem; + } + break; + case 0x62: /* Motor on */ + break; + case 0x6e: // CX enable - anything use it? + break; + + case 0x80: /* text start */ + printf("CMD Start text\n"); + m_ld_input_state = LD_INPUT_TEXT_COMMAND; + break; + case 0x81: /* Turn on text */ + break; + case 0x82: /* Turn off text */ + break; + + default: + m_status = LDP_STAT_UNDEF; + break; + } + return; +} diff --git a/src/devices/machine/ldp1450.h b/src/devices/machine/ldp1450.h new file mode 100644 index 00000000000..225eff0eee9 --- /dev/null +++ b/src/devices/machine/ldp1450.h @@ -0,0 +1,104 @@ +// license:BSD-3-Clause +/*************************************************************************** + + Sony LDP-1450 laserdisc emulation. + +***************************************************************************/ + +#pragma once + +#ifndef __LDP1450DEV_H__ +#define __LDP1450DEV_H__ + +#include "laserdsc.h" + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_LASERDISC_LDP1450_ADD(_tag, clock) \ + MCFG_DEVICE_ADD(_tag, SONY_LDP1450, clock) + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// device type definition +extern const device_type SONY_LDP1450; + +// ======================> sony_ldp1450_device + +class sony_ldp1450_device : public laserdisc_device +{ +public: + // construction/destruction + sony_ldp1450_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // I/O operations TODO: both actually protected + void command_w(UINT8 data); + UINT8 status_r() const { return m_status; } + +protected: + // device-level overrides + virtual void device_validity_check(validity_checker &valid) const override; + virtual void device_start() override; + virtual void device_reset() override; + virtual const rom_entry *device_rom_region() const override; + + virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override; + virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override; + virtual void player_overlay(bitmap_yuy16 &bitmap) override { } + + UINT8 m_ld_frame_index; + UINT8 m_ld_frame[5]; + UINT8 m_ld_command_current_byte; + UINT8 m_ld_command_to_send[5]; + UINT8 m_ld_command_total_bytes; + + enum LD_INPUT_STATE + { + LD_INPUT_GET_COMMAND = 0, + LD_INPUT_TEXT_COMMAND, + LD_INPUT_TEXT_GET_X, + LD_INPUT_TEXT_GET_Y, + LD_INPUT_TEXT_GET_MODE, + LD_INPUT_TEXT_GET_STRING, + LD_INPUT_TEXT_GET_SET_WINDOW + } m_ld_input_state; + + enum ldp1450_player_state { + player_standby = 0, + player_search, + player_search_clr, + player_play, + player_stop, + player_repeat + }; + +private: + UINT8 m_command; + UINT8 m_status; + ldp1450_player_state m_player_state; + bool m_audio_enable[2]; + void set_new_player_state(ldp1450_player_state which); + void set_new_player_bcd(UINT8 data); + UINT32 bcd_to_raw(); + void exec_enter_cmd(); + UINT8 m_internal_bcd[0x10]; + UINT8 m_index_state; + +}; + + + + + + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + + + +#endif diff --git a/src/devices/machine/ldstub.cpp b/src/devices/machine/ldstub.cpp index 14dd42fdc2b..7c9e0cb0033 100644 --- a/src/devices/machine/ldstub.cpp +++ b/src/devices/machine/ldstub.cpp @@ -17,6 +17,5 @@ //************************************************************************** // device type definition -const device_type SONY_LDP1450 = &device_creator; const device_type PIONEER_PR7820 = &device_creator; const device_type PHILLIPS_22VP932 = &device_creator; diff --git a/src/devices/machine/ldstub.h b/src/devices/machine/ldstub.h index ee49e382583..e7ffe1898cd 100644 --- a/src/devices/machine/ldstub.h +++ b/src/devices/machine/ldstub.h @@ -20,8 +20,6 @@ // DEVICE CONFIGURATION MACROS //************************************************************************** -#define MCFG_LASERDISC_LDP1450_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, SONY_LDP1450, 0) #define MCFG_LASERDISC_PR7820_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, PIONEER_PR7820, 0) #define MCFG_LASERDISC_22VP932_ADD(_tag) \ @@ -33,7 +31,6 @@ //************************************************************************** // device type definition -extern const device_type SONY_LDP1450; extern const device_type PIONEER_PR7820; extern const device_type PHILLIPS_22VP932; @@ -43,28 +40,6 @@ extern const device_type PHILLIPS_22VP932; // TYPE DEFINITIONS //************************************************************************** -// ======================> sony_ldp1450_device - -class sony_ldp1450_device : public laserdisc_device -{ -public: - // construction/destruction - sony_ldp1450_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : laserdisc_device(mconfig, SONY_LDP1450, "Sony LDP-1450", tag, owner, clock, "ldp1450", __FILE__) { } - - // input/output - UINT8 data_available_r() { return CLEAR_LINE; } - UINT8 data_r() { return 0; } - void data_w(UINT8 data) { } - -protected: - // subclass overrides - virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override { } - virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override { return fieldnum; } - virtual void player_overlay(bitmap_yuy16 &bitmap) override { } -}; - - // ======================> pioneer_pr7820_device class pioneer_pr7820_device : public laserdisc_device diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp index d9649286dc9..15e209ed85a 100644 --- a/src/mame/drivers/alg.cpp +++ b/src/mame/drivers/alg.cpp @@ -26,7 +26,7 @@ #include "cpu/m68000/m68000.h" #include "render.h" #include "includes/amiga.h" -#include "machine/ldstub.h" +#include "machine/ldp1450.h" #include "machine/nvram.h" #include "machine/amigafdc.h" @@ -306,7 +306,7 @@ static MACHINE_CONFIG_START( alg_r1, alg_state ) /* video hardware */ MCFG_FRAGMENT_ADD(ntsc_video) - MCFG_LASERDISC_LDP1450_ADD("laserdisc") + MCFG_LASERDISC_LDP1450_ADD("laserdisc",9600) MCFG_LASERDISC_SCREEN("screen") MCFG_LASERDISC_OVERLAY_DRIVER(512*2, 262, amiga_state, screen_update_amiga) MCFG_LASERDISC_OVERLAY_CLIP((129-8)*2, (449+8-1)*2, 44-8, 244+8-1) diff --git a/src/mame/drivers/cops.cpp b/src/mame/drivers/cops.cpp index 307f77bff26..c0b862a2677 100644 --- a/src/mame/drivers/cops.cpp +++ b/src/mame/drivers/cops.cpp @@ -2,7 +2,7 @@ // copyright-holders:Mariusz Wojcieszek, James Wallace /*************************************************************************** - Nova 'LaserMax'/Atari Games Cops + Nova Laserdisc Games/Atari Games COPS (hardware developed by Nova Productions Limited) Preliminary driver by Mariusz Wojcieszek, James Wallace @@ -10,15 +10,23 @@ Bad Boys by Inner Circle, so there is musical accompaniment to areas where the laserdisc audio is muted. - NOTES: To boot up Revelations, turn the refill key (R) and press button A. - TODO: There are probably more ROMs for Revelations, the disc contains - full data for a picture based memory game called 'Vision Quest'. - - LaserMax memory map needs sorting out, Cops uses a subset of what's - actually available + The different games here have subtly different control PCBs COPS has an Atari + part number (58-12B), while Revelations simply refers to a Lasermax control PCB + (Lasermax being the consumer name for the LDP series) + + NOTES: To boot up Revelations, turn the refill key (R) and press button A + to init NVRAM. + + TODO: There are probably more ROMs for Revelations and related, the disc + contains full data for a picture based memory game called 'Vision Quest'. + However, the Vision Quest Laserdisc is slightly different, with Revelations + specific data seemingly replaced with black level. The UK version COPS appears to want to communicate with the LDP in a - different way. + different way, passing illegal commands, need to verify this is the same + player. + + This should be similar hardware for Street Viper if we get a dump. ***************************************************************************/ @@ -26,13 +34,15 @@ #include "cpu/m6502/m6502.h" #include "machine/6522via.h" #include "sound/sn76496.h" +#include "machine/msm6242.h" +#include "machine/ldp1450.h" -//#include "machine/mos6551.h" +#include "machine/mos6551.h" #include "cops.lh" -#define LOG_CDROM 0 -#define LOG_DACIA 0 +#define LOG_CDROM 1 +#define LOG_DACIA 1 #define CMP_REGISTER 0 #define AUX_REGISTER 1 @@ -46,12 +56,14 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_sn(*this, "snsnd"), + m_ld(*this, "laserdisc"), m_irq(0) { } // devices required_device m_maincpu; required_device m_sn; + required_device m_ld; // screen updates UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -66,14 +78,18 @@ protected: public: DECLARE_WRITE8_MEMBER(io1_w); DECLARE_READ8_MEMBER(io1_r); + DECLARE_READ8_MEMBER(io1_lm_r); DECLARE_WRITE8_MEMBER(io2_w); DECLARE_READ8_MEMBER(io2_r); + DECLARE_READ8_MEMBER(ldstatus_r); + DECLARE_WRITE_LINE_MEMBER(dacia_irq); + DECLARE_WRITE_LINE_MEMBER(ld_w); DECLARE_WRITE_LINE_MEMBER(via1_irq); DECLARE_WRITE_LINE_MEMBER(via2_irq); - void dacia_receive(UINT8 data); - void update_dacia_irq(); - DECLARE_WRITE8_MEMBER(dacia_w); - DECLARE_READ8_MEMBER(dacia_r); + void dacia_receive(UINT8 data); + void update_dacia_irq(); + DECLARE_WRITE8_MEMBER(dacia_w); + DECLARE_READ8_MEMBER(dacia_r); DECLARE_WRITE8_MEMBER(via1_b_w); DECLARE_WRITE8_MEMBER(via1_cb1_w); DECLARE_WRITE8_MEMBER(cdrom_data_w); @@ -85,26 +101,46 @@ public: UINT8 m_lcd_addr_l, m_lcd_addr_h; UINT8 m_lcd_data_l, m_lcd_data_h; - UINT8 m_dacia_irq1_reg; - UINT8 m_dacia_rts1; - UINT8 m_dacia_dtr1; + UINT8 m_dacia_irq1_reg; + UINT8 m_dacia_rts1; + UINT8 m_dacia_dtr1; + UINT8 m_parity_1; UINT8 m_parity_mode_1; UINT8 m_bpc_1; - int m_dacia_ic_div_1; - UINT8 m_dacia_echo1; - UINT8 m_dacia_stp_1; - UINT8 m_dacia_reg1; - UINT8 m_dacia_fe1; - UINT8 m_dacia_cmp1; - UINT8 m_dacia_cmpval1; + int m_dacia_ic_div_1; + UINT8 m_dacia_echo1; + UINT8 m_dacia_stp_1; + UINT8 m_dacia_reg1; + UINT8 m_dacia_fe1; + UINT8 m_dacia_cmp1; + UINT8 m_dacia_cmpval1; - UINT8 m_dacia_cts; - UINT8 m_dacia_dcd; - UINT8 m_dacia_trans; + UINT8 m_dacia_irq2_reg; + UINT8 m_dacia_rts2; + UINT8 m_dacia_dtr2; - UINT8 m_dacia_receiver_data; - UINT8 m_dacia_receiver_full; + UINT8 m_parity_2; + UINT8 m_parity_mode_2; + UINT8 m_bpc_2; + int m_dacia_ic_div_2; + UINT8 m_dacia_echo2; + UINT8 m_dacia_stp_2; + UINT8 m_dacia_reg2; + UINT8 m_dacia_fe2; + UINT8 m_dacia_cmp2; + UINT8 m_dacia_cmpval2; + + UINT8 m_dacia_cts; + UINT8 m_dacia_dcd; + UINT8 m_dacia_trans; + UINT8 m_dacia_trans2; + + UINT8 m_dacia_receiver_data; + UINT8 m_dacia_receiver_full; + + UINT8 m_dacia_receiver_data2; + UINT8 m_dacia_receiver_full2; UINT8 m_cdrom_ctrl; UINT8 m_cdrom_data; @@ -113,28 +149,17 @@ public: UINT8 m_sn_cb1; // LDP-1450 - UINT8 m_ld_command_to_send[5]; - UINT8 m_ld_command_total_bytes; - UINT8 m_ld_command_current_byte; - UINT8 m_ld_frame[5]; - UINT8 m_ld_frame_index; emu_timer *m_ld_timer; TIMER_CALLBACK_MEMBER(ld_timer_callback); - enum LD_INPUT_STATE - { - LD_INPUT_GET_COMMAND = 0, - LD_INPUT_TEXT_COMMAND, - LD_INPUT_TEXT_GET_X, - LD_INPUT_TEXT_GET_Y, - LD_INPUT_TEXT_GET_MODE, - LD_INPUT_TEXT_GET_STRING, - LD_INPUT_TEXT_GET_SET_WINDOW - } m_ld_input_state; + UINT8 m_ld_command_to_send[8]; + UINT8 m_ld_command_current_byte; + UINT8 ldcount=0; + UINT8 lddata; UINT8 generate_isr(); - void laserdisc_w(UINT8 data); + UINT8 generate_isr2(); +// void laserdisc_w(UINT8 data); void laserdisc_response_w(UINT8 data); - DECLARE_PALETTE_INIT( cops ); }; const int timer_divide_select[16] = @@ -199,9 +224,15 @@ READ8_MEMBER(cops_state::cdrom_data_r) * *************************************/ +READ8_MEMBER(cops_state::ldstatus_r) +{ + return m_ld->status_r(); +} + TIMER_CALLBACK_MEMBER(cops_state::ld_timer_callback) { m_dacia_receiver_full = 1; + int m_ld_command_total_bytes =8; if ( m_ld_command_current_byte < m_ld_command_total_bytes ) { @@ -214,16 +245,22 @@ TIMER_CALLBACK_MEMBER(cops_state::ld_timer_callback) } } -void cops_state::laserdisc_response_w(UINT8 data) +WRITE_LINE_MEMBER(cops_state::ld_w) { - if ( m_ld_command_total_bytes >= 5 ) - { - logerror( "LD Overflow!\n" ); - } - m_ld_command_to_send[m_ld_command_total_bytes++] = data; -} + lddata <<= 1; -void cops_state::laserdisc_w(UINT8 data) + if ( state ) lddata |= 1; + + if ( ++ldcount >= 8 ) + { + ldcount = 0; + lddata = 0; + printf("LDBYTE %d",lddata); + } + + printf("LDBIT %d",state); +} +/*void cops_state::laserdisc_w(UINT8 data) { switch( m_ld_input_state ) { @@ -245,111 +282,10 @@ void cops_state::laserdisc_w(UINT8 data) m_ld_input_state = LD_INPUT_GET_COMMAND; } break; - case LD_INPUT_TEXT_COMMAND: - case LD_INPUT_GET_COMMAND: - { - switch( data ) - { - case 0x00: /* text handling (start gotoxy) */ - if ( m_ld_input_state == LD_INPUT_TEXT_COMMAND ) - { - m_ld_input_state = LD_INPUT_TEXT_GET_X; - } - break; - case 0x01: /* text handling (end of text)*/ - if ( m_ld_input_state == LD_INPUT_TEXT_COMMAND ) - { - m_ld_input_state = LD_INPUT_TEXT_GET_STRING; - } - break; - case 0x02: /* text 'set window' command */ - if ( m_ld_input_state == LD_INPUT_TEXT_COMMAND ) - { - m_ld_input_state = LD_INPUT_TEXT_GET_SET_WINDOW; - } - break; - case 0x1a: /* text sent */ - break; - case 0x24: /* Audio On */ - laserdisc_response_w(0x0a); - break; - case 0x26: /* Video off */ - laserdisc_response_w(0x0a); - break; - case 0x27: /* Video on */ - laserdisc_response_w(0x0a); - break; - case 0x30: /* Digit */ - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - if ( m_ld_frame_index >= 5 ) - { - m_ld_frame_index = 0; - } - m_ld_frame[m_ld_frame_index++] = data; - laserdisc_response_w(0x0a); - break; - case 0x3a: /* Play (answer should have delay) */ - laserdisc_response_w(0x0a); - break; - case 0x3f: /* Stop */ - laserdisc_response_w(0x0a); - break; - case 0x40: /* Enter */ - laserdisc_response_w(0x0a); - break; - case 0x43: /* Search */ - laserdisc_response_w(0x0a); - break; - case 0x46: /* Channel 1 on */ - laserdisc_response_w(0x0a); - break; - case 0x47: /* Channel 1 off */ - laserdisc_response_w(0x0a); - break; - case 0x48: /* Channel 2 on */ - laserdisc_response_w(0x0a); - break; - case 0x49: /* Channel 2 off */ - laserdisc_response_w(0x0a); - break; - case 0x4f: /* Still */ - laserdisc_response_w(0x0a); - break; - case 0x55: /* 'frame mode' (unknown function) */ - break; - case 0x56: /* C. L. (Reset) */ - m_ld_input_state = LD_INPUT_GET_COMMAND; - laserdisc_response_w(0x0a); - break; - case 0x60: /* Addr Inq (get current frame number) */ - for (auto & elem : m_ld_frame) - { - laserdisc_response_w(elem); - } - break; - case 0x80: /* text start */ - m_ld_input_state = LD_INPUT_TEXT_COMMAND; - break; - case 0x81: /* Turn on text */ - break; - case 0x82: /* Turn off text */ - break; - default: - logerror("Laserdisc command %02x\n", data); - break; - } } break; } -} +}*/ /************************************* * @@ -357,51 +293,72 @@ void cops_state::laserdisc_w(UINT8 data) * *************************************/ - void cops_state::update_dacia_irq() +void cops_state::update_dacia_irq() { UINT8 isr = generate_isr(); //remove bits isr &= ~m_dacia_irq1_reg; - m_maincpu->set_input_line(INPUT_LINE_NMI, isr? ASSERT_LINE:CLEAR_LINE); + m_maincpu->set_input_line(INPUT_LINE_NMI, isr? ASSERT_LINE:CLEAR_LINE); + + UINT8 isr2 = generate_isr2(); + //remove bits + isr2 &= ~m_dacia_irq2_reg; + m_maincpu->set_input_line(INPUT_LINE_NMI, isr2? ASSERT_LINE:CLEAR_LINE); + } void cops_state::dacia_receive(UINT8 data) { - if (m_dacia_cmp1) - { - if (m_dacia_cmpval1 == data) - { - m_dacia_receiver_data = data; - m_dacia_receiver_full = 1; - update_dacia_irq(); - m_dacia_cmp1 =0; - m_dacia_cts =1; - m_dacia_trans =1; - } - } - else - { - m_dacia_receiver_data = data; - m_dacia_receiver_full = 1; - update_dacia_irq(); - m_dacia_cts =1; - m_dacia_trans =1; - } + if (m_dacia_cmp1) + { + if (m_dacia_cmpval1 == data) + { + m_dacia_receiver_data = data; + m_dacia_receiver_full = 1; + update_dacia_irq(); + m_dacia_cmp1 =0; + m_dacia_cts =1; + m_dacia_trans =1; + } + } + else + { + m_dacia_receiver_data = data; + m_dacia_receiver_full = 1; + update_dacia_irq(); + m_dacia_cts =1; + m_dacia_trans =1; + } } UINT8 cops_state::generate_isr() { - UINT8 isr =0; + UINT8 isr =0; - isr |= m_dacia_receiver_full; - isr |= (m_dacia_cmp1 << 1); - isr |= (m_dacia_trans <<4); + isr |= m_dacia_receiver_full; + isr |= (m_dacia_cmp1 << 1); + isr |= (m_dacia_trans <<4); - if (isr) - { - isr |= 0x40; - } - return isr; + if (isr) + { + isr |= 0x40; + } + return isr; +} + +UINT8 cops_state::generate_isr2() +{ + UINT8 isr2 =0; + + isr2 |= m_dacia_receiver_full2; + isr2 |= (m_dacia_cmp2 << 1); + isr2 |= (m_dacia_trans2 <<4); + + if (isr2) + { + isr2 |= 0x40; + } + return isr2; } READ8_MEMBER(cops_state::dacia_r) @@ -428,11 +385,42 @@ READ8_MEMBER(cops_state::dacia_r) } case 3: /* RDR1: Receive data register */ + { m_dacia_receiver_full = 0; m_dacia_fe1=0; - if (LOG_DACIA) logerror("RDR1 %02x\n",m_dacia_receiver_data); - return m_dacia_receiver_data; - default: + +// if (LOG_DACIA) logerror("RDR1 %02x\n",m_dacia_receiver_data); + if (LOG_DACIA) logerror("RDR1 %02x\n",m_ld->status_r()); + return m_ld->status_r(); + } + case 4: /* ISR2: Interrupt Status Register */ + { + UINT8 isr2 = generate_isr2(); + m_dacia_trans2 =0; + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); + return isr2; + } + + case 5: /* CSR2: Control Status Register */ + { + UINT8 csr2 =0; + csr2 |= m_dacia_rts2; + csr2 |= (m_dacia_dtr2 << 1); + csr2 |= (m_dacia_cts <<4); + csr2 |= (m_dacia_fe2 <<7); + if (LOG_DACIA) logerror("CSR2 %02x\n",csr2); + return csr2; + } + + case 7: /* RDR2: Receive data register */ + m_dacia_receiver_full2 = 0; + m_dacia_fe2=0; + + if (LOG_DACIA) logerror("RDR2 %02x\n",m_ld->status_r()); + return m_ld->status_r(); + + + default: if (LOG_DACIA) logerror("%s:dacia_r(%02x)\n", machine().describe_context(), offset); return 0; } @@ -485,7 +473,7 @@ WRITE8_MEMBER(cops_state::dacia_w) } if (LOG_DACIA) logerror("DACIA TIME %02d\n", XTAL_3_6864MHz / m_dacia_ic_div_1); - m_ld_timer->adjust(attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_1), 0, attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_1)); +// m_ld_timer->adjust(attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_1), 0, attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_1)); if (LOG_DACIA) logerror("DACIA Ctrl Register: %02x\n", data); @@ -507,15 +495,88 @@ WRITE8_MEMBER(cops_state::dacia_w) } } case 3: /* Transmit Data Register 1 */ + { if (LOG_DACIA) logerror("DACIA Transmit: %02x %c\n", data, (char)data); - laserdisc_w(data); + m_ld->command_w(data); break; - default: - if (LOG_DACIA) logerror("%s:dacia_w(%02x,%02x)\n", machine().describe_context(), offset, data); + } + case 4: /* IRQ enable Register 2 */ + { + m_dacia_irq2_reg &= ~0x80; + + if (data & 0x80) //enable bits + { + m_dacia_irq2_reg |= (data & 0x7f); + } + else // disable bits + { + m_dacia_irq2_reg &= ~(data & 0x7f); + } + if (LOG_DACIA) logerror("DACIA IRQ 2 Register: %02x\n", m_dacia_irq2_reg); + update_dacia_irq(); break; + } + + case 5: /* Control / Format Register 2 */ + { + if (data & 0x80) //Format Register + { + m_dacia_rts2 = (data & 0x01); + m_dacia_dtr2 = (data & 0x02 ? 1:0); + m_parity_2 = (data & 0x04); + m_parity_mode_2 = ((data & 0x18) >> 3); + m_bpc_2 = ((data & 0x60) >> 5) +5; + if (LOG_DACIA) logerror("DACIA Format Register 2: %02x\n", data); + } + else // Control register + { + m_dacia_ic_div_2 = timer_divide_select[data & 0x15]; + m_dacia_echo2 = (data & 0x10); + m_dacia_stp_2 = (data & 0x20 ? 2:1); + if (data & 0x40) + { + m_dacia_reg2 = AUX_REGISTER; + } + else + { + m_dacia_reg2 = CMP_REGISTER; + } + if (LOG_DACIA) logerror("DACIA TIME 2 %02d\n", XTAL_3_6864MHz / m_dacia_ic_div_1); + + m_ld_timer->adjust(attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_2), 0, attotime::from_hz(XTAL_3_6864MHz / m_dacia_ic_div_2)); + + if (LOG_DACIA) logerror("DACIA Ctrl Register 2: %02x\n", data); + + } + break; + } + case 6: /* Compare / Aux Ctrl Register 2 */ + { + if (m_dacia_reg2 == CMP_REGISTER) + { + m_dacia_cmp2 =1; + m_dacia_cmpval2=data; + if (LOG_DACIA) logerror("DACIA Compare mode 2: %02x \n", data); +// update_dacia_irq(); + } + else + { + if (LOG_DACIA) logerror("DACIA Aux ctrl 2: %02x \n", data); + } + } + case 7: /* Transmit Data Register 2 */ + { + if (LOG_DACIA) logerror("DACIA Transmit 2: %02x %c\n", data, (char)data); + + // for (int i=0; i <8; i++) + { + // m_ld_command_to_send[i] = data & (1<command_w(data); + break; + } } } - /************************************* * * I/O @@ -538,6 +599,24 @@ READ8_MEMBER(cops_state::io1_r) } } +READ8_MEMBER(cops_state::io1_lm_r) +{ + switch( offset & 0x0f ) + { + case 0x07: /* WDI */ + return 1; + case 0x08: /* SW0 */ + return ioport("SW0")->read(); + case 0x09: /* SW1 */ + return ioport("SW1")->read(); + case 0x0a: /* SW2 */ + return ioport("SW2")->read(); + default: + logerror("Unknown io1_r, offset = %03x\n", offset); + return 0; + } +} + WRITE8_MEMBER(cops_state::io1_w) { int i; @@ -653,7 +732,7 @@ WRITE8_MEMBER(cops_state::io2_w) * * VIA 1 (U18) * PA0-2 Steer - * PA3 ? + * PA3 Shake motor? * PA4-6 Fade? * PA7 STK (system rom banking) * PB0-7 SN76489 data bus @@ -726,13 +805,21 @@ static ADDRESS_MAP_START( cops_map, AS_PROGRAM, 8, cops_state ) AM_RANGE(0xb000, 0xb00f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* VIA 1 */ AM_RANGE(0xb800, 0xb80f) AM_DEVREADWRITE("via6522_2", via6522_device, read, write) /* VIA 2 */ AM_RANGE(0xc000, 0xcfff) AM_READWRITE(io2_r, io2_w) -// AM_RANGE(0xd000, 0xd003) AM_DEVREADWRITE("acia6551_1", mos6551_device, read, write ) -// AM_RANGE(0xd004, 0xd007) AM_DEVREADWRITE("acia6551_2", mos6551_device, read, write ) AM_RANGE(0xd000, 0xd007) AM_READWRITE(dacia_r, dacia_w) AM_RANGE(0xd800, 0xd80f) AM_DEVREADWRITE("via6522_3", via6522_device, read, write) /* VIA 3 */ AM_RANGE(0xe000, 0xffff) AM_ROMBANK("sysbank1") ADDRESS_MAP_END +static ADDRESS_MAP_START( revlatns_map, AS_PROGRAM, 8, cops_state ) + AM_RANGE(0x0000, 0x1fff) AM_RAM + AM_RANGE(0x2000, 0x9fff) AM_ROM AM_REGION("program", 0) + AM_RANGE(0xa000, 0xafff) AM_READWRITE(io1_lm_r, io1_w) + AM_RANGE(0xb000, 0xb00f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* VIA 1 */ + AM_RANGE(0xc000, 0xc00f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) + AM_RANGE(0xd000, 0xd007) AM_READWRITE(dacia_r, dacia_w) + AM_RANGE(0xe000, 0xffff) AM_ROMBANK("sysbank1") +ADDRESS_MAP_END + static INPUT_PORTS_START( cops ) PORT_START("SW0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Switch A") PORT_CODE(KEYCODE_A) PORT_IMPULSE(1) @@ -795,7 +882,6 @@ INPUT_PORTS_END void cops_state::machine_start() { m_ld_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cops_state::ld_timer_callback),this)); - m_dacia_ic_div_1 = timer_divide_select[0]; m_ld_timer->adjust(attotime::from_hz(167*5), 0, attotime::from_hz(167*5)); } @@ -805,7 +891,7 @@ void cops_state::machine_reset() m_irq = 0; m_lcd_addr_l = m_lcd_addr_h = 0; m_lcd_data_l = m_lcd_data_h = 0; - + m_dacia_cts = 0; m_dacia_dcd = 0; @@ -814,16 +900,9 @@ void cops_state::machine_reset() m_dacia_dtr1 = 1; m_dacia_fe1 = 1; m_dacia_receiver_full = 1; - m_ld_input_state = LD_INPUT_GET_COMMAND; - m_ld_command_current_byte = m_ld_command_total_bytes = 0; - m_ld_frame_index = 0; } -PALETTE_INIT_MEMBER( cops_state,cops ) -{ -} - DRIVER_INIT_MEMBER(cops_state,cops) { //The hardware is designed and programmed to use multiple system ROM banks, but for some reason it's hardwired to bank 2. @@ -840,16 +919,8 @@ static MACHINE_CONFIG_START( cops, cops_state ) MCFG_CPU_PROGRAM_MAP(cops_map) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_UPDATE_DRIVER(cops_state, screen_update) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD("palette", 8) - MCFG_PALETTE_INIT_OWNER(cops_state,cops) + MCFG_LASERDISC_LDP1450_ADD("laserdisc",9600) + MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc") /* via */ MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) @@ -865,9 +936,7 @@ static MACHINE_CONFIG_START( cops, cops_state ) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(cops_state, cdrom_data_w)) MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cops_state, cdrom_ctrl_w)) - /* acia */ -// MCFG_MOS6551_ADD("acia6551_1", XTAL_1_8432MHz, nullptr) -// MCFG_MOS6551_ADD("acia6551_2", XTAL_1_8432MHz, nullptr) + /* acia (really a 65C52)*/ /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -879,6 +948,35 @@ static MACHINE_CONFIG_START( cops, cops_state ) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( revlatns, cops_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu",M6502,MAIN_CLOCK/2) + MCFG_CPU_PROGRAM_MAP(revlatns_map) + + /* video hardware */ + MCFG_LASERDISC_LDP1450_ADD("laserdisc",9600) + MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc") + + /* via */ + MCFG_DEVICE_ADD("via6522_1", VIA6522, 0) + MCFG_VIA6522_IRQ_HANDLER(WRITELINE(cops_state, via1_irq)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(cops_state, via1_b_w)) + MCFG_VIA6522_CB1_HANDLER(WRITE8(cops_state, via1_cb1_w)) + + MCFG_DEVICE_ADD("rtc", MSM6242, XTAL_32_768kHz) + + /* acia (really a 65C52)*/ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + /* TODO: Verify clock */ + MCFG_SOUND_ADD("snsnd", SN76489, MAIN_CLOCK/2) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + +MACHINE_CONFIG_END + /*************************************************************************** Game driver(s) @@ -893,10 +991,10 @@ ROM_START( cops ) ROM_LOAD( "cops_sys.dat", 0x0000, 0x8000, CRC(0060e5d0) SHA1(b8c9f6fde6a315e33fa7946e5d3bb4ea2fbe76a8) ) DISK_REGION( "audiocd" ) - DISK_IMAGE_READONLY( "copscd", 0, NO_DUMP ) + DISK_IMAGE_READONLY( "copscd", 0, NO_DUMP ) DISK_REGION( "laserdisc" ) - DISK_IMAGE_READONLY( "cops", 0, NO_DUMP ) + DISK_IMAGE_READONLY( "cops", 0, NO_DUMP ) ROM_END ROM_START( copsuk ) @@ -907,10 +1005,10 @@ ROM_START( copsuk ) ROM_LOAD( "cops_sys.dat", 0x0000, 0x8000, CRC(0060e5d0) SHA1(b8c9f6fde6a315e33fa7946e5d3bb4ea2fbe76a8) ) DISK_REGION( "audiocd" ) - DISK_IMAGE_READONLY( "copscd", 0, NO_DUMP ) + DISK_IMAGE_READONLY( "copscd", 0, NO_DUMP ) DISK_REGION( "laserdisc" ) - DISK_IMAGE_READONLY( "cops", 0, NO_DUMP ) + DISK_IMAGE_READONLY( "copsld", 0, NO_DUMP ) ROM_END ROM_START( revlatns ) @@ -921,10 +1019,10 @@ ROM_START( revlatns ) ROM_LOAD( "revelations_sys.bin", 0x0000, 0x8000, CRC(43e5e3ec) SHA1(fa44b102b5aa7ad2421c575abdc67f1c29f23bc1) ) DISK_REGION( "laserdisc" ) - DISK_IMAGE_READONLY( "revlatns", 0, NO_DUMP ) + DISK_IMAGE_READONLY( "revlatns", 0, NO_DUMP ) ROM_END GAMEL( 1994, cops, 0, cops, cops, cops_state, cops, ROT0, "Atari Games", "Cops (USA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) GAMEL( 1994, copsuk, cops,cops, cops, cops_state, cops, ROT0, "Nova Productions / Deith Leisure","Cops (UK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) -GAMEL( 1994, revlatns, 0, cops, revlatns, cops_state, cops, ROT0, "Nova Productions", "Revelations", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) +GAMEL( 1994, revlatns, 0, revlatns, revlatns, cops_state, cops, ROT0, "Nova Productions", "Revelations", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops ) From 38314fc4a468459d9ec47cf40346e1c269a43a49 Mon Sep 17 00:00:00 2001 From: cracyc Date: Thu, 4 Aug 2016 14:44:59 -0500 Subject: [PATCH 023/116] hiscore.dat: updates [Leezer] --- plugins/dummy/init.lua | 2 +- plugins/hiscore/hiscore.dat | 31 ++++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/plugins/dummy/init.lua b/plugins/dummy/init.lua index 1f78851a936..e13e6c4cf79 100644 --- a/plugins/dummy/init.lua +++ b/plugins/dummy/init.lua @@ -19,7 +19,7 @@ function dummy.startplugin() end) local function menu_populate() - return {{ "This is a", "test", 32 }, { "Also a", "test", 0 }} -- 32 is MENU_FLAG_DISABLE + return {{ "This is a", "test", "off" }, { "Also a", "test", 0 }} end local function menu_callback(index, event) diff --git a/plugins/hiscore/hiscore.dat b/plugins/hiscore/hiscore.dat index d5c77537b69..79422978fa1 100644 --- a/plugins/hiscore/hiscore.dat +++ b/plugins/hiscore/hiscore.dat @@ -3947,6 +3947,10 @@ deadang: ;@s:dec0.cpp +ffantasyj: +@:maincpu,program,ffbe00,50,08,01 + + hbarrelw: @:maincpu,program,ffbe78,58,00,26 @@ -4763,6 +4767,12 @@ candy: ;@s:epos.cpp +;beastf:******beastie feastie (fixed) +beastf: +@:maincpu,program,7010,f0,00,00 +@:maincpu,program,798a,1,fc,fc + + ;suprglob:******super glob * suprglob: @:maincpu,program,7c20,3c,00,00 @@ -4801,13 +4811,6 @@ theglob3: @:maincpu,program,7ab7,1,80,80 -;beastf:******beastie feastie -beastf: -@:maincpu,program,4c46,3c,4d,00 -@:maincpu,program,4c8a,1,01,01 -@:maincpu,program,4cb0,1,15,15 - - ;@s:eprom.cpp ;guts:******Guts n' Glory (prototype) @@ -9246,6 +9249,14 @@ aquarush: ;@s:namcos2.cpp +bubbletr: +@:maincpu,program,106970,278,01,01 + + +bubbletrj: +@:maincpu,program,10698c,278,01,01 + + ;(phelios (japan)) phelios: pheliosj: @@ -10041,11 +10052,9 @@ opwolfu: ;(operation thunderbolt) ;othunderj:******Operation Thunderbolt (Japan) -;othunderuo:******Operation Thunderbolt (us,older) othunder: othunderj: othunderu: -othunderuo: @:maincpu,program,839ca,438,4e,00 @:maincpu,program,83dd9,1,01,01 @@ -12369,6 +12378,10 @@ glocu: ;@s:seibuspi.cpp +rdft2jb: +@:maincpu,program,285dc,1ab,01,2e + + ;rfjet:******raiden fighters jet (all versions fixed) rfjet: rfjet2kc: From 261a277d50471b87ea7256de7d56e81314e3f337 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Thu, 4 Aug 2016 21:21:24 +0100 Subject: [PATCH 024/116] various Seibu Refactoring, Air Raid, Street Fight and Dark Mist all basically use very similar video systems (4 layers, 2 of them being ROM based tilemaps, a CLUT prom for each layer which controls colours and transparency handling) this takes some steps towards allowing a common implementation of it. --- scripts/target/mame/arcade.lua | 2 +- .../drivers/{cshooter.cpp => airraid.cpp} | 387 ++++++++++-------- src/mame/drivers/darkmist.cpp | 148 ++++--- src/mame/drivers/stfight.cpp | 315 ++++++++------ src/mame/includes/darkmist.h | 1 + src/mame/mame.lst | 4 +- src/mame/video/darkmist.cpp | 35 +- src/mame/video/stfight.cpp | 38 +- 8 files changed, 529 insertions(+), 401 deletions(-) rename src/mame/drivers/{cshooter.cpp => airraid.cpp} (81%) diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 136f01b063b..7c09ed322ce 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -3240,7 +3240,7 @@ files { MAME_DIR .. "src/mame/drivers/cabal.cpp", MAME_DIR .. "src/mame/includes/cabal.h", MAME_DIR .. "src/mame/video/cabal.cpp", - MAME_DIR .. "src/mame/drivers/cshooter.cpp", + MAME_DIR .. "src/mame/drivers/airraid.cpp", MAME_DIR .. "src/mame/drivers/dcon.cpp", MAME_DIR .. "src/mame/includes/dcon.h", MAME_DIR .. "src/mame/video/dcon.cpp", diff --git a/src/mame/drivers/cshooter.cpp b/src/mame/drivers/airraid.cpp similarity index 81% rename from src/mame/drivers/cshooter.cpp rename to src/mame/drivers/airraid.cpp index 60fec640c9f..89de21f7275 100644 --- a/src/mame/drivers/cshooter.cpp +++ b/src/mame/drivers/airraid.cpp @@ -2,6 +2,33 @@ // copyright-holders:Tomasz Slanina, Angelo Salese, hap /* Cross Shooter (c) 1987 Seibu + Custom Modules note: + + The Air Raid / Cross Shooter PCB contains 3 custom modules. + These modules have not been dumped. + + 2 of these are responsible for background layer generation. + the 3rd is responsible for sprites. + + Both the tile gfx data, and tilemap layout data are + contained within the background modules, none of this is + accessible by the CPU (the CPU simply provides a scroll + position) + + The sprite modules contain the sprite gfx data. + + The modules also contain the CLUT PROM data for their layer + which controls colours and transparency. It is likely + each module contains the equivalent logic of a SEI0010BU + in order to handle this. This means there is a possibility + that the raw data from the ROMs is not exposed on the edge + of the modules, only post-lookup data. + + The above information is based off a development board + which was unfortunately stripped of all ROMs. + + --- + TS 01.05.2006: - added sprites, bgmap reading and few fixes here and there @@ -9,7 +36,7 @@ Haze's notes - video system is very similar to darkmist.cpp - + Stephh's notes (based on the game Z80 code and some tests) : @@ -142,10 +169,14 @@ public: m_mainram(*this, "mainram"), m_spriteram(*this, "spriteram"), m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), m_palette(*this, "palette"), - m_generic_paletteram_8(*this, "paletteram"), - m_generic_paletteram2_8(*this, "paletteram2"), - m_decrypted_opcodes(*this, "decrypted_opcodes") { } + m_decrypted_opcodes(*this, "decrypted_opcodes"), + m_tx_clut(*this, "tx_clut"), + m_fg_clut(*this, "fg_clut"), + m_bg_clut(*this, "bg_clut"), + m_spr_clut(*this, "spr_clut") + { } required_device m_maincpu; optional_device m_seibu_sound; @@ -154,11 +185,15 @@ public: optional_shared_ptr m_mainram; optional_shared_ptr m_spriteram; required_device m_gfxdecode; + required_device m_screen; required_device m_palette; - required_shared_ptr m_generic_paletteram_8; - required_shared_ptr m_generic_paletteram2_8; optional_shared_ptr m_decrypted_opcodes; + required_region_ptr m_tx_clut; + required_region_ptr m_fg_clut; + required_region_ptr m_bg_clut; + required_region_ptr m_spr_clut; + TILEMAP_MAPPER_MEMBER(bg_scan); TILEMAP_MAPPER_MEMBER(fg_scan); @@ -167,9 +202,13 @@ public: TILE_GET_INFO_MEMBER(get_fg_tile_info); tilemap_t *m_fg_tilemap; TILE_GET_INFO_MEMBER(get_cstx_tile_info); - tilemap_t *m_txtilemap; + tilemap_t *m_tx_tilemap; UINT16 m_hw; + bitmap_ind16 m_temp_bitmap; + + + DECLARE_WRITE8_MEMBER(cshooter_txram_w); DECLARE_READ8_MEMBER(cshooter_coin_r); DECLARE_WRITE8_MEMBER(cshooter_c500_w); @@ -184,6 +223,7 @@ public: DECLARE_PALETTE_INIT(cshooter); DECLARE_MACHINE_RESET(cshooter); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + void mix_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* clut, int base); UINT32 screen_update_airraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(cshooter_scanline); }; @@ -191,21 +231,9 @@ public: PALETTE_INIT_MEMBER(cshooter_state, cshooter) { - const UINT8 *color_prom = memregion("tx_clut")->base(); - int i; - - // text uses colors 0xc0-0xdf - for (i = 0; i < 0x40; i++) - palette.set_pen_indirect(i, (color_prom[i] & 0x1f) | 0xc0); - - // rest is still unknown.. - for (i = 0x40; i < 0x100; i++) - palette.set_pen_indirect(i, color_prom[i]); - - // just make a direct copy of palette at the end for debug - for (i = 0x100; i < 0x200; i++) - palette.set_pen_indirect(i, i-0x100); - + // we use the PROMs in the video drawing code instead because + // it controls transparency as well as the colour lookup. + // (bit 0x40 set in a CLUT PROM means 'transparent pen') } @@ -230,7 +258,7 @@ TILE_GET_INFO_MEMBER(cshooter_state::get_bg_tile_info) SET_TILE_INFO_MEMBER(2, tile, - 0, + attr&0xf, 0); } @@ -244,7 +272,7 @@ TILE_GET_INFO_MEMBER(cshooter_state::get_fg_tile_info) SET_TILE_INFO_MEMBER(3, tile, - 0, + attr&0xf, 0); } @@ -262,7 +290,7 @@ TILE_GET_INFO_MEMBER(cshooter_state::get_cstx_tile_info) WRITE8_MEMBER(cshooter_state::cshooter_txram_w) { m_txram[offset] = data; - m_txtilemap->mark_tile_dirty(offset/2); + m_tx_tilemap->mark_tile_dirty(offset/2); } void cshooter_state::video_start() @@ -274,10 +302,13 @@ void cshooter_state::video_start() // m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cshooter_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(cshooter_state::fg_scan),this),16,16,256, 512); m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cshooter_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(cshooter_state::fg_scan),this),16,16,256, 128); - m_fg_tilemap->set_transparent_pen(0); + m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cshooter_state::get_cstx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); - m_txtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cshooter_state::get_cstx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); - m_txtilemap->set_transparent_pen(0); +// m_fg_tilemap->set_transparent_pen(0); +// m_tx_tilemap->set_transparent_pen(0); + + // we do manual mixing using a temp bitmap + m_screen->register_screen_bitmap(m_temp_bitmap); } void cshooter_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -290,7 +321,10 @@ void cshooter_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec UINT16 tile = (m_spriteram[i]); tile |= (m_spriteram[i + 1] & 0x70) << 4; - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, tile, 0, 0, 0, m_spriteram[i+3],m_spriteram[i+2],0); + UINT16 col = (m_spriteram[i+1] & 0x0f); + //col |= (m_spriteram[i+1] & 0x80)<<3; + + m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, tile,col, 0, 0, m_spriteram[i+3],m_spriteram[i+2],0); } } @@ -301,6 +335,26 @@ void cshooter_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec #define DISPLAY_TXT 8 #define DM_GETSCROLL(n) (((m_vregs[(n)]<<1)&0xff) + ((m_vregs[(n)]&0x80)?1:0) +( ((m_vregs[(n)-1]<<4) | (m_vregs[(n)-1]<<12) )&0xff00)) +void cshooter_state::mix_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* clut, int base) +{ + for (int y = cliprect.min_y; y <= cliprect.max_y; y++) + { + UINT16 *dest = &bitmap.pix16(y); + UINT16 *src = &m_temp_bitmap.pix16(y); + for (int x = cliprect.min_x; x <= cliprect.max_x; x++) + { + UINT8 pix = src[x] & 0xff; + UINT8 real = clut[pix]; + + if (!(real & 0x40)) + { + dest[x] = (real & 0x3f) + base; + } + } + } +} + + UINT32 cshooter_state::screen_update_airraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { UINT16 bgscrolly = DM_GETSCROLL(0x6); @@ -312,31 +366,36 @@ UINT32 cshooter_state::screen_update_airraid(screen_device &screen, bitmap_ind16 m_fg_tilemap->set_scrollx(0, DM_GETSCROLL(0xa)); m_fg_tilemap->set_scrolly(0, DM_GETSCROLL(0xe)); - // set palette (compared to cshooter, r and g are swapped) - for (int i = 0; i < 0x100; i++) - { - int r = m_generic_paletteram_8[i] & 0xf; - int g = m_generic_paletteram_8[i] >> 4; - int b = m_generic_paletteram2_8[i] & 0xf; - - rgb_t color = rgb_t(pal4bit(r), pal4bit(g), pal4bit(b)); - m_palette->set_indirect_color(i, color); - } - // draw screen bitmap.fill(0x80, cliprect); // temp +// m_temp_bitmap.fill(0x00, cliprect); + if ((m_hw & DISPLAY_BG) == 0x00) - m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); + { + m_bg_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_layer(screen, bitmap, cliprect, m_bg_clut, 0x80); + } if ((m_hw & DISPLAY_FG) == 0x00) - m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0); + { + m_fg_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_layer(screen, bitmap, cliprect, m_fg_clut, 0x00); + } - if(m_hw & DISPLAY_SPR) - draw_sprites(bitmap, cliprect); + if (m_hw & DISPLAY_SPR) + { + m_temp_bitmap.fill(0x00, cliprect); + draw_sprites(m_temp_bitmap, cliprect); // technically this should draw manually because 0x40 in the prom is transparency and our code just assumes it to be 0. + mix_layer(screen, bitmap, cliprect, m_spr_clut, 0x40); + } + + if (m_hw & DISPLAY_TXT) + { + m_tx_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_layer(screen, bitmap, cliprect, m_tx_clut, 0xc0); + } - if(m_hw & DISPLAY_TXT) - m_txtilemap->draw(screen, bitmap, cliprect, 0,0); return 0; } @@ -349,10 +408,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(cshooter_state::cshooter_scanline) { int scanline = param; - if(scanline == 120) // updates scroll resgiters + if(scanline == 240) // updates scroll resgiters m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xd7); /* RST 10h */ - if(scanline == 240) // vblank-out irq + if(scanline == 250) // vblank-out irq m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xcf); /* RST 08h */ } @@ -421,8 +480,8 @@ static ADDRESS_MAP_START( airraid_map, AS_PROGRAM, 8, cshooter_state ) AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w) // AM_RANGE(0xc801, 0xc801) AM_WRITE(cshooter_c801_w) // see notes AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(cshooter_txram_w) AM_SHARE("txram") - AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0xda00, 0xdaff) AM_RAM AM_SHARE("paletteram2") + AM_RANGE(0xd800, 0xd8ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0xda00, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext") AM_RANGE(0xdc11, 0xdc11) AM_WRITE(bank_w) AM_RANGE(0xdc00, 0xdc0f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs") // AM_RANGE(0xdc10, 0xdc10) AM_RAM @@ -440,7 +499,7 @@ static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cshoot ADDRESS_MAP_END -static INPUT_PORTS_START( cshooter ) +static INPUT_PORTS_START( airraid ) PORT_START("IN0") /* IN0 (0xc200) */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY @@ -465,9 +524,9 @@ static INPUT_PORTS_START( cshooter ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) PORT_IMPULSE(1) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_IMPULSE(1) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -511,8 +570,8 @@ static INPUT_PORTS_START( cshooter ) PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW1:8" ) PORT_START("COIN") /* COIN (0xc205) */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -521,19 +580,6 @@ static INPUT_PORTS_START( cshooter ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END -static INPUT_PORTS_START( airraid ) - PORT_INCLUDE( cshooter ) - - PORT_MODIFY("IN2") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0xcf, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_MODIFY("COIN") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNUSED ) -INPUT_PORTS_END static const gfx_layout cshooter_charlayout = @@ -552,7 +598,10 @@ static const gfx_layout cshooter_char16layout = 16,16, /* 8*8 characters */ RGN_FRAC(1,1), /* 512 characters */ 4, /* 4 bits per pixel */ - { 0,8,4,12 }, +// { 0,8,4,12 }, + { 0,4,8,12 }, + +// { 12,4,8,0 }, { 0,1,2,3, 16,17,18,19, 512+0,512+1,512+2,512+3, 512+16,512+17,512+18,512+19}, { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 }, 32*32 @@ -562,9 +611,9 @@ static const gfx_layout cshooter_char16layout = static GFXDECODE_START( cshooter ) GFXDECODE_ENTRY( "tx_gfx", 0, cshooter_charlayout, 0, 16 ) - GFXDECODE_ENTRY( "spr_gfx", 0, cshooter_char16layout, 0x100, 16 ) - GFXDECODE_ENTRY( "bg_gfx", 0, cshooter_char16layout, 0x100, 16 ) - GFXDECODE_ENTRY( "fg_gfx", 0, cshooter_char16layout, 0x100, 16 ) + GFXDECODE_ENTRY( "spr_gfx", 0, cshooter_char16layout, 0, 16 ) + GFXDECODE_ENTRY( "bg_gfx", 0, cshooter_char16layout, 0, 16 ) + GFXDECODE_ENTRY( "fg_gfx", 0, cshooter_char16layout, 0, 16 ) GFXDECODE_END @@ -588,12 +637,13 @@ static MACHINE_CONFIG_START( airraid, cshooter_state ) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16) MCFG_SCREEN_UPDATE_DRIVER(cshooter_state, screen_update_airraid) + MCFG_SCREEN_PALETTE("palette") + MCFG_PALETTE_ADD("palette", 0x100) + MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) + MCFG_GFXDECODE_ADD("gfxdecode", "palette", cshooter) - MCFG_PALETTE_ADD("palette", 0x200) - MCFG_PALETTE_INDIRECT_ENTRIES(0x200) - MCFG_PALETTE_INIT_OWNER(cshooter_state, cshooter) /* sound hardware */ SEIBU_AIRRAID_SOUND_SYSTEM_YM2151_INTERFACE(XTAL_14_31818MHz/4) @@ -609,90 +659,6 @@ MACHINE_CONFIG_END - -/* - -Cross Shooter -(C) J K H Corp (Seibu?) - -Seibu Hardware -PCB is coloured black and supposed to be proto, but mask roms are present......? - -PCB No. S-0087-011A-0 -CPU: SHARP LH0080B (Z80B) -SND: YM2151, Z80A, SEI80BU 611 787, YM3012, SEI0100BU YM3931 -RAM: TMM2015 x 7, TMM2063 x 1 -DIPs: 2 x 8 position -CMOS Gate Arrays: SEI0020BU TC17G008AN-0015 (x 3), SEI10040BU TC15G008AP-0048, - SEI0030BU TC17G005AN-0026, SEI0060BU TC17G008AN-0024 -OTHER: SEI0050BU M 6 4 0 00 -XTAL: 14.318 MHz (near SEI80BU), xx.000 MHz (cant read speed, near SEI0040BU) - -There are 3 BIG custom black packs on the PCB. - -ROMS: -Note, all ROMs have official sticker, "(C) SEIBU KAIHATSU INC." and a number. - -1.k19 TMM27256 \ -2.k20 TMM27512 / Program -3.f11 TMM2764 Gfx? -4.g8 TMM24256 Mask Sound (Samples?) -5.g6 TMM2764 Sound program - - -*/ - -ROM_START( cshootere ) - ROM_REGION( 0x10000, "maincpu", 0 ) // Main CPU - ROM_LOAD( "1.k19", 0x00000, 0x08000, CRC(71418952) SHA1(9745ca006576381c9e9595d8e42ab276bab80a41) ) - - ROM_REGION( 0x10000, "user1", 0 ) // cpu data - ROM_LOAD( "2.k20", 0x00000, 0x10000, CRC(5812fe72) SHA1(3b28bff6b62a411d2195bb228952db62ad32ef3d) ) - - ROM_REGION( 0x18000, "audiocpu", 0 ) // Sub/Sound CPU - ROM_LOAD( "5.6f", 0x00000, 0x02000, CRC(30be398c) SHA1(6c61200ee8888d6270c8cec50423b3b5602c2027) ) // 5.g6 - ROM_LOAD( "4.7f", 0x10000, 0x08000, CRC(3cd715b4) SHA1(da735fb5d262908ddf7ed7dacdea68899f1723ff) ) // 4.g8 - - ROM_REGION( 0x02000, "tx_gfx", 0 ) // TX Layer - ROM_LOAD( "3.f11", 0x00000, 0x02000, CRC(67b50a47) SHA1(b1f4aefc9437edbeefba5371149cc08c0b55c741) ) - - - ROM_REGION( 0x100, "tx_clut", 0 ) // taken from parent set (need proper IC locations for this PCB type) - ROM_LOAD( "63s281.16a", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut - - ROM_REGION( 0x220, "proms", 0 ) // taken from parent set (need proper IC locations for this PCB type) - ROM_LOAD( "82s123.7a", 0x0000, 0x0020, CRC(93e2d292) SHA1(af8edd0cfe85f28ede9604cfaf4516d54e5277c9) ) // sprite color related? (not used) - ROM_LOAD( "82s129.9s", 0x0020, 0x0100, CRC(cf14ba30) SHA1(3284b6809075756b3c8e07d9705fc7eacb7556f1) ) // timing? (not used) - ROM_LOAD( "82s129.4e", 0x0120, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // timing? (not used) - - /* ### MODULE 1 ### Background generation / graphics */ - ROM_REGION( 0x40000, "bg_map", 0 ) - ROM_LOAD16_BYTE( "bg_layouts_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "bg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x40000, "bg_gfx", 0 ) - ROM_LOAD16_BYTE( "bg_tiles_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "bg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "bg_clut", 0 ) - ROM_LOAD( "bg_clut", 0x000, 0x100, NO_DUMP ) - - /* ### MODULE 2 ### Foreground generation / graphics */ - ROM_REGION( 0x40000, "fg_map", 0 ) - ROM_LOAD16_BYTE( "fg_layouts_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "fg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x40000, "fg_gfx", 0 ) - ROM_LOAD16_BYTE( "fg_tiles_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "fg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "fg_clut", 0 ) - ROM_LOAD( "fg_clut", 0x000, 0x100, NO_DUMP ) - - /* ### MODULE 3 ### Sprite graphics */ - ROM_REGION( 0x40000, "spr_gfx", 0 ) - ROM_LOAD16_BYTE( "sprite_tiles_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "sprite_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "spr_clut", 0 ) - ROM_LOAD( "spr_clut", 0x000, 0x100, NO_DUMP ) -ROM_END - /* Air Raid (Seibu 1987) @@ -719,7 +685,7 @@ ROM_START( airraid ) ROM_REGION( 0x10000, "maincpu", 0 ) // Main CPU ROM_LOAD( "1.16j", 0x00000, 0x08000, CRC(7ac2cedf) SHA1(272831f51a2731e067b5aec6dba6bddd3c5350c9) ) - ROM_REGION( 0x10000, "user1", 0 ) // cpu data + ROM_REGION( 0x10000, "maindata", 0 ) // cpu data ROM_LOAD( "2.19j", 0x00000, 0x10000, CRC(842ae6c2) SHA1(0468445e4ab6f42bac786f9a258df3972fd1fde9) ) ROM_REGION( 0x18000, "audiocpu", 0 ) // Sub/Sound CPU @@ -729,13 +695,12 @@ ROM_START( airraid ) ROM_REGION( 0x02000, "tx_gfx", 0 ) // TX Layer ROM_LOAD( "3.13e", 0x00000, 0x02000, CRC(672ec0e8) SHA1(a11cd90d6494251ceee3bc7c72f4e7b1580b77e2) ) - ROM_REGION( 0x100, "tx_clut", 0 ) // taken from parent set (need proper IC locations for this PCB type) - ROM_LOAD( "63s281.16a", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut + ROM_REGION( 0x100, "tx_clut", 0 ) // taken from cshootert, not verified for this PCB + ROM_LOAD( "63s281.d16", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut - ROM_REGION( 0x220, "proms", 0 ) // taken from parent set (need proper IC locations for this PCB type) - ROM_LOAD( "82s123.7a", 0x0000, 0x0020, CRC(93e2d292) SHA1(af8edd0cfe85f28ede9604cfaf4516d54e5277c9) ) // sprite color related? (not used) - ROM_LOAD( "82s129.9s", 0x0020, 0x0100, CRC(cf14ba30) SHA1(3284b6809075756b3c8e07d9705fc7eacb7556f1) ) // timing? (not used) - ROM_LOAD( "82s129.4e", 0x0120, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // timing? (not used) + ROM_REGION( 0x0200, "proms", 0 ) // this PCB type has different proms when compared to the cshootert hardware PCB where they were dumped + ROM_LOAD( "pr.c19", 0x0000, 0x0200, NO_DUMP ) + ROM_LOAD( "6308.a13", 0x0000, 0x0100, NO_DUMP ) /* ### MODULE 1 ### Background generation / graphics */ ROM_REGION( 0x40000, "bg_map", 0 ) @@ -767,10 +732,92 @@ ROM_END +/* + +Cross Shooter +(C) J K H Corp (Seibu?) + +Seibu Hardware +PCB is coloured black + +PCB No. S-0087-011A-0 +CPU: SHARP LH0080B (Z80B) +SND: YM2151, Z80A, SEI80BU 611 787, YM3012, SEI0100BU YM3931 +RAM: TMM2015 x 7, TMM2063 x 1 +DIPs: 2 x 8 position +CMOS Gate Arrays: SEI0020BU TC17G008AN-0015 (x 3), SEI10040BU TC15G008AP-0048, + SEI0030BU TC17G005AN-0026, SEI0060BU TC17G008AN-0024 +OTHER: SEI0050BU M 6 4 0 00 +XTAL: 14.318 MHz (near SEI80BU), xx.000 MHz (cant read speed, near SEI0040BU) + +There are 3 BIG custom black packs on the PCB. + +ROMS: +Note, all ROMs have official sticker, "(C) SEIBU KAIHATSU INC." and a number. + +1.k19 TMM27256 \ +2.k20 TMM27512 / Program +3.f11 TMM2764 Gfx? +4.g8 TMM24256 Mask Sound (Samples?) +5.g6 TMM2764 Sound program + + +*/ + +ROM_START( cshooter ) + ROM_REGION( 0x10000, "maincpu", 0 ) // Main CPU + ROM_LOAD( "1.k19", 0x00000, 0x08000, CRC(71418952) SHA1(9745ca006576381c9e9595d8e42ab276bab80a41) ) + + ROM_REGION( 0x10000, "maindata", 0 ) // cpu data + ROM_LOAD( "2.k20", 0x00000, 0x10000, CRC(5812fe72) SHA1(3b28bff6b62a411d2195bb228952db62ad32ef3d) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) // Sub/Sound CPU + ROM_LOAD( "5.6f", 0x00000, 0x02000, CRC(30be398c) SHA1(6c61200ee8888d6270c8cec50423b3b5602c2027) ) // 5.g6 + ROM_LOAD( "4.7f", 0x10000, 0x08000, CRC(3cd715b4) SHA1(da735fb5d262908ddf7ed7dacdea68899f1723ff) ) // 4.g8 + + ROM_REGION( 0x02000, "tx_gfx", 0 ) // TX Layer + ROM_LOAD( "3.f11", 0x00000, 0x02000, CRC(67b50a47) SHA1(b1f4aefc9437edbeefba5371149cc08c0b55c741) ) + + ROM_REGION( 0x100, "tx_clut", 0 ) // taken from cshootert, not verified for this PCB + ROM_LOAD( "63s281.d16", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut + + ROM_REGION( 0x0200, "proms", 0 ) // this PCB type has different proms when compared to the cshootert hardware PCB where they were dumped + ROM_LOAD( "pr.c19", 0x0000, 0x0200, NO_DUMP ) + ROM_LOAD( "6308.a13", 0x0000, 0x0100, NO_DUMP ) + + /* ### MODULE 1 ### Background generation / graphics */ + ROM_REGION( 0x40000, "bg_map", 0 ) + ROM_LOAD16_BYTE( "bg_layouts_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "bg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x40000, "bg_gfx", 0 ) + ROM_LOAD16_BYTE( "bg_tiles_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "bg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x100, "bg_clut", 0 ) + ROM_LOAD( "bg_clut", 0x000, 0x100, NO_DUMP ) + + /* ### MODULE 2 ### Foreground generation / graphics */ + ROM_REGION( 0x40000, "fg_map", 0 ) + ROM_LOAD16_BYTE( "fg_layouts_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "fg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x40000, "fg_gfx", 0 ) + ROM_LOAD16_BYTE( "fg_tiles_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "fg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x100, "fg_clut", 0 ) + ROM_LOAD( "fg_clut", 0x000, 0x100, NO_DUMP ) + + /* ### MODULE 3 ### Sprite graphics */ + ROM_REGION( 0x40000, "spr_gfx", 0 ) + ROM_LOAD16_BYTE( "sprite_tiles_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "sprite_tiles_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x100, "spr_clut", 0 ) + ROM_LOAD( "spr_clut", 0x000, 0x100, NO_DUMP ) +ROM_END + + DRIVER_INIT_MEMBER(cshooter_state, cshooter) { - membank("bank1")->configure_entries(0, 4, memregion("user1")->base(), 0x4000); + membank("bank1")->configure_entries(0, 4, memregion("maindata")->base(), 0x4000); } DRIVER_INIT_MEMBER(cshooter_state,cshootere) @@ -808,6 +855,6 @@ DRIVER_INIT_MEMBER(cshooter_state,cshootere) -GAME( 1987, cshootere, cshooter, airraid_crypt, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1987, airraid, cshooter, airraid_crypt, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1987, cshooter, airraid, airraid_crypt, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) +GAME( 1987, airraid, 0, airraid_crypt, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // There's also an undumped International Games version diff --git a/src/mame/drivers/darkmist.cpp b/src/mame/drivers/darkmist.cpp index 50e75ff14b0..7e417a62009 100644 --- a/src/mame/drivers/darkmist.cpp +++ b/src/mame/drivers/darkmist.cpp @@ -214,9 +214,10 @@ static const gfx_layout tilelayout = static GFXDECODE_START( darkmist ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16*4 ) - GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 16*4 ) - GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 0, 16*4 ) + GFXDECODE_ENTRY( "tx_gfx", 0, charlayout, 0, 16*4 ) + GFXDECODE_ENTRY( "bg_gfx", 0, tilelayout, 0, 16*4 ) + GFXDECODE_ENTRY( "fg_gfx", 0, tilelayout, 0, 16*4 ) + GFXDECODE_ENTRY( "spr_gfx", 0, tilelayout, 0, 16*4 ) GFXDECODE_END TIMER_DEVICE_CALLBACK_MEMBER(darkmist_state::scanline) @@ -276,50 +277,77 @@ ROM_START( darkmist ) ROM_REGION( 0x8000, "t5182_z80", 0 ) /* Toshiba T5182 external ROM */ ROM_LOAD( "dm_17.rom", 0x0000, 0x8000, CRC(7723dcae) SHA1(a0c69e7a7b6fd74f7ed6b9c6419aed94aabcd4b0) ) - ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_REGION( 0x4000, "tx_gfx", 0 ) ROM_LOAD( "dm_13.rom", 0x00000, 0x02000, CRC(38bb38d9) SHA1(d751990166dd3d503c5de7667679b96210061cd1) ) ROM_LOAD( "dm_14.rom", 0x02000, 0x02000, CRC(ac5a31f3) SHA1(79083390671062be2eab93cc875a0f86d709a963) ) - ROM_REGION( 0x40000, "gfx2", 0 ) - ROM_LOAD( "dm_05.rom", 0x10000, 0x10000, CRC(ca79a738) SHA1(66a76ea0d8ecc44f6cc77102303df74f40bf6118) ) - ROM_LOAD( "dm_01.rom", 0x00000, 0x10000, CRC(652aee6b) SHA1(f4150784f7bd7be83a0041e4c52540aa564062ba) ) - ROM_LOAD( "dm_06.rom", 0x30000, 0x10000, CRC(9629ed2c) SHA1(453f6a0b12efdadd7fcbe03ad37afb0afa6be051) ) - ROM_LOAD( "dm_02.rom", 0x20000, 0x10000, CRC(e2dd15aa) SHA1(1f3a6a1e1afabfe9dc47549ef13ae7696302ae88) ) + ROM_REGION( 0x20000, "fg_gfx", 0 ) + ROM_LOAD( "dm_05.rom", 0x00000, 0x10000, CRC(ca79a738) SHA1(66a76ea0d8ecc44f6cc77102303df74f40bf6118) ) + ROM_LOAD( "dm_06.rom", 0x10000, 0x10000, CRC(9629ed2c) SHA1(453f6a0b12efdadd7fcbe03ad37afb0afa6be051) ) - ROM_REGION( 0x40000, "gfx3", 0) + ROM_REGION( 0x20000, "bg_gfx", 0 ) + ROM_LOAD( "dm_01.rom", 0x00000, 0x10000, CRC(652aee6b) SHA1(f4150784f7bd7be83a0041e4c52540aa564062ba) ) + ROM_LOAD( "dm_02.rom", 0x10000, 0x10000, CRC(e2dd15aa) SHA1(1f3a6a1e1afabfe9dc47549ef13ae7696302ae88) ) + + ROM_REGION( 0x40000, "spr_gfx", 0) ROM_LOAD( "dm_09.rom", 0x00000, 0x10000, CRC(52154b50) SHA1(5ee1a4bcf0752a057b9993b0069d744c35cf55f4) ) ROM_LOAD( "dm_11.rom", 0x10000, 0x08000, CRC(3118e2f9) SHA1(dfd946ea1310851f97d31ce58d8280f2d92b0f59) ) ROM_LOAD( "dm_10.rom", 0x20000, 0x10000, CRC(34fd52b5) SHA1(c4ee464ed79ec91f993b0f894572c0288f0ad1d4) ) ROM_LOAD( "dm_12.rom", 0x30000, 0x08000, CRC(cc4b9839) SHA1(b7e95513d2e06929fed5005caf3bf8c3fba0b597) ) - ROM_REGION( 0x8000, "user1", 0 ) + ROM_REGION( 0x10000, "bg_map", 0 ) /* BG layer map ( 512x64 )*/ - ROM_LOAD( "dm_03.rom", 0x00000, 0x08000, CRC(60b40c2a) SHA1(c046273b15dab95ea4851c26ce941e580fa1b6ec) ) + ROM_LOAD16_BYTE( "dm_03.rom", 0x00000, 0x08000, CRC(60b40c2a) SHA1(c046273b15dab95ea4851c26ce941e580fa1b6ec) ) + ROM_LOAD16_BYTE( "dm_04.rom", 0x00001, 0x08000, CRC(d47b8cd9) SHA1(86eb7a5d8ea63c0c91f455b1b8322cc7b9c4a968) ) - ROM_REGION( 0x8000, "user2", 0 ) - /* BG layer attr ( 512x64 ) */ - ROM_LOAD( "dm_04.rom", 0x00000, 0x08000, CRC(d47b8cd9) SHA1(86eb7a5d8ea63c0c91f455b1b8322cc7b9c4a968) ) - - ROM_REGION( 0x04000, "user3", 0 ) + ROM_REGION( 0x08000, "fg_map", 0 ) /* FG layer map ( 64x256 ) */ - ROM_LOAD( "dm_07.rom", 0x00000, 0x04000, CRC(889b1277) SHA1(78405110b9cf1ab988c0cbfdb668498dadb41229) ) + ROM_LOAD16_BYTE( "dm_07.rom", 0x00000, 0x04000, CRC(889b1277) SHA1(78405110b9cf1ab988c0cbfdb668498dadb41229) ) + ROM_LOAD16_BYTE( "dm_08.rom", 0x00001, 0x04000, CRC(f76f6f46) SHA1(ce1c67dc8976106b24fee8d3a0b9e5deb016a327) ) - ROM_REGION( 0x04000, "user4", 0 ) - /* FG layer attr ( 64x256 ) */ - ROM_LOAD( "dm_08.rom", 0x00000, 0x04000, CRC(f76f6f46) SHA1(ce1c67dc8976106b24fee8d3a0b9e5deb016a327) ) - - ROM_REGION( 0x0600, "proms", 0 ) - /* color lookup tables */ + ROM_REGION( 0x0100, "bg_clut", 0 ) ROM_LOAD( "63s281n.m7", 0x0000, 0x0100, CRC(897ef49f) SHA1(e40c0fb0a68aa91ceaee86e774a428819a4794bb) ) - ROM_LOAD( "63s281n.d7", 0x0100, 0x0100, CRC(a9975a96) SHA1(3a34569fc68ac15f91e1e90d4e273f844b315091) ) - ROM_LOAD( "63s281n.f11", 0x0200, 0x0100, CRC(8096b206) SHA1(257004aa3501121d058afa6f64b1129303246758) ) - ROM_LOAD( "63s281n.j15", 0x0300, 0x0100, CRC(2ea780a4) SHA1(0f8d6791114705e9982f9035f291d2a305b47f0a) ) - /* unknown */ - ROM_LOAD( "63s281n.l1", 0x0400, 0x0100, CRC(208d17ca) SHA1(a77d56337bcac8d9a7bc3411239dfb3045e069ec) ) - ROM_LOAD( "82s129.d11", 0x0500, 0x0100, CRC(866eab0e) SHA1(398ffe2b82b6e2235746fd987d5f5995d7dc8687) ) + ROM_REGION( 0x0100, "fg_clut", 0 ) + ROM_LOAD( "63s281n.d7", 0x0000, 0x0100, CRC(a9975a96) SHA1(3a34569fc68ac15f91e1e90d4e273f844b315091) ) + ROM_REGION( 0x0100, "spr_clut", 0 ) + ROM_LOAD( "63s281n.f11", 0x0000, 0x0100, CRC(8096b206) SHA1(257004aa3501121d058afa6f64b1129303246758) ) + ROM_REGION( 0x0100, "tx_clut", 0 ) + ROM_LOAD( "63s281n.j15", 0x0000, 0x0100, CRC(2ea780a4) SHA1(0f8d6791114705e9982f9035f291d2a305b47f0a) ) + + + ROM_REGION( 0x0200, "proms", 0 ) // unknown PROMs + ROM_LOAD( "63s281n.l1", 0x0000, 0x0100, CRC(208d17ca) SHA1(a77d56337bcac8d9a7bc3411239dfb3045e069ec) ) + ROM_LOAD( "82s129.d11", 0x0100, 0x0100, CRC(866eab0e) SHA1(398ffe2b82b6e2235746fd987d5f5995d7dc8687) ) ROM_END + + +void darkmist_state::decrypt_fgbgtiles(UINT8* rom, int size) +{ + dynamic_buffer buf(0x40000); + /* data lines */ + for (int i = 0;i < size/2;i++) + { + int w1; + + w1 = (rom[i + 0*size/2] << 8) + rom[i + 1*size/2]; + + w1 = BITSWAP16(w1, 9,14,7,2, 6,8,3,15, 10,13,5,12, 0,11,4,1); + + buf[i + 0*size/2] = w1 >> 8; + buf[i + 1*size/2] = w1 & 0xff; + } + + /* address lines */ + for (int i = 0;i < size;i++) + { + rom[i] = buf[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13, 5,4,3,2, 12,11,10,9,8, 1,0, 7,6)]; + } +} + + + void darkmist_state::decrypt_gfx() { dynamic_buffer buf(0x40000); @@ -327,8 +355,8 @@ void darkmist_state::decrypt_gfx() int size; int i; - rom = memregion("gfx1")->base(); - size = memregion("gfx1")->bytes(); + rom = memregion("tx_gfx")->base(); + size = memregion("tx_gfx")->bytes(); /* data lines */ for (i = 0;i < size/2;i++) @@ -349,32 +377,12 @@ void darkmist_state::decrypt_gfx() rom[i] = buf[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12, 3,2,1, 11,10,9,8, 0, 7,6,5,4)]; } - - rom = memregion("gfx2")->base(); - size = memregion("gfx2")->bytes(); - - /* data lines */ - for (i = 0;i < size/2;i++) - { - int w1; - - w1 = (rom[i + 0*size/2] << 8) + rom[i + 1*size/2]; - - w1 = BITSWAP16(w1, 9,14,7,2, 6,8,3,15, 10,13,5,12, 0,11,4,1); - - buf[i + 0*size/2] = w1 >> 8; - buf[i + 1*size/2] = w1 & 0xff; - } - - /* address lines */ - for (i = 0;i < size;i++) - { - rom[i] = buf[BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13, 5,4,3,2, 12,11,10,9,8, 1,0, 7,6)]; - } + decrypt_fgbgtiles(memregion("bg_gfx")->base(), memregion("bg_gfx")->bytes()); + decrypt_fgbgtiles(memregion("fg_gfx")->base(), memregion("fg_gfx")->bytes()); - rom = memregion("gfx3")->base(); - size = memregion("gfx3")->bytes(); + rom = memregion("spr_gfx")->base(); + size = memregion("spr_gfx")->bytes(); /* data lines */ for (i = 0;i < size/2;i++) @@ -441,38 +449,24 @@ DRIVER_INIT_MEMBER(darkmist_state,darkmist) membank("bank1")->set_base(&ROM[0x010000]); /* adr line swaps */ - ROM = memregion("user1")->base(); - len = memregion("user1")->bytes(); + ROM = memregion("bg_map")->base(); + len = memregion("bg_map")->bytes(); memcpy( &buffer[0], ROM, len ); for(i=0;ibase(); - len = memregion("user2")->bytes(); + + ROM = memregion("fg_map")->base(); + len = memregion("fg_map")->bytes(); memcpy( &buffer[0], ROM, len ); for(i=0;ibase(); - len = memregion("user3")->bytes(); - memcpy( &buffer[0], ROM, len ); - for(i=0;ibase(); - len = memregion("user4")->bytes(); - memcpy( &buffer[0], ROM, len ); - for(i=0;ibase()[tile_index]; /* TTTTTTTT */ - attr=memregion("user2")->base()[tile_index]; /* -PPP--TT - FIXED BITS (0xxx00xx) */ + code=memregion("bg_map")->base()[tile_index*2]; /* TTTTTTTT */ + attr=memregion("bg_map")->base()[(tile_index*2)+1]; /* -PPP--TT - FIXED BITS (0xxx00xx) */ + code+=(attr&3)<<8; pal=(attr>>4); @@ -32,17 +33,15 @@ TILE_GET_INFO_MEMBER(darkmist_state::get_fgtile_info) { int code,attr,pal; - code=memregion("user3")->base()[tile_index]; /* TTTTTTTT */ - attr=memregion("user4")->base()[tile_index]; /* -PPP--TT - FIXED BITS (0xxx00xx) */ - pal=attr>>4; + code = memregion("fg_map")->base()[tile_index*2]; /* TTTTTTTT */ + attr = memregion("fg_map")->base()[(tile_index*2)+1]; /* -PPP--TT - FIXED BITS (0xxx00xx) */ code+=(attr&3)<<8; - - code+=0x400; + pal=attr>>4; pal+=16; - SET_TILE_INFO_MEMBER(1, + SET_TILE_INFO_MEMBER(2, code, pal, 0); @@ -68,19 +67,31 @@ TILE_GET_INFO_MEMBER(darkmist_state::get_txttile_info) PALETTE_INIT_MEMBER(darkmist_state, darkmist) { - const UINT8 *color_prom = memregion("proms")->base(); + const UINT8 *bg_clut = memregion("bg_clut")->base(); + const UINT8 *fg_clut = memregion("fg_clut")->base(); + const UINT8 *spr_clut = memregion("spr_clut")->base(); + const UINT8 *tx_clut = memregion("tx_clut")->base(); palette.set_indirect_color(0x100, rgb_t::black); for (int i = 0; i < 0x400; i++) { int ctabentry; + UINT8 clut = 0; - if (color_prom[i] & 0x40) + switch (i & 0x300) + { + case 0x000: clut = bg_clut[i&0xff]; break; + case 0x100: clut = fg_clut[i&0xff]; break; + case 0x200: clut = spr_clut[i&0xff]; break; + case 0x300: clut = tx_clut[i&0xff]; break; + } + + if (clut & 0x40) // 0x40 indicates non-transparent ctabentry = 0x100; else { - ctabentry = (color_prom[i] & 0x3f); + ctabentry = (clut & 0x3f); switch (i & 0x300) { @@ -156,7 +167,7 @@ UINT32 darkmist_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap palette+=32; - m_gfxdecode->gfx(2)->transpen( + m_gfxdecode->gfx(3)->transpen( bitmap,cliprect, tile, palette, diff --git a/src/mame/video/stfight.cpp b/src/mame/video/stfight.cpp index c5b4d715579..bf8747828a4 100644 --- a/src/mame/video/stfight.cpp +++ b/src/mame/video/stfight.cpp @@ -34,35 +34,41 @@ PALETTE_INIT_MEMBER(stfight_state, stfight) { - const UINT8 *color_prom = memregion("proms")->base(); + UINT8 *color_prom = memregion("tx_clut")->base(); int i; - /* text uses colors 0xc0-0xcf */ - for (i = 0; i < 0x40; i++) + /* text uses colors 0xc0-0xff */ + for (i = 0; i < 0x100; i++) { - UINT8 ctabentry = (color_prom[i] & 0x0f) | 0xc0; + UINT8 ctabentry = (color_prom[i] & 0x3f) | 0xc0; palette.set_pen_indirect(i, ctabentry); } + color_prom = memregion("fg_clut")->base(); + /* fg uses colors 0x40-0x7f */ - for (i = 0x40; i < 0x140; i++) + for (i = 0x00; i < 0x100; i++) { - UINT8 ctabentry = (color_prom[i + 0x1c0] & 0x0f) | ((color_prom[i + 0x0c0] & 0x03) << 4) | 0x40; - palette.set_pen_indirect(i, ctabentry); + UINT8 ctabentry = (color_prom[i] & 0x3f) | 0x40; + palette.set_pen_indirect(i+0x100, ctabentry); } + color_prom = memregion("bg_clut")->base(); + /* bg uses colors 0-0x3f */ - for (i = 0x140; i < 0x240; i++) + for (i = 0x000; i < 0x100; i++) { - UINT8 ctabentry = (color_prom[i + 0x2c0] & 0x0f) | ((color_prom[i + 0x1c0] & 0x03) << 4); - palette.set_pen_indirect(i, ctabentry); + UINT8 ctabentry = (color_prom[i] & 0x3f); + palette.set_pen_indirect(i+0x200, ctabentry); } - /* bg uses colors 0x80-0xbf */ - for (i = 0x240; i < 0x340; i++) + color_prom = memregion("spr_clut")->base(); + + /* spr uses colors 0x80-0xbf */ + for (i = 0x000; i < 0x100; i++) { - UINT8 ctabentry = (color_prom[i + 0x3c0] & 0x0f) | ((color_prom[i + 0x2c0] & 0x03) << 4) | 0x80; - palette.set_pen_indirect(i, ctabentry); + UINT8 ctabentry = (color_prom[i] & 0x3f) | 0x80; + palette.set_pen_indirect(i+0x300, ctabentry); } } @@ -82,7 +88,7 @@ TILEMAP_MAPPER_MEMBER(stfight_state::fg_scan) TILE_GET_INFO_MEMBER(stfight_state::get_fg_tile_info) { - UINT8 *fgMap = memregion("gfx5")->base(); + UINT8 *fgMap = memregion("fg_map")->base(); int attr,tile_base; attr = fgMap[0x8000+tile_index]; @@ -104,7 +110,7 @@ TILEMAP_MAPPER_MEMBER(stfight_state::bg_scan) TILE_GET_INFO_MEMBER(stfight_state::get_bg_tile_info) { - UINT8 *bgMap = memregion("gfx6")->base(); + UINT8 *bgMap = memregion("bg_map")->base(); int attr,tile_bank,tile_base; attr = bgMap[0x8000+tile_index]; From 234628a88f583895905f67386b1ef3a9a55046b0 Mon Sep 17 00:00:00 2001 From: Roberto Benfatto Date: Thu, 4 Aug 2016 22:46:42 +0200 Subject: [PATCH 025/116] Revert modifications of 0646ca8 --- plugins/hiscore/init.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/hiscore/init.lua b/plugins/hiscore/init.lua index 00707aca092..fc67584bb07 100644 --- a/plugins/hiscore/init.lua +++ b/plugins/hiscore/init.lua @@ -22,8 +22,8 @@ end function hiscore.startplugin() - local hiscoredata_path = hiscore_plugin_path .. "/hiscore.dat"; - local hiscore_path = hiscore_plugin_path .. "/hi"; + local hiscoredata_path = "hiscore.dat"; + local hiscore_path = "hi"; local config_path = manager:options().entries.inipath:value():match("[^;]+") .. "/hiscore.ini"; config_path = config_path:gsub("%$(%w+)", os.getenv); @@ -87,6 +87,9 @@ function hiscore.startplugin() local function read_hiscore_dat () local file = io.open( hiscoredata_path, "r" ); local rm_match; + if not file then + file = io.open( hiscore_plugin_path .. "/hiscore.dat", "r" ); + end if emu.softname() ~= "" then rm_match = '^' .. emu.romname() .. ',' .. emu.softname() .. ':'; else From 4f25a90c756ca96a97e9eeb557fde624b3849944 Mon Sep 17 00:00:00 2001 From: cracyc Date: Thu, 4 Aug 2016 16:49:11 -0500 Subject: [PATCH 026/116] hiscore: make path expansion work on win32 also (nw) --- plugins/hiscore/init.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/hiscore/init.lua b/plugins/hiscore/init.lua index fc67584bb07..c26c25ae21c 100644 --- a/plugins/hiscore/init.lua +++ b/plugins/hiscore/init.lua @@ -5,7 +5,6 @@ -- high-score saving with hiscore.dat infom just as older -- builds did in the past. -- -require('lfs') local exports = {} exports.name = "hiscore" exports.version = "1.0.0" @@ -24,8 +23,7 @@ function hiscore.startplugin() local hiscoredata_path = "hiscore.dat"; local hiscore_path = "hi"; - local config_path = manager:options().entries.inipath:value():match("[^;]+") .. "/hiscore.ini"; - config_path = config_path:gsub("%$(%w+)", os.getenv); + local config_path = lfs.env_replace(manager:options().entries.inipath:value():match("[^;]+") .. "/hiscore.ini"); local current_checksum = 0; local default_checksum = 0; @@ -47,7 +45,7 @@ function hiscore.startplugin() local _conf = {} for line in io.lines(config_path) do token, value = string.match(line, '([^ ]+) ([^ ]+)'); - _conf[token] = value:gsub("%$(%w+)", os.getenv); + _conf[token] = lfs.env_replace(value); end hiscore_path = _conf["hi_path"]; -- hiscoredata_path = _conf["dat_path"]; -- don't know if I should do it, but wathever From 8b43da2f1427588d5d77ad638b4b411bc8a9997a Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Wed, 27 Jul 2016 00:51:19 +0300 Subject: [PATCH 027/116] vt240: unbreak host comms when flow control in null_modem is enabled --- src/mame/drivers/vt240.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp index efb32a71fbd..fef82d47a19 100644 --- a/src/mame/drivers/vt240.cpp +++ b/src/mame/drivers/vt240.cpp @@ -239,8 +239,8 @@ WRITE8_MEMBER(vt240_state::duart_w) WRITE8_MEMBER(vt240_state::duartout_w) { - m_host->write_rts(BIT(data, 0) ? CLEAR_LINE : ASSERT_LINE); - m_host->write_dtr(BIT(data, 2) ? CLEAR_LINE : ASSERT_LINE); + m_host->write_rts(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE); + m_host->write_dtr(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE); m_maincpu->set_input_line(15, BIT(data, 4) ? CLEAR_LINE : ASSERT_LINE); m_maincpu->set_input_line(14, BIT(data, 5) ? CLEAR_LINE : ASSERT_LINE); m_maincpu->set_input_line(11, BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE); From 5db8c1b9f04b09e8cef4a6781db5f6d8ea53dec5 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 4 Aug 2016 21:07:38 -0400 Subject: [PATCH 028/116] sengokmj: Input mappings refined based on examination of program code - All service inputs are active switches, not DIP toggles - Add unused SW2 DIPs as displayed in service mode - Add a couple of obscure inputs not shown in service mode --- src/mame/drivers/sengokmj.cpp | 128 ++++++++++++++++------------------ 1 file changed, 60 insertions(+), 68 deletions(-) diff --git a/src/mame/drivers/sengokmj.cpp b/src/mame/drivers/sengokmj.cpp index 3a95d926d9e..007b5fe7786 100644 --- a/src/mame/drivers/sengokmj.cpp +++ b/src/mame/drivers/sengokmj.cpp @@ -344,7 +344,7 @@ void sengokmj_state::machine_start() /* Multiplexer device for the mahjong panel */ READ16_MEMBER(sengokmj_state::mahjong_panel_r) { - const char *const mpnames[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "UNUSED" }; + const char *const mpnames[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5" }; int i; UINT16 res = 0xffff; @@ -405,7 +405,7 @@ static ADDRESS_MAP_START( sengokmj_io_map, AS_IO, 16, sengokmj_state ) // AM_RANGE(0x8100, 0x8101) AM_WRITENOP // always 0 AM_RANGE(0x8180, 0x8181) AM_WRITE(out_w) AM_RANGE(0x8140, 0x8141) AM_WRITE(mahjong_panel_w) - AM_RANGE(0xc000, 0xc001) AM_READ_PORT("DSW1") + AM_RANGE(0xc000, 0xc001) AM_READ_PORT("DSW") AM_RANGE(0xc002, 0xc003) AM_READ(mahjong_panel_r) AM_RANGE(0xc004, 0xc005) AM_READ(system_r) //switches ADDRESS_MAP_END @@ -414,7 +414,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( sengokmj ) SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */ - PORT_START("DSW1") + PORT_START("DSW") // Names and locations from service mode PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) @@ -432,92 +432,84 @@ static INPUT_PORTS_START( sengokmj ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:6" ) PORT_DIPNAME( 0x0040, 0x0040, "Out Sw" ) PORT_DIPLOCATION("SW1:7") - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) // One of these probably selects coins + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) // The other probably selects tickets PORT_DIPNAME( 0x0080, 0x0000, "Hopper" ) PORT_DIPLOCATION("SW1:8") //game gives hopper error with this off. PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPUNUSED_DIPLOC( 0x0100, 0x0100, "SW2:1" ) + PORT_DIPUNUSED_DIPLOC( 0x0200, 0x0200, "SW2:2" ) + PORT_DIPUNUSED_DIPLOC( 0x0400, 0x0400, "SW2:3" ) + PORT_DIPUNUSED_DIPLOC( 0x0800, 0x0800, "SW2:4" ) + PORT_DIPUNUSED_DIPLOC( 0x1000, 0x1000, "SW2:5" ) + PORT_DIPUNUSED_DIPLOC( 0x2000, 0x2000, "SW2:6" ) + PORT_DIPUNUSED_DIPLOC( 0x4000, 0x4000, "SW2:7" ) + PORT_DIPUNUSED_DIPLOC( 0x8000, 0x8000, "SW2:8" ) PORT_START("KEY0") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // Internal code 0F0h + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // Internal code 0F4h + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // Internal code 0F8h + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // Internal code 0FCh + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Internal code 3h + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 ) // Internal code 0Ah + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Bet 2") PORT_CODE(KEYCODE_4) // Internal code 0FFFFh; ignored in service mode but probably does something + PORT_BIT( 0xff80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // Internal code 0F1h + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // Internal code 0F5h + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // Internal code 0F9h + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // Internal code 0FBh + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Internal code 0Bh + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // Internal code 9h + PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // Internal code 0F2h + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // Internal code 0F6h + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // Internal code 0FAh + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Internal code 1h + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Internal code 0Ch PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY3") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // Internal code 0F3h + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // Internal code 0F7h + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // Internal code 0FBh + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Internal code 2h + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Internal code 6h; not shown in service mode and probably does nothing PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY4") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // Internal code 4h + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // Internal code 8h + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // Internal code 7h + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Show Checksum") PORT_CODE(KEYCODE_X) // Internal code 5h; not shown in service mode but certainly does something + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("KEY5") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("UNUSED") - PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("SYSTEM") - PORT_DIPNAME( 0x0001, 0x0001, "Door" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_SERVICE( 0x0002, IP_ACTIVE_LOW ) - PORT_DIPNAME( 0x0004, 0x0004, "Opt. 1st" ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, "Reset" ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, "Cash" ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) // Only used in service mode? + PORT_SERVICE_NO_TOGGLE( 0x0002, IP_ACTIVE_LOW ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("Opt. 1st") // Only used in service mode? + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Reset") + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Cash") // Only used in service mode? // 0x40 Hopper - PORT_DIPNAME( 0x0080, 0x0080, "Meter" ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Meter") PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END From a475f61dd8e9b22a07c3b9f021b31c5095b4c387 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Fri, 5 Aug 2016 14:06:16 +1000 Subject: [PATCH 029/116] Fixed ROM_FILL when fill value is hex. --- src/emu/romload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index 989539259cc..2ee675f70cc 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -813,7 +813,7 @@ void rom_load_manager::fill_rom_data(const rom_entry *romp) fatalerror("Error in RomModule definition: FILL has an invalid length\n"); // for fill bytes, the byte that gets filled is the first byte of the hashdata string - UINT8 fill_byte = (UINT8)atoi(ROM_GETHASHDATA(romp)); + UINT8 fill_byte = (UINT8)strtol(ROM_GETHASHDATA(romp), nullptr, 0); // fill the data (filling value is stored in place of the hashdata) if(skip != 0) From 2c2d4be008b0c056a7995c6366717a7ad2ad710d Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Fri, 5 Aug 2016 01:00:41 -0400 Subject: [PATCH 030/116] Fixed TNZS ROM locations/labels [Brian A. Troha, Lord Nightmare] New Clone Added ------------------------------------------ The NewZealand Story (US, old version) (older PCB) [Alex Cmaylo, The Dumping Union] --- src/mame/drivers/tnzs.cpp | 172 ++++++++++++++++++++++---------------- src/mame/mame.lst | 11 +-- 2 files changed, 108 insertions(+), 75 deletions(-) diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp index 40e734cb960..9a033fd1a90 100644 --- a/src/mame/drivers/tnzs.cpp +++ b/src/mame/drivers/tnzs.cpp @@ -2397,7 +2397,7 @@ Taito, 1988 This PCB runs on Taito/Seta hardware. -PCB Layout +PCB Layout ("New style PCB" with 3x z80 and no M-chip, and a daughterboard w/roms and z80) ---------- M6100356A (on PCB) @@ -2467,23 +2467,23 @@ Notes: ROM_START( tnzs ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */ - ROM_LOAD( "b53-24.1", 0x00000, 0x20000, CRC(d66824c6) SHA1(fd381ac0dc52ce670c3fde320ea60a209e288a52) ) + ROM_LOAD( "b53-24.u1", 0x00000, 0x20000, CRC(d66824c6) SHA1(fd381ac0dc52ce670c3fde320ea60a209e288a52) ) ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */ - ROM_LOAD( "b53-25.3", 0x00000, 0x10000, CRC(d6ac4e71) SHA1(f3e71624a8a5e4e4c8a6aa01711ed26bdd5abf5a) ) + ROM_LOAD( "b53-25.u3", 0x00000, 0x10000, CRC(d6ac4e71) SHA1(f3e71624a8a5e4e4c8a6aa01711ed26bdd5abf5a) ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the third CPU */ - ROM_LOAD( "b53-26.34", 0x00000, 0x10000, CRC(cfd5649c) SHA1(4f6afccd535d39b41661dc3ccd17af125bfac015) ) + ROM_LOAD( "b53-26.u34", 0x00000, 0x10000, CRC(cfd5649c) SHA1(4f6afccd535d39b41661dc3ccd17af125bfac015) ) - ROM_REGION( 0x100000, "gfx1", 0 ) /* the newer PCBs have updated GFX rom labels, content is the same */ - ROM_LOAD( "b53-16.8", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) - ROM_LOAD( "b53-17.7", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) - ROM_LOAD( "b53-18.6", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) - ROM_LOAD( "b53-19.5", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) - ROM_LOAD( "b53-22.4", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) - ROM_LOAD( "b53-23.3", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) - ROM_LOAD( "b53-20.2", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) - ROM_LOAD( "b53-21.1", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) + ROM_REGION( 0x100000, "gfx1", 0 ) /* the newer PCBs have updated GFX rom labels, content is the same. Located on a SUB PCB */ + ROM_LOAD( "b53-16.ic7", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) /* Also labeled as U35L */ + ROM_LOAD( "b53-17.ic8", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) /* Also labeled as U35U */ + ROM_LOAD( "b53-18.ic9", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) /* Also labeled as U39L */ + ROM_LOAD( "b53-19.ic10", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) /* Also labeled as U39U */ + ROM_LOAD( "b53-22.ic11", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) /* Also labeled as U43L */ + ROM_LOAD( "b53-23.ic13", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) /* Also labeled as U43U */ + ROM_LOAD( "b53-20.ic12", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) /* Also labeled as U46L */ + ROM_LOAD( "b53-21.ic14", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) /* Also labeled as U46U */ ROM_REGION( 0x10000, "pal", 0 ) ROM_LOAD( "b53-15.pal16l8a.subpcb.ic6.jed", 0x00000, 0x01000, NO_DUMP) // on sub pcb @@ -2491,23 +2491,23 @@ ROM_END ROM_START( tnzsj ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */ - ROM_LOAD( "b53-24.1", 0x00000, 0x20000, CRC(d66824c6) SHA1(fd381ac0dc52ce670c3fde320ea60a209e288a52) ) + ROM_LOAD( "b53-24.u1", 0x00000, 0x20000, CRC(d66824c6) SHA1(fd381ac0dc52ce670c3fde320ea60a209e288a52) ) ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */ ROM_LOAD( "b53-27.u3", 0x00000, 0x10000, CRC(b3415fc3) SHA1(a12b1788509e2ac2b05a083f432eecdce00769f6) ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the third CPU */ - ROM_LOAD( "b53-26.34", 0x00000, 0x10000, CRC(cfd5649c) SHA1(4f6afccd535d39b41661dc3ccd17af125bfac015) ) + ROM_LOAD( "b53-26.u34", 0x00000, 0x10000, CRC(cfd5649c) SHA1(4f6afccd535d39b41661dc3ccd17af125bfac015) ) - ROM_REGION( 0x100000, "gfx1", 0 ) /* the newer PCBs have updated GFX rom labels, content is the same */ - ROM_LOAD( "b53-16.8", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) - ROM_LOAD( "b53-17.7", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) - ROM_LOAD( "b53-18.6", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) - ROM_LOAD( "b53-19.5", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) - ROM_LOAD( "b53-22.4", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) - ROM_LOAD( "b53-23.3", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) - ROM_LOAD( "b53-20.2", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) - ROM_LOAD( "b53-21.1", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) + ROM_REGION( 0x100000, "gfx1", 0 ) /* the newer PCBs have updated GFX rom labels, content is the same. Located on a SUB PCB */ + ROM_LOAD( "b53-16.ic7", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) /* Also labeled as U35L */ + ROM_LOAD( "b53-17.ic8", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) /* Also labeled as U35U */ + ROM_LOAD( "b53-18.ic9", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) /* Also labeled as U39L */ + ROM_LOAD( "b53-19.ic10", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) /* Also labeled as U39U */ + ROM_LOAD( "b53-22.ic11", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) /* Also labeled as U43L */ + ROM_LOAD( "b53-23.ic13", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) /* Also labeled as U43U */ + ROM_LOAD( "b53-20.ic12", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) /* Also labeled as U46L */ + ROM_LOAD( "b53-21.ic14", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) /* Also labeled as U46U */ ROM_REGION( 0x10000, "pal", 0 ) ROM_LOAD( "b53-15.pal16l8a.subpcb.ic6.jed", 0x00000, 0x01000, NO_DUMP) // on sub pcb @@ -2522,89 +2522,119 @@ Taito ID: K1100356A MAIN PCB Seta ID: P0-041A */ -/* This pcb is similar but not identical to the Chuka Taisen pcb above; - there is an M-chip i8742 (with Taito silkscreen) and no 3rd z80. - There is no sub-pcb like the later TNZS pcb has. */ +/* This pcb is similar but not identical to the Chuka Taisen pcb; + There is an M-chip i8742 (with Taito silkscreen) and no 3rd z80. + There is no daughter-pcb like the later TNZS pcb has. */ ROM_START( tnzsjo ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */ - ROM_LOAD( "b53-10.u32", 0x00000, 0x20000, CRC(a73745c6) SHA1(73eb38e75e08312d752332f988dc655084b4a86d) ) + ROM_LOAD( "b53-10.27c1001d.u32", 0x00000, 0x20000, CRC(a73745c6) SHA1(73eb38e75e08312d752332f988dc655084b4a86d) ) ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */ - ROM_LOAD( "b53-11.u38", 0x00000, 0x10000, CRC(9784d443) SHA1(bc3647aac9974031dbe4898417fbaa99841f9548) ) + ROM_LOAD( "b53-11.27c512.u38", 0x00000, 0x10000, CRC(9784d443) SHA1(bc3647aac9974031dbe4898417fbaa99841f9548) ) ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */ ROM_LOAD( "b53-09.u46", 0x0000, 0x0800, CRC(a4bfce19) SHA1(9340862d5bdc1ad4799dc92cae9bce1428b47478) ) ROM_REGION( 0x100000, "gfx1", 0 ) /* ROMs taken from another set (the ones from this set were read incorrectly) */ - ROM_LOAD( "b53-08.8", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) - ROM_LOAD( "b53-07.7", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) - ROM_LOAD( "b53-06.6", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) - ROM_LOAD( "b53-05.5", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) - ROM_LOAD( "b53-04.4", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) - ROM_LOAD( "b53-03.3", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) - ROM_LOAD( "b53-02.2", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) - ROM_LOAD( "b53-01.1", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) + ROM_LOAD( "b53-08.u8", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) + ROM_LOAD( "b53-07.u7", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) + ROM_LOAD( "b53-06.u6", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) + ROM_LOAD( "b53-05.u5", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) + ROM_LOAD( "b53-04.u4", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) + ROM_LOAD( "b53-03.u3", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) + ROM_LOAD( "b53-02.u2", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) + ROM_LOAD( "b53-01.u1", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) - ROM_REGION( 0x10000, "pal", 0 ) /* these are marked b06 and so are probably shared with extermination */ - ROM_LOAD( "b06-12.pal16l8a.ic26.jed", 0x00000, 0x01000, NO_DUMP) - ROM_LOAD( "b06-13.pal16l8a.ic25.jed", 0x01000, 0x01000, NO_DUMP) - ROM_LOAD( "b06-14.pal16x8a.icxx.jed", 0x02000, 0x01000, NO_DUMP) // does this chip exist? + ROM_REGION( 0x10000, "pal", 0 ) /* these are probably shared with extermination except for u35 */ + ROM_LOAD( "b06-12.pal16l8a.u26.jed", 0x00000, 0x01000, NO_DUMP) + ROM_LOAD( "b06-13.pal16l8a.u25.jed", 0x01000, 0x01000, NO_DUMP) + ROM_LOAD( "b53-12.pal16l8a.u35.jed", 0x02000, 0x01000, NO_DUMP) + ROM_LOAD( "b06-101.pal16l8a.u36.jed", 0x03000, 0x01000, NO_DUMP) +ROM_END + +ROM_START( tnzsuo ) + ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */ + ROM_LOAD( "b53-10.27c1001d.u32", 0x00000, 0x20000, CRC(a73745c6) SHA1(73eb38e75e08312d752332f988dc655084b4a86d) ) + + ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */ + ROM_LOAD( "b53-13.27c512.u38", 0x00000, 0x10000, CRC(c09f4d28) SHA1(f1fd3202869738e17abcbb757f9ce7260707dd3d) ) + + ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */ + ROM_LOAD( "b53-09.u46", 0x0000, 0x0800, CRC(a4bfce19) SHA1(9340862d5bdc1ad4799dc92cae9bce1428b47478) ) + + ROM_REGION( 0x100000, "gfx1", 0 ) + ROM_LOAD( "b53-08.u8", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) + ROM_LOAD( "b53-07.u7", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) + ROM_LOAD( "b53-06.u6", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) + ROM_LOAD( "b53-05.u5", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) + ROM_LOAD( "b53-04.u4", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) + ROM_LOAD( "b53-03.u3", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) + ROM_LOAD( "b53-02.u2", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) + ROM_LOAD( "b53-01.u1", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) + + ROM_REGION( 0x10000, "pal", 0 ) /* these are probably shared with extermination except for u35 */ + ROM_LOAD( "b06-12.pal16l8a.u26.jed", 0x00000, 0x01000, NO_DUMP) + ROM_LOAD( "b06-13.pal16l8a.u25.jed", 0x01000, 0x01000, NO_DUMP) + ROM_LOAD( "b53-12.pal16l8a.u35.jed", 0x02000, 0x01000, NO_DUMP) + ROM_LOAD( "b06-101.pal16l8a.u36.jed", 0x03000, 0x01000, NO_DUMP) ROM_END ROM_START( tnzso ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */ - ROM_LOAD( "u32", 0x00000, 0x20000, CRC(edf3b39e) SHA1(be221c99e50795d569611dba454c3954a259a859) ) + ROM_LOAD( "b53-unknown.27c1001d.u32", 0x00000, 0x20000, CRC(edf3b39e) SHA1(be221c99e50795d569611dba454c3954a259a859) ) // ROM LABEL FOR THIS SET IS UNKNOWN ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */ - ROM_LOAD( "u38", 0x00000, 0x10000, CRC(60340d63) SHA1(12a26d19dc8e407e502f25617a5a4c9cea131ce2) ) + ROM_LOAD( "b53-unknown.27c512.u38", 0x00000, 0x10000, CRC(60340d63) SHA1(12a26d19dc8e407e502f25617a5a4c9cea131ce2) ) // ROM LABEL FOR THIS SET IS UNKNOWN ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */ ROM_LOAD( "b53-09.u46", 0x0000, 0x0800, CRC(a4bfce19) SHA1(9340862d5bdc1ad4799dc92cae9bce1428b47478) ) ROM_REGION( 0x100000, "gfx1", 0 ) /* ROMs taken from another set (the ones from this set were read incorrectly) */ - ROM_LOAD( "b53-08.8", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) - ROM_LOAD( "b53-07.7", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) - ROM_LOAD( "b53-06.6", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) - ROM_LOAD( "b53-05.5", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) - ROM_LOAD( "b53-04.4", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) - ROM_LOAD( "b53-03.3", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) - ROM_LOAD( "b53-02.2", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) - ROM_LOAD( "b53-01.1", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) + ROM_LOAD( "b53-08.u8", 0x00000, 0x20000, CRC(c3519c2a) SHA1(30fe7946fbc95ab6b3ccb6944fb24bf47bf3d743) ) + ROM_LOAD( "b53-07.u7", 0x20000, 0x20000, CRC(2bf199e8) SHA1(4ed73e4f00ae2f5f4028a0ea5ae3cd238863a370) ) + ROM_LOAD( "b53-06.u6", 0x40000, 0x20000, CRC(92f35ed9) SHA1(5fdd8d6ddbb7be9887af3c8dea9ad3b58c4e86f9) ) + ROM_LOAD( "b53-05.u5", 0x60000, 0x20000, CRC(edbb9581) SHA1(539396a01ca0b69455f000d446759b232530b542) ) + ROM_LOAD( "b53-04.u4", 0x80000, 0x20000, CRC(59d2aef6) SHA1(b657b7603c3eb5f169000d38497ebb93f26f7832) ) + ROM_LOAD( "b53-03.u3", 0xa0000, 0x20000, CRC(74acfb9b) SHA1(90b544ed7ede7565660bdd13c94c15c54423cda9) ) + ROM_LOAD( "b53-02.u2", 0xc0000, 0x20000, CRC(095d0dc0) SHA1(ced2937d0594fa00ae344a4e3a3cba23772dc160) ) + ROM_LOAD( "b53-01.u1", 0xe0000, 0x20000, CRC(9800c54d) SHA1(761647177d621ac2cdd8b009876eed35809f3c92) ) ROM_REGION( 0x10000, "pal", 0 ) /* PALS not directly observed on this board but assumed to exist */ - /* these are marked b06 and so are probably shared with extermination */ - ROM_LOAD( "b06-12.pal16l8a.ic26.jed", 0x00000, 0x01000, NO_DUMP) - ROM_LOAD( "b06-13.pal16l8a.ic25.jed", 0x01000, 0x01000, NO_DUMP) - ROM_LOAD( "b06-14.pal16x8a.icxx.jed", 0x02000, 0x01000, NO_DUMP) // does this chip exist? + /* these are probably shared with extermination except for u35 */ + ROM_LOAD( "b06-12.pal16l8a.u26.jed", 0x00000, 0x01000, NO_DUMP) + ROM_LOAD( "b06-13.pal16l8a.u25.jed", 0x01000, 0x01000, NO_DUMP) + ROM_LOAD( "b53-12.pal16l8a.u35.jed", 0x02000, 0x01000, NO_DUMP) + ROM_LOAD( "b06-101.pal16l8a.u36.jed", 0x03000, 0x01000, NO_DUMP) ROM_END -ROM_START( tnzsop ) +ROM_START( tnzsop ) // prototype/location test version? ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */ - ROM_LOAD( "ns_c-11.rom", 0x00000, 0x20000, CRC(3c1dae7b) SHA1(0004fccc171714c80565326f8690f9662c5b75d9) ) + ROM_LOAD( "ns_c-11.27c1001d.u32", 0x00000, 0x20000, CRC(3c1dae7b) SHA1(0004fccc171714c80565326f8690f9662c5b75d9) ) ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */ - ROM_LOAD( "ns_e-3.rom", 0x00000, 0x10000, CRC(c7662e96) SHA1(be28298bfde4e3867cfe75633ffb0f8611dbbd8b) ) + ROM_LOAD( "ns_e-3.27c512.u38", 0x00000, 0x10000, CRC(c7662e96) SHA1(be28298bfde4e3867cfe75633ffb0f8611dbbd8b) ) ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */ ROM_LOAD( "b53-09.u46", 0x0000, 0x0800, CRC(a4bfce19) SHA1(9340862d5bdc1ad4799dc92cae9bce1428b47478) ) ROM_REGION( 0x100000, "gfx1", 0 ) - ROM_LOAD( "ns_a13.rom", 0x00000, 0x20000, CRC(7e0bd5bb) SHA1(95dfb00ec915778e02d8bfa996735ab817191adc) ) - ROM_LOAD( "ns_a12.rom", 0x20000, 0x20000, CRC(95880726) SHA1(f4fdedd23e80a6ccf32f737ab4bc57f9fc0925be) ) - ROM_LOAD( "ns_a10.rom", 0x40000, 0x20000, CRC(2bc4c053) SHA1(cd7668a7733e5e80c2c566d0cf63c4310e5743b4) ) - ROM_LOAD( "ns_a08.rom", 0x60000, 0x20000, CRC(8ff8d88c) SHA1(31977e39ad048a077e9b5bd712ff66b14a466d27) ) - ROM_LOAD( "ns_a07.rom", 0x80000, 0x20000, CRC(291bcaca) SHA1(4f659a0cd2ff6b4ec04ab95ee8a670222c402c2b) ) - ROM_LOAD( "ns_a05.rom", 0xa0000, 0x20000, CRC(6e762e20) SHA1(66731fe4053b9c09bc9c95d10aba212db08b4636) ) - ROM_LOAD( "ns_a04.rom", 0xc0000, 0x20000, CRC(e1fd1b9d) SHA1(6027491b927c2ab9c77fbf8895da1abcfbe32d62) ) - ROM_LOAD( "ns_a02.rom", 0xe0000, 0x20000, CRC(2ab06bda) SHA1(2b208b564e55c258665e1f66b26fe14a6c68eb96) ) + ROM_LOAD( "ns_a13.rom.u8", 0x00000, 0x20000, CRC(7e0bd5bb) SHA1(95dfb00ec915778e02d8bfa996735ab817191adc) ) + ROM_LOAD( "ns_a12.rom.u7", 0x20000, 0x20000, CRC(95880726) SHA1(f4fdedd23e80a6ccf32f737ab4bc57f9fc0925be) ) + ROM_LOAD( "ns_a10.rom.u6", 0x40000, 0x20000, CRC(2bc4c053) SHA1(cd7668a7733e5e80c2c566d0cf63c4310e5743b4) ) + ROM_LOAD( "ns_a08.rom.u5", 0x60000, 0x20000, CRC(8ff8d88c) SHA1(31977e39ad048a077e9b5bd712ff66b14a466d27) ) + ROM_LOAD( "ns_a07.rom.u4", 0x80000, 0x20000, CRC(291bcaca) SHA1(4f659a0cd2ff6b4ec04ab95ee8a670222c402c2b) ) + ROM_LOAD( "ns_a05.rom.u3", 0xa0000, 0x20000, CRC(6e762e20) SHA1(66731fe4053b9c09bc9c95d10aba212db08b4636) ) + ROM_LOAD( "ns_a04.rom.u2", 0xc0000, 0x20000, CRC(e1fd1b9d) SHA1(6027491b927c2ab9c77fbf8895da1abcfbe32d62) ) + ROM_LOAD( "ns_a02.rom.u1", 0xe0000, 0x20000, CRC(2ab06bda) SHA1(2b208b564e55c258665e1f66b26fe14a6c68eb96) ) ROM_REGION( 0x10000, "pal", 0 ) /* PALS not directly observed on this board but assumed to exist */ - /* these are marked b06 and so are probably shared with extermination */ - ROM_LOAD( "b06-12.pal16l8a.ic26.jed", 0x00000, 0x01000, NO_DUMP) - ROM_LOAD( "b06-13.pal16l8a.ic25.jed", 0x01000, 0x01000, NO_DUMP) - ROM_LOAD( "b06-14.pal16x8a.icxx.jed", 0x02000, 0x01000, NO_DUMP) // does this chip exist? + /* these are probably shared with extermination except for u35 */ + ROM_LOAD( "b06-12.pal16l8a.u26.jed", 0x00000, 0x01000, NO_DUMP) + ROM_LOAD( "b06-13.pal16l8a.u25.jed", 0x01000, 0x01000, NO_DUMP) + ROM_LOAD( "b53-12.pal16l8a.u35.jed", 0x02000, 0x01000, NO_DUMP) // likely has a different name on the proto pcb... + ROM_LOAD( "b06-101.pal16l8a.u36.jed", 0x03000, 0x01000, NO_DUMP) ROM_END /* @@ -2613,6 +2643,7 @@ Taito, 1988 This PCB runs on Taito/Seta hardware and the exact same newer PCB as The New Zealand Story. As such, everything here also applies to The New Zealand Story. +Unlike the newer The New Zealand Story pcb, Kabuki Z lacks the daughterboard with the 3rd z80. PCB Layout ---------- @@ -2740,6 +2771,7 @@ GAME( 1988, chukataij, chukatai, tnzs, chukatau, tnzs_state, chukatai, RO GAME( 1988, tnzs, 0, tnzsb, tnzs, tnzs_state, tnzsb, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, new version) (newer PCB)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, tnzsj, tnzs, tnzsb, tnzsj, tnzs_state, tnzsb, ROT0, "Taito Corporation", "The NewZealand Story (Japan, new version) (newer PCB)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, tnzsjo, tnzs, tnzs, tnzsjo, tnzs_state, tnzs, ROT0, "Taito Corporation", "The NewZealand Story (Japan, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, tnzsuo, tnzs, tnzs, tnzsjo, tnzs_state, tnzs, ROT0, "Taito America Corporation", "The NewZealand Story (US, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, tnzso, tnzs, tnzs, tnzsop, tnzs_state, tnzs, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, old version) (older PCB)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, tnzsop, tnzs, tnzs, tnzsop, tnzs_state, tnzs, ROT0, "Taito Corporation Japan", "The NewZealand Story (World, prototype?) (older PCB)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 424854d31e3..db85aa377b4 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35385,11 +35385,12 @@ kageki // B35 (c) 1988 Taito America Corporation + Roms kagekih // B35 (c) 1992 (hack) kagekij // B35 (c) 1988 Taito Corporation (Japan) plumppop // A98 (c) 1987 Taito Corporation (Japan) -tnzs // B53 (c) 1988 Taito Corporation Japan (World) (new logo) -tnzsj // B53 (c) 1988 Taito Corporation (Japan) (new logo) -tnzsjo // B53 (c) 1988 Taito Corporation (Japan) (new logo) -tnzso // B53 (c) 1988 Taito Corporation Japan (World) (old logo) -tnzsop // B53?(c) 1988 Taito Corporation Japan (World) (old logo) +tnzs // B53 (c) 1988 Taito Corporation Japan (World) (new pcb) +tnzsj // B53 (c) 1988 Taito Corporation (Japan) (new pcb) +tnzsjo // B53 (c) 1988 Taito Corporation (Japan) (old pcb) +tnzsuo // B53 (c) 1988 Taito America Corporation (US) (old pcb) +tnzso // B53 (c) 1988 Taito Corporation Japan (World) (old pcb) +tnzsop // B53?(c) 1988 Taito Corporation Japan (World?) (old pcb, prototype) @source:toaplan1.cpp demonwld // TP-O16 (c) 1990 Toaplan (+ Taito license when set to Japan) From 3030f52a776ae097332f296beee8a5fb262e3276 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 5 Aug 2016 10:00:22 +0200 Subject: [PATCH 031/116] d6809.cpp: MACHINE_IS_SKELETON already covers MACHINE_NOT_WORKING (nw) --- src/mame/drivers/d6809.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp index 1d6a17aecbe..9e17ac72fdf 100644 --- a/src/mame/drivers/d6809.cpp +++ b/src/mame/drivers/d6809.cpp @@ -164,4 +164,4 @@ ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, d6809, 0, 0, d6809, d6809, driver_device, 0, "Dunfield", "6809 Portable", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW) +COMP( 1983, d6809, 0, 0, d6809, d6809, driver_device, 0, "Dunfield", "6809 Portable", MACHINE_IS_SKELETON | MACHINE_NO_SOUND_HW) From 7484fa999c6c5c80d9003ef10b7091f1154bbcf0 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 5 Aug 2016 12:56:55 +0200 Subject: [PATCH 032/116] fix regression: using IPT_START in sms makes mame think joypad 1 is occupied and inserts joypad 2&3 instead of joypad 1&2 --- src/mame/drivers/amstrad.cpp | 2 +- src/mame/drivers/sms.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp index 4bebdba0132..fb2d49a8553 100644 --- a/src/mame/drivers/amstrad.cpp +++ b/src/mame/drivers/amstrad.cpp @@ -627,7 +627,7 @@ static INPUT_PORTS_START( gx4000 ) PORT_START("kbrow.3") PORT_BIT(0x07, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_START ) PORT_NAME(DEF_STR(Pause)) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(DEF_STR(Pause)) PORT_CODE(KEYCODE_1) PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("kbrow.4") diff --git a/src/mame/drivers/sms.cpp b/src/mame/drivers/sms.cpp index 1e930dc1bb2..937b714c4dd 100644 --- a/src/mame/drivers/sms.cpp +++ b/src/mame/drivers/sms.cpp @@ -377,7 +377,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( sms ) PORT_START("PAUSE") PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START ) PORT_NAME(DEF_STR(Pause)) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME(DEF_STR(Pause)) PORT_CODE(KEYCODE_1) INPUT_PORTS_END static INPUT_PORTS_START( sg1000m3 ) From c77310389e095b3c93a0cb7c238b5e8dcf1dd152 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Fri, 5 Aug 2016 08:29:32 -0400 Subject: [PATCH 033/116] Removed src/lib/util/cstrpool.[cpp|h]; it is no longer used --- scripts/src/lib.lua | 2 - src/lib/util/cstrpool.cpp | 114 -------------------------------------- src/lib/util/cstrpool.h | 65 ---------------------- 3 files changed, 181 deletions(-) delete mode 100644 src/lib/util/cstrpool.cpp delete mode 100644 src/lib/util/cstrpool.h diff --git a/scripts/src/lib.lua b/scripts/src/lib.lua index 7353c87c1d9..1549084c918 100644 --- a/scripts/src/lib.lua +++ b/scripts/src/lib.lua @@ -48,8 +48,6 @@ project "utils" MAME_DIR .. "src/lib/util/corestr.h", MAME_DIR .. "src/lib/util/coreutil.cpp", MAME_DIR .. "src/lib/util/coreutil.h", - MAME_DIR .. "src/lib/util/cstrpool.cpp", - MAME_DIR .. "src/lib/util/cstrpool.h", MAME_DIR .. "src/lib/util/delegate.cpp", MAME_DIR .. "src/lib/util/delegate.h", MAME_DIR .. "src/lib/util/flac.cpp", diff --git a/src/lib/util/cstrpool.cpp b/src/lib/util/cstrpool.cpp deleted file mode 100644 index 5a9e571366b..00000000000 --- a/src/lib/util/cstrpool.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - cstrpool.c - - Constant string pool helper class. - -***************************************************************************/ - -#include - -#include "cstrpool.h" - - -//************************************************************************** -// CONST STRING POOL -//************************************************************************** - -//------------------------------------------------- -// const_string_pool - constructor -//------------------------------------------------- - -const_string_pool::const_string_pool() -{ -} - - -//------------------------------------------------- -// add - add a string to the string pool -//------------------------------------------------- - -const char *const_string_pool::add(const char *string) -{ - // if nullptr or a small number (for some hash strings), just return as-is - if (FPTR(string) < 0x100) - return string; - - // scan to find space - for (pool_chunk *chunk = m_chunklist.first(); chunk != nullptr; chunk = chunk->next()) - { - const char *result = chunk->add(string); - if (result != nullptr) - return result; - } - - // no space anywhere, create a new pool and prepend it (so it gets used first) - const char *result = m_chunklist.prepend(*global_alloc(pool_chunk)).add(string); - assert(result != nullptr); - return result; -} - - -//------------------------------------------------- -// contains - determine if the given string -// pointer lives in the pool -//------------------------------------------------- - -bool const_string_pool::contains(const char *string) -{ - // if nullptr or a small number (for some hash strings), then yes, effectively - if (FPTR(string) < 0x100) - return true; - - // scan to find it - for (pool_chunk *chunk = m_chunklist.first(); chunk != nullptr; chunk = chunk->next()) - if (chunk->contains(string)) - return true; - - return false; -} - -/** - * @fn const_string_pool::pool_chunk::pool_chunk() - * - * @brief ------------------------------------------------- - * pool_chunk - constructor - * -------------------------------------------------. - */ - -const_string_pool::pool_chunk::pool_chunk() - : m_next(nullptr), - m_used(0) -{ -} - -/** - * @fn const char *const_string_pool::pool_chunk::add(const char *string) - * - * @brief ------------------------------------------------- - * add - add a string to this pool - * -------------------------------------------------. - * - * @param string The string to add. - * - * @return null if it fails, else a char*. - */ - -const char *const_string_pool::pool_chunk::add(const char *string) -{ - // get the length of the string (no string can be longer than a full pool) - int bytes = strlen(string) + 1; - assert(bytes < POOL_SIZE); - - // if too big, return nullptr - if (m_used + bytes > POOL_SIZE) - return nullptr; - - // allocate, copy, and return the memory - char *dest = &m_buffer[m_used]; - m_used += bytes; - memcpy(dest, string, bytes); - return dest; -} diff --git a/src/lib/util/cstrpool.h b/src/lib/util/cstrpool.h deleted file mode 100644 index ff6b4c4c0ee..00000000000 --- a/src/lib/util/cstrpool.h +++ /dev/null @@ -1,65 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/********************************************************************* - - cstrpool.h - - Constant string pool helper class. - -*********************************************************************/ - -#pragma once - -#ifndef __CSTRPOOL_H_ -#define __CSTRPOOL_H_ - -#include "coretmpl.h" - - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -// ======================> const_string_pool - -// a pool to hold constant strings efficiently -class const_string_pool -{ -public: - // construction - const_string_pool(); - - // operations - void reset() { m_chunklist.reset(); } - const char *add(const char *string); - bool contains(const char *string); - -private: - // shared string pool - class pool_chunk - { - static const int POOL_SIZE = 4096; - friend class simple_list; - - public: - // construction - pool_chunk(); - - // getters - pool_chunk *next() const { return m_next; } - - // operations - const char *add(const char *string); - bool contains(const char *string) const { return (string >= m_buffer && string < &m_buffer[POOL_SIZE]); } - - private: - // internal state - pool_chunk * m_next; - UINT32 m_used; - char m_buffer[POOL_SIZE]; - }; - simple_list m_chunklist; -}; - - -#endif From 5b33f34a53b6e1b0de78e7f580cb5804bf74dfe4 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sat, 6 Aug 2016 01:48:00 +1000 Subject: [PATCH 034/116] Play_3: added some meat to the bones.. (nw) --- src/mame/drivers/play_3.cpp | 192 +++++++++++++++++++++++++++++------- 1 file changed, 155 insertions(+), 37 deletions(-) diff --git a/src/mame/drivers/play_3.cpp b/src/mame/drivers/play_3.cpp index ac95103507e..76231ff9a41 100644 --- a/src/mame/drivers/play_3.cpp +++ b/src/mame/drivers/play_3.cpp @@ -1,55 +1,193 @@ // license:BSD-3-Clause -// copyright-holders:Miodrag Milanovic +// copyright-holders:Miodrag Milanovic, Robbbert /********************************************************************************** - Pinball - Playmatic MPU 3 +PINBALL +Playmatic MPU 3 + +Status: +- Main board is emulated and working (currently runs the initial test mode) +- Displays to add +- Switches, lamps, solenoids to add +- Sound board to emulate +- Mechanical sounds to add ***********************************************************************************/ #include "emu.h" #include "cpu/cosmac/cosmac.h" +#include "machine/nvram.h" +#include "machine/clock.h" +#include "machine/7474.h" class play_3_state : public driver_device { public: play_3_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_4013a(*this, "4013a") + , m_4013b(*this, "4013b") { } -protected: - - // devices - required_device m_maincpu; - - // driver_device overrides - virtual void machine_reset() override; -public: DECLARE_DRIVER_INIT(play_3); + DECLARE_WRITE8_MEMBER(port01_w); + DECLARE_WRITE8_MEMBER(port02_w); + DECLARE_WRITE8_MEMBER(port03_w); + DECLARE_READ8_MEMBER(port04_r); + DECLARE_READ8_MEMBER(port05_r); + DECLARE_WRITE8_MEMBER(port06_w); + DECLARE_WRITE8_MEMBER(port07_w); + DECLARE_READ_LINE_MEMBER(clear_r); + DECLARE_READ_LINE_MEMBER(ef1_r); + DECLARE_READ_LINE_MEMBER(ef4_r); + DECLARE_WRITE_LINE_MEMBER(q4013a_w); + DECLARE_WRITE_LINE_MEMBER(clock_w); + DECLARE_WRITE_LINE_MEMBER(clock2_w); + +private: + UINT16 m_clockcnt; + UINT16 m_resetcnt; + virtual void machine_reset() override; + required_device m_maincpu; + required_device m_4013a; + required_device m_4013b; }; static ADDRESS_MAP_START( play_3_map, AS_PROGRAM, 8, play_3_state ) - AM_RANGE(0x0000, 0xffff) AM_NOP + AM_RANGE(0x0000, 0x1fff) AM_MIRROR(0x4000) AM_ROM // 2x 2732 + //AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0x4f00) AM_ROM // undumped PAL + AM_RANGE(0x8000, 0x80ff) AM_MIRROR(0x7f00) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed ADDRESS_MAP_END +static ADDRESS_MAP_START( play_3_io, AS_IO, 8, play_3_state ) + AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits + AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) + AM_RANGE(0x03, 0x03) AM_WRITE(port03_w) + AM_RANGE(0x04, 0x04) AM_READ(port04_r) + AM_RANGE(0x05, 0x05) AM_READ(port05_r) + AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments + AM_RANGE(0x07, 0x07) AM_WRITE(port07_w) +ADDRESS_MAP_END + + static INPUT_PORTS_START( play_3 ) INPUT_PORTS_END void play_3_state::machine_reset() { + m_clockcnt = 0; + m_resetcnt = 0; + m_4013b->d_w(1); } -DRIVER_INIT_MEMBER(play_3_state,play_3) +WRITE8_MEMBER( play_3_state::port01_w ) { } +WRITE8_MEMBER( play_3_state::port02_w ) +{ +} + +WRITE8_MEMBER( play_3_state::port03_w ) +{ +} + +READ8_MEMBER( play_3_state::port04_r ) +{ + return 0xff; +} + +READ8_MEMBER( play_3_state::port05_r ) +{ + return 0xff; +} + +WRITE8_MEMBER( play_3_state::port06_w ) +{ +} + +WRITE8_MEMBER( play_3_state::port07_w ) +{ + m_4013b->clear_w(0); + m_4013b->clear_w(1); +} + +READ_LINE_MEMBER( play_3_state::clear_r ) +{ + // A hack to make the machine reset itself on boot + if (m_resetcnt < 0xffff) + m_resetcnt++; + return (m_resetcnt == 0xff00) ? 0 : 1; +} + +READ_LINE_MEMBER( play_3_state::ef1_r ) +{ + return BIT(m_clockcnt, 10); +} + +READ_LINE_MEMBER( play_3_state::ef4_r ) +{ + return 1; // reset button +} + +DRIVER_INIT_MEMBER( play_3_state, play_3 ) +{ +} + +WRITE_LINE_MEMBER( play_3_state::clock_w ) +{ + m_4013a->clock_w(state); + + if (!state) + { + m_clockcnt++; + // simulate 4020 chip + if ((m_clockcnt & 0x3ff) == 0) + m_4013b->preset_w(BIT(m_clockcnt, 10)); // Q10 output + } +} + +WRITE_LINE_MEMBER( play_3_state::clock2_w ) +{ + m_4013b->clock_w(state); + m_maincpu->ef3_w(!state); +} + +WRITE_LINE_MEMBER( play_3_state::q4013a_w ) +{ + m_clockcnt = 0; +} + static MACHINE_CONFIG_START( play_3, play_3_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CDP1802, 2950000) MCFG_CPU_PROGRAM_MAP(play_3_map) + MCFG_CPU_IO_MAP(play_3_io) + MCFG_COSMAC_WAIT_CALLBACK(VCC) + MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_3_state, clear_r)) + MCFG_COSMAC_EF1_CALLBACK(READLINE(play_3_state, ef1_r)) + MCFG_COSMAC_EF4_CALLBACK(READLINE(play_3_state, ef4_r)) + MCFG_COSMAC_Q_CALLBACK(DEVWRITELINE("4013a", ttl7474_device, clear_w)) + + MCFG_NVRAM_ADD_0FILL("nvram") + + MCFG_DEVICE_ADD("tpb_clock", CLOCK, 2950000 / 8) // TPB line from CPU + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_3_state, clock_w)) + + MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("4013b", ttl7474_device, clock_w)) + + // This is actually a 4013 chip (has 2 RS flipflops) + MCFG_DEVICE_ADD("4013a", TTL7474, 0) + MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("4013a", ttl7474_device, d_w)) + MCFG_7474_OUTPUT_CB(WRITELINE(play_3_state, q4013a_w)) + + MCFG_DEVICE_ADD("4013b", TTL7474, 0) + MCFG_7474_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, ef2_w)) + MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, int_w)) MCFG_DEVCB_INVERT // int is reversed in mame MACHINE_CONFIG_END /*------------------------------------------------------------------- @@ -59,41 +197,21 @@ MACHINE_CONFIG_END ROM_START(megaaton) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("cpumegat.bin", 0x0000, 0x2000, CRC(7e7a4ede) SHA1(3194b367cbbf6e0cb2629cd5d82ddee6fe36985a)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_REGION(0x10000, "cpu2", 0) ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761)) - ROM_RELOAD(0x6000, 0x1000) - ROM_RELOAD(0xa000, 0x1000) - ROM_RELOAD(0xe000, 0x1000) ROM_END ROM_START(megaatona) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("mega_u12.bin", 0x0000, 0x1000, CRC(65761b02) SHA1(dd9586eaf70698ef7a80ce1be293322f64829aea)) - ROM_RELOAD(0x4000, 0x1000) - ROM_RELOAD(0x8000, 0x1000) - ROM_RELOAD(0xc000, 0x1000) ROM_LOAD("mega_u11.bin", 0x1000, 0x1000, CRC(513f3683) SHA1(0f080a33426df1ffdb14e9b2e6382304e201e335)) - ROM_RELOAD(0x5000, 0x1000) - ROM_RELOAD(0x9000, 0x1000) - ROM_RELOAD(0xd000, 0x1000) + ROM_REGION(0x10000, "cpu2", 0) ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761)) - ROM_RELOAD(0x6000, 0x1000) - ROM_RELOAD(0xa000, 0x1000) - ROM_RELOAD(0xe000, 0x1000) ROM_END -GAME(1983, megaaton, 0, play_3, play_3, play_3_state, play_3, ROT0, "Playmatic", "Meg-Aaton", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1983, megaaton, 0, play_3, play_3, play_3_state, play_3, ROT0, "Playmatic", "Meg-Aaton", MACHINE_IS_SKELETON_MECHANICAL) GAME(1983, megaatona, megaaton, play_3, play_3, play_3_state, play_3, ROT0, "Playmatic", "Meg-Aaton (alternate set)", MACHINE_IS_SKELETON_MECHANICAL) From fc1c242ff49d396319797f259a8697a7152ea6e3 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sat, 6 Aug 2016 02:07:58 +1000 Subject: [PATCH 035/116] Play_3: there was an unused function. (nw) --- src/mame/drivers/play_3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/play_3.cpp b/src/mame/drivers/play_3.cpp index 76231ff9a41..a2cbdb9f5d7 100644 --- a/src/mame/drivers/play_3.cpp +++ b/src/mame/drivers/play_3.cpp @@ -178,7 +178,7 @@ static MACHINE_CONFIG_START( play_3, play_3_state ) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_3_state, clock_w)) MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector - MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("4013b", ttl7474_device, clock_w)) + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_3_state, clock2_w)) // This is actually a 4013 chip (has 2 RS flipflops) MCFG_DEVICE_ADD("4013a", TTL7474, 0) From c74ea067a3d9444296b0bdd67905d9c356dc26ec Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 5 Aug 2016 19:23:26 +0200 Subject: [PATCH 036/116] cclimber.cpp (bagmanf): got it to boot, gfx are completely wrong though (nw) --- src/mame/drivers/cclimber.cpp | 67 +++++++++++++++++++++++++++++++++-- src/mame/includes/cclimber.h | 1 + src/mame/video/cclimber.cpp | 2 +- 3 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp index 0bad5858b9d..c83fc09decd 100644 --- a/src/mame/drivers/cclimber.cpp +++ b/src/mame/drivers/cclimber.cpp @@ -591,6 +591,54 @@ static INPUT_PORTS_START( ckong ) PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( bagmanf ) + PORT_START("P1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) + + PORT_START("P2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN4 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + + PORT_START("DSW") + PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") + PORT_DIPSETTING( 0x03, "2" ) + PORT_DIPSETTING( 0x02, "3" ) + PORT_DIPSETTING( 0x01, "4" ) + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:3") + PORT_DIPSETTING( 0x00, "2C/1C 1C/1C 1C/3C 1C/7C" ) + PORT_DIPSETTING( 0x04, "1C/1C 1C/2C 1C/6C 1C/14C" ) + PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5") + PORT_DIPSETTING( 0x18, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Language ) ) PORT_DIPLOCATION("SW1:6") + PORT_DIPSETTING( 0x20, DEF_STR( English ) ) + PORT_DIPSETTING( 0x00, DEF_STR( French ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:7") + PORT_DIPSETTING( 0x40, "30000" ) + PORT_DIPSETTING( 0x00, "40000" ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) ) /* Cabinet type set through edge connector, not dip switch (verified on real pcb) */ + PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) + + PORT_START("SYSTEM") +INPUT_PORTS_END + /* Similar to normal Crazy Kong except for the lives per game */ static INPUT_PORTS_START( ckongb ) PORT_INCLUDE( ckong ) @@ -1035,6 +1083,12 @@ INTERRUPT_GEN_MEMBER(cclimber_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } +INTERRUPT_GEN_MEMBER(cclimber_state::bagmanf_vblank_irq) +{ + if(m_nmi_mask) + device.execute().set_input_line(0, HOLD_LINE); +} + static MACHINE_CONFIG_START( root, cclimber_state ) /* basic machine hardware */ @@ -1086,6 +1140,13 @@ static MACHINE_CONFIG_DERIVED( cannonb, cclimber ) MCFG_GFXDECODE_MODIFY("gfxdecode", cannonb) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( bagmanf, cclimber ) + + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_VBLANK_INT_DRIVER("screen", cclimber_state, bagmanf_vblank_irq) +MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( yamato, root ) @@ -2576,15 +2637,15 @@ GAME( 1981, ckongpt2j, ckongpt2, cclimber, ckong, driver_device, 0, GAME( 1981, ckongpt2jeu, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Jeutel)", "Crazy Kong Part II (Jeutel bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, ckongpt2b, ckongpt2, cclimber, ckongb, cclimber_state, ckongb, ROT270, "bootleg", "Crazy Kong Part II (alternative levels)", MACHINE_SUPPORTS_SAVE ) -// see bagman.c for parent -GAME( 1981, bagmanf, bagman, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Bagman (bootleg on Crazy Kong hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +// see bagman.cpp for parent +GAME( 1981, bagmanf, bagman, bagmanf, bagmanf, driver_device, 0, ROT270, "bootleg", "Bagman (bootleg on Crazy Kong hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1981, rpatrol, 0, cclimber, rpatrol, driver_device, 0, ROT0, "Orca", "River Patrol (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // TODO: encrypted, suicide battery on PCB GAME( 1981, rpatrola, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "bootleg", "River Patrol (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "bootleg", "River Patrol (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, silvland, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "Falcon", "Silver Land", MACHINE_SUPPORTS_SAVE ) -// see pacman.c for parent +// see pacman.cpp for parent GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cclimber_state, cannonb, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game GAME( 1985, cannonb2, cannonbp, cannonb, cannonb, cclimber_state, cannonb2, ROT90, "bootleg (TV Game Gruenberg)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 2, buggy)", MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game GAME( 1985, cannonb3, cannonbp, cannonb, cannonb, cclimber_state, cannonb2, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game)", MACHINE_SUPPORTS_SAVE ) // the bonus game is patched out, thus avoiding the protection issue diff --git a/src/mame/includes/cclimber.h b/src/mame/includes/cclimber.h index ad49bef6f5f..bd325e5a122 100644 --- a/src/mame/includes/cclimber.h +++ b/src/mame/includes/cclimber.h @@ -105,4 +105,5 @@ public: void cclimber_decode(const UINT8 convtable[8][16]); INTERRUPT_GEN_MEMBER(vblank_irq); + INTERRUPT_GEN_MEMBER(bagmanf_vblank_irq); }; diff --git a/src/mame/video/cclimber.cpp b/src/mame/video/cclimber.cpp index b0c16ca12e3..21f24aae2e4 100644 --- a/src/mame/video/cclimber.cpp +++ b/src/mame/video/cclimber.cpp @@ -2,7 +2,7 @@ // copyright-holders:Nicola Salmoria /*************************************************************************** - cclimber.c + cclimber.cpp Functions to emulate the video hardware of the machine. From 1317019974231191a0a42d732ef9b603dcd00896 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Fri, 5 Aug 2016 21:38:47 +0300 Subject: [PATCH 037/116] pofo.xml: Dumped the File Manager/Tutorial card. [Curt Coder] pofo: Implemented the A: credit card memory. Fixed the RTC. [Curt Coder] --- hash/pofo.xml | 15 +++++- src/mame/drivers/pofo.cpp | 99 ++++++++++++++++++++++++++++++++------- 2 files changed, 97 insertions(+), 17 deletions(-) diff --git a/hash/pofo.xml b/hash/pofo.xml index e12a0b04cdc..b2555d919df 100644 --- a/hash/pofo.xml +++ b/hash/pofo.xml @@ -7,7 +7,6 @@ Utility-Card HPC-701 Finance-Card HPC-702 Science-Card HPC-703 - File Manager / Tutorial HPC-704 PowerBASIC HPC-705 Instant Spell HPC-709 Hyperlist HPC-713 @@ -50,4 +49,18 @@ Timekeeper TIMEPAC-5 --> + + + File Manager/Tutorial + 1990 + Atari + + + + + + + + + diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index c58c0ad7131..8e3500e10e1 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -15,14 +15,12 @@ TODO: - - clock is running too fast - create chargen ROM from tech manual - memory error interrupt vector - i/o port 8051 - screen contrast - system tick frequency selection (1 or 128 Hz) - speaker - - credit card memory (A:/B:) */ @@ -38,6 +36,8 @@ #include "sound/speaker.h" #include "video/hd61830.h" +#define LOG 0 + #define M80C88A_TAG "u1" #define HD61830_TAG "hd61830" #define TIMER_TICK_TAG "tick" @@ -51,6 +51,7 @@ public: m_maincpu(*this, M80C88A_TAG), m_lcdc(*this, HD61830_TAG), m_speaker(*this, "speaker"), + m_card(*this, "cardslot"), m_exp(*this, PORTFOLIO_EXPANSION_SLOT_TAG), m_timer_tick(*this, TIMER_TICK_TAG), m_rom(*this, M80C88A_TAG), @@ -71,6 +72,7 @@ public: required_device m_maincpu; required_device m_lcdc; required_device m_speaker; + required_device m_card; required_device m_exp; required_device m_timer_tick; required_region_ptr m_rom; @@ -100,6 +102,16 @@ public: INT_EXTERNAL }; + enum + { + ROM_APP, + CCM_A, + CCM_B, + ROM_EXT + }; + + DECLARE_READ8_MEMBER( rom_b_r ); + DECLARE_READ8_MEMBER( irq_status_r ); DECLARE_READ8_MEMBER( keyboard_r ); DECLARE_READ8_MEMBER( battery_r ); @@ -124,6 +136,8 @@ public: /* keyboard state */ UINT8 m_keylatch; + int m_rom_b; + /* video state */ required_shared_ptr m_contrast; @@ -134,7 +148,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(counter_tick); DECLARE_READ8_MEMBER(hd61830_rd_r); IRQ_CALLBACK_MEMBER(portfolio_int_ack); - DECLARE_DEVICE_IMAGE_LOAD_MEMBER( portfolio_cart ); + DECLARE_DEVICE_IMAGE_LOAD_MEMBER( portfolio_card ); required_device m_ram; }; @@ -173,6 +187,8 @@ void portfolio_state::trigger_interrupt(int level) // set interrupt pending bit m_ip |= 1 << level; + //logerror("%s IP set %01x : %u\n", machine().time().as_string(), m_ip, level); + check_interrupt(); } @@ -194,7 +210,8 @@ READ8_MEMBER( portfolio_state::irq_status_r ) WRITE8_MEMBER( portfolio_state::irq_mask_w ) { m_ie = data; - //logerror("IE %02x\n", data); + + if (LOG) logerror("IE %02x\n", data); check_interrupt(); } @@ -224,6 +241,8 @@ IRQ_CALLBACK_MEMBER(portfolio_state::portfolio_int_ack) } } + //logerror("IP ack %01x\n", m_ip); + check_interrupt(); return vector; @@ -275,7 +294,7 @@ void portfolio_state::scan_keyboard() else { // key released - if (m_keylatch != 0xff) + if (!(m_keylatch & 0x80)) { m_keylatch |= 0x80; @@ -333,7 +352,7 @@ WRITE8_MEMBER( portfolio_state::speaker_w ) m_speaker->level_w(!BIT(data, 7)); - //logerror("SPEAKER %02x\n", data); + if (LOG) logerror("SPEAKER %02x\n", data); } @@ -363,7 +382,7 @@ WRITE8_MEMBER( portfolio_state::power_w ) */ - //logerror("POWER %02x\n", data); + if (LOG) logerror("POWER %02x\n", data); } @@ -406,7 +425,15 @@ READ8_MEMBER( portfolio_state::battery_r ) WRITE8_MEMBER( portfolio_state::unknown_w ) { - //logerror("UNKNOWN %02x\n", data); + if (LOG) logerror("UNKNOWN %02x\n", data); + + switch (data & 0x0f) + { + case 3: m_rom_b = CCM_A; break; + case 7: m_rom_b = CCM_B; break; + case 0: m_rom_b = ROM_APP; break; + case 2: m_rom_b = ROM_EXT; break; + } } @@ -421,7 +448,7 @@ WRITE8_MEMBER( portfolio_state::unknown_w ) TIMER_DEVICE_CALLBACK_MEMBER(portfolio_state::system_tick) { - trigger_interrupt(INT_TICK); + //trigger_interrupt(INT_TICK); } @@ -435,6 +462,40 @@ TIMER_DEVICE_CALLBACK_MEMBER(portfolio_state::counter_tick) } +//------------------------------------------------- +// rom_b_r - +//------------------------------------------------- + +READ8_MEMBER( portfolio_state::rom_b_r ) +{ + UINT8 data = 0; + + switch (m_rom_b) + { + case ROM_APP: + data = m_rom[offset]; + break; + + case CCM_A: + if (m_card->exists()) + { + data = m_card->read_rom(space, offset); + } + break; + + case CCM_B: + // TODO this is wired thru the expansion slot + break; + + case ROM_EXT: + // TODO ??? + break; + } + + return data; +} + + //------------------------------------------------- // counter_r - counter register read //------------------------------------------------- @@ -450,7 +511,7 @@ READ8_MEMBER( portfolio_state::counter_r ) break; case 1: - data = m_counter >> 1; + data = m_counter >> 8; break; } @@ -490,7 +551,7 @@ static ADDRESS_MAP_START( portfolio_mem, AS_PROGRAM, 8, portfolio_state ) AM_RANGE(0x00000, 0x1efff) AM_RAM AM_SHARE("nvram1") AM_RANGE(0x1f000, 0x9efff) AM_RAM // expansion AM_RANGE(0xb0000, 0xb0fff) AM_MIRROR(0xf000) AM_RAM AM_SHARE("nvram2") // video RAM - AM_RANGE(0xc0000, 0xdffff) AM_ROM AM_REGION(M80C88A_TAG, 0) // or credit card memory + AM_RANGE(0xc0000, 0xdffff) AM_READ(rom_b_r) AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION(M80C88A_TAG, 0x20000) ADDRESS_MAP_END @@ -679,12 +740,17 @@ WRITE_LINE_MEMBER( portfolio_state::eint_w ) //************************************************************************** //------------------------------------------------- -// DEVICE_IMAGE_LOAD( portfolio_cart ) +// DEVICE_IMAGE_LOAD( portfolio_card ) //------------------------------------------------- -DEVICE_IMAGE_LOAD_MEMBER( portfolio_state, portfolio_cart ) +DEVICE_IMAGE_LOAD_MEMBER( portfolio_state, portfolio_card ) { - return image_init_result::FAIL; + UINT32 size = m_card->common_get_size("rom"); + + m_card->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_BIG); + m_card->common_load_rom(m_card->get_rom_base(), size, "rom"); + + return image_init_result::PASS; } @@ -788,8 +854,9 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", portfolio_state, keyboard_tick, attotime::from_usec(2500)) /* cartridge */ - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "portfolio_cart") - MCFG_GENERIC_LOAD(portfolio_state, portfolio_cart) + MCFG_GENERIC_CARTSLOT_ADD("cardslot", generic_plain_slot, "pofo_card") + MCFG_GENERIC_EXTENSIONS("rom,bin") + MCFG_GENERIC_LOAD(portfolio_state, portfolio_card) /* software lists */ MCFG_SOFTWARE_LIST_ADD("cart_list", "pofo") From b8a25071c52c6551fdc3b240339ad31fef0a8d1a Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 6 Aug 2016 00:37:41 +0200 Subject: [PATCH 038/116] hh_tms1k: gamelist notes update --- src/mame/drivers/hh_tms1k.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index e938077bd29..a3697da82c5 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -22,8 +22,10 @@ @MP0905B TMS0970 1977, Parker Brothers Codename Sector *MP0057 TMS1000 1978, APH Student Speech+ (same ROM contents as TSI Speech+?) @MP0158 TMS1000 1979, Entex Soccer - *MP0168 TMS1000 1979, Conic Basketball + *MP0163 TMS1000 1979, LJN Electronic Concentration + *MP0168 TMS1000 1979, Conic Basketball/Tandy Sports Arena @MP0170 TMS1000 1979, Conic Football + *MP0230 TMS1000? 1980, Entex Blast It @MP0914 TMS1000 1979, Entex Baseball 1 @MP0919 TMS1000 1979, Tiger Copy Cat (model 7-520) @MP0923 TMS1000 1979, Entex Baseball 2 @@ -31,7 +33,9 @@ @MP1133 TMS1470 1979, Kosmos Astro @MP1180 TMS1100 1980, Tomy Power House Pinball @MP1181 TMS1100 1979, Conic Football 2 + *MP1193 TMS1100 1980, Tandy Championship Football (model 60-2150) @MP1204 TMS1100 1980, Entex Baseball 3 (6007) + *MP1209 TMS1100 1980, U.S. Games Space Cruiser/Strategy Football @MP1211 TMS1100 1980, Entex Space Invader @MP1218 TMS1100 1980, Entex Basketball 2 (6010) @MP1219 TMS1100 1980, U.S. Games Super Sports-4 @@ -41,6 +45,7 @@ *MP1359 TMS1100? 1985, Capsela CRC2000 @MP1525 TMS1170 1980, Coleco Head to Head Baseball *MP1604 ? 1981, Hanzawa Twinvader III/Tandy Cosmic Fire Away 3000 (? note: VFD-capable) + *MP1801 TMS1100? 1981, Tiger Copycat Jr/Ditto/Tandy Pocket Repeat @MP2105 TMS1370 1979, Gakken/Entex Poker *MP2139 TMS1370? 1982, Gakken Galaxy Invader 1000 @MP2726 TMS1040 1979, Tomy Break Up @@ -76,6 +81,7 @@ @M34012 TMS1100 1980, Mattel Dungeons & Dragons - Computer Labyrinth Game *M34014 TMS1100 1981, Coleco Bowlatronic M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter + *M34018 TMS1100 1981, Coleco Head to Head Boxing @M34038 TMS1100 1982, Parker Brothers Lost Treasure M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster *M34078A TMS1100 1983, Milton Bradley Arcade Mania From da754c80782425a4c63d2da0a2635ca4fbaf16a5 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 3 Aug 2016 18:01:49 -0400 Subject: [PATCH 039/116] Devfind revision phase 2 (nw) - Eliminate read_safe as a global function and make it a method of optional_ioport (and required_ioport, for which it makes less sense). - New constructor for optional_ioport_array and required_ioport_array using std::initializer_list to specify tag list - Remove pointer/reference conversion operators for required_ioport and optional_ioport. Explicit getters like found() and target() are now required when dereferencing isn't wanted. Many drivers have been changed to use required_ioport_array and optional_ioport_array to make this cleaner. - Update numerous drivers that were using read_safe to use I/O port finders generally. Port names have been kept the same as far as possible to avoid breaking saves.(Some of the optional finders should probably be required.) - Give edfbl and monkelf their own memory maps so hacky input reading routines can be removed. - Clean up some legacy static handlers in amiga.cpp and cubo.cpp. --- src/devices/bus/coco/coco_dwsock.cpp | 2 +- src/devices/bus/coco/coco_fdc.cpp | 10 ++-- src/devices/bus/coco/coco_fdc.h | 1 + src/devices/bus/coco/coco_pak.cpp | 10 ++-- src/devices/bus/coco/coco_pak.h | 2 + src/devices/bus/megadrive/jcart.cpp | 16 +++--- src/devices/bus/sg1000_exp/sk1100.cpp | 44 ++++----------- src/devices/bus/sg1000_exp/sk1100.h | 17 +----- src/devices/machine/pckeybrd.cpp | 18 +++--- src/devices/video/snes_ppu.cpp | 17 ++++-- src/devices/video/snes_ppu.h | 5 ++ src/emu/devfind.h | 40 ++++++++++--- src/emu/ioport.h | 2 - src/mame/audio/midway.cpp | 4 +- src/mame/audio/midway.h | 3 + src/mame/drivers/8080bw.cpp | 4 +- src/mame/drivers/aces1.cpp | 22 +------- src/mame/drivers/alg.cpp | 4 +- src/mame/drivers/amiga.cpp | 55 ++++++++---------- src/mame/drivers/apple2.cpp | 2 +- src/mame/drivers/astrocde.cpp | 2 +- src/mame/drivers/astrof.cpp | 4 +- src/mame/drivers/atarist.cpp | 7 ++- src/mame/drivers/attache.cpp | 21 +------ src/mame/drivers/bbc.cpp | 4 +- src/mame/drivers/bfm_sc4.cpp | 5 +- src/mame/drivers/bwidow.cpp | 8 +-- src/mame/drivers/cdi.cpp | 20 +++---- src/mame/drivers/cinemat.cpp | 2 +- src/mame/drivers/cobra.cpp | 12 ++-- src/mame/drivers/coleco.cpp | 16 +++--- src/mame/drivers/combatsc.cpp | 3 +- src/mame/drivers/cosmic.cpp | 8 +-- src/mame/drivers/cosmicos.cpp | 6 -- src/mame/drivers/cp1.cpp | 15 +---- src/mame/drivers/cubo.cpp | 57 ++++++++----------- src/mame/drivers/djmain.cpp | 3 +- src/mame/drivers/elwro800.cpp | 7 +-- src/mame/drivers/fidel6502.cpp | 2 +- src/mame/drivers/firetrk.cpp | 16 +++--- src/mame/drivers/fm7.cpp | 8 +-- src/mame/drivers/fmtowns.cpp | 15 +++-- src/mame/drivers/gaelco3d.cpp | 8 +-- src/mame/drivers/galaxian.cpp | 9 +-- src/mame/drivers/gomoku.cpp | 3 +- src/mame/drivers/gottlieb.cpp | 4 +- src/mame/drivers/hornet.cpp | 4 +- src/mame/drivers/huebler.cpp | 18 ------ src/mame/drivers/jackal.cpp | 2 +- src/mame/drivers/laserbat.cpp | 3 +- src/mame/drivers/mac.cpp | 8 +-- src/mame/drivers/maxaflex.cpp | 4 +- src/mame/drivers/maygay1b.cpp | 3 +- src/mame/drivers/mediagx.cpp | 18 +++--- src/mame/drivers/megadriv.cpp | 2 +- src/mame/drivers/megasys1.cpp | 81 +++++++++++---------------- src/mame/drivers/meyc8088.cpp | 13 +++-- src/mame/drivers/midvunit.cpp | 5 +- src/mame/drivers/model1.cpp | 7 +-- src/mame/drivers/model2.cpp | 29 +++++----- src/mame/drivers/model3.cpp | 3 +- src/mame/drivers/mpu4.cpp | 4 +- src/mame/drivers/multigam.cpp | 14 +++-- src/mame/drivers/mz2000.cpp | 41 ++------------ src/mame/drivers/namcofl.cpp | 14 ++--- src/mame/drivers/namconb1.cpp | 32 +++++------ src/mame/drivers/namcos22.cpp | 8 +-- src/mame/drivers/namcos23.cpp | 2 +- src/mame/drivers/nanos.cpp | 20 +------ src/mame/drivers/pc6001.cpp | 19 +++---- src/mame/drivers/peplus.cpp | 35 +++++++++--- src/mame/drivers/segahang.cpp | 12 +--- src/mame/drivers/segaorun.cpp | 4 +- src/mame/drivers/segas16a.cpp | 5 +- src/mame/drivers/segas16b.cpp | 26 +++++++-- src/mame/drivers/segas24.cpp | 52 ++++++++--------- src/mame/drivers/segas32.cpp | 31 ++++------ src/mame/drivers/segaxbd.cpp | 11 ++-- src/mame/drivers/segaybd.cpp | 2 +- src/mame/drivers/seicross.cpp | 2 +- src/mame/drivers/seta.cpp | 62 ++++++++++---------- src/mame/drivers/sidearms.cpp | 2 +- src/mame/drivers/spectrum.cpp | 10 ++-- src/mame/drivers/ssv.cpp | 12 +--- src/mame/drivers/starfire.cpp | 2 +- src/mame/drivers/svision.cpp | 2 +- src/mame/drivers/taito_z.cpp | 12 ++-- src/mame/drivers/taitojc.cpp | 2 +- src/mame/drivers/tmc1800.cpp | 10 ---- src/mame/drivers/tmc2000e.cpp | 10 ---- src/mame/drivers/tmc600.cpp | 10 ---- src/mame/drivers/topspeed.cpp | 6 +- src/mame/drivers/vegas.cpp | 2 +- src/mame/drivers/vicdual.cpp | 4 +- src/mame/drivers/warpwarp.cpp | 2 +- src/mame/drivers/wgp.cpp | 6 +- src/mame/includes/8080bw.h | 6 +- src/mame/includes/amiga.h | 6 +- src/mame/includes/astrof.h | 2 + src/mame/includes/bbc.h | 4 +- src/mame/includes/bfm_sc4.h | 26 +-------- src/mame/includes/bwidow.h | 8 ++- src/mame/includes/cinemat.h | 7 ++- src/mame/includes/combatsc.h | 7 ++- src/mame/includes/cosmic.h | 4 ++ src/mame/includes/cosmicos.h | 11 +--- src/mame/includes/djmain.h | 4 +- src/mame/includes/firetrk.h | 13 ++++- src/mame/includes/fm7.h | 8 +-- src/mame/includes/fmtowns.h | 10 +--- src/mame/includes/gaelco3d.h | 5 +- src/mame/includes/galaxian.h | 5 ++ src/mame/includes/gomoku.h | 2 + src/mame/includes/gottlieb.h | 7 ++- src/mame/includes/huebler.h | 35 +----------- src/mame/includes/jackal.h | 2 + src/mame/includes/laserbat.h | 8 +-- src/mame/includes/mac.h | 12 +--- src/mame/includes/maygay1b.h | 14 +---- src/mame/includes/megasys1.h | 2 - src/mame/includes/midvunit.h | 3 + src/mame/includes/model2.h | 12 +++- src/mame/includes/model3.h | 3 + src/mame/includes/mpu4.h | 14 +---- src/mame/includes/msx.h | 14 +---- src/mame/includes/namcofl.h | 14 +++++ src/mame/includes/namconb1.h | 18 ++++++ src/mame/includes/namcos22.h | 11 +++- src/mame/includes/segahang.h | 2 + src/mame/includes/segas16a.h | 4 +- src/mame/includes/segas16b.h | 8 +++ src/mame/includes/segas24.h | 20 +++++++ src/mame/includes/segas32.h | 6 ++ src/mame/includes/segaxbd.h | 2 + src/mame/includes/seicross.h | 3 + src/mame/includes/seta.h | 27 +++++++++ src/mame/includes/ssv.h | 10 +--- src/mame/includes/starfire.h | 2 + src/mame/includes/taito_z.h | 4 +- src/mame/includes/tmc1800.h | 19 +------ src/mame/includes/tmc2000e.h | 19 +------ src/mame/includes/tmc600.h | 19 +------ src/mame/includes/topspeed.h | 4 +- src/mame/includes/vectrex.h | 10 +--- src/mame/machine/amiga.cpp | 39 +++++-------- src/mame/machine/amstrad.cpp | 22 ++++---- src/mame/machine/apple2.cpp | 8 +-- src/mame/machine/atari400.cpp | 12 ++-- src/mame/machine/bbc.cpp | 18 +++--- src/mame/machine/coco.cpp | 4 +- src/mame/machine/cybiko.cpp | 2 +- src/mame/machine/harddriv.cpp | 8 +-- src/mame/machine/mac.cpp | 3 +- src/mame/machine/macadb.cpp | 3 +- src/mame/machine/megadriv.cpp | 2 +- src/mame/machine/micro3d.cpp | 10 ++-- src/mame/machine/msx.cpp | 3 +- src/mame/machine/naomi.cpp | 6 +- src/mame/machine/sms.cpp | 12 ++-- src/mame/machine/tnzs.cpp | 3 +- src/mame/machine/vectrex.cpp | 5 +- src/mame/video/amiga.cpp | 2 +- src/mame/video/antic.cpp | 4 +- src/mame/video/apple2.cpp | 9 +-- src/mame/video/astrocde.cpp | 24 ++++---- src/mame/video/itech8.cpp | 2 +- src/mame/video/lethalj.cpp | 8 +-- src/mame/video/mac.cpp | 12 +--- 168 files changed, 857 insertions(+), 1051 deletions(-) diff --git a/src/devices/bus/coco/coco_dwsock.cpp b/src/devices/bus/coco/coco_dwsock.cpp index fb2e18a23fb..6525cbaa97b 100644 --- a/src/devices/bus/coco/coco_dwsock.cpp +++ b/src/devices/bus/coco/coco_dwsock.cpp @@ -203,6 +203,6 @@ WRITE8_MEMBER(beckerport_device::write) void beckerport_device::update_port(void) { device_stop(); - m_dwtcpport = read_safe(m_dwconfigport, 65504); + m_dwtcpport = m_dwconfigport.read_safe(65504); device_start(); } diff --git a/src/devices/bus/coco/coco_fdc.cpp b/src/devices/bus/coco/coco_fdc.cpp index a5ee7a6d689..46ee2bb8d93 100644 --- a/src/devices/bus/coco/coco_fdc.cpp +++ b/src/devices/bus/coco/coco_fdc.cpp @@ -116,7 +116,7 @@ SLOT_INTERFACE_END coco_rtc_type_t coco_fdc_device::real_time_clock() { - coco_rtc_type_t result = coco_rtc_type_t(read_safe(machine().root_device().ioport("real_time_clock"), RTC_NONE)); + coco_rtc_type_t result = coco_rtc_type_t(m_rtc.read_safe(RTC_NONE)); /* check to make sure we don't have any invalid values */ if (((result == RTC_DISTO) && (m_disto_msm6242 == nullptr)) @@ -183,7 +183,8 @@ coco_fdc_device::coco_fdc_device(const machine_config &mconfig, device_type type m_wd17xx(*this, WD_TAG), m_wd2797(*this, WD2797_TAG), m_ds1315(*this, CLOUD9_TAG), - m_disto_msm6242(*this, DISTO_TAG), m_msm6242_rtc_address(0) + m_disto_msm6242(*this, DISTO_TAG), m_msm6242_rtc_address(0), + m_rtc(*this, ":real_time_clock") { } @@ -193,8 +194,9 @@ coco_fdc_device::coco_fdc_device(const machine_config &mconfig, const char *tag, m_wd17xx(*this, WD_TAG), m_wd2797(*this, WD2797_TAG), m_ds1315(*this, CLOUD9_TAG), - m_disto_msm6242(*this, DISTO_TAG), m_msm6242_rtc_address(0) - { + m_disto_msm6242(*this, DISTO_TAG), m_msm6242_rtc_address(0), + m_rtc(*this, ":real_time_clock") +{ } //------------------------------------------------- diff --git a/src/devices/bus/coco/coco_fdc.h b/src/devices/bus/coco/coco_fdc.h index 2799d15e0ee..067fd3fde19 100644 --- a/src/devices/bus/coco/coco_fdc.h +++ b/src/devices/bus/coco/coco_fdc.h @@ -76,6 +76,7 @@ protected: optional_device m_disto_msm6242; /* 6242 RTC on Disto interface */ offs_t m_msm6242_rtc_address; + optional_ioport m_rtc; }; diff --git a/src/devices/bus/coco/coco_pak.cpp b/src/devices/bus/coco/coco_pak.cpp index 1a861fa3bed..c091606027d 100644 --- a/src/devices/bus/coco/coco_pak.cpp +++ b/src/devices/bus/coco/coco_pak.cpp @@ -41,13 +41,15 @@ const device_type COCO_PAK = &device_creator; //------------------------------------------------- coco_pak_device::coco_pak_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - device_cococart_interface( mconfig, *this ), m_cart(nullptr), m_owner(nullptr) + device_cococart_interface( mconfig, *this ), m_cart(nullptr), m_owner(nullptr), + m_autostart(*this, ":" CART_AUTOSTART_TAG) { } coco_pak_device::coco_pak_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, COCO_PAK, "CoCo Program PAK", tag, owner, clock, "cocopak", __FILE__), - device_cococart_interface( mconfig, *this ), m_cart(nullptr), m_owner(nullptr) + device_cococart_interface( mconfig, *this ), m_cart(nullptr), m_owner(nullptr), + m_autostart(*this, ":" CART_AUTOSTART_TAG) { } @@ -87,9 +89,7 @@ const rom_entry *coco_pak_device::device_rom_region() const void coco_pak_device::device_reset() { if (m_cart->exists()) { - cococart_line_value cart_line; - - cart_line = read_safe(machine().root_device().ioport(CART_AUTOSTART_TAG), 0x01) + cococart_line_value cart_line = m_autostart.read_safe(0x01) ? COCOCART_LINE_VALUE_Q : COCOCART_LINE_VALUE_CLEAR; diff --git a/src/devices/bus/coco/coco_pak.h b/src/devices/bus/coco/coco_pak.h index 7915fd9923d..ed531943242 100644 --- a/src/devices/bus/coco/coco_pak.h +++ b/src/devices/bus/coco/coco_pak.h @@ -36,6 +36,8 @@ protected: // internal state device_image_interface *m_cart; cococart_slot_device *m_owner; + + optional_ioport m_autostart; }; diff --git a/src/devices/bus/megadrive/jcart.cpp b/src/devices/bus/megadrive/jcart.cpp index 85fb7c373b4..e3182fca414 100644 --- a/src/devices/bus/megadrive/jcart.cpp +++ b/src/devices/bus/megadrive/jcart.cpp @@ -180,14 +180,14 @@ READ16_MEMBER(md_jcart_device::read) if (m_jcart_io_data[0] & 0x40) { - joy[0] = read_safe(m_jcart3, 0); - joy[1] = read_safe(m_jcart4, 0); + joy[0] = m_jcart3.read_safe(0); + joy[1] = m_jcart4.read_safe(0); return (m_jcart_io_data[0] & 0x40) | joy[0] | (joy[1] << 8); } else { - joy[0] = ((read_safe(m_jcart3, 0) & 0xc0) >> 2) | (read_safe(m_jcart3, 0) & 0x03); - joy[1] = ((read_safe(m_jcart4, 0) & 0xc0) >> 2) | (read_safe(m_jcart4, 0) & 0x03); + joy[0] = ((m_jcart3.read_safe(0) & 0xc0) >> 2) | (m_jcart3.read_safe(0) & 0x03); + joy[1] = ((m_jcart4.read_safe(0) & 0xc0) >> 2) | (m_jcart4.read_safe(0) & 0x03); return (m_jcart_io_data[0] & 0x40) | joy[0] | (joy[1] << 8); } } @@ -223,14 +223,14 @@ READ16_MEMBER(md_seprom_codemast_device::read) if (m_jcart_io_data[0] & 0x40) { - joy[0] = read_safe(m_jcart3, 0); - joy[1] = read_safe(m_jcart4, 0); + joy[0] = m_jcart3.read_safe(0); + joy[1] = m_jcart4.read_safe(0); return (m_jcart_io_data[0] & 0x40) | joy[0] | (joy[1] << 8); } else { - joy[0] = ((read_safe(m_jcart3, 0) & 0xc0) >> 2) | (read_safe(m_jcart3, 0) & 0x03); - joy[1] = ((read_safe(m_jcart4, 0) & 0xc0) >> 2) | (read_safe(m_jcart4, 0) & 0x03); + joy[0] = ((m_jcart3.read_safe(0) & 0xc0) >> 2) | (m_jcart3.read_safe(0) & 0x03); + joy[1] = ((m_jcart4.read_safe(0) & 0xc0) >> 2) | (m_jcart4.read_safe(0) & 0x03); return (m_jcart_io_data[0] & 0x40) | joy[0] | (joy[1] << 8); } } diff --git a/src/devices/bus/sg1000_exp/sk1100.cpp b/src/devices/bus/sg1000_exp/sk1100.cpp index aee9e3c09f7..b6c2e037748 100644 --- a/src/devices/bus/sg1000_exp/sk1100.cpp +++ b/src/devices/bus/sg1000_exp/sk1100.cpp @@ -104,6 +104,9 @@ static INPUT_PORTS_START( sk1100_keys ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("PA7") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) // keyboard disabled + PORT_START("PB0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') PORT_BIT( 0x06, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -134,6 +137,9 @@ static INPUT_PORTS_START( sk1100_keys ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("GRAPH") PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) + + PORT_START("PB7") + PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED ) // keyboard disabled INPUT_PORTS_END @@ -185,20 +191,8 @@ sega_sk1100_device::sega_sk1100_device(const machine_config &mconfig, const char device_sg1000_expansion_slot_interface(mconfig, *this), m_cassette(*this, "cassette"), m_ppi(*this, UPD9255_0_TAG), - m_pa0(*this, "PA0"), - m_pa1(*this, "PA1"), - m_pa2(*this, "PA2"), - m_pa3(*this, "PA3"), - m_pa4(*this, "PA4"), - m_pa5(*this, "PA5"), - m_pa6(*this, "PA6"), - m_pb0(*this, "PB0"), - m_pb1(*this, "PB1"), - m_pb2(*this, "PB2"), - m_pb3(*this, "PB3"), - m_pb4(*this, "PB4"), - m_pb5(*this, "PB5"), - m_pb6(*this, "PB6"), + m_pa(*this, {"PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7"}), + m_pb(*this, {"PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7"}), m_keylatch(0) { } @@ -210,24 +204,6 @@ sega_sk1100_device::sega_sk1100_device(const machine_config &mconfig, const char void sega_sk1100_device::device_start() { - // find keyboard rows - m_key_row[0] = m_pa0; - m_key_row[1] = m_pa1; - m_key_row[2] = m_pa2; - m_key_row[3] = m_pa3; - m_key_row[4] = m_pa4; - m_key_row[5] = m_pa5; - m_key_row[6] = m_pa6; - m_key_row[7] = nullptr; // keyboard disabled - m_key_row[8] = m_pb0; - m_key_row[9] = m_pb1; - m_key_row[10] = m_pb2; - m_key_row[11] = m_pb3; - m_key_row[12] = m_pb4; - m_key_row[13] = m_pb5; - m_key_row[14] = m_pb6; - m_key_row[15] = nullptr; // keyboard disabled - /* register for state saving */ save_item(NAME(m_keylatch)); } @@ -278,7 +254,7 @@ READ8_MEMBER( sega_sk1100_device::ppi_pa_r ) PA7 Keyboard input */ - return m_key_row[m_keylatch]->read(); + return m_pa[m_keylatch]->read(); } READ8_MEMBER( sega_sk1100_device::ppi_pb_r ) @@ -297,7 +273,7 @@ READ8_MEMBER( sega_sk1100_device::ppi_pb_r ) */ /* keyboard */ - UINT8 data = m_key_row[m_keylatch + 8]->read(); + UINT8 data = m_pb[m_keylatch]->read(); /* cartridge contact */ data |= 0x10; diff --git a/src/devices/bus/sg1000_exp/sk1100.h b/src/devices/bus/sg1000_exp/sk1100.h index 80cabb3f30d..8ee058e9d5e 100644 --- a/src/devices/bus/sg1000_exp/sk1100.h +++ b/src/devices/bus/sg1000_exp/sk1100.h @@ -54,23 +54,10 @@ protected: virtual bool is_readable(UINT8 offset) override; private: - ioport_port* m_key_row[16]; required_device m_cassette; required_device m_ppi; - required_ioport m_pa0; - required_ioport m_pa1; - required_ioport m_pa2; - required_ioport m_pa3; - required_ioport m_pa4; - required_ioport m_pa5; - required_ioport m_pa6; - required_ioport m_pb0; - required_ioport m_pb1; - required_ioport m_pb2; - required_ioport m_pb3; - required_ioport m_pb4; - required_ioport m_pb5; - required_ioport m_pb6; + required_ioport_array<8> m_pa; + required_ioport_array<8> m_pb; /* keyboard state */ UINT8 m_keylatch; diff --git a/src/devices/machine/pckeybrd.cpp b/src/devices/machine/pckeybrd.cpp index 0650fc8cea3..b6aa0a1f8b9 100644 --- a/src/devices/machine/pckeybrd.cpp +++ b/src/devices/machine/pckeybrd.cpp @@ -528,39 +528,39 @@ UINT32 pc_keyboard_device::readport(int port) switch(port) { case 0: - if(m_ioport_0) + if (m_ioport_0.found()) result = m_ioport_0->read(); break; case 1: - if(m_ioport_1) + if (m_ioport_1.found()) result = m_ioport_1->read(); break; case 2: - if(m_ioport_2) + if (m_ioport_2.found()) result = m_ioport_2->read(); break; case 3: - if(m_ioport_3) + if (m_ioport_3.found()) result = m_ioport_3->read(); break; case 4: - if(m_ioport_4) + if (m_ioport_4.found()) result = m_ioport_4->read(); break; case 5: - if(m_ioport_5) + if (m_ioport_5.found()) result = m_ioport_5->read(); break; case 6: - if(m_ioport_6) + if (m_ioport_6.found()) result = m_ioport_6->read(); break; case 7: - if(m_ioport_7) + if (m_ioport_7.found()) result = m_ioport_7->read(); break; } - return result; + return 0; } void pc_keyboard_device::polling(void) diff --git a/src/devices/video/snes_ppu.cpp b/src/devices/video/snes_ppu.cpp index fa7c85e3f7c..603b19e1a93 100644 --- a/src/devices/video/snes_ppu.cpp +++ b/src/devices/video/snes_ppu.cpp @@ -203,7 +203,12 @@ const device_type SNES_PPU = &device_creator; snes_ppu_device::snes_ppu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, SNES_PPU, "SNES PPU", tag, owner, clock, "snes_ppu", __FILE__), device_video_interface(mconfig, *this), - m_openbus_cb(*this) + m_openbus_cb(*this), + m_options(*this, ":OPTIONS"), + m_debug1(*this, ":DEBUG1"), + m_debug2(*this, ":DEBUG2"), + m_debug3(*this, ":DEBUG3"), + m_debug4(*this, ":DEBUG4") { } @@ -1819,7 +1824,7 @@ void snes_ppu_device::refresh_scanline( bitmap_rgb32 &bitmap, UINT16 curline ) struct SNES_SCANLINE *scanline1, *scanline2; UINT16 c; UINT16 prev_colour = 0; - int blurring = read_safe(machine().root_device().ioport("OPTIONS"), 0) & 0x01; + int blurring = m_options.read_safe(0) & 0x01; g_profiler.start(PROFILER_VIDEO); @@ -2831,13 +2836,13 @@ void snes_ppu_device::write(address_space &space, UINT32 offset, UINT8 data) UINT8 snes_ppu_device::dbg_video( UINT16 curline ) { int i; - UINT8 toggles = read_safe(machine().root_device().ioport("DEBUG1"), 0); + UINT8 toggles = m_debug1.read_safe(0); m_debug_options.select_pri[SNES_BG1] = (toggles & 0x03); m_debug_options.select_pri[SNES_BG2] = (toggles & 0x0c) >> 2; m_debug_options.select_pri[SNES_BG3] = (toggles & 0x30) >> 4; m_debug_options.select_pri[SNES_BG4] = (toggles & 0xc0) >> 6; - toggles = read_safe(machine().root_device().ioport("DEBUG2"), 0); + toggles = m_debug2.read_safe(0); for (i = 0; i < 4; i++) DEBUG_TOGGLE(i, m_debug_options.bg_disabled[i], ("Debug: Disabled BG%d.\n", i + 1), ("Debug: Enabled BG%d.\n", i + 1)) DEBUG_TOGGLE(4, m_debug_options.bg_disabled[SNES_OAM], ("Debug: Disabled OAM.\n"), ("Debug: Enabled OAM.\n")) @@ -2845,11 +2850,11 @@ UINT8 snes_ppu_device::dbg_video( UINT16 curline ) DEBUG_TOGGLE(6, m_debug_options.colormath_disabled, ("Debug: Disabled Color Math.\n"), ("Debug: Enabled Color Math.\n")) DEBUG_TOGGLE(7, m_debug_options.windows_disabled, ("Debug: Disabled Window Masks.\n"), ("Debug: Enabled Window Masks.\n")) - toggles = read_safe(machine().root_device().ioport("DEBUG4"), 0); + toggles = m_debug4.read_safe(0); for (i = 0; i < 8; i++) DEBUG_TOGGLE(i, m_debug_options.mode_disabled[i], ("Debug: Disabled Mode %d drawing.\n", i), ("Debug: Enabled Mode %d drawing.\n", i)) - toggles = read_safe(machine().root_device().ioport("DEBUG3"), 0); + toggles = m_debug3.read_safe(0); DEBUG_TOGGLE(2, m_debug_options.mosaic_disabled, ("Debug: Disabled Mosaic.\n"), ("Debug: Enabled Mosaic.\n")) m_debug_options.sprite_reversed = BIT(toggles, 7); m_debug_options.select_pri[SNES_OAM] = (toggles & 0x70) >> 4; diff --git a/src/devices/video/snes_ppu.h b/src/devices/video/snes_ppu.h index cc1f2a3311d..79bcf34f7b7 100644 --- a/src/devices/video/snes_ppu.h +++ b/src/devices/video/snes_ppu.h @@ -278,6 +278,11 @@ protected: private: devcb_read16 m_openbus_cb; + optional_ioport m_options; + optional_ioport m_debug1; + optional_ioport m_debug2; + optional_ioport m_debug3; + optional_ioport m_debug4; }; diff --git a/src/emu/devfind.h b/src/emu/devfind.h index af2626c9797..08a5b6fcccb 100644 --- a/src/emu/devfind.h +++ b/src/emu/devfind.h @@ -80,11 +80,6 @@ public: : finder_base(base, tag), m_target(nullptr) { } - // operators to make use transparent - operator _ObjectClass *() const { return m_target; } - - virtual _ObjectClass *operator->() const { assert(m_target != nullptr); return m_target; } - // getters for explicit fetching _ObjectClass *target() const { return m_target; } bool found() const { return m_target != nullptr; } @@ -109,6 +104,10 @@ public: device_finder(device_t &base, const char *tag = FINDER_DUMMY_TAG) : object_finder_base<_DeviceClass>(base, tag) { } + // operators to make pointer use transparent + operator _DeviceClass *() const { return object_finder_base<_DeviceClass>::m_target; } + virtual _DeviceClass *operator->() const { assert(object_finder_base<_DeviceClass>::m_target != nullptr); return object_finder_base<_DeviceClass>::m_target; } + // make reference use transparent as well operator _DeviceClass &() { assert(object_finder_base<_DeviceClass>::m_target != nullptr); return *object_finder_base<_DeviceClass>::m_target; } @@ -153,6 +152,10 @@ public: memory_region_finder(device_t &base, const char *tag = FINDER_DUMMY_TAG) : object_finder_base(base, tag) { } + // operators to make pointer use transparent + operator memory_region *() const { return m_target; } + virtual memory_region *operator->() const { assert(m_target != nullptr); return m_target; } + // make reference use transparent as well operator memory_region &() const { assert(object_finder_base::m_target != nullptr); return *object_finder_base::m_target; } @@ -191,6 +194,10 @@ public: memory_bank_finder(device_t &base, const char *tag = FINDER_DUMMY_TAG) : object_finder_base(base, tag) { } + // operators to make pointer use transparent + operator memory_bank *() const { return m_target; } + virtual memory_bank *operator->() const { assert(m_target != nullptr); return m_target; } + // make reference use transparent as well operator memory_bank &() const { assert(object_finder_base::m_target != nullptr); return *object_finder_base::m_target; } @@ -229,11 +236,12 @@ public: ioport_finder(device_t &base, const char *tag = FINDER_DUMMY_TAG) : object_finder_base(base, tag) { } - // make reference use transparent as well - operator ioport_port &() const { assert(object_finder_base::m_target != nullptr); return *object_finder_base::m_target; } + // operators to make use transparent + ioport_port &operator*() const { assert(m_target != nullptr); return *m_target; } + virtual ioport_port *operator->() const { assert(m_target != nullptr); return m_target; } - // allow dereference even when target is nullptr so read_safe() can be used - ioport_port *operator->() const override { return object_finder_base::m_target; } + // read if found, or else return a default value + ioport_value read_safe(ioport_value defval) { return m_target != nullptr ? m_target->read() : defval; } // finder virtual bool findit(bool isvalidation = false) override @@ -284,6 +292,16 @@ public: m_array[index] = std::make_unique(base, tags[index]); } + ioport_array_finder(device_t &base, std::initializer_list taglist) + { + assert(taglist.size() <= _Count); + int index = 0; + for (const char *tag : taglist) + m_array[index++] = std::make_unique(base, tag); + while (index < _Count) + m_array[index++] = std::make_unique(base, FINDER_DUMMY_TAG); + } + // array accessors const ioport_finder_type &operator[](int index) const { assert(index < _Count); return *m_array[index]; } ioport_finder_type &operator[](int index) { assert(index < _Count); return *m_array[index]; } @@ -301,6 +319,7 @@ class optional_ioport_array: public ioport_array_finder<_Count, false> public: optional_ioport_array(device_t &base, const char *basetag) : ioport_array_finder<_Count, false>(base, basetag) { } optional_ioport_array(device_t &base, const char * const *tags) : ioport_array_finder<_Count, false>(base, tags) { } + optional_ioport_array(device_t &base, std::initializer_list taglist) : ioport_array_finder<_Count, false>(base, taglist) { } }; // required ioport array finder @@ -310,6 +329,7 @@ class required_ioport_array: public ioport_array_finder<_Count, true> public: required_ioport_array(device_t &base, const char *basetag) : ioport_array_finder<_Count, true>(base, basetag) { } required_ioport_array(device_t &base, const char * const *tags) : ioport_array_finder<_Count, true>(base, tags) { } + required_ioport_array(device_t &base, std::initializer_list taglist) : ioport_array_finder<_Count, true>(base, taglist) { } }; @@ -329,6 +349,7 @@ public: m_length(length) { } // operators to make use transparent + operator _PointerType *() const { return this->m_target; } _PointerType operator[](int index) const { assert(index < m_length); return this->m_target[index]; } _PointerType &operator[](int index) { assert(index < m_length); return this->m_target[index]; } @@ -387,6 +408,7 @@ public: m_width(width) { } // operators to make use transparent + operator _PointerType *() const { return this->m_target; } _PointerType operator[](int index) const { return this->m_target[index]; } _PointerType &operator[](int index) { return this->m_target[index]; } diff --git a/src/emu/ioport.h b/src/emu/ioport.h index ea5415dd343..5aba15c94dc 100644 --- a/src/emu/ioport.h +++ b/src/emu/ioport.h @@ -1325,8 +1325,6 @@ private: std::unique_ptr m_live; // live state of port (nullptr if not live) }; -inline ioport_value read_safe(ioport_port *port, ioport_value defval) { return (port == nullptr) ? defval : port->read(); } - // ======================> analog_field diff --git a/src/mame/audio/midway.cpp b/src/mame/audio/midway.cpp index dfc75c84f3e..e4d3f9bc17a 100644 --- a/src/mame/audio/midway.cpp +++ b/src/mame/audio/midway.cpp @@ -53,6 +53,7 @@ midway_ssio_device::midway_ssio_device(const machine_config &mconfig, const char m_cpu(*this, "cpu"), m_ay0(*this, "ay0"), m_ay1(*this, "ay1"), + m_ports(*this, {"IP0", "IP1", "IP2", "IP3", "IP4"}), m_status(0), m_14024_count(0), m_mute(0) @@ -113,8 +114,7 @@ WRITE_LINE_MEMBER(midway_ssio_device::reset_write) READ8_MEMBER(midway_ssio_device::ioport_read) { - static const char *const port[] = { "IP0", "IP1", "IP2", "IP3", "IP4" }; - UINT8 result = read_safe(ioport(port[offset]), 0xff); + UINT8 result = m_ports[offset].read_safe(0xff); if (!m_custom_input[offset].isnull()) result = (result & ~m_custom_input_mask[offset]) | (m_custom_input[offset](space, offset, 0xff) & m_custom_input_mask[offset]); diff --git a/src/mame/audio/midway.h b/src/mame/audio/midway.h index a66953c7d7a..31acd14c785 100644 --- a/src/mame/audio/midway.h +++ b/src/mame/audio/midway.h @@ -104,6 +104,9 @@ private: required_device m_ay0; required_device m_ay1; + // I/O ports + optional_ioport_array<5> m_ports; + // internal state UINT8 m_data[4]; UINT8 m_status; diff --git a/src/mame/drivers/8080bw.cpp b/src/mame/drivers/8080bw.cpp index 641f278df1a..84c3e7a67c5 100644 --- a/src/mame/drivers/8080bw.cpp +++ b/src/mame/drivers/8080bw.cpp @@ -2986,8 +2986,8 @@ INPUT_CHANGED_MEMBER(_8080bw_state::claybust_gun_trigger) ana a rz */ - UINT8 const gunx = read_safe(ioport("GUNX"), 0x00); - UINT8 const guny = read_safe(ioport("GUNY"), 0x20); + UINT8 const gunx = m_gunx.read_safe(0x00); + UINT8 const guny = m_guny.read_safe(0x20); m_claybust_gun_pos = ((gunx >> 3) | (guny << 5)) + 2; m_claybust_gun_on->adjust(attotime::from_msec(250)); // timing is a guess } diff --git a/src/mame/drivers/aces1.cpp b/src/mame/drivers/aces1.cpp index 4bc18a85aa9..40faf64afcb 100644 --- a/src/mame/drivers/aces1.cpp +++ b/src/mame/drivers/aces1.cpp @@ -44,14 +44,7 @@ public: m_reel1(*this, "reel1"), m_reel2(*this, "reel2"), m_reel3(*this, "reel3"), - m_io1_port(*this, "IO1"), - m_io2_port(*this, "IO2"), - m_io3_port(*this, "IO3"), - m_io4_port(*this, "IO4"), - m_io5_port(*this, "IO5"), - m_io6_port(*this, "IO6"), - m_io7_port(*this, "IO7"), - m_io8_port(*this, "IO8") + m_io_ports(*this, {"IO1", "IO2", "IO3", "IO4", "IO5", "IO6", "IO7", "IO8"}) { } int m_input_strobe; int m_lamp_strobe; @@ -197,9 +190,7 @@ public: DECLARE_READ8_MEMBER( ic37_read_b ) { - ioport_port * portnames[] = { m_io1_port, m_io2_port, m_io3_port, m_io4_port, m_io5_port, m_io6_port, m_io7_port, m_io8_port,m_io1_port, m_io2_port, m_io3_port, m_io4_port, m_io5_port, m_io6_port, m_io7_port, m_io8_port }; - - return (portnames[m_input_strobe])->read(); + return (m_io_ports[m_input_strobe & 7])->read(); } DECLARE_READ8_MEMBER( ic37_read_c ) @@ -219,14 +210,7 @@ public: required_device m_reel1; required_device m_reel2; required_device m_reel3; - required_ioport m_io1_port; - required_ioport m_io2_port; - required_ioport m_io3_port; - required_ioport m_io4_port; - required_ioport m_io5_port; - required_ioport m_io6_port; - required_ioport m_io7_port; - required_ioport m_io8_port; + required_ioport_array<8> m_io_ports; DECLARE_DRIVER_INIT(aces1); virtual void machine_start() override; diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp index 15e209ed85a..84db75d0179 100644 --- a/src/mame/drivers/alg.cpp +++ b/src/mame/drivers/alg.cpp @@ -87,8 +87,8 @@ int alg_state::get_lightgun_pos(int player, int *x, int *y) { const rectangle &visarea = m_screen->visible_area(); - int xpos = (player == 0) ? m_gun1x->read() : (m_gun2x ? m_gun2x->read() : 0xffffffff); - int ypos = (player == 0) ? m_gun1y->read() : (m_gun2y ? m_gun2y->read() : 0xffffffff); + int xpos = (player == 0) ? m_gun1x->read() : m_gun2x.read_safe(0xffffffff); + int ypos = (player == 0) ? m_gun1y->read() : m_gun2y.read_safe(0xffffffff); if (xpos == -1 || ypos == -1) return FALSE; diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp index dc16f8d536f..4b561e6eab2 100644 --- a/src/mame/drivers/amiga.cpp +++ b/src/mame/drivers/amiga.cpp @@ -309,21 +309,22 @@ class cd32_state : public amiga_state public: cd32_state(const machine_config &mconfig, device_type type, const char *tag) : amiga_state(mconfig, type, tag), - m_p1_port(*this, "p1_cd32_buttons"), - m_p2_port(*this, "p2_cd32_buttons"), + m_player_ports(*this, {"p1_cd32_buttons", "p2_cd32_buttons"}), m_cdda(*this, "cdda") { } DECLARE_WRITE8_MEMBER( akiko_cia_0_port_a_write ); + void handle_joystick_cia(UINT8 pra, UINT8 dra); + UINT16 handle_joystick_potgor(UINT16 potgor); + DECLARE_CUSTOM_INPUT_MEMBER( cd32_input ); DECLARE_CUSTOM_INPUT_MEMBER( cd32_sel_mirror_input ); DECLARE_DRIVER_INIT( pal ); DECLARE_DRIVER_INIT( ntsc ); - required_ioport m_p1_port; - required_ioport m_p2_port; + required_ioport_array<2> m_player_ports; int m_oldstate[2]; int m_cd32_shifter[2]; @@ -849,40 +850,33 @@ void cd32_state::potgo_w(UINT16 data) } } -static void handle_cd32_joystick_cia(running_machine &machine, UINT8 pra, UINT8 dra) +void cd32_state::handle_joystick_cia(UINT8 pra, UINT8 dra) { - cd32_state *state = machine.driver_data(); - int i; - - for (i = 0; i < 2; i++) + for (int i = 0; i < 2; i++) { UINT8 but = 0x40 << i; UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */ UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */ - if (!(state->m_potgo_value & p5dir) || !(state->m_potgo_value & p5dat)) + if (!(m_potgo_value & p5dir) || !(m_potgo_value & p5dat)) { - if ((dra & but) && (pra & but) != state->m_oldstate[i]) + if ((dra & but) && (pra & but) != m_oldstate[i]) { if (!(pra & but)) { - state->m_cd32_shifter[i]--; - if (state->m_cd32_shifter[i] < 0) - state->m_cd32_shifter[i] = 0; + m_cd32_shifter[i]--; + if (m_cd32_shifter[i] < 0) + m_cd32_shifter[i] = 0; } } } - state->m_oldstate[i] = pra & but; + m_oldstate[i] = pra & but; } } -static UINT16 handle_joystick_potgor(running_machine &machine, UINT16 potgor) +UINT16 cd32_state::handle_joystick_potgor(UINT16 potgor) { - cd32_state *state = machine.driver_data(); - ioport_port * player_portname[] = { state->m_p1_port, state->m_p2_port }; - int i; - - for (i = 0; i < 2; i++) + for (int i = 0; i < 2; i++) { UINT16 p9dir = 0x0800 << (i * 4); /* output enable P9 */ UINT16 p9dat = 0x0400 << (i * 4); /* data P9 */ @@ -891,16 +885,16 @@ static UINT16 handle_joystick_potgor(running_machine &machine, UINT16 potgor) /* p5 is floating in input-mode */ potgor &= ~p5dat; - potgor |= state->m_potgo_value & p5dat; - if (!(state->m_potgo_value & p9dir)) + potgor |= m_potgo_value & p5dat; + if (!(m_potgo_value & p9dir)) potgor |= p9dat; /* P5 output and 1 -> shift register is kept reset (Blue button) */ - if ((state->m_potgo_value & p5dir) && (state->m_potgo_value & p5dat)) - state->m_cd32_shifter[i] = 8; + if ((m_potgo_value & p5dir) && (m_potgo_value & p5dat)) + m_cd32_shifter[i] = 8; /* shift at 1 == return one, >1 = return button states */ - if (state->m_cd32_shifter[i] == 0) + if (m_cd32_shifter[i] == 0) potgor &= ~p9dat; /* shift at zero == return zero */ - if (state->m_cd32_shifter[i] >= 2 && ((player_portname[i])->read() & (1 << (state->m_cd32_shifter[i] - 2)))) + if (m_cd32_shifter[i] >= 2 && ((m_player_ports[i])->read() & (1 << (m_cd32_shifter[i] - 2)))) potgor &= ~p9dat; } return potgor; @@ -908,13 +902,12 @@ static UINT16 handle_joystick_potgor(running_machine &machine, UINT16 potgor) CUSTOM_INPUT_MEMBER( cd32_state::cd32_input ) { - return handle_joystick_potgor(machine(), m_potgo_value) >> 8; + return handle_joystick_potgor(m_potgo_value) >> 8; } CUSTOM_INPUT_MEMBER( cd32_state::cd32_sel_mirror_input ) { - ioport_port* ports[2]= { m_p1_port, m_p2_port }; - UINT8 bits = ports[(int)(FPTR)param]->read(); + UINT8 bits = m_player_ports[(int)(FPTR)param]->read(); return (bits & 0x20)>>5; } @@ -926,7 +919,7 @@ WRITE8_MEMBER( cd32_state::akiko_cia_0_port_a_write ) // bit 1, power led output().set_led_value(0, BIT(data, 1) ? 0 : 1); - handle_cd32_joystick_cia(machine(), data, m_cia_0->read(space, 2)); + handle_joystick_cia(data, m_cia_0->read(space, 2)); } diff --git a/src/mame/drivers/apple2.cpp b/src/mame/drivers/apple2.cpp index 78775951801..8100e0f7b9e 100644 --- a/src/mame/drivers/apple2.cpp +++ b/src/mame/drivers/apple2.cpp @@ -334,7 +334,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(napple2_state::apple2_interrupt) m_video->m_sysconfig = m_sysconfig->read(); // check reset - if (m_resetdip) // if reset DIP is present, use it + if (m_resetdip.found()) // if reset DIP is present, use it { if (m_resetdip->read() & 1) { // CTRL-RESET diff --git a/src/mame/drivers/astrocde.cpp b/src/mame/drivers/astrocde.cpp index 73b32d70563..00aa5357c19 100644 --- a/src/mame/drivers/astrocde.cpp +++ b/src/mame/drivers/astrocde.cpp @@ -265,7 +265,7 @@ READ8_MEMBER(astrocde_state::spacezap_io_r) { machine().bookkeeping().coin_counter_w(0, (offset >> 8) & 1); machine().bookkeeping().coin_counter_w(1, (offset >> 9) & 1); - return m_p3handle ? m_p3handle->read() : 0xff; + return m_p3handle.read_safe(0xff); } diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp index 875e0077eff..b009cee438d 100644 --- a/src/mame/drivers/astrof.cpp +++ b/src/mame/drivers/astrof.cpp @@ -198,7 +198,7 @@ void astrof_state::astrof_get_pens( pen_t *pens ) { offs_t i; UINT8 bank = (m_astrof_palette_bank ? 0x10 : 0x00); - UINT8 config = read_safe(ioport("FAKE"), 0x00); + UINT8 config = m_fake_port.read_safe(0x00); UINT8 *prom = memregion("proms")->base(); /* a common wire hack to the pcb causes the prom halves to be inverted */ @@ -234,7 +234,7 @@ void astrof_state::tomahawk_get_pens( pen_t *pens ) { offs_t i; UINT8 *prom = memregion("proms")->base(); - UINT8 config = read_safe(ioport("FAKE"), 0x00); + UINT8 config = m_fake_port.read_safe(0x00); for (i = 0; i < TOMAHAWK_NUM_PENS; i++) { diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp index 42040df8a30..2d178825650 100644 --- a/src/mame/drivers/atarist.cpp +++ b/src/mame/drivers/atarist.cpp @@ -566,7 +566,7 @@ READ8_MEMBER( st_state::ikbd_port2_r ) */ - UINT8 data = m_joy1 ? m_joy1->read() & 0x06 : 0x06; + UINT8 data = m_joy1.read_safe(0x06) & 0x06; // serial receive data |= m_ikbd_tx << 3; @@ -653,7 +653,7 @@ READ8_MEMBER( st_state::ikbd_port4_r ) if (m_ikbd_joy) return 0xff; - UINT8 data = m_joy0 ? m_joy0->read() : 0xff; + UINT8 data = m_joy0.read_safe(0xff); if ((m_config->read() & 0x01) == 0) { @@ -1941,7 +1941,8 @@ void st_state::machine_start() m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); // allocate timers - if(m_mousex) { + if (m_mousex.found()) + { m_mouse_timer = timer_alloc(TIMER_MOUSE_TICK); m_mouse_timer->adjust(attotime::zero, 0, attotime::from_hz(500)); } diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp index 00db1fcc689..0c154fb4971 100644 --- a/src/mame/drivers/attache.cpp +++ b/src/mame/drivers/attache.cpp @@ -86,14 +86,7 @@ public: m_palette(*this, "palette"), m_floppy0(*this, "fdc:0:525dd"), m_floppy1(*this, "fdc:1:525dd"), - m_kb_row0(*this, "row0"), - m_kb_row1(*this, "row1"), - m_kb_row2(*this, "row2"), - m_kb_row3(*this, "row3"), - m_kb_row4(*this, "row4"), - m_kb_row5(*this, "row5"), - m_kb_row6(*this, "row6"), - m_kb_row7(*this, "row7"), + m_kb_rows(*this, {"row0", "row1", "row2", "row3", "row4", "row5", "row6", "row7"}), m_kb_mod(*this, "modifiers"), m_membank1(*this, "bank1"), m_membank2(*this, "bank2"), @@ -183,14 +176,7 @@ private: required_device m_palette; required_device m_floppy0; required_device m_floppy1; - required_ioport m_kb_row0; - required_ioport m_kb_row1; - required_ioport m_kb_row2; - required_ioport m_kb_row3; - required_ioport m_kb_row4; - required_ioport m_kb_row5; - required_ioport m_kb_row6; - required_ioport m_kb_row7; + required_ioport_array<8> m_kb_rows; required_ioport m_kb_mod; required_memory_bank m_membank1; required_memory_bank m_membank2; @@ -370,13 +356,12 @@ WRITE8_MEMBER(attache_state::rom_w) UINT16 attache_state::get_key() { UINT8 row,bits,data; - ioport_port* keys[8] = { m_kb_row0, m_kb_row1, m_kb_row2, m_kb_row3, m_kb_row4, m_kb_row5, m_kb_row6, m_kb_row7 }; UINT8 res = 0; // scan input ports for(row=0;row<8;row++) { - data = keys[row]->read(); + data = m_kb_rows[row]->read(); for(bits=0;bits<8;bits++) { if(BIT(data,bits)) diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp index a89bde1c039..3b8202285a7 100644 --- a/src/mame/drivers/bbc.cpp +++ b/src/mame/drivers/bbc.cpp @@ -659,14 +659,14 @@ INPUT_PORTS_END INPUT_CHANGED_MEMBER(bbc_state::monitor_changed) { - m_monitortype = read_safe(ioport("BBCCONFIG"), 0) &0x03; + m_monitortype = m_bbcconfig.read_safe(0) &0x03; } INPUT_CHANGED_MEMBER(bbc_state::speech_changed) { // Switchable during runtime as some games (Hyper Sports, Space Fighter) are not compatible with Speech - m_Speech = read_safe(ioport("BBCCONFIG"), 0) & 0x04; + m_Speech = m_bbcconfig.read_safe(0) & 0x04; } diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp index df5852c9410..c7bf0da5ed0 100644 --- a/src/mame/drivers/bfm_sc4.cpp +++ b/src/mame/drivers/bfm_sc4.cpp @@ -110,13 +110,12 @@ UINT8 sc4_state::read_input_matrix(int row) { - ioport_port* portnames[16] = { m_io1, m_io2, m_io3, m_io4, m_io5, m_io6, m_io7, m_io8, m_io9, m_io10, m_io11, m_io12 }; UINT8 value; if (row<4) - value = (read_safe(portnames[row], 0x00) & 0x1f) + ((read_safe(portnames[row+8], 0x00) & 0x07) << 5); + value = (m_io_ports[row].read_safe(0x00) & 0x1f) + ((m_io_ports[row+8].read_safe(0x00) & 0x07) << 5); else - value = (read_safe(portnames[row], 0x00) & 0x1f) + ((read_safe(portnames[row+4], 0x00) & 0x18) << 2); + value = (m_io_ports[row].read_safe(0x00) & 0x1f) + ((m_io_ports[row+4].read_safe(0x00) & 0x18) << 2); return value; } diff --git a/src/mame/drivers/bwidow.cpp b/src/mame/drivers/bwidow.cpp index 6c738de146f..3eb06741e9e 100644 --- a/src/mame/drivers/bwidow.cpp +++ b/src/mame/drivers/bwidow.cpp @@ -264,9 +264,9 @@ READ8_MEMBER(bwidow_state::spacduel_IN3_r) int res2; int res3; - res1 = ioport("IN3")->read(); - res2 = ioport("IN4")->read(); - res3 = read_safe(ioport("DSW2"), 0); + res1 = m_in3->read(); + res2 = m_in4->read(); + res3 = m_dsw2.read_safe(0); res = 0x00; switch (offset & 0x07) @@ -315,7 +315,7 @@ CUSTOM_INPUT_MEMBER(bwidow_state::clock_r) READ8_MEMBER(bwidow_state::bwidowp_in_r) { - return (ioport("IN4")->read() & 0x0f) | ((ioport("IN3")->read() & 0x0f) << 4); + return (m_in4->read() & 0x0f) | ((m_in3->read() & 0x0f) << 4); } /************************************* diff --git a/src/mame/drivers/cdi.cpp b/src/mame/drivers/cdi.cpp index e2c984228e6..fb0bdbf47e4 100644 --- a/src/mame/drivers/cdi.cpp +++ b/src/mame/drivers/cdi.cpp @@ -143,35 +143,35 @@ INPUT_CHANGED_MEMBER(cdi_state::mcu_input) switch((FPTR)param) { case 0x39: - if(m_input1 && m_input1->read() & 0x01) send = true; + if (m_input1.read_safe(0) & 0x01) send = true; break; case 0x37: - if(m_input1 && m_input1->read() & 0x02) send = true; + if (m_input1.read_safe(0) & 0x02) send = true; break; case 0x31: - if(m_input1 && m_input1->read() & 0x04) send = true; + if (m_input1.read_safe(0) & 0x04) send = true; break; case 0x32: - if(m_input1 && m_input1->read() & 0x08) send = true; + if (m_input1.read_safe(0) & 0x08) send = true; break; case 0x33: - if(m_input1 && m_input1->read() & 0x10) send = true; + if (m_input1.read_safe(0) & 0x10) send = true; break; case 0x30: - if(m_input2 && m_input2->read() & 0x01) send = true; + if (m_input2.read_safe(0) & 0x01) send = true; break; case 0x38: - if(m_input2 && m_input2->read() & 0x02) send = true; + if (m_input2.read_safe(0) & 0x02) send = true; break; case 0x34: - if(m_input2 && m_input2->read() & 0x04) send = true; + if (m_input2.read_safe(0) & 0x04) send = true; break; case 0x35: - if(m_input2 && m_input2->read() & 0x08) send = true; + if (m_input2.read_safe(0) & 0x08) send = true; break; case 0x36: - if(m_input2 && m_input2->read() & 0x10) send = true; + if (m_input2.read_safe(0) & 0x10) send = true; break; } diff --git a/src/mame/drivers/cinemat.cpp b/src/mame/drivers/cinemat.cpp index 3273f5fef8f..2127fca0fa4 100644 --- a/src/mame/drivers/cinemat.cpp +++ b/src/mame/drivers/cinemat.cpp @@ -151,7 +151,7 @@ READ8_MEMBER(cinemat_state::joystick_read) else { int const xval = INT16(m_maincpu->state_int(CCPU_X) << 4) >> 4; - return (read_safe(ioport(m_mux_select ? "ANALOGX" : "ANALOGY"), 0) - xval) < 0x800; + return ((m_mux_select ? m_analog_x : m_analog_y).read_safe(0) - xval) < 0x800; } } diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp index 37ea78dfa0c..4c3a98e1f87 100644 --- a/src/mame/drivers/cobra.cpp +++ b/src/mame/drivers/cobra.cpp @@ -504,12 +504,16 @@ protected: private: int m_coin_counter[2]; + optional_ioport m_test_port; + optional_ioport_array<2> m_player_ports; }; const device_type COBRA_JVS = &device_creator; cobra_jvs::cobra_jvs(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : jvs_device(mconfig, COBRA_JVS, "JVS (COBRA)", tag, owner, clock, "cobra_jvs", __FILE__) + : jvs_device(mconfig, COBRA_JVS, "JVS (COBRA)", tag, owner, clock, "cobra_jvs", __FILE__), + m_test_port(*this, ":TEST"), + m_player_ports(*this, {":P1", ":P2"}) { m_coin_counter[0] = 0; m_coin_counter[1] = 0; @@ -551,13 +555,11 @@ bool cobra_jvs::switches(UINT8 *&buf, UINT8 count_players, UINT8 bytes_per_switc if (count_players > 2 || bytes_per_switch > 2) return false; - static const char* player_ports[2] = { ":P1", ":P2" }; - - *buf++ = read_safe(ioport(":TEST"), 0); + *buf++ = m_test_port.read_safe(0); for (int i=0; i < count_players; i++) { - UINT32 pval = read_safe(ioport(player_ports[i]), 0); + UINT32 pval = m_player_ports[i].read_safe(0); for (int j=0; j < bytes_per_switch; j++) { *buf++ = (UINT8)(pval >> ((1-j) * 8)); diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp index dd4cec79202..84807970c66 100644 --- a/src/mame/drivers/coleco.cpp +++ b/src/mame/drivers/coleco.cpp @@ -231,18 +231,18 @@ READ8_MEMBER( coleco_state::cart_r ) UINT8 coleco_state::coleco_scan_paddles(UINT8 *joy_status0, UINT8 *joy_status1) { - UINT8 ctrl_sel = (m_ctrlsel != nullptr) ? m_ctrlsel->read() : 0; + UINT8 ctrl_sel = m_ctrlsel.read_safe(0); /* which controller shall we read? */ if ((ctrl_sel & 0x07) == 0x02) // Super Action Controller P1 - *joy_status0 = (m_sac_slide1 != nullptr) ? m_sac_slide1->read() : 0; + *joy_status0 = m_sac_slide1.read_safe(0); else if ((ctrl_sel & 0x07) == 0x03) // Driving Controller P1 - *joy_status0 = (m_driv_wheel1 != nullptr) ? m_driv_wheel1->read() : 0; + *joy_status0 = m_driv_wheel1.read_safe(0); if ((ctrl_sel & 0x70) == 0x20) // Super Action Controller P2 - *joy_status1 = (m_sac_slide2 != nullptr) ? m_sac_slide2->read() : 0; + *joy_status1 = m_sac_slide2.read_safe(0); else if ((ctrl_sel & 0x70) == 0x30) // Driving Controller P2 - *joy_status1 = (m_driv_wheel2 != nullptr) ? m_driv_wheel2->read() : 0; + *joy_status1 = m_driv_wheel2.read_safe(0); /* In principle, even if not supported by any game, I guess we could have two Super Action Controllers plugged into the Roller controller ports. Since I found no info @@ -250,8 +250,8 @@ UINT8 coleco_state::coleco_scan_paddles(UINT8 *joy_status0, UINT8 *joy_status1) the Roller trackball inputs and actually use the latter ones, when both are selected. */ if (ctrl_sel & 0x80) // Roller controller { - *joy_status0 = (m_roller_x != nullptr) ? m_roller_x->read() : 0; - *joy_status1 = (m_roller_y != nullptr) ? m_roller_y->read() : 0; + *joy_status0 = m_roller_x.read_safe(0); + *joy_status1 = m_roller_y.read_safe(0); } return *joy_status0 | *joy_status1; @@ -260,7 +260,7 @@ UINT8 coleco_state::coleco_scan_paddles(UINT8 *joy_status0, UINT8 *joy_status1) UINT8 coleco_state::coleco_paddle_read(int port, int joy_mode, UINT8 joy_status) { - UINT8 ctrl_sel = (m_ctrlsel != nullptr ) ? m_ctrlsel->read() : 0; + UINT8 ctrl_sel = m_ctrlsel.read_safe(0); UINT8 ctrl_extra = ctrl_sel & 0x80; ctrl_sel = ctrl_sel >> (port*4) & 7; diff --git a/src/mame/drivers/combatsc.cpp b/src/mame/drivers/combatsc.cpp index e9addf5066b..2f241304d4f 100644 --- a/src/mame/drivers/combatsc.cpp +++ b/src/mame/drivers/combatsc.cpp @@ -268,13 +268,12 @@ READ8_MEMBER(combatsc_state::trackball_r) if (offset == 0) { int i, dir[4]; - static const char *const tracknames[] = { "TRACK0_Y", "TRACK0_X", "TRACK1_Y", "TRACK1_X" }; for (i = 0; i < 4; i++) { UINT8 curr; - curr = read_safe(ioport(tracknames[i]), 0xff); + curr = m_track_ports[i].read_safe(0xff); dir[i] = curr - m_pos[i]; m_sign[i] = dir[i] & 0x80; diff --git a/src/mame/drivers/cosmic.cpp b/src/mame/drivers/cosmic.cpp index b896be46641..7aba45dcd58 100644 --- a/src/mame/drivers/cosmic.cpp +++ b/src/mame/drivers/cosmic.cpp @@ -324,12 +324,12 @@ READ8_MEMBER(cosmic_state::cosmica_pixel_clock_r) READ8_MEMBER(cosmic_state::cosmicg_port_0_r) { /* The top four address lines from the CRTC are bits 0-3 */ - return (ioport("IN0")->read() & 0xf0) | ((m_screen->vpos() & 0xf0) >> 4); + return (m_in_ports[0]->read() & 0xf0) | ((m_screen->vpos() & 0xf0) >> 4); } READ8_MEMBER(cosmic_state::magspot_coinage_dip_r) { - return (read_safe(ioport("DSW"), 0) & (1 << (7 - offset))) ? 0 : 1; + return (m_dsw.read_safe(0) & (1 << (7 - offset))) ? 0 : 1; } @@ -337,8 +337,8 @@ READ8_MEMBER(cosmic_state::magspot_coinage_dip_r) READ8_MEMBER(cosmic_state::nomnlnd_port_0_1_r) { - int control = ioport(offset ? "IN1" : "IN0")->read(); - int fire = ioport("IN3")->read(); + int control = m_in_ports[offset]->read(); + int fire = m_in_ports[3]->read(); /* If firing - stop tank */ if ((fire & 0xc0) == 0) return 0xff; diff --git a/src/mame/drivers/cosmicos.cpp b/src/mame/drivers/cosmicos.cpp index 96d29ff341f..6c97e09e722 100644 --- a/src/mame/drivers/cosmicos.cpp +++ b/src/mame/drivers/cosmicos.cpp @@ -456,12 +456,6 @@ void cosmicos_state::machine_start() /* initialize LED display */ m_led->rbi_w(1); - // find keyboard rows - m_key_row[0] = m_y1; - m_key_row[1] = m_y2; - m_key_row[2] = m_y3; - m_key_row[3] = m_y4; - /* register for state saving */ save_item(NAME(m_wait)); save_item(NAME(m_clear)); diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp index 090aa7706a1..77034027b8d 100644 --- a/src/mame/drivers/cp1.cpp +++ b/src/mame/drivers/cp1.cpp @@ -28,11 +28,7 @@ public: m_i8155(*this, "i8155"), m_i8155_cp3(*this, "i8155_cp3"), m_cassette(*this, "cassette"), - m_io_line0(*this, "LINE0"), - m_io_line1(*this, "LINE1"), - m_io_line2(*this, "LINE2"), - m_io_line3(*this, "LINE3"), - m_io_line4(*this, "LINE4"), + m_io_lines(*this, {"LINE0", "LINE1", "LINE2", "LINE3", "LINE4"}), m_io_config(*this, "CONFIG") { } @@ -40,11 +36,7 @@ public: required_device m_i8155; required_device m_i8155_cp3; required_device m_cassette; - required_ioport m_io_line0; - required_ioport m_io_line1; - required_ioport m_io_line2; - required_ioport m_io_line3; - required_ioport m_io_line4; + required_ioport_array<5> m_io_lines; required_ioport m_io_config; virtual void machine_reset() override; @@ -99,12 +91,11 @@ READ8_MEMBER(cp1_state::port2_r) // ---x ---- I8155 CE // ---- xxxx keyboard input - ioport_port* portnames[] = { m_io_line0, m_io_line1, m_io_line2, m_io_line3, m_io_line4 }; UINT8 data = 0; for(int i=0; i<5; i++) if (!(m_matrix & (1<read(); + data |= m_io_lines[i]->read(); return (data & 0x0f) | (m_port2 & 0xf0); } diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp index 127a94f18f6..010c59a762e 100644 --- a/src/mame/drivers/cubo.cpp +++ b/src/mame/drivers/cubo.cpp @@ -326,12 +326,14 @@ class cubo_state : public amiga_state public: cubo_state(const machine_config &mconfig, device_type type, const char *tag) : amiga_state(mconfig, type, tag), - m_p1_port(*this, "P1"), - m_p2_port(*this, "P2"), + m_player_ports(*this, {"P1", "P2"}), m_microtouch(*this, "microtouch"), m_cdda(*this, "cdda") { } + void handle_joystick_cia(UINT8 pra, UINT8 dra); + UINT16 handle_joystick_potgor(UINT16 potgor); + DECLARE_CUSTOM_INPUT_MEMBER(cubo_input); DECLARE_CUSTOM_INPUT_MEMBER(cd32_sel_mirror_input); @@ -347,8 +349,7 @@ public: DECLARE_DRIVER_INIT(lasstixx); DECLARE_DRIVER_INIT(lsrquiz); - optional_ioport m_p1_port; - optional_ioport m_p2_port; + optional_ioport_array<2> m_player_ports; int m_oldstate[2]; int m_cd32_shifter[2]; @@ -374,8 +375,6 @@ private: void mgprem11_input_hack(); }; -static void handle_cd32_joystick_cia(running_machine &machine, UINT8 pra, UINT8 dra); - /************************************* * @@ -401,7 +400,7 @@ WRITE8_MEMBER( cubo_state::akiko_cia_0_port_a_write ) /* bit 2 = Power Led on Amiga */ output().set_led_value(0, (data & 2) ? 0 : 1); - handle_cd32_joystick_cia(machine(), data, m_cia_0->read(space, 2)); + handle_joystick_cia(data, m_cia_0->read(space, 2)); } @@ -466,40 +465,33 @@ void cubo_state::potgo_w(UINT16 data) } } -static void handle_cd32_joystick_cia(running_machine &machine, UINT8 pra, UINT8 dra) +void cubo_state::handle_joystick_cia(UINT8 pra, UINT8 dra) { - cubo_state *state = machine.driver_data(); - int i; - - for (i = 0; i < 2; i++) + for (int i = 0; i < 2; i++) { UINT8 but = 0x40 << i; UINT16 p5dir = 0x0200 << (i * 4); /* output enable P5 */ UINT16 p5dat = 0x0100 << (i * 4); /* data P5 */ - if (!(state->m_potgo_value & p5dir) || !(state->m_potgo_value & p5dat)) + if (!(m_potgo_value & p5dir) || !(m_potgo_value & p5dat)) { - if ((dra & but) && (pra & but) != state->m_oldstate[i]) + if ((dra & but) && (pra & but) != m_oldstate[i]) { if (!(pra & but)) { - state->m_cd32_shifter[i]--; - if (state->m_cd32_shifter[i] < 0) - state->m_cd32_shifter[i] = 0; + m_cd32_shifter[i]--; + if (m_cd32_shifter[i] < 0) + m_cd32_shifter[i] = 0; } } } - state->m_oldstate[i] = pra & but; + m_oldstate[i] = pra & but; } } -static UINT16 handle_joystick_potgor(running_machine &machine, UINT16 potgor) +UINT16 cubo_state::handle_joystick_potgor(UINT16 potgor) { - cubo_state *state = machine.driver_data(); - ioport_port * player_portname[] = { state->m_p2_port, state->m_p1_port }; - int i; - - for (i = 0; i < 2; i++) + for (int i = 0; i < 2; i++) { UINT16 p9dir = 0x0800 << (i * 4); /* output enable P9 */ UINT16 p9dat = 0x0400 << (i * 4); /* data P9 */ @@ -508,16 +500,16 @@ static UINT16 handle_joystick_potgor(running_machine &machine, UINT16 potgor) /* p5 is floating in input-mode */ potgor &= ~p5dat; - potgor |= state->m_potgo_value & p5dat; - if (!(state->m_potgo_value & p9dir)) + potgor |= m_potgo_value & p5dat; + if (!(m_potgo_value & p9dir)) potgor |= p9dat; /* P5 output and 1 -> shift register is kept reset (Blue button) */ - if ((state->m_potgo_value & p5dir) && (state->m_potgo_value & p5dat)) - state->m_cd32_shifter[i] = 8; + if ((m_potgo_value & p5dir) && (m_potgo_value & p5dat)) + m_cd32_shifter[i] = 8; /* shift at 1 == return one, >1 = return button states */ - if (state->m_cd32_shifter[i] == 0) + if (m_cd32_shifter[i] == 0) potgor &= ~p9dat; /* shift at zero == return zero */ - if (state->m_cd32_shifter[i] >= 2 && ((player_portname[i])->read() & (1 << (state->m_cd32_shifter[i] - 2)))) + if (m_cd32_shifter[i] >= 2 && ((m_player_ports[1 - i])->read() & (1 << (m_cd32_shifter[i] - 2)))) potgor &= ~p9dat; } return potgor; @@ -525,13 +517,12 @@ static UINT16 handle_joystick_potgor(running_machine &machine, UINT16 potgor) CUSTOM_INPUT_MEMBER( cubo_state::cubo_input ) { - return handle_joystick_potgor(machine(), m_potgo_value) >> 8; + return handle_joystick_potgor(m_potgo_value) >> 8; } CUSTOM_INPUT_MEMBER( cubo_state::cd32_sel_mirror_input ) { - ioport_port* ports[2]= { m_p1_port, m_p2_port }; - UINT8 bits = ports[(int)(FPTR)param]->read(); + UINT8 bits = m_player_ports[(int)(FPTR)param]->read(); return (bits & 0x20)>>5; } diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp index efa5c7ed4d8..85181a1decb 100644 --- a/src/mame/drivers/djmain.cpp +++ b/src/mame/drivers/djmain.cpp @@ -224,14 +224,13 @@ READ8_MEMBER(djmain_state::inp2_r) READ32_MEMBER(djmain_state::turntable_r) { UINT32 result = 0; - static const char *const ttnames[] = { "TT1", "TT2" }; if (ACCESSING_BITS_8_15) { UINT8 pos; int delta; - pos = read_safe(ioport(ttnames[m_turntable_select]), 0); + pos = m_turntable[m_turntable_select].read_safe(0); delta = pos - m_turntable_last_pos[m_turntable_select]; if (delta < -128) delta += 256; diff --git a/src/mame/drivers/elwro800.cpp b/src/mame/drivers/elwro800.cpp index fa377badef9..f30de584e65 100644 --- a/src/mame/drivers/elwro800.cpp +++ b/src/mame/drivers/elwro800.cpp @@ -40,7 +40,7 @@ public: m_i8251(*this, "i8251"), m_i8255(*this, "ppi8255"), m_centronics(*this, "centronics"), - m_io_line8(*this, "LINE8"), + m_io_ports(*this, {"LINE7", "LINE6", "LINE5", "LINE4", "LINE3", "LINE2", "LINE1", "LINE0", "LINE8"}), m_io_line9(*this, "LINE9"), m_io_network_id(*this, "NETWORK ID") { @@ -68,7 +68,7 @@ protected: required_device m_i8251; required_device m_i8255; required_device m_centronics; - required_ioport m_io_line8; + required_ioport_array<9> m_io_ports; required_ioport m_io_line9; required_ioport m_io_network_id; @@ -234,7 +234,6 @@ READ8_MEMBER(elwro800_state::elwro800jr_io_r) int mask = 0x8000; int data = 0xff; int i; - ioport_port *io_ports[9] = { m_io_line7, m_io_line6, m_io_line5, m_io_line4, m_io_line3, m_io_line2, m_io_line1, m_io_line0, m_io_line8 }; if ( !m_NR ) { @@ -242,7 +241,7 @@ READ8_MEMBER(elwro800_state::elwro800jr_io_r) { if (!(offset & mask)) { - data &= io_ports[i]->read(); + data &= m_io_ports[i]->read(); } } diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp index 49e965f6f0d..be075299ca7 100644 --- a/src/mame/drivers/fidel6502.cpp +++ b/src/mame/drivers/fidel6502.cpp @@ -743,7 +743,7 @@ WRITE8_MEMBER(fidel6502_state::fexcel_ttl_w) READ8_MEMBER(fidel6502_state::fexcel_ttl_r) { // a0-a2,d6: from speech board: language switches and TSI BUSY line, otherwise tied to VCC - UINT8 d6 = (read_safe(m_inp_matrix[9], 0xff) >> offset & 1) ? 0x40 : 0; + UINT8 d6 = (m_inp_matrix[9].read_safe(0xff) >> offset & 1) ? 0x40 : 0; // a0-a2,d7: multiplexed inputs (active low) return d6 | ((read_inputs(9) >> offset & 1) ? 0 : 0x80); diff --git a/src/mame/drivers/firetrk.cpp b/src/mame/drivers/firetrk.cpp index 9f616ef9808..542bc717077 100644 --- a/src/mame/drivers/firetrk.cpp +++ b/src/mame/drivers/firetrk.cpp @@ -155,8 +155,8 @@ void firetrk_state::machine_reset() READ8_MEMBER(firetrk_state::firetrk_dip_r) { - UINT8 val0 = ioport("DIP_0")->read(); - UINT8 val1 = ioport("DIP_1")->read(); + UINT8 val0 = m_dips[0]->read(); + UINT8 val1 = m_dips[1]->read(); if (val1 & (1 << (2 * offset + 0))) val0 |= 1; if (val1 & (1 << (2 * offset + 1))) val0 |= 2; @@ -167,8 +167,8 @@ READ8_MEMBER(firetrk_state::firetrk_dip_r) READ8_MEMBER(firetrk_state::montecar_dip_r) { - UINT8 val0 = ioport("DIP_0")->read(); - UINT8 val1 = ioport("DIP_1")->read(); + UINT8 val0 = m_dips[0]->read(); + UINT8 val1 = m_dips[1]->read(); if (val1 & (1 << (3 - offset))) val0 |= 1; if (val1 & (1 << (7 - offset))) val0 |= 2; @@ -230,7 +230,7 @@ READ8_MEMBER(firetrk_state::firetrk_input_r) /* update steering wheels */ for (i = 0; i < 2; i++) { - UINT32 const new_dial = read_safe(ioport(i ? "STEER_2" : "STEER_1"), 0); + UINT32 const new_dial = m_steer[i].read_safe(0); INT32 const delta = new_dial - m_dial[i]; if (delta != 0) @@ -242,9 +242,9 @@ READ8_MEMBER(firetrk_state::firetrk_input_r) } } - return ((read_safe(ioport("BIT_0"), 0) & (1 << offset)) ? 0x01 : 0) | - ((read_safe(ioport("BIT_6"), 0) & (1 << offset)) ? 0x40 : 0) | - ((read_safe(ioport("BIT_7"), 0) & (1 << offset)) ? 0x80 : 0); + return ((m_bit_0.read_safe(0) & (1 << offset)) ? 0x01 : 0) | + ((m_bit_6.read_safe(0) & (1 << offset)) ? 0x40 : 0) | + ((m_bit_7.read_safe(0) & (1 << offset)) ? 0x80 : 0); } diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp index 9151afa895e..6032a3d9beb 100644 --- a/src/mame/drivers/fm7.cpp +++ b/src/mame/drivers/fm7.cpp @@ -1288,7 +1288,6 @@ void fm7_state::key_press(UINT16 scancode) void fm7_state::fm7_keyboard_poll_scan() { - ioport_port* portnames[3] = { m_key1, m_key2, m_key3 }; int bit = 0; int x,y; UINT32 keys; @@ -1297,7 +1296,7 @@ void fm7_state::fm7_keyboard_poll_scan() for(x=0;x<3;x++) { - keys = portnames[x]->read(); + keys = m_kb_ports[x]->read(); for(y=0;y<32;y++) // loop through each bit in the port { @@ -1333,14 +1332,13 @@ void fm7_state::fm7_keyboard_poll_scan() TIMER_CALLBACK_MEMBER(fm7_state::fm7_keyboard_poll) { - ioport_port* portnames[3] = { m_key1, m_key2, m_key3 }; int x,y; int bit = 0; int mod = 0; UINT32 keys; UINT32 modifiers = m_keymod->read(); - if(m_key3->read() & 0x40000) + if (m_kb_ports[2]->read() & 0x40000) { m_break_flag = 1; m_maincpu->set_input_line(M6809_FIRQ_LINE,ASSERT_LINE); @@ -1369,7 +1367,7 @@ TIMER_CALLBACK_MEMBER(fm7_state::fm7_keyboard_poll) for(x=0;x<3;x++) { - keys = portnames[x]->read(); + keys = m_kb_ports[x]->read(); for(y=0;y<32;y++) // loop through each bit in the port { diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp index 579b3f3b4c1..804644c0140 100644 --- a/src/mame/drivers/fmtowns.cpp +++ b/src/mame/drivers/fmtowns.cpp @@ -661,21 +661,21 @@ void towns_state::kb_sendcode(UINT8 scancode, int release) case 0: // key press m_towns_kb_output = 0x80; m_towns_kb_extend = scancode & 0x7f; - if(m_key3->read() & 0x00080000) + if (m_kb_ports[2]->read() & 0x00080000) m_towns_kb_output |= 0x04; - if(m_key3->read() & 0x00040000) + if (m_kb_ports[2]->read() & 0x00040000) m_towns_kb_output |= 0x08; - if(m_key3->read() & 0x06400000) + if (m_kb_ports[2]->read() & 0x06400000) m_towns_kb_output |= 0x20; break; case 1: // key release m_towns_kb_output = 0x90; m_towns_kb_extend = scancode & 0x7f; - if(m_key3->read() & 0x00080000) + if (m_kb_ports[2]->read() & 0x00080000) m_towns_kb_output |= 0x04; - if(m_key3->read() & 0x00040000) + if (m_kb_ports[2]->read() & 0x00040000) m_towns_kb_output |= 0x08; - if(m_key3->read() & 0x06400000) + if (m_kb_ports[2]->read() & 0x06400000) m_towns_kb_output |= 0x20; break; case 2: // extended byte @@ -694,7 +694,6 @@ void towns_state::kb_sendcode(UINT8 scancode, int release) void towns_state::poll_keyboard() { - ioport_port* kb_ports[4] = { m_key1, m_key2, m_key3, m_key4 }; int port,bit; UINT8 scan; UINT32 portval; @@ -702,7 +701,7 @@ void towns_state::poll_keyboard() scan = 0; for(port=0;port<4;port++) { - portval = kb_ports[port]->read(); + portval = m_kb_ports[port]->read(); for(bit=0;bit<32;bit++) { if(((portval & (1<= 0 && m_tenspot_current_game < 10) + return m_tenspot_game_dsw[m_tenspot_current_game]->read(); + else + return 0x00; } diff --git a/src/mame/drivers/gomoku.cpp b/src/mame/drivers/gomoku.cpp index c7c86df9ca7..4a425759fa3 100644 --- a/src/mame/drivers/gomoku.cpp +++ b/src/mame/drivers/gomoku.cpp @@ -32,11 +32,10 @@ todo: READ8_MEMBER(gomoku_state::input_port_r) { int i, res; - static const char *const portnames[] = { "IN0", "IN1", "DSW", "UNUSED0", "UNUSED1", "UNUSED2", "UNUSED3", "UNUSED4" }; res = 0; for (i = 0; i < 8; i++) - res |= ((read_safe(ioport(portnames[i]), 0xff) >> offset) & 1) << i; + res |= ((m_inputs[i].read_safe(0xff) >> offset) & 1) << i; return res; } diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp index d3006f73d9e..2a335e14010 100644 --- a/src/mame/drivers/gottlieb.cpp +++ b/src/mame/drivers/gottlieb.cpp @@ -284,8 +284,8 @@ CUSTOM_INPUT_MEMBER(gottlieb_state::analog_delta_r) WRITE8_MEMBER(gottlieb_state::gottlieb_analog_reset_w) { /* reset the trackball counters */ - m_track[0] = read_safe(ioport("TRACKX"), 0); - m_track[1] = read_safe(ioport("TRACKY"), 0); + m_track[0] = m_track_x.read_safe(0); + m_track[1] = m_track_y.read_safe(0); } diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp index 3a15506a5a4..b08482f3a8a 100644 --- a/src/mame/drivers/hornet.cpp +++ b/src/mame/drivers/hornet.cpp @@ -995,8 +995,8 @@ ADC12138_IPT_CONVERT_CB(hornet_state::adc12138_input_callback) int value = 0; switch (input) { - case 0: value = (m_analog1) ? m_analog1->read() : 0; break; - case 1: value = (m_analog2) ? m_analog2->read() : 0; break; + case 0: value = m_analog1.read_safe(0); break; + case 1: value = m_analog2.read_safe(0); break; } return (double)(value) / 2047.0; diff --git a/src/mame/drivers/huebler.cpp b/src/mame/drivers/huebler.cpp index 26148bcbff6..c552329d99a 100644 --- a/src/mame/drivers/huebler.cpp +++ b/src/mame/drivers/huebler.cpp @@ -278,24 +278,6 @@ static const z80_daisy_config amu880_daisy_chain[] = void amu880_state::machine_start() { - // find keyboard rows - m_key_row[0] = m_y0; - m_key_row[1] = m_y1; - m_key_row[2] = m_y2; - m_key_row[3] = m_y3; - m_key_row[4] = m_y4; - m_key_row[5] = m_y5; - m_key_row[6] = m_y6; - m_key_row[7] = m_y7; - m_key_row[8] = m_y8; - m_key_row[9] = m_y9; - m_key_row[10] = m_y10; - m_key_row[11] = m_y11; - m_key_row[12] = m_y12; - m_key_row[13] = m_y13; - m_key_row[14] = m_y14; - m_key_row[15] = m_y15; - /* register for state saving */ save_item(NAME(m_key_d6)); save_item(NAME(m_key_d7)); diff --git a/src/mame/drivers/jackal.cpp b/src/mame/drivers/jackal.cpp index 7f28f96d665..26e2c97dcf3 100644 --- a/src/mame/drivers/jackal.cpp +++ b/src/mame/drivers/jackal.cpp @@ -87,7 +87,7 @@ Address Dir Data Description READ8_MEMBER(jackal_state::jackalr_rotary_r) { - return (1 << read_safe(ioport(offset ? "DIAL1" : "DIAL0"), 0x00)) ^ 0xff; + return (1 << m_dials[offset].read_safe(0x00)) ^ 0xff; } WRITE8_MEMBER(jackal_state::jackal_flipscreen_w) diff --git a/src/mame/drivers/laserbat.cpp b/src/mame/drivers/laserbat.cpp index 3f3342c3ed0..946d22200c8 100644 --- a/src/mame/drivers/laserbat.cpp +++ b/src/mame/drivers/laserbat.cpp @@ -136,8 +136,7 @@ WRITE8_MEMBER(laserbat_state_base::ct_io_w) READ8_MEMBER(laserbat_state_base::rrowx_r) { - ioport_port *const mux_ports[] = { m_row0, m_row1, m_sw1, m_sw2 }; - return (m_mpx_p_1_2 ? m_row2 : mux_ports[m_input_mux])->read(); + return (m_mpx_p_1_2 ? m_row2 : m_mux_ports[m_input_mux])->read(); } /* diff --git a/src/mame/drivers/mac.cpp b/src/mame/drivers/mac.cpp index 36433ae5fc1..5b7e56d18b8 100644 --- a/src/mame/drivers/mac.cpp +++ b/src/mame/drivers/mac.cpp @@ -136,7 +136,7 @@ WRITE32_MEMBER( mac_state::rbv_ramdac_w ) if (m_model != MODEL_MAC_CLASSIC_II) { // Color Classic has no MONTYPE so the default gets us 512x384, which is right - if ((m_montype ? m_montype->read() : 2) == 1) + if (m_montype.read_safe(2) == 1) { m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2])); m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]); @@ -172,7 +172,7 @@ WRITE32_MEMBER( mac_state::ariel_ramdac_w ) // this is for the "Ariel" style RAM if (m_model != MODEL_MAC_CLASSIC_II) { // Color Classic has no MONTYPE so the default gets us 512x384, which is right - if ((m_montype ? m_montype->read() : 2) == 1) + if (m_montype.read_safe(2) == 1) { m_palette->set_pen_color(m_rbv_clutoffs, rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2])); m_rbv_palette[m_rbv_clutoffs] = rgb_t(m_rbv_colors[2], m_rbv_colors[2], m_rbv_colors[2]); @@ -204,7 +204,7 @@ READ8_MEMBER( mac_state::mac_sonora_vctl_r ) if (offset == 2) { // printf("Sonora: read monitor ID at PC=%x\n", m_maincpu->pc()); - return ((m_montype ? m_montype->read() : 6)<<4); + return (m_montype.read_safe(6)<<4); } return m_sonora_vctl[offset]; @@ -260,7 +260,7 @@ READ8_MEMBER ( mac_state::mac_rbv_r ) if (offset == 0x10) { data &= ~0x38; - data |= ((m_montype ? m_montype->read() : 2)<<3); + data |= (m_montype.read_safe(2)<<3); // printf("rbv_r montype: %02x (PC %x)\n", data, space.cpu->safe_pc()); } diff --git a/src/mame/drivers/maxaflex.cpp b/src/mame/drivers/maxaflex.cpp index 49d41708a6b..0514c9b45d9 100644 --- a/src/mame/drivers/maxaflex.cpp +++ b/src/mame/drivers/maxaflex.cpp @@ -389,12 +389,12 @@ INPUT_PORTS_END READ8_MEMBER(maxaflex_state::pia_pa_r) { - return atari_input_disabled() ? 0xff : read_safe(m_joy01, 0); + return atari_input_disabled() ? 0xff : m_joy01.read_safe(0); } READ8_MEMBER(maxaflex_state::pia_pb_r) { - return atari_input_disabled() ? 0xff : read_safe(m_joy23, 0); + return atari_input_disabled() ? 0xff : m_joy23.read_safe(0); } diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp index 26c976c4eee..0c4907e76a4 100644 --- a/src/mame/drivers/maygay1b.cpp +++ b/src/mame/drivers/maygay1b.cpp @@ -559,8 +559,7 @@ WRITE8_MEMBER( maygay1b_state::lamp_data_w ) READ8_MEMBER( maygay1b_state::kbd_r ) { - ioport_port * portnames[] = { m_sw1_port, m_s2_port, m_s3_port, m_s4_port, m_s5_port, m_s6_port, m_s7_port, m_sw2_port}; - return (portnames[m_lamp_strobe&0x07])->read(); + return (m_kbd_ports[m_lamp_strobe&0x07])->read(); } WRITE8_MEMBER( maygay1b_state::lamp_data_2_w ) diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp index 1ad02146050..df142524f37 100644 --- a/src/mame/drivers/mediagx.cpp +++ b/src/mame/drivers/mediagx.cpp @@ -95,7 +95,9 @@ public: m_vram(*this, "vram"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_ports(*this, {"IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7", "IN8"}) + { } required_device m_ide; required_shared_ptr m_main_ram; @@ -107,6 +109,7 @@ public: required_device m_palette; UINT8 m_pal[768]; + optional_ioport_array<9> m_ports; // but parallel_pointer takes values 0 -> 23 UINT32 m_disp_ctrl_reg[256/4]; int m_frame_width; @@ -515,25 +518,24 @@ WRITE8_MEMBER(mediagx_state::io20_w) READ32_MEMBER(mediagx_state::parallel_port_r) { UINT32 r = 0; - //static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7", "IN8" }; // but parallel_pointer takes values 0 -> 23 if (ACCESSING_BITS_8_15) { - UINT8 nibble = m_parallel_latched;//(read_safe(ioport(m_portnames[m_parallel_pointer / 3]), 0) >> (4 * (m_parallel_pointer % 3))) & 15; + UINT8 nibble = m_parallel_latched; r |= ((~nibble & 0x08) << 12) | ((nibble & 0x07) << 11); logerror("%08X:parallel_port_r()\n", space.device().safe_pc()); #if 0 if (m_controls_data == 0x18) { - r |= ioport("IN0")->read() << 8; + r |= m_ports[0]->read() << 8; } else if (m_controls_data == 0x60) { - r |= ioport("IN1")->read() << 8; + r |= m_ports[1]->read() << 8; } else if (m_controls_data == 0xff || m_controls_data == 0x50) { - r |= ioport("IN2")->read() << 8; + r |= m_ports[2]->read() << 8; } //r |= m_control_read << 8; @@ -549,8 +551,6 @@ READ32_MEMBER(mediagx_state::parallel_port_r) WRITE32_MEMBER(mediagx_state::parallel_port_w) { - static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7", "IN8" }; // but parallel_pointer takes values 0 -> 23 - COMBINE_DATA( &m_parport ); if (ACCESSING_BITS_0_7) @@ -572,7 +572,7 @@ WRITE32_MEMBER(mediagx_state::parallel_port_w) logerror("%08X:", space.device().safe_pc()); - m_parallel_latched = (read_safe(ioport(portnames[m_parallel_pointer / 3]), 0) >> (4 * (m_parallel_pointer % 3))) & 15; + m_parallel_latched = (m_ports[m_parallel_pointer / 3].read_safe(0) >> (4 * (m_parallel_pointer % 3))) & 15; //parallel_pointer++; //logerror("[%02X] Advance pointer to %d\n", data, parallel_pointer); switch (data & 0xfc) diff --git a/src/mame/drivers/megadriv.cpp b/src/mame/drivers/megadriv.cpp index e31c5e939d5..8630eb72396 100644 --- a/src/mame/drivers/megadriv.cpp +++ b/src/mame/drivers/megadriv.cpp @@ -356,7 +356,7 @@ MACHINE_RESET_MEMBER(md_cons_state, ms_megadriv) // same as screen_eof_megadriv but with addition of 32x and SegaCD/MegaCD pieces void md_cons_state::screen_eof_console(screen_device &screen, bool state) { - if (m_io_reset && (m_io_reset->read() & 0x01)) + if (m_io_reset.read_safe(0) & 0x01) m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); // rising edge diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp index 92314029c94..3f7c3a20fdc 100644 --- a/src/mame/drivers/megasys1.cpp +++ b/src/mame/drivers/megasys1.cpp @@ -303,6 +303,30 @@ static ADDRESS_MAP_START( megasys1B_map, AS_PROGRAM, 16, megasys1_state ) AM_RANGE(0x0e0000, 0x0e0001) AM_READWRITE(ip_select_r,ip_select_w) ADDRESS_MAP_END +static ADDRESS_MAP_START( megasys1B_edfbl_map, AS_PROGRAM, 16, megasys1_state ) + ADDRESS_MAP_GLOBAL_MASK(0xfffff) + AM_RANGE(0xe00002, 0x0e0003) AM_READ_PORT("SYSTEM") + AM_RANGE(0xe00004, 0x0e0005) AM_READ_PORT("P1") + AM_RANGE(0xe00006, 0x0e0007) AM_READ_PORT("P2") + AM_RANGE(0xe00008, 0x0e0009) AM_READ_PORT("DSW1") + AM_RANGE(0xe0000a, 0x0e000b) AM_READ_PORT("DSW2") + AM_IMPORT_FROM(megasys1B_map) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( megasys1B_monkelf_map, AS_PROGRAM, 16, megasys1_state ) + ADDRESS_MAP_GLOBAL_MASK(0xfffff) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x044000, 0x0443ff) AM_WRITE(megasys1_vregs_monkelf_w) + AM_RANGE(0xe00002, 0x0e0003) AM_READ_PORT("P1") + AM_RANGE(0xe00004, 0x0e0005) AM_READ_PORT("P2") + AM_RANGE(0xe00006, 0x0e0007) AM_READ_PORT("DSW1") + AM_RANGE(0xe00008, 0x0e0009) AM_READ_PORT("DSW2") + AM_RANGE(0xe0000a, 0x0e000b) AM_READ_PORT("SYSTEM") + AM_IMPORT_FROM(megasys1B_map) +ADDRESS_MAP_END + + + /*************************************************************************** [ Main CPU - System C ] @@ -1626,11 +1650,16 @@ static MACHINE_CONFIG_DERIVED( system_B, system_A ) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( system_B_monkelf, system_B ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(megasys1B_monkelf_map) +MACHINE_CONFIG_END + static MACHINE_CONFIG_START( system_Bbl, megasys1_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, SYS_B_CPU_CLOCK) - MCFG_CPU_PROGRAM_MAP(megasys1B_map) + MCFG_CPU_PROGRAM_MAP(megasys1B_edfbl_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", megasys1_state, megasys1B_scanline, "screen", 0, 1) MCFG_MACHINE_RESET_OVERRIDE(megasys1_state,megasys1) @@ -4250,30 +4279,6 @@ DRIVER_INIT_MEMBER(megasys1_state,edfp) phantasm_rom_decode(machine(), "maincpu"); } -READ16_MEMBER(megasys1_state::edfbl_input_r) -{ - ioport_port *in_names[] = { m_io_system, m_io_p1, m_io_p2, m_io_dsw1, m_io_dsw2 }; - UINT16 res; - - res = 0; - - switch(offset) - { - case 0x02/2: - case 0x04/2: - case 0x06/2: - case 0x08/2: - case 0x0a/2: res = in_names[offset-1]->read(); break; - } - - return res; -} - -DRIVER_INIT_MEMBER(megasys1_state,edfbl) -{ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe0000, 0xe000f, read16_delegate(FUNC(megasys1_state::edfbl_input_r),this)); -} - DRIVER_INIT_MEMBER(megasys1_state,hayaosi1) { m_ip_select_values[0] = 0x51; @@ -4473,34 +4478,12 @@ DRIVER_INIT_MEMBER(megasys1_state,stdragonb) stdragona_gfx_unmangle("gfx4"); } -READ16_MEMBER(megasys1_state::monkelf_input_r) -{ - ioport_port *in_names[] = { m_io_p1, m_io_p2, m_io_dsw1, m_io_dsw2, m_io_system }; - UINT16 res; - - res = 0xffff; - - switch(offset) - { - case 0x02/2: - case 0x04/2: - case 0x06/2: - case 0x08/2: - case 0x0a/2: res = in_names[offset-1]->read(); break; - } - - return res; -} - DRIVER_INIT_MEMBER(megasys1_state,monkelf) { DRIVER_INIT_CALL(avspirit); m_rom_maincpu[0x00744/2] = 0x4e71; // weird check, 0xe000e R is a port-based trap? - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe0000, 0xe000f, read16_delegate(FUNC(megasys1_state::monkelf_input_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x44000, 0x443ff, write16_delegate(FUNC(megasys1_state::megasys1_vregs_monkelf_w),this)); - // convert bootleg priority format to standard { int i; @@ -4552,11 +4535,11 @@ GAME( 1992, soldamj, soldam, system_A, soldam, megasys1_state, sol // Type B GAME( 1991, avspirit, 0, system_B, avspirit, megasys1_state, avspirit, ROT0, "Jaleco", "Avenging Spirit", 0 ) -GAME( 1990, monkelf, avspirit, system_B, avspirit, megasys1_state, monkelf, ROT0, "bootleg","Monky Elf (Korean bootleg of Avenging Spirit)", 0 ) +GAME( 1990, monkelf, avspirit, system_B_monkelf, avspirit, megasys1_state, monkelf, ROT0, "bootleg","Monky Elf (Korean bootleg of Avenging Spirit)", 0 ) GAME( 1991, edf, 0, system_B, edf, megasys1_state, edf, ROT0, "Jaleco", "E.D.F. : Earth Defense Force (set 1)", 0 ) GAME( 1991, edfa, edf, system_B, edf, megasys1_state, edf, ROT0, "Jaleco", "E.D.F. : Earth Defense Force (set 2)", 0 ) GAME( 1991, edfu, edf, system_B, edf, megasys1_state, edf, ROT0, "Jaleco", "E.D.F. : Earth Defense Force (North America)", 0 ) -GAME( 1991, edfbl, edf, system_Bbl, edf, megasys1_state, edfbl, ROT0, "bootleg","E.D.F. : Earth Defense Force (bootleg)", MACHINE_NO_SOUND ) +GAME( 1991, edfbl, edf, system_Bbl, edf, driver_device, 0, ROT0, "bootleg","E.D.F. : Earth Defense Force (bootleg)", MACHINE_NO_SOUND ) GAME( 1993, hayaosi1, 0, system_B_hayaosi1, hayaosi1, megasys1_state, hayaosi1, ROT0, "Jaleco", "Hayaoshi Quiz Ouza Ketteisen - The King Of Quiz", MACHINE_IMPERFECT_GRAPHICS ) // Type C diff --git a/src/mame/drivers/meyc8088.cpp b/src/mame/drivers/meyc8088.cpp index 7e8edcf4169..59336da1d2e 100644 --- a/src/mame/drivers/meyc8088.cpp +++ b/src/mame/drivers/meyc8088.cpp @@ -43,7 +43,8 @@ public: m_maincpu(*this,"maincpu"), m_vram(*this, "vram"), m_heartbeat(*this, "heartbeat"), - m_dac(*this, "dac") + m_dac(*this, "dac"), + m_switches(*this, {"C0", "C1", "C2", "C3"}) { } required_device m_maincpu; @@ -51,6 +52,8 @@ public: required_device m_heartbeat; required_device m_dac; + optional_ioport_array<4> m_switches; + UINT8 m_status; UINT8 m_common; @@ -231,10 +234,10 @@ READ8_MEMBER(meyc8088_state::meyc8088_input_r) UINT8 ret = 0xff; // multiplexed switch inputs - if (~m_common & 1) ret &= read_safe(ioport("C0"), 0); // bit switches - if (~m_common & 2) ret &= read_safe(ioport("C1"), 0); // control switches - if (~m_common & 4) ret &= read_safe(ioport("C2"), 0); // light switches - if (~m_common & 8) ret &= read_safe(ioport("C3"), 0); // light switches + if (~m_common & 1) ret &= m_switches[0].read_safe(0); // bit switches + if (~m_common & 2) ret &= m_switches[1].read_safe(0); // control switches + if (~m_common & 4) ret &= m_switches[2].read_safe(0); // light switches + if (~m_common & 8) ret &= m_switches[3].read_safe(0); // light switches return ret; } diff --git a/src/mame/drivers/midvunit.cpp b/src/mame/drivers/midvunit.cpp index 0f50c0a5362..1af6df687b8 100644 --- a/src/mame/drivers/midvunit.cpp +++ b/src/mame/drivers/midvunit.cpp @@ -135,14 +135,13 @@ READ32_MEMBER(midvunit_state::midvunit_adc_r) WRITE32_MEMBER(midvunit_state::midvunit_adc_w) { - static const char *const adcnames[] = { "WHEEL", "ACCEL", "BRAKE" }; - if (!(m_control_data & 0x20)) { int which = (data >> m_adc_shift) - 4; if (which < 0 || which > 2) logerror("adc_w: unexpected which = %02X\n", which + 4); - m_adc_data = read_safe(ioport(adcnames[which]), 0); + else + m_adc_data = m_adc_ports[which].read_safe(0); timer_set(attotime::from_msec(1), TIMER_ADC_READY); } else diff --git a/src/mame/drivers/model1.cpp b/src/mame/drivers/model1.cpp index 3a5215585cc..ae053d8b45a 100644 --- a/src/mame/drivers/model1.cpp +++ b/src/mame/drivers/model1.cpp @@ -638,11 +638,8 @@ Notes: READ16_MEMBER(model1_state::io_r) { - static const char *const analognames[] = { "AN.0", "AN.1", "AN.2", "AN.3", "AN.4", "AN.5", "AN.6", "AN.7" }; - static const char *const inputnames[] = { "IN.0", "IN.1", "IN.2" }; - if(offset < 0x8) - return read_safe(ioport(analognames[offset]), 0x00); + return m_analog_ports[offset].read_safe(0x00); if(offset == 0x0f) return m_lamp_state; @@ -651,7 +648,7 @@ READ16_MEMBER(model1_state::io_r) { offset -= 0x8; if(offset < 3) - return ioport(inputnames[offset])->read(); + return m_digital_ports[offset]->read(); return 0xff; } diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index 9acd104f910..25b29956a4f 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -520,7 +520,7 @@ WRITE32_MEMBER(model2_state::videoctl_w) CUSTOM_INPUT_MEMBER(model2_state::_1c00000_r) { - UINT32 ret = ioport("IN0")->read(); + UINT32 ret = m_in0->read(); if(m_ctrlmode == 0) { @@ -538,8 +538,7 @@ CUSTOM_INPUT_MEMBER(model2_state::_1c0001c_r) UINT32 iptval = 0x00ff; if(m_analog_channel < 4) { - static const char *const ports[] = { "ANA0", "ANA1", "ANA2", "ANA3" }; - iptval = read_safe(ioport(ports[m_analog_channel]), 0); + iptval = m_analog_ports[m_analog_channel].read_safe(0); ++m_analog_channel; } return iptval; @@ -557,7 +556,7 @@ CUSTOM_INPUT_MEMBER(model2_state::_1c0001c_r) /* Used specifically by Sega Rally, others might be different */ CUSTOM_INPUT_MEMBER(model2_state::srallyc_gearbox_r) { - UINT8 res = read_safe(ioport("GEARS"), 0); + UINT8 res = m_gears.read_safe(0); int i; const UINT8 gearvalue[5] = { 0, 2, 1, 6, 5 }; @@ -1054,21 +1053,20 @@ WRITE32_MEMBER(model2_state::geo_w) READ32_MEMBER(model2_state::hotd_lightgun_r) { - static const char *const ports[] = { "P1_Y", "P1_X", "P2_Y", "P2_X" }; UINT16 res = 0xffff; if(m_lightgun_mux < 8) - res = (read_safe(ioport(ports[m_lightgun_mux >> 1]), 0) >> ((m_lightgun_mux & 1)*8)) & 0xff; + res = (m_lightgun_ports[m_lightgun_mux >> 1].read_safe(0) >> ((m_lightgun_mux & 1)*8)) & 0xff; else { UINT16 p1x,p1y,p2x,p2y; res = 0xfffc; - p1x = read_safe(ioport("P1_X"), 0); - p1y = read_safe(ioport("P1_Y"), 0); - p2x = read_safe(ioport("P2_X"), 0); - p2y = read_safe(ioport("P2_Y"), 0); + p1x = m_lightgun_ports[1].read_safe(0); + p1y = m_lightgun_ports[0].read_safe(0); + p2x = m_lightgun_ports[3].read_safe(0); + p2y = m_lightgun_ports[2].read_safe(0); /* TODO: might be better, supposedly user has to calibrate guns in order to make these settings to work ... */ if(p1x <= 0x28 || p1x >= 0x3e0 || p1y <= 0x40 || p1y >= 0x3c0) @@ -1479,10 +1477,9 @@ ADDRESS_MAP_END READ8_MEMBER(model2_state::virtuacop_lightgun_r) { - static const char *const ports[] = { "P1_Y", "P1_X", "P2_Y", "P2_X" }; UINT8 res; - res = (read_safe(ioport(ports[offset >> 1]), 0) >> ((offset & 1)*8)) & 0xff; + res = (m_lightgun_ports[offset >> 1].read_safe(0) >> ((offset & 1)*8)) & 0xff; return res; } @@ -1493,10 +1490,10 @@ READ8_MEMBER(model2_state::virtuacop_lightgun_offscreen_r) UINT16 special_res = 0xfffc; UINT16 p1x,p1y,p2x,p2y; - p1x = read_safe(ioport("P1_X"), 0); - p1y = read_safe(ioport("P1_Y"), 0); - p2x = read_safe(ioport("P2_X"), 0); - p2y = read_safe(ioport("P2_Y"), 0); + p1x = m_lightgun_ports[1].read_safe(0); + p1y = m_lightgun_ports[0].read_safe(0); + p2x = m_lightgun_ports[3].read_safe(0); + p2y = m_lightgun_ports[2].read_safe(0); /* TODO: might be better, supposedly user has to calibrate guns in order to make these settings to work ... */ if(p1x <= 0x28 || p1x >= 0x3e0 || p1y <= 0x40 || p1y >= 0x3c0) diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp index f85f4dd9ffc..2eb9135e825 100644 --- a/src/mame/drivers/model3.cpp +++ b/src/mame/drivers/model3.cpp @@ -1431,8 +1431,7 @@ READ64_MEMBER(model3_state::model3_ctrl_r) case 7: if (ACCESSING_BITS_24_31) /* ADC Data read */ { - static const char *const adcnames[] = { "AN0", "AN1", "AN2", "AN3", "AN4", "AN5", "AN6", "AN7" }; - const UINT8 adc_data = read_safe(ioport(adcnames[m_adc_channel]), 0); + const UINT8 adc_data = m_adc_ports[m_adc_channel].read_safe(0); m_adc_channel++; m_adc_channel &= 0x7; return (UINT64)adc_data << 24; diff --git a/src/mame/drivers/mpu4.cpp b/src/mame/drivers/mpu4.cpp index f21de53772b..9240e476c81 100644 --- a/src/mame/drivers/mpu4.cpp +++ b/src/mame/drivers/mpu4.cpp @@ -1255,14 +1255,12 @@ WRITE_LINE_MEMBER(mpu4_state::pia_ic7_cb2_w) /* IC8, Inputs, TRIACS, alpha clock */ READ8_MEMBER(mpu4_state::pia_ic8_porta_r) { - ioport_port * portnames[] = { m_orange1_port, m_orange2_port, m_black1_port, m_black2_port, m_orange1_port, m_orange2_port, m_dil1_port, m_dil2_port }; - LOG_IC8(("%s: IC8 PIA Read of Port A (MUX input data)\n", machine().describe_context())); /* The orange inputs are polled twice as often as the black ones, for reasons of efficiency. This is achieved via connecting every input line to an AND gate, thus allowing two strobes to represent each orange input bank (strobes are active low). */ m_pia5->cb1_w(m_aux2_port->read() & 0x80); - return (portnames[m_input_strobe])->read(); + return (m_port_mux[m_input_strobe])->read(); } diff --git a/src/mame/drivers/multigam.cpp b/src/mame/drivers/multigam.cpp index 6c3ea662967..5e49c9fe7bc 100644 --- a/src/mame/drivers/multigam.cpp +++ b/src/mame/drivers/multigam.cpp @@ -118,10 +118,16 @@ public: multigam_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_ppu(*this, "ppu") { } + m_ppu(*this, "ppu"), + m_p1(*this, "P1"), + m_p2(*this, "P2"), + m_dsw(*this, "DSW") { } required_device m_maincpu; required_device m_ppu; + required_ioport m_p1; + required_ioport m_p2; + optional_ioport m_dsw; std::unique_ptr m_nt_ram; std::unique_ptr m_vram; @@ -313,11 +319,11 @@ WRITE8_MEMBER(multigam_state::multigam_IN0_w) m_in_0_shift = 0; m_in_1_shift = 0; - m_in_0 = ioport("P1")->read(); - m_in_1 = ioport("P2")->read(); + m_in_0 = m_p1->read(); + m_in_1 = m_p2->read(); m_in_dsw_shift = 0; - m_in_dsw = read_safe(ioport("DSW"), 0); + m_in_dsw = m_dsw.read_safe(0); } READ8_MEMBER(multigam_state::multigam_IN1_r) diff --git a/src/mame/drivers/mz2000.cpp b/src/mame/drivers/mz2000.cpp index a601941cab7..ce7e7857c62 100644 --- a/src/mame/drivers/mz2000.cpp +++ b/src/mame/drivers/mz2000.cpp @@ -55,21 +55,7 @@ public: m_region_chargen(*this, "chargen"), m_region_ipl(*this, "ipl"), m_region_wram(*this, "wram"), - m_io_key0(*this, "KEY0"), - m_io_key1(*this, "KEY1"), - m_io_key2(*this, "KEY2"), - m_io_key3(*this, "KEY3"), - m_io_key4(*this, "KEY4"), - m_io_key5(*this, "KEY5"), - m_io_key6(*this, "KEY6"), - m_io_key7(*this, "KEY7"), - m_io_key8(*this, "KEY8"), - m_io_key9(*this, "KEY9"), - m_io_keya(*this, "KEYA"), - m_io_keyb(*this, "KEYB"), - m_io_keyc(*this, "KEYC"), - m_io_keyd(*this, "KEYD"), - m_io_unused(*this, "UNUSED"), + m_io_keys(*this, {"KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5", "KEY6", "KEY7", "KEY8", "KEY9", "KEYA", "KEYB", "KEYC", "KEYD", "UNUSED", "UNUSED"}), m_io_config(*this, "CONFIG"), m_palette(*this, "palette") { } @@ -141,21 +127,7 @@ protected: required_memory_region m_region_chargen; required_memory_region m_region_ipl; required_memory_region m_region_wram; - required_ioport m_io_key0; - required_ioport m_io_key1; - required_ioport m_io_key2; - required_ioport m_io_key3; - required_ioport m_io_key4; - required_ioport m_io_key5; - required_ioport m_io_key6; - required_ioport m_io_key7; - required_ioport m_io_key8; - required_ioport m_io_key9; - required_ioport m_io_keya; - required_ioport m_io_keyb; - required_ioport m_io_keyc; - required_ioport m_io_keyd; - required_ioport m_io_unused; + required_ioport_array<16> m_io_keys; required_ioport m_io_config; required_device m_palette; }; @@ -760,23 +732,18 @@ WRITE8_MEMBER(mz2000_state::mz2000_pio1_porta_w) READ8_MEMBER(mz2000_state::mz2000_pio1_portb_r) { - ioport_port* keynames[] = { m_io_key0, m_io_key1, m_io_key2, m_io_key3, - m_io_key4, m_io_key5, m_io_key6, m_io_key7, - m_io_key8, m_io_key9, m_io_keya, m_io_keyb, - m_io_keyc, m_io_keyd, m_io_unused, m_io_unused }; - if(((m_key_mux & 0x10) == 0x00) || ((m_key_mux & 0x0f) == 0x0f)) //status read { int res,i; res = 0xff; for(i=0;i<0xe;i++) - res &= keynames[i]->read(); + res &= m_io_keys[i]->read(); return res; } - return keynames[m_key_mux & 0xf]->read(); + return m_io_keys[m_key_mux & 0xf]->read(); } READ8_MEMBER(mz2000_state::mz2000_pio1_porta_r) diff --git a/src/mame/drivers/namcofl.cpp b/src/mame/drivers/namcofl.cpp index 7291f72ff69..ece0a205a75 100644 --- a/src/mame/drivers/namcofl.cpp +++ b/src/mame/drivers/namcofl.cpp @@ -282,16 +282,16 @@ READ8_MEMBER(namcofl_state::port7_r) switch (m_mcu_port6 & 0xf0) { case 0x00: - return ioport("IN0")->read(); + return m_in0->read(); case 0x20: - return ioport("MISC")->read(); + return m_misc->read(); case 0x40: - return ioport("IN1")->read(); + return m_in1->read(); case 0x60: - return ioport("IN2")->read(); + return m_in2->read(); default: break; @@ -302,17 +302,17 @@ READ8_MEMBER(namcofl_state::port7_r) READ8_MEMBER(namcofl_state::dac7_r) { - return read_safe(ioport("ACCEL"), 0xff); + return m_accel.read_safe(0xff); } READ8_MEMBER(namcofl_state::dac6_r) { - return read_safe(ioport("BRAKE"), 0xff); + return m_brake.read_safe(0xff); } READ8_MEMBER(namcofl_state::dac5_r) { - return read_safe(ioport("WHEEL"), 0xff); + return m_wheel.read_safe(0xff); } READ8_MEMBER(namcofl_state::dac4_r){ return 0xff; } diff --git a/src/mame/drivers/namconb1.cpp b/src/mame/drivers/namconb1.cpp index 3a07948c684..32a698289dd 100644 --- a/src/mame/drivers/namconb1.cpp +++ b/src/mame/drivers/namconb1.cpp @@ -639,10 +639,10 @@ READ32_MEMBER(namconb1_state::gunbulet_gun_r) switch (offset) { - case 0: case 1: result = (UINT8)(0x0f + ioport("LIGHT1_Y")->read() * 224/255); break; /* Y (p2) */ - case 2: case 3: result = (UINT8)(0x26 + ioport("LIGHT1_X")->read() * 288/314); break; /* X (p2) */ - case 4: case 5: result = (UINT8)(0x0f + ioport("LIGHT0_Y")->read() * 224/255); break; /* Y (p1) */ - case 6: case 7: result = (UINT8)(0x26 + ioport("LIGHT0_X")->read() * 288/314); break; /* X (p1) */ + case 0: case 1: result = (UINT8)(0x0f + m_light1_y->read() * 224/255); break; /* Y (p2) */ + case 2: case 3: result = (UINT8)(0x26 + m_light1_x->read() * 288/314); break; /* X (p2) */ + case 4: case 5: result = (UINT8)(0x0f + m_light0_y->read() * 224/255); break; /* Y (p1) */ + case 6: case 7: result = (UINT8)(0x26 + m_light0_x->read() * 288/314); break; /* X (p1) */ } return result<<24; } /* gunbulet_gun_r */ @@ -757,16 +757,16 @@ READ8_MEMBER(namconb1_state::port7_r) switch (m_port6 & 0xf0) { case 0x00: - return read_safe(ioport("P4"), 0xff); + return m_p4.read_safe(0xff); case 0x20: - return ioport("MISC")->read(); + return m_misc->read(); case 0x40: - return ioport("P1")->read(); + return m_p1->read(); case 0x60: - return ioport("P2")->read(); + return m_p2->read(); default: break; @@ -780,42 +780,42 @@ READ8_MEMBER(namconb1_state::port7_r) // register full scale, so it works... READ8_MEMBER(namconb1_state::dac7_r)// bit 7 { - return read_safe(ioport("P3"), 0xff)&0x80; + return m_p3.read_safe(0xff)&0x80; } READ8_MEMBER(namconb1_state::dac6_r)// bit 3 { - return (read_safe(ioport("P3"), 0xff)<<1)&0x80; + return (m_p3.read_safe(0xff)<<1)&0x80; } READ8_MEMBER(namconb1_state::dac5_r)// bit 2 { - return (read_safe(ioport("P3"), 0xff)<<2)&0x80; + return (m_p3.read_safe(0xff)<<2)&0x80; } READ8_MEMBER(namconb1_state::dac4_r)// bit 1 { - return (read_safe(ioport("P3"), 0xff)<<3)&0x80; + return (m_p3.read_safe(0xff)<<3)&0x80; } READ8_MEMBER(namconb1_state::dac3_r)// bit 0 { - return (read_safe(ioport("P3"), 0xff)<<4)&0x80; + return (m_p3.read_safe(0xff)<<4)&0x80; } READ8_MEMBER(namconb1_state::dac2_r)// bit 4 { - return (read_safe(ioport("P3"), 0xff)<<5)&0x80; + return (m_p3.read_safe(0xff)<<5)&0x80; } READ8_MEMBER(namconb1_state::dac1_r)// bit 5 { - return (read_safe(ioport("P3"), 0xff)<<6)&0x80; + return (m_p3.read_safe(0xff)<<6)&0x80; } READ8_MEMBER(namconb1_state::dac0_r)// bit 6 { - return (read_safe(ioport("P3"), 0xff)<<7)&0x80; + return (m_p3.read_safe(0xff)<<7)&0x80; } static ADDRESS_MAP_START( namcoc75_io, AS_IO, 8, namconb1_state ) diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp index e0617229634..fd360c13f00 100644 --- a/src/mame/drivers/namcos22.cpp +++ b/src/mame/drivers/namcos22.cpp @@ -1686,7 +1686,7 @@ READ16_MEMBER(namcos22_state::namcos22_portbit_r) WRITE16_MEMBER(namcos22_state::namcos22_portbit_w) { - m_portbits[offset] = read_safe(ioport((offset == 0) ? "P1" : "P2"), 0xffff); + m_portbits[offset] = ((offset == 0) ? m_p1 : m_p2).read_safe(0xffff); } READ16_MEMBER(namcos22_state::namcos22_dipswitch_r) @@ -2760,9 +2760,9 @@ WRITE8_MEMBER(namcos22_state::mcu_port5_w) READ8_MEMBER(namcos22_state::mcu_port5_r) { if (m_p4 & 8) - return read_safe(ioport("MCUP5A"), 0xff); + return m_mcup5a.read_safe(0xff); else - return read_safe(ioport("MCUP5B"), 0xff); + return m_mcup5b.read_safe(0xff); } WRITE8_MEMBER(namcos22_state::mcu_port6_w) @@ -2787,7 +2787,7 @@ READ8_MEMBER(namcos22_state::mcu_port7_r) READ8_MEMBER(namcos22_state::namcos22s_mcu_adc_r) { - UINT16 adc = read_safe(m_adc_ports[offset >> 1 & 7], 0) << 2; + UINT16 adc = m_adc_ports[offset >> 1 & 7].read_safe(0) << 2; return (offset & 1) ? adc >> 8 : adc; } diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp index 1494bcd520f..0d730716a07 100644 --- a/src/mame/drivers/namcos23.cpp +++ b/src/mame/drivers/namcos23.cpp @@ -3129,7 +3129,7 @@ WRITE16_MEMBER(namcos23_state::iob_p6_w) READ16_MEMBER(namcos23_state::iob_analog_r) { - return read_safe(m_adc_ports[offset], 0); + return m_adc_ports[offset].read_safe(0); } diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp index 02d5471a472..9951564fc39 100644 --- a/src/mame/drivers/nanos.cpp +++ b/src/mame/drivers/nanos.cpp @@ -39,13 +39,7 @@ public: m_bank1(*this, "bank1"), m_bank2(*this, "bank2"), m_bank3(*this, "bank3"), - m_line0(*this, "LINE0"), - m_line1(*this, "LINE1"), - m_line2(*this, "LINE2"), - m_line3(*this, "LINE3"), - m_line4(*this, "LINE4"), - m_line5(*this, "LINE5"), - m_line6(*this, "LINE6"), + m_lines(*this, {"LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6"}), m_linec(*this, "LINEC") { } @@ -84,13 +78,7 @@ protected: required_memory_bank m_bank1; required_memory_bank m_bank2; required_memory_bank m_bank3; - required_ioport m_line0; - required_ioport m_line1; - required_ioport m_line2; - required_ioport m_line3; - required_ioport m_line4; - required_ioport m_line5; - required_ioport m_line6; + required_ioport_array<7> m_lines; required_ioport m_linec; UINT8 row_number(UINT8 code); }; @@ -343,8 +331,6 @@ UINT8 nanos_state::row_number(UINT8 code) TIMER_DEVICE_CALLBACK_MEMBER(nanos_state::keyboard_callback) { - ioport_port *io_ports[] = { m_line0, m_line1, m_line2, m_line3, m_line4, m_line5, m_line6 }; - int i; UINT8 code; UINT8 key_code = 0; @@ -353,7 +339,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(nanos_state::keyboard_callback) m_key_pressed = 0xff; for(i = 0; i < 7; i++) { - code = io_ports[i]->read(); + code = m_lines[i]->read(); if (code != 0) { if (i==0 && shift==0) { diff --git a/src/mame/drivers/pc6001.cpp b/src/mame/drivers/pc6001.cpp index 9abf639ea1d..0b8aa5e782c 100644 --- a/src/mame/drivers/pc6001.cpp +++ b/src/mame/drivers/pc6001.cpp @@ -155,9 +155,7 @@ public: m_io_mode4_dsw(*this, "MODE4_DSW"), m_io_p1(*this, "P1"), m_io_p2(*this, "P2"), - m_io_key1(*this, "key1"), - m_io_key2(*this, "key2"), - m_io_key3(*this, "key3"), + m_io_keys(*this, {"key1", "key2", "key3"}), m_io_key_modifiers(*this, "key_modifiers"), m_bank1(*this, "bank1"), m_bank2(*this, "bank2"), @@ -278,9 +276,7 @@ protected: required_ioport m_io_mode4_dsw; required_ioport m_io_p1; required_ioport m_io_p2; - required_ioport m_io_key1; - required_ioport m_io_key2; - required_ioport m_io_key3; + required_ioport_array<3> m_io_keys; required_ioport m_io_key_modifiers; required_memory_bank m_bank1; optional_memory_bank m_bank2; @@ -1903,7 +1899,6 @@ READ8_MEMBER(pc6001_state::pc6001_8255_portc_r) UINT8 pc6001_state::check_keyboard_press() { - ioport_port *ports[3] = { m_io_key1, m_io_key2, m_io_key3 }; int i,port_i,scancode; UINT8 shift_pressed,caps_lock; scancode = 0; @@ -1915,7 +1910,7 @@ UINT8 pc6001_state::check_keyboard_press() { for(i=0;i<32;i++) { - if((ports[port_i]->read()>>i) & 1) + if((m_io_keys[port_i]->read()>>i) & 1) { if((shift_pressed != caps_lock) && scancode >= 0x41 && scancode <= 0x5f) scancode+=0x20; @@ -1948,7 +1943,7 @@ UINT8 pc6001_state::check_joy_press() { UINT8 p1_key = m_io_p1->read() ^ 0xff; UINT8 shift_key = m_io_key_modifiers->read() & 0x02; - UINT8 space_key = m_io_key2->read() & 0x01; + UINT8 space_key = m_io_keys[1]->read() & 0x01; UINT8 joy_press; /* @@ -2027,9 +2022,9 @@ TIMER_DEVICE_CALLBACK_MEMBER(pc6001_state::cassette_callback) TIMER_DEVICE_CALLBACK_MEMBER(pc6001_state::keyboard_callback) { - UINT32 key1 = m_io_key1->read(); - UINT32 key2 = m_io_key2->read(); - UINT32 key3 = m_io_key3->read(); + UINT32 key1 = m_io_keys[0]->read(); + UINT32 key2 = m_io_keys[1]->read(); + UINT32 key3 = m_io_keys[2]->read(); // UINT8 p1_key = m_io_p1->read(); if(m_cas_switch == 0) diff --git a/src/mame/drivers/peplus.cpp b/src/mame/drivers/peplus.cpp index da136b1e0d4..07ef7eb4c8b 100644 --- a/src/mame/drivers/peplus.cpp +++ b/src/mame/drivers/peplus.cpp @@ -227,6 +227,14 @@ public: m_screen(*this, "screen"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), + m_in0(*this, "IN0"), + m_door(*this, "DOOR"), + m_sensor(*this, "SENSOR"), + m_dbv(*this, "DBV"), + m_bc(*this, "BC"), + m_bp(*this, "BP"), + m_touch_x(*this, "TOUCH_X"), + m_touch_y(*this, "TOUCH_Y"), m_cmos_ram(*this, "cmos"), m_program_ram(*this, "prograram"), m_s3000_ram(*this, "s3000_ram"), @@ -247,6 +255,15 @@ public: required_device m_gfxdecode; required_device m_palette; + optional_ioport m_in0; + optional_ioport m_door; + optional_ioport m_sensor; + optional_ioport m_dbv; + optional_ioport m_bc; + optional_ioport m_bp; + optional_ioport m_touch_x; + optional_ioport m_touch_y; + required_shared_ptr m_cmos_ram; required_shared_ptr m_program_ram; required_shared_ptr m_s3000_ram; @@ -406,8 +423,8 @@ void peplus_state::device_timer(emu_timer &timer, device_timer_id id, int param, void peplus_state::handle_lightpen() { - int x_val = read_safe(ioport("TOUCH_X"), 0x00); - int y_val = read_safe(ioport("TOUCH_Y"), 0x00); + int x_val = m_touch_x.read_safe(0x00); + int y_val = m_touch_y.read_safe(0x00); const rectangle &vis_area = m_screen->visible_area(); int xt, yt; @@ -581,14 +598,14 @@ READ8_MEMBER(peplus_state::peplus_input0_r) UINT64 curr_cycles = m_maincpu->total_cycles(); // Allow Bill Insert if DBV Enabled - if (m_bv_enable_state == 0x01 && ((read_safe(ioport("DBV"), 0xff) & 0x01) == 0x00)) { + if (m_bv_enable_state == 0x01 && ((m_dbv.read_safe(0xff) & 0x01) == 0x00)) { // If not busy if (m_bv_busy == 0) { m_bv_busy = 1; // Fetch Current Denomination and Protocol - m_bv_denomination = ioport("BC")->read(); - m_bv_protocol = ioport("BP")->read(); + m_bv_denomination = m_bc->read(); + m_bv_protocol = m_bp->read(); if (m_bv_protocol == 0) { // ID-022 @@ -775,9 +792,9 @@ READ8_MEMBER(peplus_state::peplus_input0_r) } if (m_bv_pulse == 1) { - return (0x70 || ioport("IN0")->read()); // Add Bill Validator Credit Pulse + return (0x70 || m_in0->read()); // Add Bill Validator Credit Pulse } else { - return ioport("IN0")->read(); + return m_in0->read(); } } @@ -804,7 +821,7 @@ READ8_MEMBER(peplus_state::peplus_input_bank_a_r) sda = m_i2cmem->read_sda(); } - if ((read_safe(ioport("SENSOR"), 0x00) & 0x01) == 0x01 && m_coin_state == 0) { + if ((m_sensor.read_safe(0x00) & 0x01) == 0x01 && m_coin_state == 0) { m_coin_state = 1; // Start Coin Cycle m_last_cycles = m_maincpu->total_cycles(); } else { @@ -840,7 +857,7 @@ READ8_MEMBER(peplus_state::peplus_input_bank_a_r) } if (curr_cycles - m_last_door > door_wait) { - if ((read_safe(ioport("DOOR"), 0xff) & 0x01) == 0x01) { + if ((m_door.read_safe(0xff) & 0x01) == 0x01) { if (m_doorcycle) { m_door_open = (m_door_open ^ 0x01) & 0x01; } else { diff --git a/src/mame/drivers/segahang.cpp b/src/mame/drivers/segahang.cpp index b1d1c178394..b374f09182a 100644 --- a/src/mame/drivers/segahang.cpp +++ b/src/mame/drivers/segahang.cpp @@ -177,10 +177,7 @@ READ16_MEMBER( segahang_state::hangon_io_r ) return m_i8255_2->read(space, offset & 3); case 0x3020/2: // ADC0804 data output - { - static const char *const adcports[] = { "ADC0", "ADC1", "ADC2", "ADC3" }; - return read_safe(ioport(adcports[m_adc_select]), 0); - } + return m_adc_ports[m_adc_select].read_safe(0); } //logerror("%06X:hangon_io_r - unknown read access to address %04X\n", m_maincpu->pc(), offset * 2); @@ -238,10 +235,7 @@ READ16_MEMBER( segahang_state::sharrier_io_r ) return m_i8255_2->read(space, offset & 3); case 0x0030/2: // ADC0804 data output - { - static const char *const adcports[] = { "ADC0", "ADC1", "ADC2", "ADC3" }; - return read_safe(ioport(adcports[m_adc_select]), 0); - } + return m_adc_ports[m_adc_select].read_safe(0); } //logerror("%06X:sharrier_io_r - unknown read access to address %04X\n", m_maincpu->pc(), offset * 2); @@ -391,7 +385,7 @@ void segahang_state::sharrier_i8751_sim() m_workram[0x0f0/2] = 0; // read I/O ports - m_workram[0x492/2] = (ioport("ADC0")->read() << 8) | ioport("ADC1")->read(); + m_workram[0x492/2] = (m_adc_ports[0]->read() << 8) | m_adc_ports[1]->read(); } diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp index 318468eeb7d..00fbcaa3bcc 100644 --- a/src/mame/drivers/segaorun.cpp +++ b/src/mame/drivers/segaorun.cpp @@ -695,7 +695,7 @@ READ16_MEMBER( segaorun_state::outrun_custom_io_r ) case 0x30/2: { - return read_safe(m_adc_ports[m_adc_select], 0x0010); + return m_adc_ports[m_adc_select].read_safe(0x0010); } case 0x60/2: @@ -781,7 +781,7 @@ READ16_MEMBER( segaorun_state::shangon_custom_io_r ) case 0x3020/2: { - return read_safe(m_adc_ports[m_adc_select], 0x0010); + return m_adc_ports[m_adc_select].read_safe(0x0010); } default: diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp index daece602870..be4486d08ec 100644 --- a/src/mame/drivers/segas16a.cpp +++ b/src/mame/drivers/segas16a.cpp @@ -917,19 +917,18 @@ READ16_MEMBER( segas16a_state::sdi_custom_io_r ) READ16_MEMBER( segas16a_state::sjryuko_custom_io_r ) { - static const char *const portname[] = { "MJ0", "MJ1", "MJ2", "MJ3", "MJ4", "MJ5" }; switch (offset & (0x3000/2)) { case 0x1000/2: switch (offset & 3) { case 1: - if (read_safe(ioport(portname[m_mj_input_num]), 0xff) != 0xff) + if (m_mj_inputs[m_mj_input_num].read_safe(0xff) != 0xff) return 0xff & ~(1 << m_mj_input_num); return 0xff; case 2: - return read_safe(ioport(portname[m_mj_input_num]), 0xff); + return m_mj_inputs[m_mj_input_num].read_safe(0xff); } break; } diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp index 1e71a6afb92..8f3d43a25bb 100644 --- a/src/mame/drivers/segas16b.cpp +++ b/src/mame/drivers/segas16b.cpp @@ -1590,14 +1590,30 @@ READ16_MEMBER( segas16b_state::hwchamp_custom_io_r ) WRITE16_MEMBER( segas16b_state::hwchamp_custom_io_w ) { - static const char *const portname[4] = { "MONITOR", "LEFT", "RIGHT", "DUMMY" }; switch (offset & (0x3000/2)) { case 0x3000/2: switch (offset & 0x30/2) { case 0x20/2: - m_hwc_input_value = read_safe(ioport(portname[offset & 3]), 0xff); + switch (offset & 3) + { + case 0: + m_hwc_input_value = m_hwc_monitor->read(); + break; + + case 1: + m_hwc_input_value = m_hwc_left->read(); + break; + + case 2: + m_hwc_input_value = m_hwc_right->read(); + break; + + default: + m_hwc_input_value = 0xff; + break; + } break; case 0x30/2: @@ -1668,20 +1684,18 @@ READ16_MEMBER( segas16b_state::sdi_custom_io_r ) READ16_MEMBER( segas16b_state::sjryuko_custom_io_r ) { - static const char *const portname[] = { "MJ0", "MJ1", "MJ2", "MJ3", "MJ4", "MJ5" }; - switch (offset & (0x3000/2)) { case 0x1000/2: switch (offset & 3) { case 1: - if (read_safe(ioport(portname[m_mj_input_num]), 0xff) != 0xff) + if (m_mj_inputs[m_mj_input_num].read_safe(0xff) != 0xff) return 0xff & ~(1 << m_mj_input_num); return 0xff; case 2: - return read_safe(ioport(portname[m_mj_input_num]), 0xff); + return m_mj_inputs[m_mj_input_num].read_safe(0xff); } break; } diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp index d6e5deaf9fa..9d9fe017c6b 100644 --- a/src/mame/drivers/segas24.cpp +++ b/src/mame/drivers/segas24.cpp @@ -518,19 +518,19 @@ UINT8 segas24_state::hotrod_io_r(UINT8 port) switch(port) { case 0: - return ioport("P1")->read(); + return m_p1->read(); case 1: - return ioport("P2")->read(); + return m_p2->read(); case 2: - return read_safe(ioport("P3"), 0xff); + return m_p3.read_safe(0xff); case 3: return 0xff; case 4: - return ioport("SERVICE")->read(); + return m_service->read(); case 5: // Dip switches - return ioport("COINAGE")->read(); + return m_coinage->read(); case 6: - return ioport("DSW")->read(); + return m_dsw->read(); case 7: // DAC return 0xff; } @@ -544,20 +544,20 @@ UINT8 segas24_state::dcclub_io_r(UINT8 port) case 0: { static const UINT8 pos[16] = { 0, 1, 3, 2, 6, 4, 12, 8, 9 }; - return (ioport("P1")->read() & 0xf) | ((~pos[ioport("PADDLE")->read()>>4]<<4) & 0xf0); + return (m_p1->read() & 0xf) | ((~pos[m_paddle->read()>>4]<<4) & 0xf0); } case 1: - return ioport("P2")->read(); + return m_p2->read(); case 2: return 0xff; case 3: return 0xff; case 4: - return ioport("SERVICE")->read(); + return m_service->read(); case 5: // Dip switches - return ioport("COINAGE")->read(); + return m_coinage->read(); case 6: - return ioport("DSW")->read(); + return m_dsw->read(); case 7: // DAC return 0xff; } @@ -567,8 +567,6 @@ UINT8 segas24_state::dcclub_io_r(UINT8 port) UINT8 segas24_state::mahmajn_io_r(UINT8 port) { - static const char *const keynames[] = { "MJ0", "MJ1", "MJ2", "MJ3", "MJ4", "MJ5", "P1", "P2" }; - switch(port) { case 0: @@ -576,15 +574,15 @@ UINT8 segas24_state::mahmajn_io_r(UINT8 port) case 1: return 0xff; case 2: - return ioport(keynames[cur_input_line])->read(); + return m_mj_inputs[cur_input_line].read_safe(0xff); case 3: return 0xff; case 4: - return ioport("SERVICE")->read(); + return m_service->read(); case 5: // Dip switches - return ioport("COINAGE")->read(); + return m_coinage->read(); case 6: - return ioport("DSW")->read(); + return m_dsw->read(); case 7: // DAC return 0xff; } @@ -624,12 +622,10 @@ void segas24_state::hotrod_io_w(UINT8 port, UINT8 data) WRITE16_MEMBER( segas24_state::hotrod3_ctrl_w ) { - static const char *const portnames[] = { "PEDAL1", "PEDAL2", "PEDAL3", "PEDAL4" }; - if(ACCESSING_BITS_0_7) { data &= 3; - hotrod_ctrl_cur = read_safe(ioport(portnames[data]), 0); + hotrod_ctrl_cur = m_pedals[data].read_safe(0); } } @@ -641,21 +637,21 @@ READ16_MEMBER( segas24_state::hotrod3_ctrl_r ) { // Steering dials case 0: - return read_safe(ioport("DIAL1"), 0) & 0xff; + return m_dials[0].read_safe(0) & 0xff; case 1: - return read_safe(ioport("DIAL1"), 0) >> 8; + return m_dials[0].read_safe(0) >> 8; case 2: - return read_safe(ioport("DIAL2"), 0) & 0xff; + return m_dials[1].read_safe(0) & 0xff; case 3: - return read_safe(ioport("DIAL2"), 0) >> 8; + return m_dials[1].read_safe(0) >> 8; case 4: - return read_safe(ioport("DIAL3"), 0) & 0xff; + return m_dials[2].read_safe(0) & 0xff; case 5: - return read_safe(ioport("DIAL3"), 0) >> 8; + return m_dials[2].read_safe(0) >> 8; case 6: - return read_safe(ioport("DIAL4"), 0) & 0xff; + return m_dials[3].read_safe(0) & 0xff; case 7: - return read_safe(ioport("DIAL4"), 0) >> 8; + return m_dials[3].read_safe(0) >> 8; case 8: { diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp index 251f99639a1..39932d84bb7 100644 --- a/src/mame/drivers/segas32.cpp +++ b/src/mame/drivers/segas32.cpp @@ -545,6 +545,11 @@ segas32_state::segas32_state(const machine_config &mconfig, const char *tag, dev m_system32_videoram(*this,"videoram", 0), m_system32_spriteram(*this,"spriteram", 0), m_system32_paletteram(*this,"paletteram", 0) , + m_ports_a(*this, {"P1_A", "P2_A", "PORTC_A", "PORTD_A", "SERVICE12_A", "SERVICE34_A", "PORTG_A", "PORTH_A"}), + m_ports_b(*this, {"P1_B", "P2_B", "PORTC_B", "PORTD_B", "SERVICE12_B", "SERVICE34_B", "PORTG_B", "PORTH_B"}), + m_analog_ports(*this, {"ANALOG1", "ANALOG2", "ANALOG3", "ANALOG4", "ANALOG5", "ANALOG6", "ANALOG7", "ANALOG8"}), + m_extra_ports(*this, {"EXTRA1", "EXTRA2", "EXTRA3", "EXTRA4"}), + m_track_ports(*this, {"TRACKX1", "TRACKY1", "TRACKX2", "TRACKY2", "TRACKX3", "TRACKY3"}), m_maincpu(*this, "maincpu"), m_soundcpu(*this, "soundcpu"), m_multipcm(*this, "sega"), @@ -805,11 +810,6 @@ INTERRUPT_GEN_MEMBER(segas32_state::start_of_vblank_int) UINT16 segas32_state::common_io_chip_r(address_space &space, int which, offs_t offset, UINT16 mem_mask) { - static const char *const portnames[2][8] = - { - { "P1_A", "P2_A", "PORTC_A", "PORTD_A", "SERVICE12_A", "SERVICE34_A", "PORTG_A", "PORTH_A" }, - { "P1_B", "P2_B", "PORTC_B", "PORTD_B", "SERVICE12_B", "SERVICE34_B", "PORTG_B", "PORTH_B" }, - }; offset &= 0x1f/2; switch (offset) @@ -828,7 +828,7 @@ UINT16 segas32_state::common_io_chip_r(address_space &space, int which, offs_t o return m_misc_io_data[which][offset]; /* otherwise, return an input port */ - return read_safe(ioport(portnames[which][offset]), 0xffff); + return (which ? m_ports_b : m_ports_a)[offset].read_safe(0xffff); /* 'SEGA' protection */ case 0x10/2: @@ -1090,14 +1090,13 @@ READ16_MEMBER(segas32_state::analog_custom_io_r) WRITE16_MEMBER(segas32_state::analog_custom_io_w) { - static const char *const names[] = { "ANALOG1", "ANALOG2", "ANALOG3", "ANALOG4" }; switch (offset) { case 0x10/2: case 0x12/2: case 0x14/2: case 0x16/2: - m_analog_value[offset & 3] = read_safe(ioport(names[offset & 3]), 0); + m_analog_value[offset & 3] = m_analog_ports[offset & 3].read_safe(0); return; } logerror("%06X:unknown analog_custom_io_w(%X) = %04X & %04X\n", space.device().safe_pc(), offset*2, data, mem_mask); @@ -1106,14 +1105,13 @@ WRITE16_MEMBER(segas32_state::analog_custom_io_w) READ16_MEMBER(segas32_state::extra_custom_io_r) { - static const char *const names[] = { "EXTRA1", "EXTRA2", "EXTRA3", "EXTRA4" }; switch (offset) { case 0x20/2: case 0x22/2: case 0x24/2: case 0x26/2: - return read_safe(ioport(names[offset & 3]), 0xffff); + return m_extra_ports[offset & 3].read_safe(0xffff); } logerror("%06X:unknown extra_custom_io_r(%X) & %04X\n", space.device().safe_pc(), offset*2, mem_mask); @@ -1123,14 +1121,13 @@ READ16_MEMBER(segas32_state::extra_custom_io_r) WRITE16_MEMBER(segas32_state::orunners_custom_io_w) { - static const char *const names[] = { "ANALOG1", "ANALOG2", "ANALOG3", "ANALOG4", "ANALOG5", "ANALOG6", "ANALOG7", "ANALOG8" }; switch (offset) { case 0x10/2: case 0x12/2: case 0x14/2: case 0x16/2: - m_analog_value[offset & 3] = read_safe(ioport(names[m_analog_bank * 4 + (offset & 3)]), 0); + m_analog_value[offset & 3] = m_analog_ports[m_analog_bank * 4 + (offset & 3)].read_safe(0); return; case 0x20/2: @@ -1143,8 +1140,6 @@ WRITE16_MEMBER(segas32_state::orunners_custom_io_w) READ16_MEMBER(segas32_state::sonic_custom_io_r) { - static const char *const names[] = { "TRACKX1", "TRACKY1", "TRACKX2", "TRACKY2", "TRACKX3", "TRACKY3" }; - switch (offset) { case 0x00/2: @@ -1153,7 +1148,7 @@ READ16_MEMBER(segas32_state::sonic_custom_io_r) case 0x0c/2: case 0x10/2: case 0x14/2: - return (UINT8)(ioport(names[offset/2])->read() - m_sonic_last[offset/2]); + return (UINT8)(m_track_ports[offset/2]->read() - m_sonic_last[offset/2]); } logerror("%06X:unknown sonic_custom_io_r(%X) & %04X\n", space.device().safe_pc(), offset*2, mem_mask); @@ -1163,15 +1158,13 @@ READ16_MEMBER(segas32_state::sonic_custom_io_r) WRITE16_MEMBER(segas32_state::sonic_custom_io_w) { - static const char *const names[] = { "TRACKX1", "TRACKY1", "TRACKX2", "TRACKY2", "TRACKX3", "TRACKY3" }; - switch (offset) { case 0x00/2: case 0x08/2: case 0x10/2: - m_sonic_last[offset/2 + 0] = ioport(names[offset/2 + 0])->read(); - m_sonic_last[offset/2 + 1] = ioport(names[offset/2 + 1])->read(); + m_sonic_last[offset/2 + 0] = m_track_ports[offset/2 + 0]->read(); + m_sonic_last[offset/2 + 1] = m_track_ports[offset/2 + 1]->read(); return; } diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp index 9d4cb0a5c67..43219edf6a7 100644 --- a/src/mame/drivers/segaxbd.cpp +++ b/src/mame/drivers/segaxbd.cpp @@ -293,7 +293,9 @@ segaxbd_state::segaxbd_state(const machine_config &mconfig, const char *tag, dev m_gprider_hack(false), m_palette_entries(0), m_screen(*this, "screen"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_adc_ports(*this, {"ADC0", "ADC1", "ADC2", "ADC3", "ADC4", "ADC5", "ADC6", "ADC7"}), + m_mux_ports(*this, {"MUX0", "MUX1", "MUX2", "MUX3"}) { memset(m_adc_reverse, 0, sizeof(m_adc_reverse)); memset(m_iochip_regs, 0, sizeof(m_iochip_regs)); @@ -462,11 +464,9 @@ void segaxbd_state::sound_data_w(UINT8 data) READ16_MEMBER( segaxbd_state::adc_r ) { - static const char *const ports[] = { "ADC0", "ADC1", "ADC2", "ADC3", "ADC4", "ADC5", "ADC6", "ADC7" }; - // on the write, latch the selected input port and stash the value int which = (m_iochip_regs[0][2] >> 2) & 7; - int value = read_safe(ioport(ports[which]), 0x0010); + int value = m_adc_ports[which].read_safe(0x0010); // reverse some port values if (m_adc_reverse[which]) @@ -926,8 +926,7 @@ void segaxbd_state::smgp_iochip0_motor_w(UINT8 data) UINT8 segaxbd_state::lastsurv_iochip1_port_r(UINT8 data) { - static const char * const port_names[] = { "MUX0", "MUX1", "MUX2", "MUX3" }; - return read_safe(ioport(port_names[m_lastsurv_mux]), 0xff); + return m_mux_ports[m_lastsurv_mux].read_safe(0xff); } diff --git a/src/mame/drivers/segaybd.cpp b/src/mame/drivers/segaybd.cpp index 9495f33306b..98b99e80cdc 100644 --- a/src/mame/drivers/segaybd.cpp +++ b/src/mame/drivers/segaybd.cpp @@ -106,7 +106,7 @@ READ16_MEMBER( segaybd_state::analog_r ) WRITE16_MEMBER( segaybd_state::analog_w ) { int selected = ((offset & 3) == 3) ? (3 + (m_misc_io_data[0x08/2] & 3)) : (offset & 3); - m_analog_data[offset & 3] = read_safe(m_adc_ports[selected], 0xff); + m_analog_data[offset & 3] = m_adc_ports[selected].read_safe(0xff); } diff --git a/src/mame/drivers/seicross.cpp b/src/mame/drivers/seicross.cpp index ab912c70ae8..9761fb364b6 100644 --- a/src/mame/drivers/seicross.cpp +++ b/src/mame/drivers/seicross.cpp @@ -79,7 +79,7 @@ void seicross_state::machine_reset() READ8_MEMBER(seicross_state::portB_r) { - return (m_portb & 0x9f) | (read_safe(ioport("DEBUG"), 0) & 0x60); + return (m_portb & 0x9f) | (m_debug_port.read_safe(0) & 0x60); } WRITE8_MEMBER(seicross_state::portB_w) diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp index f7db8a7e0ca..de7e049bad4 100644 --- a/src/mame/drivers/seta.cpp +++ b/src/mame/drivers/seta.cpp @@ -1583,12 +1583,12 @@ READ16_MEMBER(seta_state::seta_dsw_r) READ8_MEMBER(seta_state::dsw1_r) { - return (ioport("DSW")->read() >> 8) & 0xff; + return (m_dsw->read() >> 8) & 0xff; } READ8_MEMBER(seta_state::dsw2_r) { - return (ioport("DSW")->read() >> 0) & 0xff; + return (m_dsw->read() >> 0) & 0xff; } @@ -1683,15 +1683,15 @@ ADDRESS_MAP_END READ16_MEMBER(seta_state::calibr50_ip_r) { - int dir1 = ioport("ROT1")->read(); // analog port - int dir2 = ioport("ROT2")->read(); // analog port + int dir1 = m_rot[0]->read(); // analog port + int dir2 = m_rot[1]->read(); // analog port switch (offset) { - case 0x00/2: return ioport("P1")->read(); // p1 - case 0x02/2: return ioport("P2")->read(); // p2 + case 0x00/2: return m_p1->read(); // p1 + case 0x02/2: return m_p2->read(); // p2 - case 0x08/2: return ioport("COINS")->read(); // Coins + case 0x08/2: return m_coins->read(); // Coins case 0x10/2: return (dir1 & 0xff); // lower 8 bits of p1 rotation case 0x12/2: return (dir1 >> 8); // upper 4 bits of p1 rotation @@ -1746,10 +1746,10 @@ READ16_MEMBER(seta_state::usclssic_dsw_r) { switch (offset) { - case 0/2: return (ioport("DSW")->read() >> 8) & 0xf; - case 2/2: return (ioport("DSW")->read() >> 12) & 0xf; - case 4/2: return (ioport("DSW")->read() >> 0) & 0xf; - case 6/2: return (ioport("DSW")->read() >> 4) & 0xf; + case 0/2: return (m_dsw->read() >> 8) & 0xf; + case 2/2: return (m_dsw->read() >> 12) & 0xf; + case 4/2: return (m_dsw->read() >> 0) & 0xf; + case 6/2: return (m_dsw->read() >> 4) & 0xf; } return 0; } @@ -1963,7 +1963,7 @@ WRITE16_MEMBER(seta_state::zombraid_gun_w) READ16_MEMBER(seta_state::extra_r) { - return read_safe(ioport("EXTRA"), 0xff); + return m_extra_port.read_safe(0xff); } static ADDRESS_MAP_START( wrofaero_map, AS_PROGRAM, 16, seta_state ) @@ -2137,7 +2137,7 @@ READ16_MEMBER(seta_state::keroppi_protection_init_r) READ16_MEMBER(seta_state::keroppi_coin_r) { - UINT16 result = ioport("COINS")->read(); + UINT16 result = m_coins->read(); if (m_keroppi_prize_hop == 2) { @@ -2548,10 +2548,10 @@ ADDRESS_MAP_END READ16_MEMBER(seta_state::krzybowl_input_r) { // analog ports - int dir1x = ioport("TRACK1_X")->read() & 0xfff; - int dir1y = ioport("TRACK1_Y")->read() & 0xfff; - int dir2x = ioport("TRACK2_X")->read() & 0xfff; - int dir2y = ioport("TRACK2_Y")->read() & 0xfff; + int dir1x = m_track1_x->read() & 0xfff; + int dir1y = m_track1_y->read() & 0xfff; + int dir2x = m_track2_x->read() & 0xfff; + int dir2y = m_track2_y->read() & 0xfff; switch (offset) { @@ -2724,7 +2724,7 @@ READ16_MEMBER(seta_state::kiwame_input_r) { case 0x00/2: return ioport(keynames[i])->read(); case 0x02/2: return 0xffff; - case 0x04/2: return ioport("COINS")->read(); + case 0x04/2: return m_coins->read(); // case 0x06/2: case 0x08/2: return 0xffff; @@ -2991,20 +2991,20 @@ ADDRESS_MAP_END READ16_MEMBER(seta_state::inttoote_dsw_r) { int shift = offset * 4; - return ((((ioport("DSW1")->read() >> shift) & 0xf)) << 0) | - ((((ioport("DSW2_3")->read() >> shift) & 0xf)) << 4) | - ((((ioport("DSW2_3")->read() >> (shift+8)) & 0xf)) << 8) ; + return ((((m_dsw1->read() >> shift) & 0xf)) << 0) | + ((((m_dsw2_3->read() >> shift) & 0xf)) << 4) | + ((((m_dsw2_3->read() >> (shift+8)) & 0xf)) << 8) ; } READ16_MEMBER(seta_state::inttoote_key_r) { switch( *m_inttoote_key_select ) { - case 0x08: return ioport("BET0")->read(); - case 0x10: return ioport("BET1")->read(); - case 0x20: return ioport("BET2")->read(); - case 0x40: return ioport("BET3")->read(); - case 0x80: return ioport("BET4")->read(); + case 0x08: return m_bet[0]->read(); + case 0x10: return m_bet[1]->read(); + case 0x20: return m_bet[2]->read(); + case 0x40: return m_bet[3]->read(); + case 0x80: return m_bet[4]->read(); } logerror("%06X: unknown read, select = %04x\n",space.device().safe_pc(), *m_inttoote_key_select); @@ -3055,11 +3055,11 @@ READ16_MEMBER(seta_state::jockeyc_mux_r) { switch( m_jockeyc_key_select ) { - case 0x08: return ioport("BET0")->read(); - case 0x10: return ioport("BET1")->read(); - case 0x20: return ioport("BET2")->read(); - case 0x40: return ioport("BET3")->read(); - case 0x80: return ioport("BET4")->read(); + case 0x08: return m_bet[0]->read(); + case 0x10: return m_bet[1]->read(); + case 0x20: return m_bet[2]->read(); + case 0x40: return m_bet[3]->read(); + case 0x80: return m_bet[4]->read(); } return 0xffff; diff --git a/src/mame/drivers/sidearms.cpp b/src/mame/drivers/sidearms.cpp index 35341c137e8..a5beb5cc756 100644 --- a/src/mame/drivers/sidearms.cpp +++ b/src/mame/drivers/sidearms.cpp @@ -70,7 +70,7 @@ READ8_MEMBER(sidearms_state::turtship_ports_r) { int res = 0; for (int i = 0; i < 5;i++) - res |= ((read_safe(m_ports[i], 0) >> offset) & 1) << i; + res |= ((m_ports[i].read_safe(0) >> offset) & 1) << i; return res; } diff --git a/src/mame/drivers/spectrum.cpp b/src/mame/drivers/spectrum.cpp index 4bf71cbce22..e5ee94a4f95 100644 --- a/src/mame/drivers/spectrum.cpp +++ b/src/mame/drivers/spectrum.cpp @@ -329,11 +329,11 @@ READ8_MEMBER(spectrum_state::spectrum_port_fe_r) int lines = offset >> 8; int data = 0xff; - int cs_extra1 = m_io_plus0 ? m_io_plus0->read() & 0x1f : 0x1f; - int cs_extra2 = m_io_plus1 ? m_io_plus1->read() & 0x1f : 0x1f; - int cs_extra3 = m_io_plus2 ? m_io_plus2->read() & 0x1f : 0x1f; - int ss_extra1 = m_io_plus3 ? m_io_plus3->read() & 0x1f : 0x1f; - int ss_extra2 = m_io_plus4 ? m_io_plus4->read() & 0x1f : 0x1f; + int cs_extra1 = m_io_plus0.read_safe(0x1f) & 0x1f; + int cs_extra2 = m_io_plus1.read_safe(0x1f) & 0x1f; + int cs_extra3 = m_io_plus2.read_safe(0x1f) & 0x1f; + int ss_extra1 = m_io_plus3.read_safe(0x1f) & 0x1f; + int ss_extra2 = m_io_plus4.read_safe(0x1f) & 0x1f; /* Caps - V */ if ((lines & 1) == 0) diff --git a/src/mame/drivers/ssv.cpp b/src/mame/drivers/ssv.cpp index f0c8a4f1b64..b1cfeede68d 100644 --- a/src/mame/drivers/ssv.cpp +++ b/src/mame/drivers/ssv.cpp @@ -444,9 +444,7 @@ ADDRESS_MAP_END READ16_MEMBER(ssv_state::gdfs_eeprom_r) { - ioport_port *gun[] = { m_io_gunx1, m_io_guny1, m_io_gunx2, m_io_guny2 }; - - return (((m_gdfs_lightgun_select & 1) ? 0 : 0xff) ^ gun[m_gdfs_lightgun_select]->read()) | (m_eeprom->do_read() << 8); + return (((m_gdfs_lightgun_select & 1) ? 0 : 0xff) ^ m_io_gun[m_gdfs_lightgun_select]->read()) | (m_eeprom->do_read() << 8); } WRITE16_MEMBER(ssv_state::gdfs_eeprom_w) @@ -722,11 +720,7 @@ ADDRESS_MAP_END READ16_MEMBER(ssv_state::sxyreact_ballswitch_r) { - if ( m_io_service ) - { - return m_io_service->read(); - } - return 0; + return m_io_service.read_safe(0); } READ16_MEMBER(ssv_state::sxyreact_dial_r) @@ -740,7 +734,7 @@ WRITE16_MEMBER(ssv_state::sxyreact_dial_w) if (ACCESSING_BITS_0_7) { if (data & 0x20) - m_sxyreact_serial = ( m_io_paddle ? m_io_paddle->read() : 0 ) & 0xff; + m_sxyreact_serial = m_io_paddle.read_safe(0) & 0xff; if ( (m_sxyreact_dial & 0x40) && !(data & 0x40) ) // $40 -> $00 m_sxyreact_serial <<= 1; // shift 1 bit diff --git a/src/mame/drivers/starfire.cpp b/src/mame/drivers/starfire.cpp index 38bc76ccf61..94a36925297 100644 --- a/src/mame/drivers/starfire.cpp +++ b/src/mame/drivers/starfire.cpp @@ -320,7 +320,7 @@ static const char *const starfire_sample_names[] = INTERRUPT_GEN_MEMBER(starfire_state::vblank_int) { // starfire has a jumper for disabling NMI, used to do a complete RAM test - if (read_safe(ioport("NMI"), 0x01)) + if (m_nmi.read_safe(0x01)) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } diff --git a/src/mame/drivers/svision.cpp b/src/mame/drivers/svision.cpp index b6ff3ec2618..c3c13f193b5 100644 --- a/src/mame/drivers/svision.cpp +++ b/src/mame/drivers/svision.cpp @@ -29,7 +29,7 @@ TIMER_CALLBACK_MEMBER(svision_state::svision_pet_timer) switch (m_pet.state) { case 0: - if ( m_joy2 ) + if (m_joy2.found()) { m_pet.input = m_joy2->read(); } diff --git a/src/mame/drivers/taito_z.cpp b/src/mame/drivers/taito_z.cpp index 4c9c985a2af..9ac3352f681 100644 --- a/src/mame/drivers/taito_z.cpp +++ b/src/mame/drivers/taito_z.cpp @@ -1104,8 +1104,8 @@ WRITE16_MEMBER(taitoz_state::spacegun_output_bypass_w) CUSTOM_INPUT_MEMBER(taitoz_state::taitoz_pedal_r) { static const UINT8 retval[8] = { 0,1,3,2,6,7,5,4 }; - const char *tag = (const char *)param; - return retval[read_safe(ioport(tag), 0) & 7]; + ioport_port *port = ioport((const char *)param); + return retval[port != nullptr ? port->read() & 7 : 0]; } @@ -1114,7 +1114,7 @@ READ8_MEMBER(taitoz_state::contcirc_input_bypass_r) /* Bypass TC0220IOC controller for analog input */ UINT8 port = m_tc0220ioc->port_r(space, 0); /* read port number */ - UINT16 steer = 0xff80 + read_safe(ioport("STEER"), 0x80); + UINT16 steer = 0xff80 + m_steer.read_safe(0x80); switch (port) { @@ -1135,7 +1135,7 @@ READ8_MEMBER(taitoz_state::chasehq_input_bypass_r) /* Bypass TC0220IOC controller for extra inputs */ UINT8 port = m_tc0220ioc->port_r(space, 0); /* read port number */ - UINT16 steer = 0xff80 + read_safe(ioport("STEER"), 0x80); + UINT16 steer = 0xff80 + m_steer.read_safe(0x80); switch (port) { @@ -1222,7 +1222,7 @@ WRITE16_MEMBER(taitoz_state::bshark_stick_w) READ16_MEMBER(taitoz_state::sci_steer_input_r) { - UINT16 steer = 0xff80 + read_safe(ioport("STEER"), 0x80); + UINT16 steer = 0xff80 + m_steer.read_safe(0x80); switch (offset) { @@ -1293,7 +1293,7 @@ WRITE16_MEMBER(taitoz_state::spacegun_gun_output_w) READ16_MEMBER(taitoz_state::dblaxle_steer_input_r) { - UINT16 steer = 0xff80 + read_safe(ioport("STEER"), 0x80); + UINT16 steer = 0xff80 + m_steer.read_safe(0x80); switch (offset) { diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp index 0ee62e39216..66c931cf112 100644 --- a/src/mame/drivers/taitojc.cpp +++ b/src/mame/drivers/taitojc.cpp @@ -754,7 +754,7 @@ WRITE8_MEMBER(taitojc_state::hc11_output_w) READ8_MEMBER(taitojc_state::hc11_analog_r) { - return read_safe(m_analog_ports[offset], 0); + return m_analog_ports[offset].read_safe(0); } diff --git a/src/mame/drivers/tmc1800.cpp b/src/mame/drivers/tmc1800.cpp index 1b6c5b4e155..257c9b876a4 100644 --- a/src/mame/drivers/tmc1800.cpp +++ b/src/mame/drivers/tmc1800.cpp @@ -634,16 +634,6 @@ void tmc2000_state::machine_start() m_colorram[addr] = machine().rand() & 0xff; } - // find keyboard rows - m_key_row[0] = m_y0; - m_key_row[1] = m_y1; - m_key_row[2] = m_y2; - m_key_row[3] = m_y3; - m_key_row[4] = m_y4; - m_key_row[5] = m_y5; - m_key_row[6] = m_y6; - m_key_row[7] = m_y7; - // state saving save_item(NAME(m_keylatch)); save_item(NAME(m_rac)); diff --git a/src/mame/drivers/tmc2000e.cpp b/src/mame/drivers/tmc2000e.cpp index fffc43334f2..4586f557996 100644 --- a/src/mame/drivers/tmc2000e.cpp +++ b/src/mame/drivers/tmc2000e.cpp @@ -258,16 +258,6 @@ WRITE8_MEMBER( tmc2000e_state::dma_w ) void tmc2000e_state::machine_start() { - // find keyboard rows - m_key_row[0] = m_y0; - m_key_row[1] = m_y1; - m_key_row[2] = m_y2; - m_key_row[3] = m_y3; - m_key_row[4] = m_y4; - m_key_row[5] = m_y5; - m_key_row[6] = m_y6; - m_key_row[7] = m_y7; - /* register for state saving */ save_item(NAME(m_cdp1864_efx)); save_item(NAME(m_keylatch)); diff --git a/src/mame/drivers/tmc600.cpp b/src/mame/drivers/tmc600.cpp index 5b0f73c05dc..4eddb1c7d01 100644 --- a/src/mame/drivers/tmc600.cpp +++ b/src/mame/drivers/tmc600.cpp @@ -236,16 +236,6 @@ void tmc600_state::machine_start() break; } - // find keyboard rows - m_key_row[0] = m_y0; - m_key_row[1] = m_y1; - m_key_row[2] = m_y2; - m_key_row[3] = m_y3; - m_key_row[4] = m_y4; - m_key_row[5] = m_y5; - m_key_row[6] = m_y6; - m_key_row[7] = m_y7; - /* register for state saving */ save_item(NAME(m_keylatch)); } diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp index db62ef16adf..bbbd8e41c2f 100644 --- a/src/mame/drivers/topspeed.cpp +++ b/src/mame/drivers/topspeed.cpp @@ -189,7 +189,7 @@ READ8_MEMBER(topspeed_state::input_bypass_r) { // Read port number UINT8 port = m_tc0220ioc->port_r(space, 0); - UINT16 steer = 0xff80 + read_safe(ioport("STEER"), 0); + UINT16 steer = 0xff80 + m_steer.read_safe(0); switch (port) { @@ -207,8 +207,8 @@ READ8_MEMBER(topspeed_state::input_bypass_r) CUSTOM_INPUT_MEMBER(topspeed_state::pedal_r) { static const UINT8 retval[8] = { 0,1,3,2,6,7,5,4 }; - const char *tag = (const char *)param; - return retval[read_safe(ioport(tag), 0) & 7]; + ioport_port *port = ioport((const char *)param); + return retval[port != nullptr ? port->read() & 7 : 0]; } READ16_MEMBER(topspeed_state::motor_r) diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp index c45b7fa8b74..269dafacfd3 100644 --- a/src/mame/drivers/vegas.cpp +++ b/src/mame/drivers/vegas.cpp @@ -1484,7 +1484,7 @@ WRITE32_MEMBER( vegas_state::analog_port_w ) { if (data < 8 || data > 15) logerror("%08X:Unexpected analog port select = %08X\n", safe_pc(), data); - m_pending_analog_read = m_io_analog[data & 7] ? m_io_analog[data & 7]->read() : 0; + m_pending_analog_read = m_io_analog[data & 7].read_safe(0); } diff --git a/src/mame/drivers/vicdual.cpp b/src/mame/drivers/vicdual.cpp index 5dfa2543f75..746ca1883ee 100644 --- a/src/mame/drivers/vicdual.cpp +++ b/src/mame/drivers/vicdual.cpp @@ -191,7 +191,7 @@ CUSTOM_INPUT_MEMBER(vicdual_state::get_timer_value) int vicdual_state::is_cabinet_color() { - return ((m_color_bw ? m_color_bw->read() : 0) & 1) ? 0 : 1; + return (m_color_bw.read_safe(0) & 1) ? 0 : 1; } @@ -1303,7 +1303,7 @@ CUSTOM_INPUT_MEMBER(vicdual_state::fake_lives_r) /* and use d8 for the port */ int port = ((FPTR)param) >> 8 & 1; - return ((m_fake_lives[port] ? m_fake_lives[port]->read() : 0) & bit_mask) ? 0 : 1; + return (m_fake_lives[port].read_safe(0) & bit_mask) ? 0 : 1; } diff --git a/src/mame/drivers/warpwarp.cpp b/src/mame/drivers/warpwarp.cpp index 7bff85217f4..c3a05368098 100644 --- a/src/mame/drivers/warpwarp.cpp +++ b/src/mame/drivers/warpwarp.cpp @@ -158,7 +158,7 @@ READ8_MEMBER(warpwarp_state::geebee_in_r) int res; offset &= 3; - res = m_ports[offset] ? m_ports[offset]->read() : 0; + res = m_ports[offset].read_safe(0); if (offset == 3) { res = (flip_screen() & 1) ? m_in2->read() : m_in1->read(); // read player 2 input in cocktail mode diff --git a/src/mame/drivers/wgp.cpp b/src/mame/drivers/wgp.cpp index c3bd4a55069..a61cef74b61 100644 --- a/src/mame/drivers/wgp.cpp +++ b/src/mame/drivers/wgp.cpp @@ -517,12 +517,12 @@ WRITE16_MEMBER(wgp_state::rotate_port_w) READ16_MEMBER(wgp_state::wgp_adinput_r) { int steer = 0x40; - int fake = m_fake ? m_fake->read() : 0; + int fake = m_fake.read_safe(0); if (!(fake & 0x10)) /* Analogue steer (the real control method) */ { /* Reduce span to 0x80 */ - steer = ((m_steer ? m_steer->read() : 0) * 0x80) / 0x100; + steer = (m_steer.read_safe(0) * 0x80) / 0x100; } else /* Digital steer */ { @@ -567,7 +567,7 @@ READ16_MEMBER(wgp_state::wgp_adinput_r) } case 0x05: - return m_unknown ? m_unknown->read() : 0; /* unknown */ + return m_unknown.read_safe(0); /* unknown */ } logerror("CPU #0 PC %06x: warning - read unmapped a/d input offset %06x\n",space.device().safe_pc(),offset); diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h index 25bffc62151..33a2997271d 100644 --- a/src/mame/includes/8080bw.h +++ b/src/mame/includes/8080bw.h @@ -27,7 +27,9 @@ public: m_eeprom(*this, "eeprom"), m_sn(*this, "snsnd"), m_screen(*this, "screen"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_gunx(*this, "GUNX"), + m_guny(*this, "GUNY") { } /* devices/memory pointers */ @@ -41,6 +43,8 @@ public: optional_device m_palette; /* misc game specific */ + optional_ioport m_gunx; + optional_ioport m_guny; UINT8 m_color_map; UINT8 m_screen_red; UINT8 m_fleet_step; diff --git a/src/mame/includes/amiga.h b/src/mame/includes/amiga.h index 03c9829da3d..c5f88a08c75 100644 --- a/src/mame/includes/amiga.h +++ b/src/mame/includes/amiga.h @@ -347,8 +347,7 @@ public: m_potgo_port(*this, "potgo"), m_pot0dat_port(*this, "POT0DAT"), m_pot1dat_port(*this, "POT1DAT"), - m_p1joy_port(*this, "p1_joy"), - m_p2joy_port(*this, "p2_joy"), + m_joy_ports(*this, {"p1_joy", "p2_joy"}), m_p1_mouse_x(*this, "p1_mouse_x"), m_p1_mouse_y(*this, "p1_mouse_y"), m_p2_mouse_x(*this, "p2_mouse_x"), @@ -576,8 +575,7 @@ protected: optional_ioport m_potgo_port; optional_ioport m_pot0dat_port; optional_ioport m_pot1dat_port; - optional_ioport m_p1joy_port; - optional_ioport m_p2joy_port; + optional_ioport_array<2> m_joy_ports; optional_ioport m_p1_mouse_x; optional_ioport m_p1_mouse_y; optional_ioport m_p2_mouse_x; diff --git a/src/mame/includes/astrof.h b/src/mame/includes/astrof.h index f45a3681777..86577547d25 100644 --- a/src/mame/includes/astrof.h +++ b/src/mame/includes/astrof.h @@ -17,6 +17,7 @@ public: m_videoram(*this, "videoram"), m_astrof_color(*this, "astrof_color"), m_tomahawk_protection(*this, "tomahawk_prot"), + m_fake_port(*this, "FAKE"), m_maincpu(*this, "maincpu"), m_samples(*this, "samples"), m_sn(*this, "snsnd"), @@ -28,6 +29,7 @@ public: std::unique_ptr m_colorram; required_shared_ptr m_astrof_color; optional_shared_ptr m_tomahawk_protection; + optional_ioport m_fake_port; UINT8 m_astrof_palette_bank; UINT8 m_red_on; diff --git a/src/mame/includes/bbc.h b/src/mame/includes/bbc.h index f408a190f54..51b36c82948 100644 --- a/src/mame/includes/bbc.h +++ b/src/mame/includes/bbc.h @@ -102,7 +102,8 @@ public: m_via_system_irq(CLEAR_LINE), m_via_user_irq(CLEAR_LINE), m_acia_irq(CLEAR_LINE), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_bbcconfig(*this, "BBCCONFIG") { } DECLARE_FLOPPY_FORMATS(floppy_formats_bbc); @@ -445,6 +446,7 @@ public: // HACK FOR MC6845 void bbc_update_nmi(); unsigned int calculate_video_address(int ma,int ra); required_device m_palette; + optional_ioport m_bbcconfig; }; #endif /* BBC_H_ */ diff --git a/src/mame/includes/bfm_sc4.h b/src/mame/includes/bfm_sc4.h index def6c17254a..a3a49798ef0 100644 --- a/src/mame/includes/bfm_sc4.h +++ b/src/mame/includes/bfm_sc4.h @@ -133,18 +133,7 @@ public: m_reel4(*this, "reel4"), m_reel5(*this, "reel5"), m_reel6(*this, "reel6"), - m_io1(*this, "IN-0"), - m_io2(*this, "IN-1"), - m_io3(*this, "IN-2"), - m_io4(*this, "IN-3"), - m_io5(*this, "IN-4"), - m_io6(*this, "IN-5"), - m_io7(*this, "IN-6"), - m_io8(*this, "IN-7"), - m_io9(*this, "IN-8"), - m_io10(*this, "IN-9"), - m_io11(*this, "IN-10"), - m_io12(*this, "IN-11") + m_io_ports(*this, {"IN-0", "IN-1", "IN-2", "IN-3", "IN-4", "IN-5", "IN-6", "IN-7", "IN-8", "IN-9", "IN-10", "IN-11"}) { m_chk41addr = -1; m_dochk41 = false; @@ -630,18 +619,7 @@ public: protected: - required_ioport m_io1; - required_ioport m_io2; - required_ioport m_io3; - required_ioport m_io4; - required_ioport m_io5; - required_ioport m_io6; - required_ioport m_io7; - required_ioport m_io8; - required_ioport m_io9; - required_ioport m_io10; - required_ioport m_io11; - required_ioport m_io12; + optional_ioport_array<16> m_io_ports; }; class sc4_adder4_state : public sc4_state diff --git a/src/mame/includes/bwidow.h b/src/mame/includes/bwidow.h index 48c53e2c87c..bb4da41900b 100644 --- a/src/mame/includes/bwidow.h +++ b/src/mame/includes/bwidow.h @@ -13,7 +13,10 @@ class bwidow_state : public driver_device public: bwidow_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , - m_maincpu(*this, "maincpu") { } + m_maincpu(*this, "maincpu"), + m_in3(*this, "IN3"), + m_in4(*this, "IN4"), + m_dsw2(*this, "DSW2") { } int m_lastdata; DECLARE_READ8_MEMBER(spacduel_IN3_r); @@ -23,6 +26,9 @@ public: DECLARE_WRITE8_MEMBER(irq_ack_w); DECLARE_CUSTOM_INPUT_MEMBER(clock_r); required_device m_maincpu; + optional_ioport m_in3; + optional_ioport m_in4; + optional_ioport m_dsw2; }; diff --git a/src/mame/includes/cinemat.h b/src/mame/includes/cinemat.h index 6f860f51b29..f6c986aa1f9 100644 --- a/src/mame/includes/cinemat.h +++ b/src/mame/includes/cinemat.h @@ -20,7 +20,9 @@ public: m_samples(*this, "samples"), m_vector(*this, "vector"), m_screen(*this, "screen"), - m_rambase(*this, "rambase") { } + m_rambase(*this, "rambase"), + m_analog_x(*this, "ANALOGX"), + m_analog_y(*this, "ANALOGY") { } required_device m_maincpu; optional_device m_ay1; @@ -29,6 +31,9 @@ public: required_device m_screen; optional_shared_ptr m_rambase; + optional_ioport m_analog_x; + optional_ioport m_analog_y; + typedef void (cinemat_state::*sound_func)(UINT8 sound_val, UINT8 bits_changed); sound_func m_sound_handler; diff --git a/src/mame/includes/combatsc.h b/src/mame/includes/combatsc.h index 4247c19d75e..253ab5d8899 100644 --- a/src/mame/includes/combatsc.h +++ b/src/mame/includes/combatsc.h @@ -24,7 +24,10 @@ public: m_msm5205(*this, "msm5205"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_soundlatch(*this, "soundlatch") { } + m_soundlatch(*this, "soundlatch"), + m_track_ports(*this, {"TRACK0_Y", "TRACK0_X", "TRACK1_Y", "TRACK1_X"}) + { + } /* memory pointers */ UINT8 * m_videoram; @@ -63,6 +66,8 @@ public: required_device m_palette; required_device m_soundlatch; + optional_ioport_array<4> m_track_ports; + DECLARE_WRITE8_MEMBER(combatsc_vreg_w); DECLARE_WRITE8_MEMBER(combatscb_sh_irqtrigger_w); DECLARE_READ8_MEMBER(combatscb_io_r); diff --git a/src/mame/includes/cosmic.h b/src/mame/includes/cosmic.h index 706b69befea..77d5dfa6f35 100644 --- a/src/mame/includes/cosmic.h +++ b/src/mame/includes/cosmic.h @@ -20,6 +20,8 @@ public: : driver_device(mconfig, type, tag), m_videoram(*this, "videoram"), m_spriteram(*this, "spriteram"), + m_in_ports(*this, {"IN0", "IN1", "IN2"}), + m_dsw(*this, "DSW"), m_maincpu(*this, "maincpu"), m_samples(*this, "samples"), m_dac(*this, "dac"), @@ -47,6 +49,8 @@ public: /* misc */ UINT32 m_pixel_clock; int m_ic_state; // for 9980 + optional_ioport_array<4> m_in_ports; + optional_ioport m_dsw; /* devices */ required_device m_maincpu; diff --git a/src/mame/includes/cosmicos.h b/src/mame/includes/cosmicos.h index d152bf22b85..f6cd99d98f1 100644 --- a/src/mame/includes/cosmicos.h +++ b/src/mame/includes/cosmicos.h @@ -50,10 +50,7 @@ public: m_speaker(*this, "speaker"), m_ram(*this, RAM_TAG), m_rom(*this, CDP1802_TAG), - m_y1(*this, "Y1"), - m_y2(*this, "Y2"), - m_y3(*this, "Y3"), - m_y4(*this, "Y4"), + m_key_row(*this, {"Y1", "Y2", "Y3", "Y4"}), m_io_data(*this, "DATA"), m_special(*this, "SPECIAL"), m_buttons(*this, "BUTTONS") @@ -66,10 +63,7 @@ public: required_device m_speaker; required_device m_ram; required_memory_region m_rom; - required_ioport m_y1; - required_ioport m_y2; - required_ioport m_y3; - required_ioport m_y4; + required_ioport_array<4> m_key_row; required_ioport m_io_data; required_ioport m_special; required_ioport m_buttons; @@ -127,7 +121,6 @@ public: int m_ram_disable; /* keyboard state */ - ioport_port* m_key_row[4]; UINT8 m_keylatch; /* display state */ diff --git a/src/mame/includes/djmain.h b/src/mame/includes/djmain.h index cbc65036a39..530a673bf95 100644 --- a/src/mame/includes/djmain.h +++ b/src/mame/includes/djmain.h @@ -16,7 +16,8 @@ public: m_k055555(*this, "k055555"), m_ata(*this, "ata"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_turntable(*this, {"TT1", "TT2"}) { } @@ -75,4 +76,5 @@ public: required_device m_gfxdecode; required_device m_palette; K056832_CB_MEMBER(tile_callback); + optional_ioport_array<2> m_turntable; }; diff --git a/src/mame/includes/firetrk.h b/src/mame/includes/firetrk.h index f299184a87d..317f4648c77 100644 --- a/src/mame/includes/firetrk.h +++ b/src/mame/includes/firetrk.h @@ -52,7 +52,12 @@ public: m_drone_rot(*this, "drone_rot"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_bit_0(*this, "BIT_0"), + m_bit_6(*this, "BIT_6"), + m_bit_7(*this, "BIT_7"), + m_dips(*this, {"DIP_0", "DIP_1"}), + m_steer(*this, {"STEER_1", "STEER_2"}) { } required_device m_maincpu; @@ -71,6 +76,12 @@ public: required_device m_screen; required_device m_palette; + optional_ioport m_bit_0; + optional_ioport m_bit_6; + optional_ioport m_bit_7; + required_ioport_array<2> m_dips; + optional_ioport_array<2> m_steer; + UINT8 m_in_service_mode; UINT32 m_dial[2]; UINT8 m_steer_dir[2]; diff --git a/src/mame/includes/fm7.h b/src/mame/includes/fm7.h index 4496b679b8b..929733ecce6 100644 --- a/src/mame/includes/fm7.h +++ b/src/mame/includes/fm7.h @@ -140,9 +140,7 @@ public: m_rom_ptr(*this, "init"), m_basic_ptr(*this, "fbasic"), m_kanji(*this, "kanji1"), - m_key1(*this, "key1"), - m_key2(*this, "key2"), - m_key3(*this, "key3"), + m_kb_ports(*this, {"key1", "key2", "key3"}), m_keymod(*this, "key_modifiers"), m_joy1(*this, "joy1"), m_joy2(*this, "joy2"), @@ -379,9 +377,7 @@ protected: int m_centronics_perror; optional_memory_region m_kanji; - required_ioport m_key1; - required_ioport m_key2; - required_ioport m_key3; + required_ioport_array<3> m_kb_ports; required_ioport m_keymod; required_ioport m_joy1; required_ioport m_joy2; diff --git a/src/mame/includes/fmtowns.h b/src/mame/includes/fmtowns.h index 1989b2ea3a9..37ef8f284ad 100644 --- a/src/mame/includes/fmtowns.h +++ b/src/mame/includes/fmtowns.h @@ -95,10 +95,7 @@ class towns_state : public driver_device m_nvram(*this, "nvram"), m_nvram16(*this, "nvram16"), m_ctrltype(*this, "ctrltype"), - m_key1(*this, "key1"), - m_key2(*this, "key2"), - m_key3(*this, "key3"), - m_key4(*this, "key4"), + m_kb_ports(*this, {"key1", "key2", "key3", "key4"}), m_joy1(*this, "joy1"), m_joy2(*this, "joy2"), m_joy1_ex(*this, "joy1_ex"), @@ -283,10 +280,7 @@ class towns_state : public driver_device UINT8 towns_cdrom_read_byte_software(); required_ioport m_ctrltype; - required_ioport m_key1; - required_ioport m_key2; - required_ioport m_key3; - required_ioport m_key4; + required_ioport_array<4> m_kb_ports; required_ioport m_joy1; required_ioport m_joy2; required_ioport m_joy1_ex; diff --git a/src/mame/includes/gaelco3d.h b/src/mame/includes/gaelco3d.h index 8aaf90e1dc9..6d735bd96fc 100644 --- a/src/mame/includes/gaelco3d.h +++ b/src/mame/includes/gaelco3d.h @@ -69,7 +69,9 @@ public: m_serial(*this, "serial"), m_screen(*this, "screen"), m_paletteram16(*this, "paletteram"), - m_paletteram32(*this, "paletteram") { } + m_paletteram32(*this, "paletteram"), + m_analog(*this, {"ANALOG0", "ANALOG1", "ANALOG2", "ANALOG3"}) + { } required_shared_ptr m_adsp_ram_base; required_shared_ptr m_m68k_ram_base; @@ -84,6 +86,7 @@ public: required_device m_screen; optional_shared_ptr m_paletteram16; optional_shared_ptr m_paletteram32; + optional_ioport_array<4> m_analog; UINT16 m_sound_data; UINT8 m_sound_status; diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h index 2c9b6221ae9..f7b546289df 100644 --- a/src/mame/includes/galaxian.h +++ b/src/mame/includes/galaxian.h @@ -55,6 +55,8 @@ public: m_screen(*this, "screen"), m_palette(*this, "palette"), m_soundlatch(*this, "soundlatch"), + m_fake_select(*this, "FAKE_SELECT"), + m_tenspot_game_dsw(*this, {"IN2_GAME0", "IN2_GAME1", "IN2_GAME2", "IN2_GAME3", "IN2_GAME4", "IN2_GAME5", "IN2_GAME6", "IN2_GAME7", "IN2_GAME8", "IN2_GAME9"}), m_spriteram(*this, "spriteram"), m_videoram(*this, "videoram"), m_decrypted_opcodes(*this, "decrypted_opcodes") { } @@ -76,6 +78,9 @@ public: required_device m_palette; optional_device m_soundlatch; + optional_ioport m_fake_select; + optional_ioport_array<10> m_tenspot_game_dsw; + required_shared_ptr m_spriteram; required_shared_ptr m_videoram; optional_shared_ptr m_decrypted_opcodes; diff --git a/src/mame/includes/gomoku.h b/src/mame/includes/gomoku.h index 375a08f7f5c..9afc41cc347 100644 --- a/src/mame/includes/gomoku.h +++ b/src/mame/includes/gomoku.h @@ -9,6 +9,7 @@ public: m_videoram(*this, "videoram"), m_colorram(*this, "colorram"), m_bgram(*this, "bgram"), + m_inputs(*this, {"IN0", "IN1", "DSW", "UNUSED0", "UNUSED1", "UNUSED2", "UNUSED3", "UNUSED4"}), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen") { } @@ -20,6 +21,7 @@ public: int m_bg_dispsw; tilemap_t *m_fg_tilemap; bitmap_ind16 m_bg_bitmap; + optional_ioport_array<8> m_inputs; DECLARE_READ8_MEMBER(input_port_r); DECLARE_WRITE8_MEMBER(gomoku_videoram_w); DECLARE_WRITE8_MEMBER(gomoku_colorram_w); diff --git a/src/mame/includes/gottlieb.h b/src/mame/includes/gottlieb.h index 8f539ff234f..9d6fbc364b8 100644 --- a/src/mame/includes/gottlieb.h +++ b/src/mame/includes/gottlieb.h @@ -49,7 +49,9 @@ public: m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), - m_generic_paletteram_8(*this, "paletteram") + m_generic_paletteram_8(*this, "paletteram"), + m_track_x(*this, "TRACKX"), + m_track_y(*this, "TRACKY") { } // devices @@ -68,6 +70,9 @@ public: required_device m_palette; required_shared_ptr m_generic_paletteram_8; + optional_ioport m_track_x; + optional_ioport m_track_y; + UINT8 m_knocker_prev; UINT8 m_joystick_select; UINT8 m_track[2]; diff --git a/src/mame/includes/huebler.h b/src/mame/includes/huebler.h index bb6b4c29344..12c27b9b04d 100644 --- a/src/mame/includes/huebler.h +++ b/src/mame/includes/huebler.h @@ -30,22 +30,7 @@ public: m_kb_rom(*this, "keyboard"), m_char_rom(*this, "chargen"), m_video_ram(*this, "video_ram"), - m_y0(*this, "Y0"), - m_y1(*this, "Y1"), - m_y2(*this, "Y2"), - m_y3(*this, "Y3"), - m_y4(*this, "Y4"), - m_y5(*this, "Y5"), - m_y6(*this, "Y6"), - m_y7(*this, "Y7"), - m_y8(*this, "Y8"), - m_y9(*this, "Y9"), - m_y10(*this, "Y10"), - m_y11(*this, "Y11"), - m_y12(*this, "Y12"), - m_y13(*this, "Y13"), - m_y14(*this, "Y14"), - m_y15(*this, "Y15"), + m_key_row(*this, {"Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9", "Y10", "Y11", "Y12", "Y13", "Y14", "Y15"}), m_special(*this, "SPECIAL"), m_key_d6(0), m_key_d7(0), @@ -58,22 +43,7 @@ public: required_memory_region m_kb_rom; required_memory_region m_char_rom; required_shared_ptr m_video_ram; - required_ioport m_y0; - required_ioport m_y1; - required_ioport m_y2; - required_ioport m_y3; - required_ioport m_y4; - required_ioport m_y5; - required_ioport m_y6; - required_ioport m_y7; - required_ioport m_y8; - required_ioport m_y9; - required_ioport m_y10; - required_ioport m_y11; - required_ioport m_y12; - required_ioport m_y13; - required_ioport m_y14; - required_ioport m_y15; + required_ioport_array<16> m_key_row; required_ioport m_special; virtual void machine_start() override; @@ -86,7 +56,6 @@ public: void scan_keyboard(); // keyboard state - ioport_port* m_key_row[16]; int m_key_d6; int m_key_d7; int m_key_a4; diff --git a/src/mame/includes/jackal.h b/src/mame/includes/jackal.h index 0249cde4bbd..eb220b2c496 100644 --- a/src/mame/includes/jackal.h +++ b/src/mame/includes/jackal.h @@ -13,6 +13,7 @@ public: jackal_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_videoctrl(*this, "videoctrl"), + m_dials(*this, {"DIAL0", "DIAL1"}), m_mastercpu(*this, "master"), m_slavecpu(*this, "slave"), m_gfxdecode(*this, "gfxdecode"), @@ -29,6 +30,7 @@ public: int m_irq_enable; UINT8 *m_rambank; UINT8 *m_spritebank; + optional_ioport_array<2> m_dials; /* devices */ required_device m_mastercpu; diff --git a/src/mame/includes/laserbat.h b/src/mame/includes/laserbat.h index e3b130a109d..73d5246b567 100644 --- a/src/mame/includes/laserbat.h +++ b/src/mame/includes/laserbat.h @@ -23,11 +23,9 @@ public: laserbat_state_base(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) - , m_row0(*this, "ROW0") + , m_mux_ports(*this, {"ROW0", "ROW1", "SW1", "SW2"}) , m_row1(*this, "ROW1") , m_row2(*this, "ROW2") - , m_sw1(*this, "SW1") - , m_sw2(*this, "SW2") , m_maincpu(*this, "maincpu") , m_screen(*this, "screen") , m_palette(*this, "palette") @@ -93,11 +91,9 @@ protected: TIMER_CALLBACK_MEMBER(video_line); // input lines - required_ioport m_row0; + required_ioport_array<4> m_mux_ports; required_ioport m_row1; required_ioport m_row2; - required_ioport m_sw1; - required_ioport m_sw2; // main CPU device required_device m_maincpu; diff --git a/src/mame/includes/mac.h b/src/mame/includes/mac.h index f68432b1088..dbbc3becfa2 100644 --- a/src/mame/includes/mac.h +++ b/src/mame/includes/mac.h @@ -208,13 +208,7 @@ public: m_mouse0(*this, "MOUSE0"), m_mouse1(*this, "MOUSE1"), m_mouse2(*this, "MOUSE2"), - m_key0(*this, "KEY0"), - m_key1(*this, "KEY1"), - m_key2(*this, "KEY2"), - m_key3(*this, "KEY3"), - m_key4(*this, "KEY4"), - m_key5(*this, "KEY5"), - m_key6(*this, "KEY6"), + m_keys(*this, {"KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5", "KEY6"}), m_montype(*this, "MONTYPE"), m_vram(*this,"vram"), m_vram16(*this,"vram16"), @@ -239,8 +233,8 @@ public: optional_device m_rtc; required_ioport m_mouse0, m_mouse1, m_mouse2; - required_ioport m_key0, m_key1, m_key2, m_key3, m_key4, m_key5; - optional_ioport m_key6, m_montype; + optional_ioport_array<7> m_keys; + optional_ioport m_montype; virtual void machine_start() override; virtual void machine_reset() override; diff --git a/src/mame/includes/maygay1b.h b/src/mame/includes/maygay1b.h index 873de3abe43..2f789443830 100644 --- a/src/mame/includes/maygay1b.h +++ b/src/mame/includes/maygay1b.h @@ -40,12 +40,7 @@ public: m_duart68681(*this, "duart68681"), m_sw1_port(*this, "SW1"), m_sw2_port(*this, "SW2"), - m_s2_port(*this, "STROBE2"), - m_s3_port(*this, "STROBE3"), - m_s4_port(*this, "STROBE4"), - m_s5_port(*this, "STROBE5"), - m_s6_port(*this, "STROBE6"), - m_s7_port(*this, "STROBE7"), + m_kbd_ports(*this, {"SW1", "STROBE2", "STROBE3", "STROBE4", "STROBE5", "STROBE6", "STROBE7", "SW2"}), m_bank1(*this, "bank1"), m_reel0(*this, "reel0"), m_reel1(*this, "reel1"), @@ -66,12 +61,7 @@ public: required_device m_duart68681; required_ioport m_sw1_port; required_ioport m_sw2_port; - required_ioport m_s2_port; - required_ioport m_s3_port; - required_ioport m_s4_port; - required_ioport m_s5_port; - required_ioport m_s6_port; - required_ioport m_s7_port; + required_ioport_array<8> m_kbd_ports; required_memory_bank m_bank1; required_device m_reel0; required_device m_reel1; diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h index 1e52cfc056c..7e2d0c5ce32 100644 --- a/src/mame/includes/megasys1.h +++ b/src/mame/includes/megasys1.h @@ -104,14 +104,12 @@ public: DECLARE_WRITE16_MEMBER(protection_peekaboo_w); DECLARE_READ16_MEMBER(megasys1A_mcu_hs_r); DECLARE_WRITE16_MEMBER(megasys1A_mcu_hs_w); - DECLARE_READ16_MEMBER(edfbl_input_r); DECLARE_READ16_MEMBER(iganinju_mcu_hs_r); DECLARE_WRITE16_MEMBER(iganinju_mcu_hs_w); DECLARE_READ16_MEMBER(soldamj_spriteram16_r); DECLARE_WRITE16_MEMBER(soldamj_spriteram16_w); DECLARE_READ16_MEMBER(stdragon_mcu_hs_r); DECLARE_WRITE16_MEMBER(stdragon_mcu_hs_w); - DECLARE_READ16_MEMBER(monkelf_input_r); DECLARE_WRITE16_MEMBER(megasys1_scrollram_0_w); DECLARE_WRITE16_MEMBER(megasys1_scrollram_1_w); DECLARE_WRITE16_MEMBER(megasys1_scrollram_2_w); diff --git a/src/mame/includes/midvunit.h b/src/mame/includes/midvunit.h index f9502791f91..607f229b9ba 100644 --- a/src/mame/includes/midvunit.h +++ b/src/mame/includes/midvunit.h @@ -57,6 +57,7 @@ public: m_midvplus_misc(*this, "midvplus_misc"), m_videoram(*this, "videoram", 32), m_textureram(*this, "textureram") , + m_adc_ports(*this, {"WHEEL", "ACCEL", "BRAKE"}), m_maincpu(*this, "maincpu"), m_watchdog(*this, "watchdog"), m_screen(*this, "screen"), @@ -75,6 +76,8 @@ public: required_shared_ptr m_videoram; required_shared_ptr m_textureram; + optional_ioport_array<3> m_adc_ports; + UINT8 m_cmos_protected; UINT16 m_control_data; UINT8 m_adc_data; diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h index 9319e6e2b35..bc89dbeab28 100644 --- a/src/mame/includes/model2.h +++ b/src/mame/includes/model2.h @@ -42,8 +42,11 @@ public: m_palette(*this, "palette"), m_scsp(*this, "scsp"), m_cryptdevice(*this, "315_5881"), - m_0229crypt(*this, "317_0229") - + m_0229crypt(*this, "317_0229"), + m_in0(*this, "IN0"), + m_gears(*this, "GEARS"), + m_analog_ports(*this, {"ANA0", "ANA1", "ANA2", "ANA3"}), + m_lightgun_ports(*this, {"P1_Y", "P1_X", "P2_Y", "P2_X"}) { } required_shared_ptr m_workram; @@ -73,6 +76,11 @@ public: optional_device m_cryptdevice; optional_device m_0229crypt; + required_ioport m_in0; + optional_ioport m_gears; + optional_ioport_array<4> m_analog_ports; + optional_ioport_array<4> m_lightgun_ports; + UINT32 m_intreq; UINT32 m_intena; UINT32 m_coproctl; diff --git a/src/mame/includes/model3.h b/src/mame/includes/model3.h index 24956b46159..f61cee2c1f9 100644 --- a/src/mame/includes/model3.h +++ b/src/mame/includes/model3.h @@ -59,6 +59,7 @@ public: m_scsp1(*this, "scsp1"), m_eeprom(*this, "eeprom"), m_screen(*this, "screen"), + m_adc_ports(*this, {"AN0", "AN1", "AN2", "AN3", "AN4", "AN5", "AN6", "AN7"}), m_work_ram(*this, "work_ram"), m_paletteram64(*this, "paletteram64"), m_dsbz80(*this, DSBZ80_TAG), @@ -78,6 +79,8 @@ public: required_device m_eeprom; required_device m_screen; + optional_ioport_array<8> m_adc_ports; + required_shared_ptr m_work_ram; required_shared_ptr m_paletteram64; optional_device m_dsbz80; // Z80-based MPEG Digital Sound Board diff --git a/src/mame/includes/mpu4.h b/src/mame/includes/mpu4.h index 834d2486fe7..c31c00beaab 100644 --- a/src/mame/includes/mpu4.h +++ b/src/mame/includes/mpu4.h @@ -105,12 +105,7 @@ public: m_pia6(*this, "pia_ic6"), m_pia7(*this, "pia_ic7"), m_pia8(*this, "pia_ic8"), - m_orange1_port(*this, "ORANGE1"), - m_orange2_port(*this, "ORANGE2"), - m_black1_port(*this, "BLACK1"), - m_black2_port(*this, "BLACK2"), - m_dil1_port(*this, "DIL1"), - m_dil2_port(*this, "DIL2"), + m_port_mux(*this, {"ORANGE1", "ORANGE2", "BLACK1", "BLACK2", "ORANGE1", "ORANGE2", "DIL1", "DIL2"}), m_aux1_port(*this, "AUX1"), m_aux2_port(*this, "AUX2"), m_bank1(*this, "bank1"), @@ -250,12 +245,7 @@ protected: optional_device m_pia6; optional_device m_pia7; optional_device m_pia8; - required_ioport m_orange1_port; - required_ioport m_orange2_port; - required_ioport m_black1_port; - required_ioport m_black2_port; - required_ioport m_dil1_port; - required_ioport m_dil2_port; + required_ioport_array<8> m_port_mux; required_ioport m_aux1_port; required_ioport m_aux2_port; optional_memory_bank m_bank1; diff --git a/src/mame/includes/msx.h b/src/mame/includes/msx.h index 777cb4f599b..0c55ee18768 100644 --- a/src/mame/includes/msx.h +++ b/src/mame/includes/msx.h @@ -131,12 +131,7 @@ public: , m_io_dsw(*this, "DSW") , m_io_mouse0(*this, "MOUSE0") , m_io_mouse1(*this, "MOUSE1") - , m_io_key0(*this, "KEY0") - , m_io_key1(*this, "KEY1") - , m_io_key2(*this, "KEY2") - , m_io_key3(*this, "KEY3") - , m_io_key4(*this, "KEY4") - , m_io_key5(*this, "KEY5") + , m_io_key(*this, {"KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5"}) , m_psg_b(0) , m_rtc_latch(0) , m_kanji_latch(0) @@ -228,12 +223,7 @@ private: required_ioport m_io_dsw; required_ioport m_io_mouse0; required_ioport m_io_mouse1; - required_ioport m_io_key0; - required_ioport m_io_key1; - required_ioport m_io_key2; - required_ioport m_io_key3; - required_ioport m_io_key4; - required_ioport m_io_key5; + required_ioport_array<6> m_io_key; /* PSG */ int m_psg_b; diff --git a/src/mame/includes/namcofl.h b/src/mame/includes/namcofl.h index eeb702ae58e..e0a49e4712a 100644 --- a/src/mame/includes/namcofl.h +++ b/src/mame/includes/namcofl.h @@ -26,11 +26,25 @@ public: m_maincpu(*this,"maincpu"), m_mcu(*this,"mcu"), m_c116(*this,"c116"), + m_in0(*this, "IN0"), + m_in1(*this, "IN1"), + m_in2(*this, "IN2"), + m_misc(*this, "MISC"), + m_accel(*this, "ACCEL"), + m_brake(*this, "BRAKE"), + m_wheel(*this, "WHEEL"), m_shareram(*this, "shareram") { } required_device m_maincpu; required_device m_mcu; required_device m_c116; + required_ioport m_in0; + required_ioport m_in1; + required_ioport m_in2; + required_ioport m_misc; + optional_ioport m_accel; + optional_ioport m_brake; + optional_ioport m_wheel; emu_timer *m_raster_interrupt_timer; std::unique_ptr m_workram; required_shared_ptr m_shareram; diff --git a/src/mame/includes/namconb1.h b/src/mame/includes/namconb1.h index 9aeb6ddc251..1d3296608b9 100644 --- a/src/mame/includes/namconb1.h +++ b/src/mame/includes/namconb1.h @@ -34,6 +34,15 @@ public: m_mcu(*this, "mcu"), m_c116(*this, "c116"), m_eeprom(*this, "eeprom"), + m_p1(*this, "P1"), + m_p2(*this, "P2"), + m_p3(*this, "P3"), + m_p4(*this, "P4"), + m_misc(*this, "MISC"), + m_light0_x(*this, "LIGHT0_X"), + m_light0_y(*this, "LIGHT0_Y"), + m_light1_x(*this, "LIGHT1_X"), + m_light1_y(*this, "LIGHT1_Y"), m_spritebank32(*this, "spritebank32"), m_tilebank32(*this, "tilebank32"), m_namconb_shareram(*this, "namconb_share") { } @@ -42,6 +51,15 @@ public: required_device m_mcu; required_device m_c116; required_device m_eeprom; + required_ioport m_p1; + required_ioport m_p2; + optional_ioport m_p3; + optional_ioport m_p4; + required_ioport m_misc; + optional_ioport m_light0_x; + optional_ioport m_light0_y; + optional_ioport m_light1_x; + optional_ioport m_light1_y; required_shared_ptr m_spritebank32; optional_shared_ptr m_tilebank32; required_shared_ptr m_namconb_shareram; diff --git a/src/mame/includes/namcos22.h b/src/mame/includes/namcos22.h index 28a01852fbf..8247f51dd4c 100644 --- a/src/mame/includes/namcos22.h +++ b/src/mame/includes/namcos22.h @@ -199,7 +199,11 @@ public: m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), - m_adc_ports(*this, "ADC") + m_adc_ports(*this, "ADC"), + m_p1(*this, "P1"), + m_p2(*this, "P2"), + m_mcup5a(*this, "MCUP5A"), + m_mcup5b(*this, "MCUP5B") { } required_device m_maincpu; @@ -229,7 +233,10 @@ public: required_device m_screen; required_device m_palette; optional_ioport_array<8> m_adc_ports; - + optional_ioport m_p1; + optional_ioport m_p2; + optional_ioport m_mcup5a; + optional_ioport m_mcup5b; UINT8 m_syscontrol[0x20]; bool m_dsp_irq_enabled; diff --git a/src/mame/includes/segahang.h b/src/mame/includes/segahang.h index c0813a111fe..ee17b9e6f27 100644 --- a/src/mame/includes/segahang.h +++ b/src/mame/includes/segahang.h @@ -38,6 +38,7 @@ public: m_workram(*this, "workram"), m_sharrier_video(false), m_adc_select(0), + m_adc_ports(*this, {"ADC0", "ADC1", "ADC2", "ADC3"}), m_decrypted_opcodes(*this, "decrypted_opcodes") { } @@ -109,6 +110,7 @@ protected: // internal state UINT8 m_adc_select; + optional_ioport_array<4> m_adc_ports; bool m_shadow; optional_shared_ptr m_decrypted_opcodes; }; diff --git a/src/mame/includes/segas16a.h b/src/mame/includes/segas16a.h index ee1b003a686..fb9c0a7e762 100644 --- a/src/mame/includes/segas16a.h +++ b/src/mame/includes/segas16a.h @@ -50,7 +50,8 @@ public: m_last_buttons1(0), m_last_buttons2(0), m_read_port(0), - m_mj_input_num(0) + m_mj_input_num(0), + m_mj_inputs(*this, {"MJ0", "MJ1", "MJ2", "MJ3", "MJ4", "MJ5"}) { } // PPI read/write callbacks @@ -160,4 +161,5 @@ protected: UINT8 m_last_buttons2; UINT8 m_read_port; UINT8 m_mj_input_num; + optional_ioport_array<6> m_mj_inputs; }; diff --git a/src/mame/includes/segas16b.h b/src/mame/includes/segas16b.h index f8f5bec0729..a16efee0cac 100644 --- a/src/mame/includes/segas16b.h +++ b/src/mame/includes/segas16b.h @@ -49,8 +49,12 @@ public: m_atomicp_sound_divisor(0), m_atomicp_sound_count(0), m_hwc_input_value(0), + m_hwc_monitor(*this, "MONITOR"), + m_hwc_left(*this, "LEFT"), + m_hwc_right(*this, "RIGHT"), m_mj_input_num(0), m_mj_last_val(0), + m_mj_inputs(*this, {"MJ0", "MJ1", "MJ2", "MJ3", "MJ4", "MJ5"}), m_spritepalbase(0x400), m_gfxdecode(*this, "gfxdecode"), m_sound_decrypted_opcodes(*this, "sound_decrypted_opcodes"), @@ -216,8 +220,12 @@ protected: // game-specific state UINT8 m_atomicp_sound_count; UINT8 m_hwc_input_value; + optional_ioport m_hwc_monitor; + optional_ioport m_hwc_left; + optional_ioport m_hwc_right; UINT8 m_mj_input_num; UINT8 m_mj_last_val; + optional_ioport_array<6> m_mj_inputs; int m_spritepalbase; required_device m_gfxdecode; diff --git a/src/mame/includes/segas24.h b/src/mame/includes/segas24.h index 198e47886fd..2b2d2361bef 100644 --- a/src/mame/includes/segas24.h +++ b/src/mame/includes/segas24.h @@ -21,6 +21,16 @@ public: , m_generic_paletteram_16(*this, "paletteram") , m_romboard(*this, "romboard") , m_gground_hack_timer(nullptr) + , m_p1(*this, "P1") + , m_p2(*this, "P2") + , m_p3(*this, "P3") + , m_service(*this, "SERVICE") + , m_coinage(*this, "COINAGE") + , m_dsw(*this, "DSW") + , m_paddle(*this, "PADDLE") + , m_dials(*this, {"DIAL1", "DIAL2", "DIAL3", "DIAL4"}) + , m_pedals(*this, {"PEDAL1", "PEDAL2", "PEDAL3", "PEDAL4"}) + , m_mj_inputs(*this, {"MJ0", "MJ1", "MJ2", "MJ3", "MJ4", "MJ5", "P1", "P2"}) { } @@ -147,4 +157,14 @@ public: // game specific TIMER_CALLBACK_MEMBER(gground_hack_timer_callback); emu_timer *m_gground_hack_timer; + required_ioport m_p1; + required_ioport m_p2; + optional_ioport m_p3; + required_ioport m_service; + required_ioport m_coinage; + required_ioport m_dsw; + optional_ioport m_paddle; + optional_ioport_array<4> m_dials; + optional_ioport_array<4> m_pedals; + optional_ioport_array<8> m_mj_inputs; }; diff --git a/src/mame/includes/segas32.h b/src/mame/includes/segas32.h index 32392914aad..0bd010089c8 100644 --- a/src/mame/includes/segas32.h +++ b/src/mame/includes/segas32.h @@ -25,6 +25,12 @@ public: required_shared_ptr m_system32_spriteram; optional_shared_ptr_array m_system32_paletteram; + optional_ioport_array<8> m_ports_a; + optional_ioport_array<8> m_ports_b; + optional_ioport_array<8> m_analog_ports; + optional_ioport_array<4> m_extra_ports; + optional_ioport_array<6> m_track_ports; + required_device m_maincpu; required_device m_soundcpu; optional_device m_multipcm; diff --git a/src/mame/includes/segaxbd.h b/src/mame/includes/segaxbd.h index 768d86595fc..cf05812e036 100644 --- a/src/mame/includes/segaxbd.h +++ b/src/mame/includes/segaxbd.h @@ -138,6 +138,8 @@ protected: UINT8 m_palette_hilight[32]; // RGB translations for hilighted pixels required_device m_screen; required_device m_palette; + optional_ioport_array<8> m_adc_ports; + optional_ioport_array<4> m_mux_ports; protected: virtual void device_start() override; diff --git a/src/mame/includes/seicross.h b/src/mame/includes/seicross.h index 77b8e5a6708..999afd71092 100644 --- a/src/mame/includes/seicross.h +++ b/src/mame/includes/seicross.h @@ -12,6 +12,7 @@ public: m_nvram(*this, "nvram"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), + m_debug_port(*this, "DEBUG"), m_spriteram(*this, "spriteram"), m_videoram(*this, "videoram"), m_row_scroll(*this, "row_scroll"), @@ -25,6 +26,8 @@ public: required_device m_gfxdecode; required_device m_palette; + optional_ioport m_debug_port; + required_shared_ptr m_spriteram; required_shared_ptr m_videoram; required_shared_ptr m_row_scroll; diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h index b9a347e51d8..53f8b8142de 100644 --- a/src/mame/includes/seta.h +++ b/src/mame/includes/seta.h @@ -41,6 +41,19 @@ public: m_x1(*this, "x1snd"), m_soundlatch(*this, "soundlatch"), m_soundlatch2(*this, "soundlatch2"), + m_dsw(*this, "DSW"), + m_rot(*this, {"ROT1", "ROT2"}), + m_p1(*this, "P1"), + m_p2(*this, "P2"), + m_coins(*this, "COINS"), + m_extra_port(*this, "EXTRA"), + m_track1_x(*this, "TRACK1_X"), + m_track1_y(*this, "TRACK1_Y"), + m_track2_x(*this, "TRACK2_X"), + m_track2_y(*this, "TRACK2_Y"), + m_dsw1(*this, "DSW1"), + m_dsw2_3(*this, "DSW2_3"), + m_bet(*this, {"BET0", "BET1", "BET2", "BET3", "BET4"}), m_sharedram(*this,"sharedram"), m_workram(*this,"workram"), m_vregs(*this,"vregs"), @@ -64,6 +77,20 @@ public: optional_device m_soundlatch; optional_device m_soundlatch2; + optional_ioport m_dsw; + optional_ioport_array<2> m_rot; + optional_ioport m_p1; + optional_ioport m_p2; + optional_ioport m_coins; + optional_ioport m_extra_port; + optional_ioport m_track1_x; + optional_ioport m_track1_y; + optional_ioport m_track2_x; + optional_ioport m_track2_y; + optional_ioport m_dsw1; + optional_ioport m_dsw2_3; + optional_ioport_array<5> m_bet; + optional_shared_ptr m_sharedram; optional_shared_ptr m_workram; optional_shared_ptr m_vregs; diff --git a/src/mame/includes/ssv.h b/src/mame/includes/ssv.h index 611ff3b66ee..f9ad2d40728 100644 --- a/src/mame/includes/ssv.h +++ b/src/mame/includes/ssv.h @@ -22,10 +22,7 @@ public: m_gdfs_tmapscroll(*this, "gdfs_tmapscroll"), m_gdfs_st0020(*this, "st0020_spr"), m_input_sel(*this, "input_sel"), - m_io_gunx1(*this, "GUNX1"), - m_io_guny1(*this, "GUNY1"), - m_io_gunx2(*this, "GUNX2"), - m_io_guny2(*this, "GUNY2"), + m_io_gun(*this, {"GUNX1", "GUNY1", "GUNX2", "GUNY2"}), m_io_key0(*this, "KEY0"), m_io_key1(*this, "KEY1"), m_io_key2(*this, "KEY2"), @@ -153,10 +150,7 @@ public: void init_st010(); protected: - optional_ioport m_io_gunx1; - optional_ioport m_io_guny1; - optional_ioport m_io_gunx2; - optional_ioport m_io_guny2; + optional_ioport_array<4> m_io_gun; optional_ioport m_io_key0; optional_ioport m_io_key1; optional_ioport m_io_key2; diff --git a/src/mame/includes/starfire.h b/src/mame/includes/starfire.h index 66ed55ce031..a270cc8a29e 100644 --- a/src/mame/includes/starfire.h +++ b/src/mame/includes/starfire.h @@ -29,12 +29,14 @@ public: m_starfire_colorram(*this, "colorram"), m_starfire_videoram(*this, "videoram"), m_samples(*this, "samples"), + m_nmi(*this, "NMI"), m_maincpu(*this, "maincpu"), m_screen(*this, "screen") { } required_shared_ptr m_starfire_colorram; required_shared_ptr m_starfire_videoram; optional_device m_samples; + optional_ioport m_nmi; UINT8 m_prev_sound; UINT8 m_fireone_select; diff --git a/src/mame/includes/taito_z.h b/src/mame/includes/taito_z.h index bfe949dd209..a10f8f12c0f 100644 --- a/src/mame/includes/taito_z.h +++ b/src/mame/includes/taito_z.h @@ -40,7 +40,7 @@ public: m_tc0510nio(*this, "tc0510nio"), m_tc0140syt(*this, "tc0140syt"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_steer(*this, "STEER") { } /* memory pointers */ required_shared_ptr m_spriteram; @@ -68,7 +68,7 @@ public: optional_device m_tc0510nio; optional_device m_tc0140syt; // bshark & spacegun miss the CPUs which shall use TC0140 required_device m_gfxdecode; - required_device m_palette; + optional_ioport m_steer; DECLARE_WRITE16_MEMBER(cpua_ctrl_w); DECLARE_WRITE16_MEMBER(bshark_cpua_ctrl_w); diff --git a/src/mame/includes/tmc1800.h b/src/mame/includes/tmc1800.h index 6e7c80c1c03..f34b0e8fe1a 100644 --- a/src/mame/includes/tmc1800.h +++ b/src/mame/includes/tmc1800.h @@ -111,26 +111,12 @@ public: : tmc1800_base_state(mconfig, type, tag), m_cti(*this, CDP1864_TAG), m_colorram(*this, "color_ram"), - m_y0(*this, "Y0"), - m_y1(*this, "Y1"), - m_y2(*this, "Y2"), - m_y3(*this, "Y3"), - m_y4(*this, "Y4"), - m_y5(*this, "Y5"), - m_y6(*this, "Y6"), - m_y7(*this, "Y7") + m_key_row(*this, {"Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7"}) { } required_device m_cti; optional_shared_ptr m_colorram; - required_ioport m_y0; - required_ioport m_y1; - required_ioport m_y2; - required_ioport m_y3; - required_ioport m_y4; - required_ioport m_y5; - required_ioport m_y6; - required_ioport m_y7; + required_ioport_array<8> m_key_row; virtual void machine_start() override; virtual void machine_reset() override; @@ -157,7 +143,6 @@ public: UINT8 m_color; /* keyboard state */ - ioport_port* m_key_row[8]; int m_keylatch; }; diff --git a/src/mame/includes/tmc2000e.h b/src/mame/includes/tmc2000e.h index 29974e3a233..25d74ea3d22 100644 --- a/src/mame/includes/tmc2000e.h +++ b/src/mame/includes/tmc2000e.h @@ -28,14 +28,7 @@ public: m_cti(*this, CDP1864_TAG), m_cassette(*this, "cassette"), m_colorram(*this, "colorram"), - m_y0(*this, "Y0"), - m_y1(*this, "Y1"), - m_y2(*this, "Y2"), - m_y3(*this, "Y3"), - m_y4(*this, "Y4"), - m_y5(*this, "Y5"), - m_y6(*this, "Y6"), - m_y7(*this, "Y7"), + m_key_row(*this, {"Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7"}), m_run(*this, "RUN") { } @@ -43,14 +36,7 @@ public: required_device m_cti; required_device m_cassette; required_shared_ptr m_colorram; - required_ioport m_y0; - required_ioport m_y1; - required_ioport m_y2; - required_ioport m_y3; - required_ioport m_y4; - required_ioport m_y5; - required_ioport m_y6; - required_ioport m_y7; + required_ioport_array<8> m_key_row; required_ioport m_run; virtual void machine_start() override; @@ -79,7 +65,6 @@ public: UINT8 m_color; /* keyboard state */ - ioport_port* m_key_row[8]; int m_keylatch; /* key latch */ int m_reset; /* reset activated */ }; diff --git a/src/mame/includes/tmc600.h b/src/mame/includes/tmc600.h index 9fa19ca227a..0a6056529c8 100644 --- a/src/mame/includes/tmc600.h +++ b/src/mame/includes/tmc600.h @@ -36,14 +36,7 @@ public: m_page_ram(*this, "page_ram"), m_color_ram(*this, "color_ram"), m_run(*this, "RUN"), - m_y0(*this, "Y0"), - m_y1(*this, "Y1"), - m_y2(*this, "Y2"), - m_y3(*this, "Y3"), - m_y4(*this, "Y4"), - m_y5(*this, "Y5"), - m_y6(*this, "Y6"), - m_y7(*this, "Y7") + m_key_row(*this, {"Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7"}) { } required_device m_maincpu; @@ -55,14 +48,7 @@ public: required_shared_ptr m_page_ram; optional_shared_ptr m_color_ram; required_ioport m_run; - required_ioport m_y0; - required_ioport m_y1; - required_ioport m_y2; - required_ioport m_y3; - required_ioport m_y4; - required_ioport m_y5; - required_ioport m_y6; - required_ioport m_y7; + required_ioport_array<8> m_key_row; virtual void machine_start() override; @@ -86,7 +72,6 @@ public: int m_blink; // cursor blink // keyboard state - ioport_port* m_key_row[8]; int m_keylatch; // key latch TIMER_DEVICE_CALLBACK_MEMBER(blink_tick); diff --git a/src/mame/includes/topspeed.h b/src/mame/includes/topspeed.h index 139543e69b6..9e8ed3f394d 100644 --- a/src/mame/includes/topspeed.h +++ b/src/mame/includes/topspeed.h @@ -33,7 +33,7 @@ public: m_filter2(*this, "filter2"), m_filter3(*this, "filter3"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_steer(*this, "STEER") { } required_shared_ptr m_spritemap; required_shared_ptr m_raster_ctrl; @@ -53,7 +53,7 @@ public: required_device m_filter2; required_device m_filter3; required_device m_gfxdecode; - required_device m_palette; + required_ioport m_steer; // Misc UINT16 m_cpua_ctrl; diff --git a/src/mame/includes/vectrex.h b/src/mame/includes/vectrex.h index a79b893a996..351e76c3f87 100644 --- a/src/mame/includes/vectrex.h +++ b/src/mame/includes/vectrex.h @@ -49,10 +49,7 @@ public: m_ay8912(*this, "ay8912"), m_vector(*this, "vector"), m_cart(*this, "cartslot"), - m_io_contr1x(*this, "CONTR1X"), - m_io_contr1y(*this, "CONTR1Y"), - m_io_contr2x(*this, "CONTR2X"), - m_io_contr2y(*this, "CONTR2Y"), + m_io_contr(*this, {"CONTR1X", "CONTR1Y", "CONTR2X", "CONTR2Y"}), m_io_buttons(*this, "BUTTONS"), m_io_3dconf(*this, "3DCONF"), m_io_lpenconf(*this, "LPENCONF"), @@ -133,10 +130,7 @@ protected: required_device m_ay8912; required_device m_vector; optional_device m_cart; - optional_ioport m_io_contr1x; - optional_ioport m_io_contr1y; - optional_ioport m_io_contr2x; - optional_ioport m_io_contr2y; + optional_ioport_array<4> m_io_contr; required_ioport m_io_buttons; required_ioport m_io_3dconf; required_ioport m_io_lpenconf; diff --git a/src/mame/machine/amiga.cpp b/src/mame/machine/amiga.cpp index b060f26aa24..3fab6018d37 100644 --- a/src/mame/machine/amiga.cpp +++ b/src/mame/machine/amiga.cpp @@ -262,7 +262,7 @@ TIMER_CALLBACK_MEMBER( amiga_state::scanline_callback ) m_cia_0->tod_w(0); } - if (m_potgo_port) + if (m_potgo_port.found()) { // pot counters (start counting at 7 (ntsc) or 8 (pal)) if (BIT(CUSTOM_REG(REG_POTGO), 0) && (scanline /2 ) > 7) @@ -380,33 +380,23 @@ TIMER_CALLBACK_MEMBER( amiga_state::amiga_irq_proc ) UINT16 amiga_state::joy0dat_r() { - if (m_input_device == nullptr) - return m_joy0dat_port ? m_joy0dat_port->read() : 0xffff; - - if (m_input_device->read() & 0x10) - return m_joy0dat_port ? m_joy0dat_port->read() : 0xffff; + if (!m_input_device.found() || (m_input_device->read() & 0x10)) + return m_joy0dat_port.read_safe(0xffff); else - return ((m_p1_mouse_y ? m_p1_mouse_y->read() : 0xff) << 8) | (m_p1_mouse_x? m_p1_mouse_x->read() : 0xff); + return (m_p1_mouse_y.read_safe(0xff) << 8) | m_p1_mouse_x.read_safe(0xff); } UINT16 amiga_state::joy1dat_r() { - if (m_input_device == nullptr) - return m_joy1dat_port ? m_joy1dat_port->read() : 0xffff; - - if (m_input_device->read() & 0x20) - return m_joy1dat_port ? m_joy1dat_port->read() : 0xffff; + if (!m_input_device.found() || m_input_device->read() & 0x20) + return m_joy1dat_port.read_safe(0xffff); else - return ((m_p2_mouse_y ? m_p2_mouse_y->read() : 0xff) << 8) | (m_p2_mouse_x ? m_p2_mouse_x->read() : 0xff); + return (m_p2_mouse_y.read_safe(0xff) << 8) | m_p2_mouse_x.read_safe(0xff); } CUSTOM_INPUT_MEMBER( amiga_state::amiga_joystick_convert ) { - ioport_port *ports[2] = { m_p1joy_port, m_p2joy_port }; - UINT8 bits = 0xff; - - if (ports[(int)(FPTR)param]) - bits = ports[(int)(FPTR)param]->read(); + UINT8 bits = m_joy_ports[(int)(FPTR)param].read_safe(0xff); int up = (bits >> 0) & 1; int down = (bits >> 1) & 1; @@ -1186,21 +1176,18 @@ READ16_MEMBER( amiga_state::custom_chip_r ) return CUSTOM_REG(REG_SERDATR); case REG_JOY0DAT: - if (m_joy0dat_port) + if (m_joy0dat_port.found()) return joy0dat_r(); case REG_JOY1DAT: - if (m_joy1dat_port) + if (m_joy1dat_port.found()) return joy1dat_r(); case REG_POTGOR: - if (m_potgo_port) - return m_potgo_port->read(); - else - return 0x5500; + return m_potgo_port.read_safe(0x5500); case REG_POT0DAT: - if (m_pot0dat_port) + if (m_pot0dat_port.found()) { return m_pot0dat_port->read(); } @@ -1215,7 +1202,7 @@ READ16_MEMBER( amiga_state::custom_chip_r ) } case REG_POT1DAT: - if (m_pot1dat_port) + if (m_pot1dat_port.found()) { return m_pot1dat_port->read(); } diff --git a/src/mame/machine/amstrad.cpp b/src/mame/machine/amstrad.cpp index 72aa763864c..07c5d060fe9 100644 --- a/src/mame/machine/amstrad.cpp +++ b/src/mame/machine/amstrad.cpp @@ -1860,7 +1860,7 @@ READ8_MEMBER(amstrad_state::amstrad_cpc_io_r) // m6845_personality_t crtc_type; int page; -// crtc_type = read_safe(ioport("crtc"), 0); +// crtc_type = m_crtc.read_safe(0); // m6845_set_personality(crtc_type); if(m_aleste_mode & 0x04) @@ -2721,21 +2721,21 @@ READ8_MEMBER(amstrad_state::amstrad_psg_porta_read) if(m_aleste_mode == 0x08 && ( m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F ) == 10) return 0xff; - if (m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]) + if (m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F].found()) { if(m_system_type != SYSTEM_GX4000) { - if(m_io_ctrltype && (m_io_ctrltype->read() == 1) && (m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F) == 9) + if (m_io_ctrltype.read_safe(0) == 1 && (m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F) == 9) { return m_amx_mouse_data; } - if(m_io_ctrltype && (m_io_ctrltype->read() == 2) && (m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F) == 9) + if (m_io_ctrltype.read_safe(0) == 2 && (m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F) == 9) { - return (m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F] ? m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]->read() & 0x80 : 0) | 0x7f; + return (m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F].read_safe(0) & 0x80) | 0x7f; } } - return m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F] ? m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F]->read() : 0; + return m_io_kbrow[m_ppi_port_outputs[amstrad_ppi_PortC] & 0x0F].read_safe(0); } return 0xFF; } @@ -2770,14 +2770,14 @@ IRQ_CALLBACK_MEMBER(amstrad_state::amstrad_cpu_acknowledge_int) if(m_system_type != SYSTEM_GX4000) { // update AMX mouse inputs (normally done every 1/300th of a second) - if(m_io_ctrltype && m_io_ctrltype->read() == 1) + if (m_io_ctrltype.read_safe(0) == 1) { static UINT8 prev_x,prev_y; UINT8 data_x, data_y; m_amx_mouse_data = 0x0f; - data_x = m_io_mouse1 ? m_io_mouse1->read() : 0; - data_y = m_io_mouse2 ? m_io_mouse2->read() : 0; + data_x = m_io_mouse1.read_safe(0); + data_y = m_io_mouse2.read_safe(0); if(data_x > prev_x) m_amx_mouse_data &= ~0x08; @@ -2787,11 +2787,11 @@ IRQ_CALLBACK_MEMBER(amstrad_state::amstrad_cpu_acknowledge_int) m_amx_mouse_data &= ~0x02; if(data_y < prev_y) m_amx_mouse_data &= ~0x01; - m_amx_mouse_data |= ((m_io_mouse3 ? m_io_mouse3->read() : 0) << 4); + m_amx_mouse_data |= (m_io_mouse3.read_safe(0) << 4); prev_x = data_x; prev_y = data_y; - m_amx_mouse_data |= ((m_io_kbrow[9] ? m_io_kbrow[9]->read() : 0) & 0x80); // DEL key + m_amx_mouse_data |= (m_io_kbrow[9].read_safe(0) & 0x80); // DEL key } } return 0xFF; diff --git a/src/mame/machine/apple2.cpp b/src/mame/machine/apple2.cpp index dd227dc5f93..b6c1b9ed651 100644 --- a/src/mame/machine/apple2.cpp +++ b/src/mame/machine/apple2.cpp @@ -1308,8 +1308,8 @@ void apple2_state::machine_reset() int apple2_state::a2_no_ctrl_reset() { - return (((m_kbrepeat != nullptr) && (m_resetdip == nullptr)) || - ((m_resetdip != nullptr) && !m_resetdip->read())); + return ((m_kbrepeat.found() && !m_resetdip.found()) || + (m_resetdip.found() && !m_resetdip->read())); } /* ----------------------------------------------------------------------- @@ -2438,8 +2438,8 @@ MACHINE_START_MEMBER(apple2_state,tk2000) int apple2_state::apple2_pressed_specialkey(UINT8 key) { - return ((m_kbspecial ? m_kbspecial->read() : 0) & key) - || ((m_joybuttons ? m_joybuttons->read() : 0) & key); + return (m_kbspecial.read_safe(0) & key) + || (m_joybuttons.read_safe(0) & key); } void apple2_state::apple2_refresh_delegates() diff --git a/src/mame/machine/atari400.cpp b/src/mame/machine/atari400.cpp index 907e65b22f5..a2bf49f3b0d 100644 --- a/src/mame/machine/atari400.cpp +++ b/src/mame/machine/atari400.cpp @@ -98,15 +98,15 @@ POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a800_keyboard) { case pokey_device::POK_KEY_BREAK: /* special case ... */ - ret |= ((m_keyboard[0] && m_keyboard[0]->read() & 0x08) ? 0x02 : 0x00); + ret |= ((m_keyboard[0].read_safe(0x00) & 0x08) ? 0x02 : 0x00); break; case pokey_device::POK_KEY_CTRL: /* CTRL */ - ret |= ((m_fake && m_fake->read() & 0x02) ? 0x02 : 0x00); + ret |= ((m_fake.read_safe(0x00) & 0x02) ? 0x02 : 0x00); break; case pokey_device::POK_KEY_SHIFT: /* SHIFT */ - ret |= ((m_fake && m_fake->read() & 0x01) ? 0x02 : 0x00); + ret |= ((m_fake.read_safe(0x00) & 0x01) ? 0x02 : 0x00); break; } @@ -115,7 +115,7 @@ POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a800_keyboard) return ret; /* decode regular key */ - ipt = m_keyboard[k543210 >> 3] ? m_keyboard[k543210 >> 3]->read() : 0; + ipt = m_keyboard[k543210 >> 3].read_safe(0); if (ipt & (1 << (k543210 & 0x07))) ret |= 0x01; @@ -162,7 +162,7 @@ POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a5200_keypads) { case pokey_device::POK_KEY_BREAK: /* special case ... */ - ret |= ((m_keypad[0] && m_keypad[0]->read() & 0x01) ? 0x02 : 0x00); + ret |= ((m_keypad[0].read_safe(0x00) & 0x01) ? 0x02 : 0x00); break; case pokey_device::POK_KEY_CTRL: break; @@ -184,7 +184,7 @@ POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a5200_keypads) if (k543210 == 0) return ret; - ipt = m_keypad[k543210 >> 2] ? m_keypad[k543210 >> 2]->read() : 0; + ipt = m_keypad[k543210 >> 2].read_safe(0); if (ipt & (1 << (k543210 & 0x03))) ret |= 0x01; diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp index abde109215c..522fffad39c 100644 --- a/src/mame/machine/bbc.cpp +++ b/src/mame/machine/bbc.cpp @@ -1747,9 +1747,9 @@ MACHINE_START_MEMBER(bbc_state, bbca) MACHINE_RESET_MEMBER(bbc_state, bbca) { - m_monitortype = read_safe(ioport("BBCCONFIG"), 0) & 0x03; - m_Speech = read_safe(ioport("BBCCONFIG"), 0) & 0x04; - m_SWRAMtype = read_safe(ioport("BBCCONFIG"), 0) & 0x18; + m_monitortype = m_bbcconfig.read_safe(0) & 0x03; + m_Speech = m_bbcconfig.read_safe(0) & 0x04; + m_SWRAMtype = m_bbcconfig.read_safe(0) & 0x18; UINT8 *RAM = m_region_maincpu->base(); @@ -1782,9 +1782,9 @@ MACHINE_START_MEMBER(bbc_state, bbcb) MACHINE_RESET_MEMBER(bbc_state, bbcb) { - m_monitortype = read_safe(ioport("BBCCONFIG"), 0) & 0x03; - m_Speech = read_safe(ioport("BBCCONFIG"), 1) & 0x04; - m_SWRAMtype = read_safe(ioport("BBCCONFIG"), 0) & 0x18; + m_monitortype = m_bbcconfig.read_safe(0) & 0x03; + m_Speech = m_bbcconfig.read_safe(1) & 0x04; + m_SWRAMtype = m_bbcconfig.read_safe(0) & 0x18; UINT8 *RAM = m_region_maincpu->base(); @@ -1823,8 +1823,8 @@ MACHINE_START_MEMBER(bbc_state, bbcbp) MACHINE_RESET_MEMBER(bbc_state, bbcbp) { - m_monitortype = read_safe(ioport("BBCCONFIG"), 0) & 0x03; - m_Speech = read_safe(ioport("BBCCONFIG"), 1) & 0x04; + m_monitortype = m_bbcconfig.read_safe(0) & 0x03; + m_Speech = m_bbcconfig.read_safe(1) & 0x04; m_SWRAMtype = 0; m_bank1->set_base(m_region_maincpu->base()); @@ -1855,7 +1855,7 @@ MACHINE_START_MEMBER(bbc_state, bbcm) MACHINE_RESET_MEMBER(bbc_state, bbcm) { - m_monitortype = read_safe(ioport("BBCCONFIG"), 0) & 0x03; + m_monitortype = m_bbcconfig.read_safe(0) & 0x03; m_Speech = 0; m_SWRAMtype = 0; diff --git a/src/mame/machine/coco.cpp b/src/mame/machine/coco.cpp index 71686d9d757..fca8a67d2cf 100644 --- a/src/mame/machine/coco.cpp +++ b/src/mame/machine/coco.cpp @@ -1172,7 +1172,7 @@ WRITE8_MEMBER( coco_state::ff60_write ) READ8_MEMBER( coco_state::ff40_read ) { - if (offset >= 1 && offset <= 2 && m_beckerportconfig && m_beckerportconfig->read() == 1) + if (offset >= 1 && offset <= 2 && m_beckerportconfig.read_safe(0) == 1) { return m_beckerport->read(space, offset-1, mem_mask); } @@ -1188,7 +1188,7 @@ READ8_MEMBER( coco_state::ff40_read ) WRITE8_MEMBER( coco_state::ff40_write ) { - if (offset >= 1 && offset <= 2 && m_beckerportconfig && m_beckerportconfig->read() == 1) + if (offset >= 1 && offset <= 2 && m_beckerportconfig.read_safe(0) == 1) { return m_beckerport->write(space, offset-1, data, mem_mask); } diff --git a/src/mame/machine/cybiko.cpp b/src/mame/machine/cybiko.cpp index c4ce31ec36c..bd28cdfd9ee 100644 --- a/src/mame/machine/cybiko.cpp +++ b/src/mame/machine/cybiko.cpp @@ -103,7 +103,7 @@ int cybiko_state::cybiko_key_r( offs_t offset, int mem_mask) UINT16 data = 0xFFFF; for (UINT8 i = 0; i < 15; i++) { - if (m_input[i] && !BIT(offset, i)) + if (m_input[i].found() && !BIT(offset, i)) data &= ~m_input[i]->read(); } if (data != 0xFFFF) diff --git a/src/mame/machine/harddriv.cpp b/src/mame/machine/harddriv.cpp index 5d8dc40966b..50b3124e585 100644 --- a/src/mame/machine/harddriv.cpp +++ b/src/mame/machine/harddriv.cpp @@ -220,7 +220,7 @@ READ16_MEMBER( harddriv_state::hd68k_port0_r ) */ screen_device &scr = m_gsp->screen(); - int temp = ((m_sw1 ? m_sw1->read() : 0xff) << 8) | m_in0->read(); + int temp = (m_sw1.read_safe(0xff) << 8) | m_in0->read(); if (get_hblank(scr)) temp ^= 0x0002; temp ^= 0x0018; /* both EOCs always high for now */ return temp; @@ -270,7 +270,7 @@ READ16_MEMBER( harddriv_state::hda68k_port1_r ) READ16_MEMBER( harddriv_state::hdc68k_wheel_r ) { /* grab the new wheel value and upconvert to 12 bits */ - UINT16 new_wheel = (m_12badc[0] ? m_12badc[0]->read() : 0xffff) << 4; + UINT16 new_wheel = m_12badc[0].read_safe(0xffff) << 4; /* hack to display the wheel position */ if (space.machine().input().code_pressed(KEYCODE_LSHIFT)) @@ -321,14 +321,14 @@ WRITE16_MEMBER( harddriv_state::hd68k_adc_control_w ) if (m_adc_control & 0x08) { m_adc8_select = m_adc_control & 0x07; - m_adc8_data = m_8badc[m_adc8_select] ? m_8badc[m_adc8_select]->read() : 0xffff; + m_adc8_data = m_8badc[m_adc8_select].read_safe(0xffff); } /* handle a write to the 12-bit ADC address select */ if (m_adc_control & 0x40) { m_adc12_select = (m_adc_control >> 4) & 0x03; - m_adc12_data = (m_12badc[m_adc12_select] ? m_12badc[m_adc12_select]->read() : 0xffff) << 4; + m_adc12_data = m_12badc[m_adc12_select].read_safe(0xffff) << 4; } /* bit 7 selects which byte of the 12 bit data to read */ diff --git a/src/mame/machine/mac.cpp b/src/mame/machine/mac.cpp index eb245a52b67..6c50b1df13b 100644 --- a/src/mame/machine/mac.cpp +++ b/src/mame/machine/mac.cpp @@ -538,7 +538,6 @@ int mac_state::scan_keyboard() int i, j; int keybuf = 0; int keycode; - ioport_port *ports[7] = { m_key0, m_key1, m_key2, m_key3, m_key4, m_key5, m_key6 }; if (m_keycode_buf_index) { @@ -547,7 +546,7 @@ int mac_state::scan_keyboard() for (i=0; i<7; i++) { - keybuf = ports[i]->read(); + keybuf = m_keys[i]->read(); if (keybuf != m_key_matrix[i]) { diff --git a/src/mame/machine/macadb.cpp b/src/mame/machine/macadb.cpp index 22f0acabf27..dae12965a75 100644 --- a/src/mame/machine/macadb.cpp +++ b/src/mame/machine/macadb.cpp @@ -78,14 +78,13 @@ static const char *const adb_statenames[4] = { "NEW", "EVEN", "ODD", "IDLE" }; int mac_state::adb_pollkbd(int update) { int i, j, keybuf, report, codes[2], result; - ioport_port *ports[6] = { m_key0, m_key1, m_key2, m_key3, m_key4, m_key5 }; codes[0] = codes[1] = 0xff; // key up report = result = 0; for (i = 0; i < 6; i++) { - keybuf = ports[i]->read(); + keybuf = m_keys[i]->read(); // any changes in this row? if ((keybuf != m_key_matrix[i]) && (report < 2)) diff --git a/src/mame/machine/megadriv.cpp b/src/mame/machine/megadriv.cpp index 2c0707d5587..17a20fde8cc 100644 --- a/src/mame/machine/megadriv.cpp +++ b/src/mame/machine/megadriv.cpp @@ -1066,7 +1066,7 @@ DRIVER_INIT_MEMBER(md_base_state, megadrie) void md_base_state::screen_eof_megadriv(screen_device &screen, bool state) { - if (m_io_reset && m_io_reset->read() & 0x01) + if (m_io_reset.read_safe(0) & 0x01) m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); // rising edge diff --git a/src/mame/machine/micro3d.cpp b/src/mame/machine/micro3d.cpp index 7ebf9c58e07..5b0ac44f06f 100644 --- a/src/mame/machine/micro3d.cpp +++ b/src/mame/machine/micro3d.cpp @@ -467,16 +467,16 @@ WRITE32_MEMBER(micro3d_state::micro3d_mac2_w) READ16_MEMBER(micro3d_state::micro3d_encoder_h_r) { - UINT16 x_encoder = m_joystick_x ? m_joystick_x->read() : 0; - UINT16 y_encoder = m_joystick_y ? m_joystick_y->read() : 0; + UINT16 x_encoder = m_joystick_x.read_safe(0); + UINT16 y_encoder = m_joystick_y.read_safe(0); return (y_encoder & 0xf00) | ((x_encoder & 0xf00) >> 8); } READ16_MEMBER(micro3d_state::micro3d_encoder_l_r) { - UINT16 x_encoder = m_joystick_x ? m_joystick_x->read() : 0; - UINT16 y_encoder = m_joystick_y ? m_joystick_y->read() : 0; + UINT16 x_encoder = m_joystick_x.read_safe(0); + UINT16 y_encoder = m_joystick_y.read_safe(0); return ((y_encoder & 0xff) << 8) | (x_encoder & 0xff); } @@ -485,7 +485,7 @@ TIMER_CALLBACK_MEMBER(micro3d_state::adc_done_callback) { switch (param) { - case 0: m_adc_val = m_throttle ? m_throttle->read() : 0; + case 0: m_adc_val = m_throttle.read_safe(0); break; case 1: m_adc_val = (UINT8)((255.0/100.0) * m_volume->read() + 0.5); break; diff --git a/src/mame/machine/msx.cpp b/src/mame/machine/msx.cpp index f94d8541665..0936a2b94f4 100644 --- a/src/mame/machine/msx.cpp +++ b/src/mame/machine/msx.cpp @@ -361,12 +361,11 @@ READ8_MEMBER( msx_state::msx_ppi_port_b_r ) { UINT8 result = 0xff; int row, data; - ioport_port *keynames[] = { m_io_key0, m_io_key1, m_io_key2, m_io_key3, m_io_key4, m_io_key5 }; row = m_keylatch; if (row <= 10) { - data = keynames[row / 2]->read(); + data = m_io_key[row / 2]->read(); if (BIT(row, 0)) data >>= 8; diff --git a/src/mame/machine/naomi.cpp b/src/mame/machine/naomi.cpp index b91c3889839..a95a6302306 100644 --- a/src/mame/machine/naomi.cpp +++ b/src/mame/machine/naomi.cpp @@ -228,7 +228,11 @@ CUSTOM_INPUT_MEMBER(naomi_state::naomi_mp_r) for (int i = 0x80; i >= 0x08; i >>= 1) { if (m_mp_mux & i) - retval |= read_safe(ioport(tagptr), 0); + { + ioport_port *port = ioport(tagptr); + if (port != nullptr) + retval |= port->read(); + } tagptr += strlen(tagptr) + 1; } return retval; diff --git a/src/mame/machine/sms.cpp b/src/mame/machine/sms.cpp index 9b25b4017f4..094a8aaa721 100644 --- a/src/mame/machine/sms.cpp +++ b/src/mame/machine/sms.cpp @@ -252,7 +252,7 @@ WRITE_LINE_MEMBER(sms_state::sms_pause_callback) WRITE_LINE_MEMBER(sms_state::sms_csync_callback) { - if ( m_port_rapid ) + if (m_port_rapid.found()) { UINT8 rapid_previous_mode = m_rapid_mode; @@ -345,7 +345,7 @@ READ8_MEMBER(sms_state::sms_input_port_dc_r) m_port_dc_reg &= ~0x20 | ((m_io_ctrl_reg & 0x10) << 1); } - if ( m_port_rapid ) + if (m_port_rapid.found()) { // Check if Rapid Fire is enabled for Button 1 if (m_rapid_mode & 0x01) @@ -391,7 +391,7 @@ READ8_MEMBER(sms_state::sms_input_port_dd_r) } // Reset Button - if ( m_port_reset ) + if (m_port_reset.found()) { m_port_dd_reg &= ~0x10 | (m_port_reset->read() & 0x01) << 4; } @@ -440,7 +440,7 @@ READ8_MEMBER(sms_state::sms_input_port_dd_r) } } - if ( m_port_rapid ) + if (m_port_rapid.found()) { // Check if Rapid Fire is enabled for Button 1 if (m_rapid_mode & 0x04) @@ -1054,7 +1054,7 @@ MACHINE_START_MEMBER(sms_state,sms) save_item(NAME(m_smsj_audio_control)); } - if (m_port_rapid) + if (m_port_rapid.found()) { save_item(NAME(m_csync_counter)); save_item(NAME(m_rapid_mode)); @@ -1111,7 +1111,7 @@ MACHINE_RESET_MEMBER(sms_state,sms) m_smsj_audio_control = 0x00; } - if (m_port_rapid) + if (m_port_rapid.found()) { m_csync_counter = 0; m_rapid_mode = 0x00; diff --git a/src/mame/machine/tnzs.cpp b/src/mame/machine/tnzs.cpp index 175d20568c0..e3892a657b4 100644 --- a/src/mame/machine/tnzs.cpp +++ b/src/mame/machine/tnzs.cpp @@ -84,8 +84,7 @@ READ8_MEMBER(tnzs_state::arknoid2_sh_f000_r) { // logerror("PC %04x: read input %04x\n", space.device().safe_pc(), 0xf000 + offset); - ioport_port *port = (offset / 2) ? m_an2 : m_an1; - int val = port ? port->read() : 0; + int val = ((offset / 2) ? m_an2 : m_an1).read_safe(0); if (offset & 1) return ((val >> 8) & 0xff); diff --git a/src/mame/machine/vectrex.cpp b/src/mame/machine/vectrex.cpp index c2f909fd4a3..9a9cdaf66b9 100644 --- a/src/mame/machine/vectrex.cpp +++ b/src/mame/machine/vectrex.cpp @@ -183,10 +183,7 @@ WRITE_LINE_MEMBER(vectrex_state::vectrex_via_irq) READ8_MEMBER(vectrex_state::vectrex_via_pb_r) { - int pot; - ioport_port *io_port[4] = { m_io_contr1x, m_io_contr1y, m_io_contr2x, m_io_contr2y }; - - pot = io_port[(m_via_out[PORTB] & 0x6) >> 1]->read() - 0x80; + int pot = m_io_contr[(m_via_out[PORTB] & 0x6) >> 1]->read() - 0x80; if (pot > (signed char)m_via_out[PORTA]) m_via_out[PORTB] |= 0x20; diff --git a/src/mame/video/amiga.cpp b/src/mame/video/amiga.cpp index d049cc2e165..c12716afe7c 100644 --- a/src/mame/video/amiga.cpp +++ b/src/mame/video/amiga.cpp @@ -150,7 +150,7 @@ UINT32 amiga_state::amiga_gethvpos() { amiga_state *state = this; UINT32 hvpos = (m_last_scanline << 8) | (m_screen->hpos() >> 2); - UINT32 latchedpos = m_hvpos ? m_hvpos->read() : 0; + UINT32 latchedpos = m_hvpos.read_safe(0); /* if there's no latched position, or if we are in the active display area */ /* but before the latching point, return the live HV position */ diff --git a/src/mame/video/antic.cpp b/src/mame/video/antic.cpp index 45743a2113a..c474674f6e3 100644 --- a/src/mame/video/antic.cpp +++ b/src/mame/video/antic.cpp @@ -1391,7 +1391,7 @@ void antic_device::render(address_space &space, int param1, int param2, int para ************************************************************************/ UINT32 antic_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - UINT32 new_tv_artifacts = m_artifacts ? m_artifacts->read() : 0; + UINT32 new_tv_artifacts = m_artifacts.read_safe(0); copybitmap(bitmap, *m_bitmap, 0, 0, 0, 0, cliprect); if (m_tv_artifacts != new_tv_artifacts) @@ -2084,7 +2084,7 @@ void antic_device::generic_interrupt(int button_count) if( m_scanline == VBL_START ) { /* specify buttons relevant to this Atari variant */ - m_gtia->button_interrupt(button_count, m_djoy_b ? m_djoy_b->read() : 0); + m_gtia->button_interrupt(button_count, m_djoy_b.read_safe(0)); /* do nothing new for the rest of the frame */ m_modelines = m_screen->height() - VBL_START; diff --git a/src/mame/video/apple2.cpp b/src/mame/video/apple2.cpp index b56ac22ea38..4cb105d4afd 100644 --- a/src/mame/video/apple2.cpp +++ b/src/mame/video/apple2.cpp @@ -101,7 +101,7 @@ inline void apple2_state::apple2_plot_text_character(bitmap_ind16 &bitmap, int x const UINT8 *chardata; UINT16 color; - if (m_sysconfig != nullptr) + if (m_sysconfig.found()) { switch (m_sysconfig->read() & 0x03) { @@ -289,12 +289,7 @@ void apple2_state::apple2_hires_draw(bitmap_ind16 &bitmap, const rectangle &clip UINT16 *p; UINT32 w; UINT16 *artifact_map_ptr; - int mon_type = 0; - - if (m_sysconfig != nullptr) - { - mon_type = m_sysconfig->read() & 0x03; - } + int mon_type = m_sysconfig.read_safe(0) & 0x03; /* sanity checks */ if (beginrow < cliprect.min_y) diff --git a/src/mame/video/astrocde.cpp b/src/mame/video/astrocde.cpp index 302f9444d56..644caf24c3a 100644 --- a/src/mame/video/astrocde.cpp +++ b/src/mame/video/astrocde.cpp @@ -490,51 +490,51 @@ READ8_MEMBER(astrocde_state::astrocade_data_chip_register_r) break; case 0x10: /* player 1 handle */ - result = m_p1handle? m_p1handle->read() : 0xff; + result = m_p1handle.read_safe(0xff); break; case 0x11: /* player 2 handle */ - result = m_p2handle? m_p2handle->read() : 0xff; + result = m_p2handle.read_safe(0xff); break; case 0x12: /* player 3 handle */ - result = m_p3handle? m_p3handle->read() : 0xff; + result = m_p3handle.read_safe(0xff); break; case 0x13: /* player 4 handle */ - result = m_p4handle? m_p4handle->read() : 0xff; + result = m_p4handle.read_safe(0xff); break; case 0x14: /* keypad column 0 */ - result = m_keypad0 ? m_keypad0->read() : 0xff; + result = m_keypad0.read_safe(0xff); break; case 0x15: /* keypad column 1 */ - result = m_keypad1 ? m_keypad1->read() : 0xff; + result = m_keypad1.read_safe(0xff); break; case 0x16: /* keypad column 2 */ - result = m_keypad2 ? m_keypad2->read() : 0xff; + result = m_keypad2.read_safe(0xff); break; case 0x17: /* keypad column 3 */ - result = m_keypad3 ? m_keypad3->read() : 0xff; + result = m_keypad3.read_safe(0xff); break; case 0x1c: /* player 1 knob */ - result = m_p1_knob ? m_p1_knob->read() : 0xff; + result = m_p1_knob.read_safe(0xff); break; case 0x1d: /* player 2 knob */ - result = m_p2_knob ? m_p2_knob->read() : 0xff; + result = m_p2_knob.read_safe(0xff); break; case 0x1e: /* player 3 knob */ - result = m_p3_knob ? m_p3_knob->read() : 0xff; + result = m_p3_knob.read_safe(0xff); break; case 0x1f: /* player 4 knob */ - result = m_p4_knob ? m_p4_knob->read() : 0xff; + result = m_p4_knob.read_safe(0xff); break; } diff --git a/src/mame/video/itech8.cpp b/src/mame/video/itech8.cpp index 8920c8c423f..25adbfcda8d 100644 --- a/src/mame/video/itech8.cpp +++ b/src/mame/video/itech8.cpp @@ -436,7 +436,7 @@ READ8_MEMBER(itech8_state::blitter_r) /* a read from offsets 12-15 return input port values */ if (offset >= 12 && offset <= 15) - result = m_an[offset - 12] ? m_an[offset - 12]->read() : 0; + result = m_an[offset - 12].read_safe(0); return result; } diff --git a/src/mame/video/lethalj.cpp b/src/mame/video/lethalj.cpp index ae40525e276..ca38bab3b56 100644 --- a/src/mame/video/lethalj.cpp +++ b/src/mame/video/lethalj.cpp @@ -30,13 +30,13 @@ inline void lethalj_state::get_crosshair_xy(int player, int *x, int *y) if (player) { - *x = (((m_light1_x ? m_light1_x->read() : 0) & 0xff) * width) / 255; - *y = (((m_light1_y ? m_light1_y->read() : 0) & 0xff) * height) / 255; + *x = ((m_light1_x.read_safe(0) & 0xff) * width) / 255; + *y = ((m_light1_y.read_safe(0) & 0xff) * height) / 255; } else { - *x = (((m_light0_x ? m_light0_x->read() : 0) & 0xff) * width) / 255; - *y = (((m_light0_y ? m_light0_y->read() : 0) & 0xff) * height) / 255; + *x = ((m_light0_x.read_safe(0) & 0xff) * width) / 255; + *y = ((m_light0_y.read_safe(0) & 0xff) * height) / 255; } } diff --git a/src/mame/video/mac.cpp b/src/mame/video/mac.cpp index e3b7fb31c53..7802e6b65bb 100644 --- a/src/mame/video/mac.cpp +++ b/src/mame/video/mac.cpp @@ -245,14 +245,8 @@ VIDEO_RESET_MEMBER(mac_state,macrbv) visarea.min_x = 0; visarea.min_y = 0; view = 0; - if (m_montype) - { - m_rbv_montype = m_montype->read(); - } - else - { - m_rbv_montype = 2; - } + + m_rbv_montype = m_montype.read_safe(2); switch (m_rbv_montype) { case 1: // 15" portrait display @@ -309,7 +303,7 @@ VIDEO_RESET_MEMBER(mac_state,macsonora) visarea.min_x = 0; visarea.min_y = 0; - m_rbv_montype = m_montype ? m_montype->read() : 2; + m_rbv_montype = m_montype.read_safe(2); switch (m_rbv_montype) { case 1: // 15" portrait display From e1c0c081f5a446857f209e4d41916c44d16143a5 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sat, 6 Aug 2016 10:50:28 +1000 Subject: [PATCH 040/116] fix ASCII keyboard home row (nw) --- src/devices/machine/keyboard.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/devices/machine/keyboard.cpp b/src/devices/machine/keyboard.cpp index 3d62e53bfad..d244bfc4d32 100644 --- a/src/devices/machine/keyboard.cpp +++ b/src/devices/machine/keyboard.cpp @@ -190,15 +190,15 @@ INPUT_PORTS_START( generic_keyboard ) PORT_START("GENKBD_ROW2") PORT_BIT( 0x0001U, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x0002U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('Q') - PORT_BIT( 0x0004U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('W') - PORT_BIT( 0x0008U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('E') - PORT_BIT( 0x0010U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('R') - PORT_BIT( 0x0020U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('T') - PORT_BIT( 0x0040U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('Y') - PORT_BIT( 0x0080U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('U') - PORT_BIT( 0x0100U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('I') - PORT_BIT( 0x0200U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('O') + PORT_BIT( 0x0002U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') + PORT_BIT( 0x0004U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') + PORT_BIT( 0x0008U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') + PORT_BIT( 0x0010U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') + PORT_BIT( 0x0020U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') + PORT_BIT( 0x0040U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') + PORT_BIT( 0x0080U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') + PORT_BIT( 0x0100U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') + PORT_BIT( 0x0200U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') PORT_BIT( 0x0400U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CONDITION("GENKBD_CFG", 0x01, EQUALS, 0x00) PORT_CHAR(';') PORT_CHAR(':') PORT_BIT( 0x0400U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CONDITION("GENKBD_CFG", 0x01, EQUALS, 0x01) PORT_CHAR(';') PORT_CHAR('+') PORT_BIT( 0x0800U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CONDITION("GENKBD_CFG", 0x01, EQUALS, 0x00) PORT_CHAR('\'') PORT_CHAR('"') From 8a5da5ddf43214ce41385b73c519c57f6f5aba63 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sat, 6 Aug 2016 11:55:35 +1000 Subject: [PATCH 041/116] Fixed the build. --- src/devices/machine/pckeybrd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/machine/pckeybrd.cpp b/src/devices/machine/pckeybrd.cpp index b6aa0a1f8b9..122677cfc64 100644 --- a/src/devices/machine/pckeybrd.cpp +++ b/src/devices/machine/pckeybrd.cpp @@ -560,7 +560,7 @@ UINT32 pc_keyboard_device::readport(int port) result = m_ioport_7->read(); break; } - return 0; + return result; } void pc_keyboard_device::polling(void) From 057474989c1a92e9e935dbc8cb9d233ba3a4ea3a Mon Sep 17 00:00:00 2001 From: jbu Date: Sat, 6 Aug 2016 04:34:23 +0200 Subject: [PATCH 042/116] alto2: remove more cruft and fix comments I want this child to become a grown up some day. --- src/devices/cpu/alto2/a2dht.cpp | 46 +++++++++++++++ src/devices/cpu/alto2/a2disk.cpp | 29 ---------- src/devices/cpu/alto2/a2disk.h | 8 --- src/devices/cpu/alto2/a2disp.cpp | 34 ++++++------ src/devices/cpu/alto2/a2disp.h | 89 ++++++++++++++++++------------ src/devices/cpu/alto2/a2dvt.cpp | 23 ++++++++ src/devices/cpu/alto2/a2dvt.h | 19 +++++-- src/devices/cpu/alto2/a2dwt.cpp | 31 +++++++++++ src/devices/cpu/alto2/a2mem.h | 6 +- src/devices/cpu/alto2/alto2cpu.cpp | 40 +++++++------- src/devices/cpu/alto2/alto2cpu.h | 5 +- src/devices/cpu/alto2/alto2dsm.cpp | 61 ++++++++++---------- 12 files changed, 237 insertions(+), 154 deletions(-) diff --git a/src/devices/cpu/alto2/a2dht.cpp b/src/devices/cpu/alto2/a2dht.cpp index 2f9aef63906..cf32394a83c 100644 --- a/src/devices/cpu/alto2/a2dht.cpp +++ b/src/devices/cpu/alto2/a2dht.cpp @@ -7,6 +7,52 @@ *****************************************************************************/ #include "alto2cpu.h" +/* + * Copied from ALTOCODE24.MU + * ;Display Horizontal Task. + * ;11 cycles if no block change, 17 if new control block. + * + * DHT: MAR↠CBA-1; + * L↠SLC -1, BUS=0; + * SLC↠L, :DHT0; + * + * DHT0: T↠37400; MORE TO DO IN THIS BLOCK + * SINK↠MD; + * L↠T↠MD AND T, SETMODE; + * HTAB↠L LCY 8, :NORMODE; + * + * NORMODE:L↠T↠377 . T; + * AECL↠L, :REST; + * + * HALFMODE: L↠T↠377 . T; + * AECL↠L, :REST, T↠0; + * + * REST: L↠DWA + T,TASK; INCREMENT DWA BY 0 OR NWRDS + * NDNX: DWA↠L, :DHT; + * + * DHT1: L↠T↠MD+1, BUS=0; + * CBA↠L, MAR↠T, :MOREB; + * + * NOMORE: BLOCK, :DNX; + * MOREB: T↠37400; + * L↠T↠MD AND T, SETMODE; + * MAR↠CBA+1, :NORMX, EVENFIELD; + * + * NORMX: HTAB↠L LCY 8, :NODD; + * HALFX: HTAB↠L LCY 8, :NEVEN; + * + * NODD: Lâ†T↠377 . T; + * AECL↠L, :XREST; ODD FIELD, FULL RESOLUTION + * + * NEVEN: L↠377 AND T; EVEN FIELD OR HALF RESOLUTION + * AECLâ†L, Tâ†0; + * + * XREST: L↠MD+T; + * Tâ†MD-1; + * DNX: DWAâ†L, Lâ†T, TASK; + * SLCâ†L, :DHT; + */ + /** * @brief f1_dht_block early: disable the display word task */ diff --git a/src/devices/cpu/alto2/a2disk.cpp b/src/devices/cpu/alto2/a2disk.cpp index c5088872e15..c4658726492 100644 --- a/src/devices/cpu/alto2/a2disk.cpp +++ b/src/devices/cpu/alto2/a2disk.cpp @@ -1620,14 +1620,6 @@ void alto2_cpu_device::disk_bitclk(void* ptr, INT32 arg) kwd_timing(clk, bit, 0); } -#if USE_BITCLK_TIMER - /* more bits to clock? */ - if (++arg < dhd->bits_per_sector()) { - m_dsk.bitclk_timer->adjust(dhd->bit_time(), arg); - } else { - m_dsk.bitclk_timer->reset(); - } -#else if (++arg < dhd->bits_per_sector()) { m_bitclk_time += m_dsk.bitclk_time[m_dsk.drive]; m_bitclk_index = arg; @@ -1635,7 +1627,6 @@ void alto2_cpu_device::disk_bitclk(void* ptr, INT32 arg) // stop the bitclock timer m_bitclk_time = -1; } -#endif } /** @@ -1649,16 +1640,11 @@ void alto2_cpu_device::next_sector(int unit) LOG((this,LOG_DISK,0,"%s dhd=%p\n", __FUNCTION__, dhd)); // get bit time in pico seconds m_dsk.bitclk_time[unit] = static_cast(dhd->bit_time().as_attoseconds() / 1000000); -#if USE_BITCLK_TIMER - LOG((this,LOG_DISK,0," unit #%d stop bitclk\n", unit)); - m_dsk.bitclk_timer->enable(false); -#else if (m_bitclk_time >= 0) { LOG((this,LOG_DISK,0," unit #%d stop bitclk\n", unit)); m_bitclk_time = -1; m_bitclk_index = -1; } -#endif /* KSTAT[0-3] update the current sector in the kstat field */ PUT_KSTAT_SECTOR(m_dsk.kstat, dhd->get_sector()); @@ -1669,12 +1655,6 @@ void alto2_cpu_device::next_sector(int unit) LOG((this,LOG_DISK,1," unit #%d sector %d start\n", unit, GET_KSTAT_SECTOR(m_dsk.kstat))); -#if USE_BITCLK_TIMER - // HACK: no command, no bit clock - if (debug_read_mem(0521)) - /* start a timer chain for the bit clock */ - disk_bitclk(0, 0); -#else // TODO: verify current sector == requested sector and only then run the bitclk? // HACK: no command, no bit clock if (debug_read_mem(0521)) @@ -1683,7 +1663,6 @@ void alto2_cpu_device::next_sector(int unit) m_bitclk_time = 0; m_bitclk_index = 0; } -#endif } /** @@ -1769,10 +1748,6 @@ void alto2_cpu_device::init_disk() m_dsk.kcom = 066000; -#if USE_BITCLK_TIMER - m_dsk.bitclk_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(alto2_cpu_device::disk_bitclk),this)); -#endif - m_dsk.strobon_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(alto2_cpu_device::disk_strobon),this)); m_dsk.strobon_timer->reset(); @@ -1821,12 +1796,8 @@ void alto2_cpu_device::reset_disk() m_dsk.strobe = 0; m_dsk.strobon_timer->reset(); m_dsk.bitclk = 0; -#if USE_BITCLK_TIMER - m_dsk.bitclk_timer->reset(); -#else m_dsk.bitclk_time[0] = static_cast(attotime::from_nsec(300).as_attoseconds() / 1000000); m_dsk.bitclk_time[1] = static_cast(attotime::from_nsec(300).as_attoseconds() / 1000000); -#endif m_dsk.datin = 0; m_dsk.bitcount = 0; m_dsk.seclate = 0; diff --git a/src/devices/cpu/alto2/a2disk.h b/src/devices/cpu/alto2/a2disk.h index 5fd994f654e..a3f8c7755fc 100644 --- a/src/devices/cpu/alto2/a2disk.h +++ b/src/devices/cpu/alto2/a2disk.h @@ -37,11 +37,7 @@ struct { UINT8 strobe; //!< strobe (still) active emu_timer* strobon_timer; //!< set strobe on timer UINT8 bitclk; //!< current bitclk state (either crystal clock, or rdclk from the drive) -#if USE_BITCLK_TIMER - emu_timer* bitclk_timer; //!< bit clock timer -#else int bitclk_time[2]; //!< per drive time in clocks per bit -#endif UINT8 datin; //!< current datin from the drive UINT8 bitcount; //!< bit counter UINT8 carry; //!< carry output of the bitcounter @@ -78,11 +74,7 @@ TIMER_CALLBACK_MEMBER( disk_seclate ); //!< timer callback to take away TIMER_CALLBACK_MEMBER( disk_ok_to_run ); //!< timer callback to take away the OK TO RUN pulse (reset) TIMER_CALLBACK_MEMBER( disk_strobon ); //!< timer callback to pulse the STROBE' signal to the drive TIMER_CALLBACK_MEMBER( disk_ready_mf31a ); //!< timer callback to change the READY monoflop 31a -#if USE_BITCLK_TIMER -TIMER_CALLBACK_MEMBER( disk_bitclk ); //!< callback to update the disk controller with a new bitclk -#else void disk_bitclk(void *ptr, int arg); //!< function to update the disk controller with a new bitclk -#endif void disk_block(int task); //!< called if one of the disk tasks (task_kwd or task_ksec) blocks void bs_early_read_kstat(); //!< bus source: bus driven by disk status register KSTAT void bs_early_read_kdata(); //!< bus source: bus driven by disk data register KDATA input diff --git a/src/devices/cpu/alto2/a2disp.cpp b/src/devices/cpu/alto2/a2disp.cpp index 825699f69af..e7a0474ea7c 100644 --- a/src/devices/cpu/alto2/a2disp.cpp +++ b/src/devices/cpu/alto2/a2disp.cpp @@ -10,10 +10,10 @@ /** * @brief PROM a38 contains the STOPWAKE' and MBEMBPTY' signals for the FIFO - *
  * The inputs to a38 are the UNLOAD counter RA[0-3] and the DDR<- counter
  * WA[0-3], and the designer decided to reverse the address lines :-)
  *
+ * 
  *  a38  counter
  *  -------------
  *   A0  RA[0]
@@ -50,10 +50,10 @@ static const prom_load_t pl_displ_a38 =
 };
 
 //! PROM a38 bit O1 is STOPWAKE' (stop DWT if bit is zero)
-#define FIFO_STOPWAKE(a38) (0 == (a38 & disp_a38_STOPWAKE) ? true : false)
+#define FIFO_STOPWAKE(a38) ((a38 & disp_a38_STOPWAKE) ? false : true)
 
 //! PROM a38 bit O3 is MBEMPTY' (FIFO is empty if bit is zero)
-#define FIFO_MBEMPTY(a38) (0 == (a38 & disp_a38_MBEMPTY) ? true : false)
+#define FIFO_MBEMPTY(a38) ((a38 & disp_a38_MBEMPTY) ? false : true)
 
 /**
  * @brief emulation of PROM a63 in the display schematics page 8
@@ -224,17 +224,17 @@ static const UINT16 double_bits[256] = {
 	0xffc0,0xffc3,0xffcc,0xffcf,0xfff0,0xfff3,0xfffc,0xffff
 };
 
-#define HLC1    ((m_dsp.hlc >>  0) & 1)     //!< horizontal line counter bit 0 (mid of the scanline)
-#define HLC2    ((m_dsp.hlc >>  1) & 1)     //!< horizontal line counter bit 1
-#define HLC4    ((m_dsp.hlc >>  2) & 1)     //!< horizontal line counter bit 2
-#define HLC8    ((m_dsp.hlc >>  3) & 1)     //!< horizontal line counter bit 3
-#define HLC16   ((m_dsp.hlc >>  4) & 1)     //!< horizontal line counter bit 4
-#define HLC32   ((m_dsp.hlc >>  5) & 1)     //!< horizontal line counter bit 5
-#define HLC64   ((m_dsp.hlc >>  6) & 1)     //!< horizontal line counter bit 6
-#define HLC128  ((m_dsp.hlc >>  7) & 1)     //!< horizontal line counter bit 7
-#define HLC256  ((m_dsp.hlc >>  8) & 1)     //!< horizontal line counter bit 8
-#define HLC512  ((m_dsp.hlc >>  9) & 1)     //!< horizontal line counter bit 9
-#define HLC1024 ((m_dsp.hlc >> 10) & 1)     //!< horizontal line counter bit 10 (odd/even field)
+#define HLC1    X_BIT(m_dsp.hlc,16,15)    //!< horizontal line counter bit 0 (mid of the scanline)
+#define HLC2    X_BIT(m_dsp.hlc,16,14)    //!< horizontal line counter bit 1
+#define HLC4    X_BIT(m_dsp.hlc,16,13)    //!< horizontal line counter bit 2
+#define HLC8    X_BIT(m_dsp.hlc,16,12)    //!< horizontal line counter bit 3
+#define HLC16   X_BIT(m_dsp.hlc,16,11)    //!< horizontal line counter bit 4
+#define HLC32   X_BIT(m_dsp.hlc,16,10)    //!< horizontal line counter bit 5
+#define HLC64   X_BIT(m_dsp.hlc,16, 9)    //!< horizontal line counter bit 6
+#define HLC128  X_BIT(m_dsp.hlc,16, 8)    //!< horizontal line counter bit 7
+#define HLC256  X_BIT(m_dsp.hlc,16, 7)    //!< horizontal line counter bit 8
+#define HLC512  X_BIT(m_dsp.hlc,16, 6)    //!< horizontal line counter bit 9
+#define HLC1024 X_BIT(m_dsp.hlc,16, 5)    //!< horizontal line counter bit 10 (odd/even field
 
 #define GET_SETMODE_SPEEDY(mode) X_RDBITS(mode,16,0,0)  //!< get the pixel clock speed from a SETMODE<- bus value
 #define GET_SETMODE_INVERSE(mode) X_RDBITS(mode,16,1,1) //!< get the inverse video flag from a SETMODE<- bus value
@@ -287,12 +287,12 @@ void alto2_cpu_device::unload_word()
 
 	if (m_dsp.halfclock)
 	{
-		UINT16 word1 = double_bits[word / 256];
-		UINT16 word2 = double_bits[word % 256];
+		const UINT16 word1 = double_bits[word / 256];
 		update_framebuf_word(framebuf, x, y, word1);
 		x++;
 		if (x < ALTO2_DISPLAY_VISIBLE_WORDS)
 		{
+			const UINT16 word2 = double_bits[word % 256];
 			update_framebuf_word(framebuf, x, y, word2);
 			x++;
 		}
@@ -329,7 +329,7 @@ void alto2_cpu_device::display_state_machine()
 	{
 		// count horizontal line counters and wrap
 		m_dsp.hlc += 1;
-		if (m_dsp.hlc == ALTO2_DISPLAY_HLC_END)
+		if (m_dsp.hlc > ALTO2_DISPLAY_HLC_END)
 			m_dsp.hlc = ALTO2_DISPLAY_HLC_START;
 		// wake up the memory refresh task _twice_ on each scanline
 		m_task_wakeup |= 1 << task_mrt;
diff --git a/src/devices/cpu/alto2/a2disp.h b/src/devices/cpu/alto2/a2disp.h
index fed97913d46..282ccd94f56 100644
--- a/src/devices/cpu/alto2/a2disp.h
+++ b/src/devices/cpu/alto2/a2disp.h
@@ -2,13 +2,13 @@
 // copyright-holders:Juergen Buchmueller
 /*****************************************************************************
  *
- *   Xerox AltoII display block
+ *   Xerox AltoII display emulation
  *
  *****************************************************************************/
 #ifdef  ALTO2_DEFINE_CONSTANTS
 
 /**
- * @brief start value for the horizontal line counter
+ * @brief Start value for the horizontal line counter.
  *
  * This value is loaded into the three 4 bit counters (type 9316)
  * with numbers 65, 67, and 75.
@@ -21,12 +21,14 @@
 #define ALTO2_DISPLAY_HLC_START (2+4+16+128)
 
 /**
- * @brief end value for the horizontal line counter
+ * @brief End value for the horizontal line counter.
  *
  * This is decoded by H30, an 8 input NAND gate.
  * The value is 1899; horz. line count range 150...1899 = 1750.
+ * So there are 1750 / 2 = 875 total scanlines.
  *
- * There are 1750 / 2 = 875 total scanlines.
+ * Note: The horizontal line counts 150 ... 1023 for the even field,
+ * and 1024 ... 1899 for the odd field.
  */
 #define ALTO2_DISPLAY_HLC_END (1+2+8+32+64+256+512+1024)
 
@@ -37,7 +39,7 @@
  * scanlines to the monitor. The frame rate is 60Hz, which is actually the rate
  * of the half-frames. The rate for full frames is thus 30Hz.
  */
-#define ALTO2_DISPLAY_TOTAL_HEIGHT ((ALTO2_DISPLAY_HLC_END + 1 - ALTO2_DISPLAY_HLC_START) / 2)
+#define ALTO2_DISPLAY_TOTAL_HEIGHT ((ALTO2_DISPLAY_HLC_END - ALTO2_DISPLAY_HLC_START) / 2)
 
 /**
  * @brief display total width, including horizontal blanking
@@ -68,18 +70,37 @@
  */
 #define ALTO2_DISPLAY_TOTAL_WIDTH 768
 
+//! The display fifo has 16 words.
+#define ALTO2_DISPLAY_FIFO 16
 
-#define ALTO2_DISPLAY_FIFO 16                                                       //!< the display fifo has 16 words
-#define ALTO2_DISPLAY_SCANLINE_WORDS (ALTO2_DISPLAY_TOTAL_WIDTH/16)                 //!< words per scanline
-#define ALTO2_DISPLAY_HEIGHT 808                                                    //!< number of visible scanlines per frame; 808 really, but there are some empty lines?
-#define ALTO2_DISPLAY_WIDTH 606                                                     //!< visible width of the display; 38 x 16 bit words - 2 pixels
-#define ALTO2_DISPLAY_VISIBLE_WORDS ((ALTO2_DISPLAY_WIDTH+15)/16)                   //!< visible words per scanline
-#define ALTO2_DISPLAY_BITCLOCK 20160000ll                                           //!< display bit clock in Hertz (20.16MHz)
-#define ALTO2_DISPLAY_BITTIME(n) (U64(1000000000000)*(n)/ALTO2_DISPLAY_BITCLOCK)    //!< display bit time in pico seconds (~= 49.6031ns)
-#define ALTO2_DISPLAY_SCANLINE_TIME ALTO2_DISPLAY_BITTIME(ALTO2_DISPLAY_TOTAL_WIDTH)//!< time for a scanline in pico seconds (768 * 49.6031ns ~= 38095.1808ns)
-#define ALTO2_DISPLAY_VISIBLE_TIME ALTO2_DISPLAY_BITTIME(ALTO2_DISPLAY_WIDTH)       //!< time of the visible part of a scanline in pico seconds (606 * 49.6031ns ~= 30059.4786ns)
-#define ALTO2_DISPLAY_WORD_TIME ALTO2_DISPLAY_BITTIME(16)                           //!< time for a word in pico seconds (16 pixels * 49.6031ns ~= 793.6496ns)
-#define ALTO2_DISPLAY_VBLANK_TIME ((ALTO2_DISPLAY_TOTAL_HEIGHT-ALTO2_DISPLAY_HEIGHT)*HZ_TO_ATTOSECONDS(26250)/2)
+//! Words per scanline.
+#define ALTO2_DISPLAY_SCANLINE_WORDS (ALTO2_DISPLAY_TOTAL_WIDTH/16)
+
+//! Number of visible scanlines per frame; 808 really, but there are some empty lines?
+#define ALTO2_DISPLAY_HEIGHT 808
+
+//! Visible width of the display; 38 x 16 bit words - 2 pixels.
+#define ALTO2_DISPLAY_WIDTH 606
+
+//! Visible words per scanline.
+#define ALTO2_DISPLAY_VISIBLE_WORDS ((ALTO2_DISPLAY_WIDTH+15)/16)
+
+//! Display bit clock in Hertz (20.16MHz).
+#define ALTO2_DISPLAY_BITCLOCK 20160000ll
+
+//! Display bit time in pico seconds (~= 49.6031ns).
+#define ALTO2_DISPLAY_BITTIME(n) (U64(1000000000000)*(n)/ALTO2_DISPLAY_BITCLOCK)
+
+//! Time for a scanline in pico seconds (768 * 49.6031ns ~= 38095.1808ns).
+#define ALTO2_DISPLAY_SCANLINE_TIME ALTO2_DISPLAY_BITTIME(ALTO2_DISPLAY_TOTAL_WIDTH)
+
+//!< Time of the visible part of a scanline in pico seconds (606 * 49.6031ns ~= 30059.4786ns).
+#define ALTO2_DISPLAY_VISIBLE_TIME ALTO2_DISPLAY_BITTIME(ALTO2_DISPLAY_WIDTH)
+
+//!< Time for a word in pico seconds (16 pixels * 49.6031ns ~= 793.6496ns).
+#define ALTO2_DISPLAY_WORD_TIME ALTO2_DISPLAY_BITTIME(16)
+
+#define ALTO2_DISPLAY_VBLANK_TIME ((ALTO2_DISPLAY_TOTAL_HEIGHT-ALTO2_DISPLAY_HEIGHT)*HZ_TO_ATTOSECONDS(26250))
 
 #else   // ALTO2_DEFINE_CONSTANTS
 /**
@@ -172,26 +193,26 @@
 #ifndef _A2DISP_H_
 #define _A2DISP_H_
 struct {
-	UINT16 state;                           //!< current state of the display_state_machine()
-	UINT16 hlc;                             //!< horizontal line counter
-	UINT16 setmode;                         //!< value written by last SETMODE<-
-	UINT16 inverse;                         //!< set to 0xffff if line is inverse, 0x0000 otherwise
-	bool halfclock;                         //!< set 0 for normal pixel clock, 1 for half pixel clock
+	UINT32 state;                           //!< current state of the display_state_machine()
+	UINT32 hlc;                             //!< horizontal line counter
+	UINT32 setmode;                         //!< value written by last SETMODE<-
+	UINT32 inverse;                         //!< set to 0xffff if line is inverse, 0x0000 otherwise
+	bool halfclock;                         //!< false for normal pixel clock, true for half pixel clock
 	UINT16 fifo[ALTO2_DISPLAY_FIFO];        //!< display word fifo
-	UINT8 wa;                               //!< fifo input pointer (write address; 4-bit)
-	UINT8 ra;                               //!< fifo output pointer (read address; 4-bit)
-	UINT8 a63;                              //!< most recent value read from the PROM a63
-	UINT8 a66;                              //!< most recent value read from the PROM a66
-	bool dht_blocks;                        //!< set non-zero, if the DHT executed BLOCK
-	bool dwt_blocks;                        //!< set non-zero, if the DWT executed BLOCK
-	bool curt_blocks;                       //!< set non-zero, if the CURT executed BLOCK
-	bool curt_wakeup;                       //!< set non-zero, if CURT wakeups are generated
-	UINT16 vblank;                          //!< most recent HLC with VBLANK still high (11-bit)
-	UINT16 xpreg;                           //!< cursor cursor x position register (10-bit)
-	UINT16 csr;                             //!< cursor shift register (16-bit)
+	UINT32 wa;                              //!< fifo input pointer (write address; 4-bit)
+	UINT32 ra;                              //!< fifo output pointer (read address; 4-bit)
+	UINT32 a63;                             //!< most recent value read from the PROM a63
+	UINT32 a66;                             //!< most recent value read from the PROM a66
+	bool dht_blocks;                        //!< set true, if the DHT executed BLOCK
+	bool dwt_blocks;                        //!< set true, if the DWT executed BLOCK
+	bool curt_blocks;                       //!< set true, if the CURT executed BLOCK
+	bool curt_wakeup;                       //!< set true, if CURT wakeups are generated
+	UINT32 vblank;                          //!< most recent HLC with VBLANK still high (11-bit)
+	UINT32 xpreg;                           //!< cursor cursor x position register (10-bit)
+	UINT32 csr;                             //!< cursor shift register (16-bit)
 	UINT32 curxpos;                         //!< helper: first cursor word in scanline
-	UINT16 cursor0;                         //!< helper: shifted cursor data for left word
-	UINT16 cursor1;                         //!< helper: shifted cursor data for right word
+	UINT32 cursor0;                         //!< helper: shifted cursor data for left word
+	UINT32 cursor1;                         //!< helper: shifted cursor data for right word
 	std::unique_ptr framebuf;     //!< array of words of the raw bitmap that is displayed
 	UINT8 *patterns;                        //!< array of 65536 patterns (16 bytes) with 1 byte per pixel
 	std::unique_ptr bitmap;   //!< MAME bitmap with 16 bit indices
diff --git a/src/devices/cpu/alto2/a2dvt.cpp b/src/devices/cpu/alto2/a2dvt.cpp
index ad019b6b07b..2badc246b57 100644
--- a/src/devices/cpu/alto2/a2dvt.cpp
+++ b/src/devices/cpu/alto2/a2dvt.cpp
@@ -7,6 +7,29 @@
  *****************************************************************************/
 #include "alto2cpu.h"
 
+/*
+ * Copied from ALTOCODE24.MU
+ *
+ *	;Display Vertical Task
+ *
+ *	DVT:	MAR↠L↠DASTART+1;
+ *		CBA↠L, L↠0;
+ *		CURDATA↠L;
+ *		SLC↠L;
+ *		T↠MD;			CAUSE A VERTICAL FIELD INTERRUPT
+ *		L↠NWW OR T;
+ *		MAR↠CURLOC;		SET UP THE CURSOR
+ *		NWW↠L, T↠0-1;
+ *		L↠MD XOR T;		HARDWARE EXPECTS X COMPLEMENTED
+ *		T↠MD, EVENFIELD;
+ *		CURX↠L, :DVT1;
+ *
+ *	DVT1:	L↠BIAS-T-1, TASK, :DVT2;	BIAS THE Y COORDINATE 
+ *	DVT11:	L↠BIAS-T, TASK;
+ * 
+ *	DVT2:	YPOS↠L, :DVT;
+ */
+
 /**
  * @brief f1_dvt_block early: disable the display word task
  */
diff --git a/src/devices/cpu/alto2/a2dvt.h b/src/devices/cpu/alto2/a2dvt.h
index 3b73ac7bf7e..0d9430b1731 100644
--- a/src/devices/cpu/alto2/a2dvt.h
+++ b/src/devices/cpu/alto2/a2dvt.h
@@ -16,10 +16,19 @@ enum {
 	f2_dvt_evenfield    = f2_task_10            //!< f2 10: load even field
 };
 
-void f1_early_dvt_block();                      //!< F1 func: disable the display word task
-void activate_dvt();                            //!< called by the CPU when the display vertical task becomes active
-void init_dvt(int task = task_dvt);             //!< initialize the display vertical task
-void exit_dvt();                                //!< deinitialize the display vertical task
-void reset_dvt();                               //!< reset the display vertical task
+//! F1 func: Disable the display word task.
+void f1_early_dvt_block();
+
+//! Called by the CPU when the display vertical task becomes active.
+void activate_dvt();
+
+//! Initialize the display vertical task.
+void init_dvt(int task = task_dvt);
+
+//! Deinitialize the display vertical task.
+void exit_dvt();
+
+//! Reset the display vertical task.
+void reset_dvt();
 #endif  // _A2DVT_H_
 #endif  // ALTO2_DEFINE_CONSTANTS
diff --git a/src/devices/cpu/alto2/a2dwt.cpp b/src/devices/cpu/alto2/a2dwt.cpp
index 3c6867b9f05..6791c8cc6ff 100644
--- a/src/devices/cpu/alto2/a2dwt.cpp
+++ b/src/devices/cpu/alto2/a2dwt.cpp
@@ -7,6 +7,37 @@
  *****************************************************************************/
 #include "alto2cpu.h"
 
+/*
+ * Copied from ALTOCODE24.MU
+ *
+ *	;Display Word Task
+ *	
+ *	DWT:	T↠DWA;
+ *		Tâ†-3+T+1;
+ *		L↠AECL+T,BUS=0,TASK;	AECL CONTAINS NWRDS AT THIS TIME
+ *		AECLâ†L, :DWTZ;
+ *	
+ *	DWTY:	BLOCK;
+ *		TASK, :DWTF;
+ *	
+ *	DWTZ:	Lâ†HTAB-1, BUS=0,TASK;
+ *		HTABâ†L, :DOTAB;
+ *
+ *	DOTAB:	DDRâ†0, :DWTZ;
+ *	NOTAB:	MARâ†Tâ†DWA;
+ *		Lâ†AECL-T-1;
+ *		ALUCY, Lâ†2+T;
+ *		DWAâ†L, :XNOMORE;
+ *
+ *	DOMORE:	DDRâ†MD, TASK;
+ *		DDRâ†MD, :NOTAB;
+ *
+ *	XNOMORE:DDR↠MD, BLOCK;
+ *		DDR↠MD, TASK;
+ *
+ *	DWTF:	:DWT;
+ */
+
 //! PROM a38 bit O1 is STOPWAKE' (stop DWT if bit is zero)
 #define FIFO_STOPWAKE(a38) (0 == (a38 & disp_a38_STOPWAKE) ? true : false)
 
diff --git a/src/devices/cpu/alto2/a2mem.h b/src/devices/cpu/alto2/a2mem.h
index 3985c065060..0f00d16fbeb 100644
--- a/src/devices/cpu/alto2/a2mem.h
+++ b/src/devices/cpu/alto2/a2mem.h
@@ -31,7 +31,7 @@ struct {
 	UINT32 mar;                         //!< memory address register
 	UINT32 rmdd;                        //!< read memory data double-word
 	UINT32 wmdd;                        //!< write memory data double-word
-	UINT16 md;                          //!< memory data register
+	UINT32 md;                          //!< memory data register
 	UINT64 cycle;                       //!< cycle when the memory address register was loaded
 
 	/**
@@ -44,8 +44,8 @@ struct {
 	int access;
 	bool error;                         //!< non-zero after a memory error was detected
 	UINT32 mear;                        //!< memory error address register
-	UINT16 mesr;                        //!< memory error status register
-	UINT16 mecr;                        //!< memory error control register
+	UINT32 mesr;                        //!< memory error status register
+	UINT32 mecr;                        //!< memory error control register
 }   m_mem;
 
 /**
diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp
index bd447e09583..dc82e9721c1 100644
--- a/src/devices/cpu/alto2/alto2cpu.cpp
+++ b/src/devices/cpu/alto2/alto2cpu.cpp
@@ -876,10 +876,8 @@ void alto2_cpu_device::device_start()
 	save_item(NAME(m_dsp_time));
 	save_item(NAME(m_unload_time));
 	save_item(NAME(m_unload_word));
-#if (USE_BITCLK_TIMER == 0)
 	save_item(NAME(m_bitclk_time));
 	save_item(NAME(m_bitclk_index));
-#endif
 	save_item(NAME(m_mouse.x));
 	save_item(NAME(m_mouse.y));
 	save_item(NAME(m_mouse.dx));
@@ -1458,6 +1456,8 @@ void alto2_cpu_device::bs_late_load_r()
 {
 	if (f2() != f2_emu_load_dns) {
 		m_r[m_rsel] = m_shifter;
+		if (m_rsel == 037)
+			m_r[m_rsel] &= ~3;
 		LOG((this,LOG_CPU,2,"    R%02o<-; %s = SHIFTER (%#o)\n", m_rsel, r_name(m_rsel), m_shifter));
 	}
 }
@@ -2279,8 +2279,6 @@ void alto2_cpu_device::execute_run()
 	m_next2 = m_task_next2[m_task];
 
 	do {
-		int do_bs, flags;
-
 		m_mpc = m_next;             // next instruction's micro program counter
 		m_mir = RD_UCODE(m_mpc);    // fetch the micro code
 
@@ -2303,13 +2301,15 @@ void alto2_cpu_device::execute_run()
 		 * or f2 == f2_const. These functions use the MIR BS field to
 		 * provide a part of the address to the constant ROM instead.
 		 */
-		do_bs = !(f1() == f1_const || f2() == f2_const);
+		bool do_bs = f1() != f1_const && f2() != f2_const;
 		if (do_bs && bs() == bs_read_md && check_mem_read_stall()) {
 			LOG((this,LOG_CPU,3, "   <-MD stall\n"));
 			continue;
 		}
+
 		// now read the next instruction field from the MIR and modify it
 		m_next = next() | m_next2;
+
 		// prefetch the next instruction's next field as next2
 		m_next2 = X_RDBITS(RD_UCODE(m_next), 32, NEXT0, NEXT9) | (m_next2 & ~ALTO2_UCODE_PAGE_MASK);
 		LOG((this,LOG_CPU,2,"%s-%04o: %011o r:%02o aluf:%02o bs:%02o f1:%02o f2:%02o t:%o l:%o next:%05o next2:%05o\n",
@@ -2323,9 +2323,9 @@ void alto2_cpu_device::execute_run()
 
 		// The constant memory is gated to the bus by F1 == f1_const, F2 == f2_const, or BS >= 4
 		if (!do_bs || bs() >= bs_task_4) {
-			UINT32 addr = 8 * m_rsel + bs();
+			const UINT32 addr = 8 * m_rsel + bs();
 			// FIXME: is the format of m_const_data endian safe?
-			UINT16 data = m_const_data[2*addr] | (m_const_data[2*addr+1] << 8);
+			const UINT16 data = m_const_data[2*addr] | (m_const_data[2*addr+1] << 8);
 			m_bus &= data;
 			LOG((this,LOG_CPU,2,"    %#o; BUS &= %#o CONST[%03o]\n", m_bus, data, addr));
 		}
@@ -2353,10 +2353,10 @@ void alto2_cpu_device::execute_run()
 		 *
 		 * B1 and B3-B7 are inverted on loading the PROM
 		 */
-		UINT8 a10 = m_alu_a10[(m_emu.skip << 4) | aluf()];
-		UINT32 alu = alu_74181(m_bus, m_t, a10);
+		const UINT8 a10 = m_alu_a10[(m_emu.skip << 4) | aluf()];
+		const UINT32 alu = alu_74181(m_bus, m_t, a10);
+		const int flags = a10 & (TSELECT | ALUM);
 		m_aluc0 = (alu >> 16) & 1;
-		flags = a10 & (TSELECT | ALUM);
 		m_alu = static_cast(alu);
 
 		// WRTRAM must happen now before L is changed
@@ -2426,17 +2426,18 @@ void alto2_cpu_device::execute_run()
 			}
 		}
 
-		/**
-		 * Subtract the microcycle time from the display time accu.
-		 * If it underflows, call the display state machine and add
-		 * the time for 32(!) pixel clocks to the accu.
-		 * This is very close to every seventh CPU cycle (really?)
-		 */
 		if (m_dsp_time >= 0) {
+			/**
+			 * Subtract the microcycle time from the display time accu.
+			 * If it underflows, call the display state machine and add
+			 * the time for 32(!) pixel clocks to the accu.
+			 * This is very close to every seventh CPU cycle
+			 */
 			m_dsp_time -= ALTO2_UCYCLE;
 			if (m_dsp_time < 0)
 				display_state_machine();
 		}
+
 		if (m_unload_time >= 0) {
 			/**
 			 * Subtract the microcycle time from the unload time accu.
@@ -2448,9 +2449,9 @@ void alto2_cpu_device::execute_run()
 			if (m_unload_time < 0)
 				unload_word();
 		}
-#if (USE_BITCLK_TIMER == 0)
+		
 		if (m_bitclk_time >= 0) {
-			/*
+			/**
 			 * Subtract the microcycle time from the bitclk time accu.
 			 * If it underflows, call the disk bitclk function which adds
 			 * the time for one bit as clocks to the accu, or ends
@@ -2459,7 +2460,6 @@ void alto2_cpu_device::execute_run()
 			m_bitclk_time -= ALTO2_UCYCLE;
 			disk_bitclk(nullptr, m_bitclk_index);
 		}
-#endif
 	} while (m_icount-- > 0);
 
 	/* save this task's mpc and address modifier */
@@ -2566,7 +2566,5 @@ void alto2_cpu_device::soft_reset()
 
 	m_dsp_time = 0;                 // reset the display state machine timing accu
 	m_unload_time = 0;              // reset the word unload timing accu
-#if (USE_BITCLK_TIMER == 0)
 	m_bitclk_time = 0;              // reset the bitclk timing accu
-#endif
 }
diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h
index 72567af3ae3..821286ae2fa 100644
--- a/src/devices/cpu/alto2/alto2cpu.h
+++ b/src/devices/cpu/alto2/alto2cpu.h
@@ -50,7 +50,6 @@ enum {
 #endif
 
 #define USE_PRIO_F9318          0           //!< define to 1 to use the F9318 priority encoder code (broken)
-#define USE_BITCLK_TIMER        0           //!< define to 1 to use a very high rate timer for the disk bit clock
 
 #define ALTO2_TASKS             16          //!< 16 task slots
 #define ALTO2_REGS              32          //!< 32 16-bit words in the R register file
@@ -592,10 +591,8 @@ private:
 	int m_dsp_time;                                 //!< display_state_machine() time accu
 	int m_unload_time;                              //!< unload word time accu
 	int m_unload_word;                              //!< unload word number
-#if (USE_BITCLK_TIMER == 0)
 	int m_bitclk_time;                              //!< bitclk call time accu
-	int m_bitclk_index;                             //!< bitclk index (bit number)
-#endif
+	int m_bitclk_index;                             //!< bitclk index (bit number in sector)
 
 	static const char *task_name(int task);         //!< human readable task names
 	static const char *r_name(UINT8 reg);           //!< human readable register names
diff --git a/src/devices/cpu/alto2/alto2dsm.cpp b/src/devices/cpu/alto2/alto2dsm.cpp
index 7139243d0ba..d899cb4f8b5 100644
--- a/src/devices/cpu/alto2/alto2dsm.cpp
+++ b/src/devices/cpu/alto2/alto2dsm.cpp
@@ -214,14 +214,14 @@ offs_t alto2_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
 			(static_cast(oprom[1]) << 16) |
 			(static_cast(oprom[2]) << 8) |
 			(static_cast(oprom[3]) << 0);
-	UINT8 rsel = static_cast((mir >> 27) & 31);
-	UINT8 aluf = static_cast((mir >> 23) & 15);
-	UINT8 bs = static_cast((mir >> 20) & 7);
-	UINT8 f1 = static_cast((mir >> 16) & 15);
-	UINT8 f2 = static_cast((mir >> 12) & 15);
-	UINT8 t = static_cast((mir >> 11) & 1);
-	UINT8 l = static_cast((mir >> 10) & 1);
-	offs_t next = static_cast(mir & 1023);
+	int rsel = (mir >> 27) & 31;
+	int aluf = (mir >> 23) & 15;
+	int bs = (mir >> 20) & 7;
+	int f1 = (mir >> 16) & 15;
+	int f2 = (mir >> 12) & 15;
+	int t = (mir >> 11) & 1;
+	int l = (mir >> 10) & 1;
+	offs_t next = mir & 1023;
 	const UINT8* src = oprom - 4 * pc + 4 * next;
 	UINT32 next2 =  (static_cast(src[0]) << 24) |
 			(static_cast(src[1]) << 16) |
@@ -244,52 +244,52 @@ offs_t alto2_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
 	switch (aluf) {
 	case  0: // T?: BUS
 		// this is somehow redundant and just wasting space
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS) ");
+		// dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS) ");
 		break;
 	case  1: //   : T
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(T) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "T ");
 		break;
 	case  2: // T?: BUS OR T
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS|T) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS|T ");
 		break;
 	case  3: //   : BUS AND T
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS&T) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS&T ");
 		break;
 	case  4: //   : BUS XOR T
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS^T) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS^T ");
 		break;
 	case  5: // T?: BUS + 1
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS+1) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS+1 ");
 		break;
 	case  6: // T?: BUS - 1
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS-1) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS-1 ");
 		break;
 	case  7: //   : BUS + T
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS+T) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS+T ");
 		break;
 	case  8: //   : BUS - T
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS-T) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS-T ");
 		break;
 	case  9: //   : BUS - T - 1
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS-T-1) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS-T-1 ");
 		break;
 	case 10: // T?: BUS + T + 1
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS+T+1) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS+T+1 ");
 		break;
 	case 11: // T?: BUS + SKIP
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS+SKIP) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS+SKIP ");
 		break;
 	case 12: // T?: BUS, T (AND)
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS,T) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS,T ");
 		break;
 	case 13: //   : BUS AND NOT T
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "ALUF(BUS&~T) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS&~T ");
 		break;
 	case 14: //   : undefined
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "*ALUF(BUS) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "*BUS ");
 		break;
 	case 15: //   : undefined
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "*ALUF(BUS) ");
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "*BUS ");
 		break;
 	}
 
@@ -344,7 +344,7 @@ offs_t alto2_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
 		break;
 	case 7: // put the constant from PROM (RSELECT,BS) on the bus
 		pa = (rsel << 3) | bs;
-		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS<-%05o CONST[%03o]", const_prom[pa], pa);
+		dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS<-%05o", const_prom[pa]);
 		break;
 	default:
 		dst += snprintf(dst, len - (size_t)(dst - buffer), "F1_%02o ", f1);
@@ -373,13 +373,13 @@ offs_t alto2_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
 		dst += snprintf(dst, len - (size_t)(dst - buffer), "[ALUC0 ? %s:%s] ",
 			addrname((prefetch | 1) & MCODE_MASK), addrname(prefetch & MCODE_MASK));
 		break;
-	case 6: // deliver BUS data to memory
+	case 6: // write BUS data to memory
 		dst += snprintf(dst, len - (size_t)(dst - buffer), "MD<-BUS ");
 		break;
-	case 7: // put on the bus the constant from PROM (RSELECT,BS)
+	case 7: // put the constant from PROM (RSELECT,BS) on the bus
 		if (f1 != 7) {
 			pa = 8 * rsel + bs;
-			dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS<-%05o CONST[%03o]", const_prom[pa], pa);
+			dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS<-%05o", const_prom[pa]);
 		}
 		break;
 	default:
@@ -387,10 +387,5 @@ offs_t alto2_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
 		break;
 	}
 
-	// Simplify output based on text
-	// ALUF(BUS) is a no-op if followed by BUS<-
-	while (NULL != (dst = strstr(buffer, "ALUF(BUS) BUS<-")))
-		strcpy(dst, dst + 15);
-
 	return result;
 }

From 3917850b6197950e5671f4d3b9cb0b9c921b798d Mon Sep 17 00:00:00 2001
From: Miodrag Milanovic 
Date: Sat, 6 Aug 2016 14:20:16 +0200
Subject: [PATCH 043/116] Update BX and BGFX (nw)

---
 .../bgfx/3rdparty/glsl-optimizer/Changelog.md |   17 +
 .../glsl-optimizer/src/glsl/ast_to_hir.cpp    |    6 +
 .../3rdparty/glsl-optimizer/src/glsl/ir.cpp   |    4 +-
 .../3rdparty/glsl-optimizer/src/glsl/ir.h     |    2 +-
 .../glsl-optimizer/src/glsl/ir_clone.cpp      |    3 +-
 .../src/glsl/ir_print_metal_visitor.cpp       |   11 +-
 .../tests/fragment/const-precision-inES3.txt  |   40 +
 .../tests/fragment/const-precision-outES3.txt |   33 +
 .../fragment/const-precision-outES3Metal.txt  |   45 +
 ...lobal-struct-constant-init-metal-inES3.txt |  685 +++++++
 ...obal-struct-constant-init-metal-outES3.txt |  187 ++
 ...struct-constant-init-metal-outES3Metal.txt |  199 +++
 .../bgfx/3rdparty/ocornut-imgui/imgui.cpp     |  430 ++---
 3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h  |   25 +-
 .../3rdparty/ocornut-imgui/imgui_demo.cpp     |   30 +-
 .../3rdparty/ocornut-imgui/imgui_draw.cpp     |   19 +-
 .../3rdparty/ocornut-imgui/imgui_internal.h   |   24 +-
 .../bgfx/3rdparty/remotery/lib/Remotery.c     |  357 +++-
 .../bgfx/3rdparty/remotery/lib/Remotery.h     |   41 +-
 3rdparty/bgfx/3rdparty/remotery/readme.md     |    4 +-
 .../bgfx/3rdparty/remotery/sample/sample.c    |   18 +-
 .../3rdparty/remotery/vis/Code/Console.js     |   87 +-
 .../3rdparty/remotery/vis/Code/Remotery.js    |    3 +
 .../3rdparty/remotery/vis/Styles/Remotery.css |    1 +
 .../BrowserLib/WindowManager/Code/EditBox.js  |   24 +-
 .../bgfx/3rdparty/remotery/vis/index.html     |    1 +
 .../bgfx/3rdparty/renderdoc/renderdoc_app.h   |  570 +++---
 3rdparty/bgfx/3rdparty/stb/stb_image.c        |   50 +-
 3rdparty/bgfx/README.md                       |   11 +-
 .../14-shadowvolumes/shadowvolumes.cpp        |   66 +-
 .../15-shadowmaps-simple/fs_sms_shadow.sc     |    1 -
 3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc  |   41 +-
 3rdparty/bgfx/examples/18-ibl/ibl.cpp         |    4 +-
 .../bgfx/examples/18-ibl/vs_ibl_skybox.sc     |    4 +-
 3rdparty/bgfx/examples/19-oit/oit.cpp         |   12 +-
 .../examples/21-deferred/fs_deferred_light.sc |    8 +-
 .../bgfx/examples/29-debugdraw/debugdraw.cpp  |   10 +-
 .../bgfx/examples/29-debugdraw/screenshot.png |  Bin 0 -> 75915 bytes
 .../bgfx/examples/30-picking/fs_picking_id.sc |   16 +
 .../examples/30-picking/fs_picking_shaded.sc  |   44 +
 3rdparty/bgfx/examples/30-picking/makefile    |   18 +
 3rdparty/bgfx/examples/30-picking/picking.cpp |  423 +++++
 .../bgfx/examples/30-picking/screenshot.png   |  Bin 0 -> 72262 bytes
 .../bgfx/examples/30-picking/varying.def.sc   |   10 +
 .../examples/30-picking/vs_picking_shaded.sc  |   25 +
 .../bgfx/examples/31-rsm/fs_rsm_combine.sc    |  131 ++
 .../bgfx/examples/31-rsm/fs_rsm_gbuffer.sc    |   22 +
 .../bgfx/examples/31-rsm/fs_rsm_lbuffer.sc    |   67 +
 .../bgfx/examples/31-rsm/fs_rsm_shadow.sc     |   22 +
 3rdparty/bgfx/examples/31-rsm/makefile        |   18 +
 .../examples/31-rsm/reflectiveshadowmap.cpp   |  745 ++++++++
 3rdparty/bgfx/examples/31-rsm/screenshot.png  |  Bin 0 -> 207402 bytes
 3rdparty/bgfx/examples/31-rsm/varying.def.sc  |   10 +
 .../bgfx/examples/31-rsm/vs_rsm_combine.sc    |   15 +
 .../bgfx/examples/31-rsm/vs_rsm_gbuffer.sc    |   27 +
 .../bgfx/examples/31-rsm/vs_rsm_lbuffer.sc    |   60 +
 .../bgfx/examples/31-rsm/vs_rsm_shadow.sc     |   24 +
 .../bgfx/examples/assets/meshes/build.ninja   |   18 -
 .../bgfx/examples/assets/meshes/meshes.ninja  |   17 +
 .../bgfx/examples/assets/textures/build.ninja |    8 -
 .../examples/assets/textures/textures.ninja   |    7 +
 3rdparty/bgfx/examples/common/cube_atlas.cpp  |    1 +
 .../examples/common/debugdraw/debugdraw.cpp   |  532 ++++--
 .../examples/common/debugdraw/debugdraw.h     |    9 +-
 .../examples/common/debugdraw/varying.def.sc  |    1 +
 .../common/debugdraw/vs_debugdraw_fill.bin.h  |  233 ++-
 .../common/debugdraw/vs_debugdraw_fill.sc     |    5 +-
 .../debugdraw/vs_debugdraw_fill_lit.bin.h     |  365 ++--
 .../common/debugdraw/vs_debugdraw_fill_lit.sc |    9 +-
 3rdparty/bgfx/examples/common/entry/entry.cpp |   18 +-
 .../examples/common/entry/entry_android.cpp   |   52 +-
 .../bgfx/examples/common/entry/entry_ios.mm   |    2 +-
 .../common/font/fs_font_distance_field.bin.h  |   86 +-
 .../fs_font_distance_field_subpixel.bin.h     |  170 +-
 .../bgfx/examples/common/nanovg/nanovg.cpp    |    2 +-
 3rdparty/bgfx/examples/common/nanovg/nanovg.h |   10 +-
 .../examples/common/nanovg/nanovg_bgfx.cpp    |    8 +-
 .../bgfx/examples/common/nanovg/nanovg_bgfx.h |   18 +
 .../bgfx/examples/runtime/meshes/bunny.bin    |  Bin 974323 -> 2588410 bytes
 .../examples/runtime/meshes/hollowcube.bin    |  Bin 24144 -> 40281 bytes
 3rdparty/bgfx/examples/runtime/meshes/orb.bin |  Bin 1494272 -> 2818102 bytes
 .../examples/runtime/meshes/unit_sphere.bin   |  Bin 0 -> 6513 bytes
 .../runtime/shaders/dx11/fs_ibl_mesh.bin      |  Bin 3378 -> 3486 bytes
 .../runtime/shaders/dx11/fs_picking_id.bin    |  Bin 0 -> 387 bytes
 .../shaders/dx11/fs_picking_shaded.bin        |  Bin 0 -> 1200 bytes
 .../runtime/shaders/dx11/fs_rsm_combine.bin   |  Bin 0 -> 3396 bytes
 .../runtime/shaders/dx11/fs_rsm_gbuffer.bin   |  Bin 0 -> 369 bytes
 .../runtime/shaders/dx11/fs_rsm_lbuffer.bin   |  Bin 0 -> 1226 bytes
 .../runtime/shaders/dx11/fs_rsm_shadow.bin    |  Bin 0 -> 317 bytes
 .../runtime/shaders/dx11/fs_sms_shadow.bin    |  Bin 228 -> 148 bytes
 .../runtime/shaders/dx11/vs_ibl_skybox.bin    |  Bin 717 -> 806 bytes
 .../shaders/dx11/vs_picking_shaded.bin        |  Bin 0 -> 1045 bytes
 .../runtime/shaders/dx11/vs_rsm_combine.bin   |  Bin 0 -> 518 bytes
 .../runtime/shaders/dx11/vs_rsm_gbuffer.bin   |  Bin 0 -> 812 bytes
 .../runtime/shaders/dx11/vs_rsm_lbuffer.bin   |  Bin 0 -> 1105 bytes
 .../runtime/shaders/dx11/vs_rsm_shadow.bin    |  Bin 0 -> 756 bytes
 .../runtime/shaders/dx9/fs_ibl_mesh.bin       |  Bin 1963 -> 2027 bytes
 .../runtime/shaders/dx9/fs_picking_id.bin     |  Bin 0 -> 228 bytes
 .../runtime/shaders/dx9/fs_picking_shaded.bin |  Bin 0 -> 669 bytes
 .../runtime/shaders/dx9/fs_rsm_combine.bin    |  Bin 0 -> 2433 bytes
 .../runtime/shaders/dx9/fs_rsm_gbuffer.bin    |  Bin 0 -> 238 bytes
 .../runtime/shaders/dx9/fs_rsm_lbuffer.bin    |  Bin 0 -> 903 bytes
 .../runtime/shaders/dx9/fs_rsm_shadow.bin     |  Bin 0 -> 210 bytes
 .../runtime/shaders/dx9/vs_ibl_skybox.bin     |  Bin 486 -> 607 bytes
 .../runtime/shaders/dx9/vs_picking_shaded.bin |  Bin 0 -> 678 bytes
 .../runtime/shaders/dx9/vs_rsm_combine.bin    |  Bin 0 -> 323 bytes
 .../runtime/shaders/dx9/vs_rsm_gbuffer.bin    |  Bin 0 -> 501 bytes
 .../runtime/shaders/dx9/vs_rsm_lbuffer.bin    |  Bin 0 -> 908 bytes
 .../runtime/shaders/dx9/vs_rsm_shadow.bin     |  Bin 0 -> 505 bytes
 .../runtime/shaders/gles/fs_ibl_mesh.bin      |  Bin 3507 -> 3567 bytes
 .../runtime/shaders/gles/fs_picking_id.bin    |  Bin 0 -> 124 bytes
 .../shaders/gles/fs_picking_shaded.bin        |  Bin 0 -> 874 bytes
 .../runtime/shaders/gles/fs_rsm_combine.bin   |  Bin 0 -> 7922 bytes
 .../runtime/shaders/gles/fs_rsm_gbuffer.bin   |  Bin 0 -> 188 bytes
 .../runtime/shaders/gles/fs_rsm_lbuffer.bin   |  Bin 0 -> 1309 bytes
 .../runtime/shaders/gles/fs_rsm_shadow.bin    |  Bin 0 -> 173 bytes
 .../runtime/shaders/gles/fs_sms_shadow.bin    |  Bin 165 -> 30 bytes
 .../runtime/shaders/gles/vs_ibl_skybox.bin    |  Bin 633 -> 772 bytes
 .../shaders/gles/vs_picking_shaded.bin        |  Bin 0 -> 793 bytes
 .../runtime/shaders/gles/vs_rsm_combine.bin   |  Bin 0 -> 337 bytes
 .../runtime/shaders/gles/vs_rsm_gbuffer.bin   |  Bin 0 -> 506 bytes
 .../runtime/shaders/gles/vs_rsm_lbuffer.bin   |  Bin 0 -> 1196 bytes
 .../runtime/shaders/gles/vs_rsm_shadow.bin    |  Bin 0 -> 516 bytes
 .../runtime/shaders/glsl/fs_ibl_mesh.bin      |  Bin 3255 -> 3315 bytes
 .../runtime/shaders/glsl/fs_picking_id.bin    |  Bin 0 -> 118 bytes
 .../shaders/glsl/fs_picking_shaded.bin        |  Bin 0 -> 826 bytes
 .../runtime/shaders/glsl/fs_rsm_combine.bin   |  Bin 0 -> 7517 bytes
 .../runtime/shaders/glsl/fs_rsm_gbuffer.bin   |  Bin 0 -> 176 bytes
 .../runtime/shaders/glsl/fs_rsm_lbuffer.bin   |  Bin 0 -> 1102 bytes
 .../runtime/shaders/glsl/fs_rsm_shadow.bin    |  Bin 0 -> 161 bytes
 .../runtime/shaders/glsl/fs_sms_shadow.bin    |  Bin 157 -> 30 bytes
 .../runtime/shaders/glsl/vs_ibl_skybox.bin    |  Bin 591 -> 718 bytes
 .../shaders/glsl/vs_picking_shaded.bin        |  Bin 0 -> 721 bytes
 .../runtime/shaders/glsl/vs_rsm_combine.bin   |  Bin 0 -> 307 bytes
 .../runtime/shaders/glsl/vs_rsm_gbuffer.bin   |  Bin 0 -> 470 bytes
 .../runtime/shaders/glsl/vs_rsm_lbuffer.bin   |  Bin 0 -> 1116 bytes
 .../runtime/shaders/glsl/vs_rsm_shadow.bin    |  Bin 0 -> 474 bytes
 .../runtime/shaders/metal/fs_callback.bin     |  Bin 804 -> 805 bytes
 .../shaders/metal/fs_deferred_light.bin       |  Bin 2518 -> 2577 bytes
 .../runtime/shaders/metal/fs_ibl_mesh.bin     |  Bin 4135 -> 4229 bytes
 .../runtime/shaders/metal/fs_picking_id.bin   |  Bin 0 -> 435 bytes
 .../shaders/metal/fs_picking_shaded.bin       |  Bin 0 -> 1176 bytes
 .../runtime/shaders/metal/fs_rsm_combine.bin  |  Bin 0 -> 10144 bytes
 .../runtime/shaders/metal/fs_rsm_gbuffer.bin  |  Bin 0 -> 549 bytes
 .../runtime/shaders/metal/fs_rsm_lbuffer.bin  |  Bin 0 -> 1883 bytes
 .../runtime/shaders/metal/fs_rsm_shadow.bin   |  Bin 0 -> 491 bytes
 .../runtime/shaders/metal/fs_sms_shadow.bin   |  Bin 477 -> 271 bytes
 .../runtime/shaders/metal/fs_wf_mesh.bin      |  Bin 1861 -> 1862 bytes
 .../runtime/shaders/metal/fs_wf_wireframe.bin |  Bin 1099 -> 1100 bytes
 .../runtime/shaders/metal/vs_ibl_skybox.bin   |  Bin 962 -> 1082 bytes
 .../shaders/metal/vs_picking_shaded.bin       |  Bin 0 -> 1086 bytes
 .../runtime/shaders/metal/vs_rsm_combine.bin  |  Bin 0 -> 659 bytes
 .../runtime/shaders/metal/vs_rsm_gbuffer.bin  |  Bin 0 -> 815 bytes
 .../runtime/shaders/metal/vs_rsm_lbuffer.bin  |  Bin 0 -> 1801 bytes
 .../runtime/shaders/metal/vs_rsm_shadow.bin   |  Bin 0 -> 829 bytes
 3rdparty/bgfx/include/bgfx/bgfx.h             |   89 +-
 3rdparty/bgfx/include/bgfx/bgfxdefines.h      |    3 +-
 3rdparty/bgfx/include/bgfx/bgfxplatform.h     |    2 +-
 3rdparty/bgfx/include/bgfx/c99/bgfx.h         |   25 +
 3rdparty/bgfx/include/bgfx/c99/bgfxplatform.h |    1 +
 3rdparty/bgfx/makefile                        |    4 +
 .../scripts/{common.ninja => build.ninja}     |   10 +
 3rdparty/bgfx/scripts/genie.lua               |    2 +
 3rdparty/bgfx/scripts/shader-embeded.mk       |    6 +-
 3rdparty/bgfx/src/bgfx.cpp                    |  168 +-
 3rdparty/bgfx/src/bgfx_p.h                    |   45 +-
 3rdparty/bgfx/src/debug_renderdoc.cpp         |    4 +-
 3rdparty/bgfx/src/glcontext_eagl.mm           |    4 +-
 3rdparty/bgfx/src/glimports.h                 |    8 +-
 3rdparty/bgfx/src/image.cpp                   |  194 +-
 3rdparty/bgfx/src/renderer_d3d11.cpp          |  117 +-
 3rdparty/bgfx/src/renderer_d3d11.h            |    9 +-
 3rdparty/bgfx/src/renderer_d3d12.cpp          |   10 +-
 3rdparty/bgfx/src/renderer_d3d9.cpp           |   35 +-
 3rdparty/bgfx/src/renderer_d3d9.h             |   14 +-
 3rdparty/bgfx/src/renderer_gl.cpp             |  150 +-
 3rdparty/bgfx/src/renderer_gl.h               |    1 +
 3rdparty/bgfx/src/renderer_mtl.h              |  167 +-
 3rdparty/bgfx/src/renderer_mtl.mm             | 1587 +++++++++++++----
 3rdparty/bgfx/src/renderer_null.cpp           |    2 +-
 3rdparty/bgfx/src/topology.cpp                |  197 +-
 3rdparty/bgfx/src/topology.h                  |   25 +-
 3rdparty/bgfx/tools/shaderc/shaderc.cpp       |  145 +-
 3rdparty/bgfx/tools/texturec/texturec.cpp     |   11 +-
 3rdparty/bgfx/tools/texturev/texturev.cpp     |    2 +
 3rdparty/bx/include/bx/crtimpl.h              |    4 +-
 3rdparty/bx/include/bx/float4_langext.h       |  482 -----
 3rdparty/bx/include/bx/float4_neon.h          |  525 ------
 3rdparty/bx/include/bx/float4_ni.h            |  509 ------
 3rdparty/bx/include/bx/float4_sse.h           |  461 -----
 3rdparty/bx/include/bx/float4_swizzle.inl     |  266 ---
 3rdparty/bx/include/bx/float4_t.h             |   35 -
 3rdparty/bx/include/bx/float4x4_t.h           |  202 +--
 3rdparty/bx/include/bx/fpumath.h              |   26 +-
 3rdparty/bx/include/bx/handlealloc.h          |    4 +-
 3rdparty/bx/include/bx/macros.h               |    8 +-
 3rdparty/bx/include/bx/os.h                   |   10 +-
 3rdparty/bx/include/bx/platform.h             |    1 -
 3rdparty/bx/include/bx/readerwriter.h         |    8 +-
 3rdparty/bx/include/bx/simd128_langext.inl    |  515 ++++++
 3rdparty/bx/include/bx/simd128_neon.inl       |  562 ++++++
 .../bx/{float4_ref.h => simd128_ref.inl}      |  380 ++--
 3rdparty/bx/include/bx/simd128_sse.inl        |  647 +++++++
 3rdparty/bx/include/bx/simd128_swizzle.inl    |  266 +++
 3rdparty/bx/include/bx/simd256_avx.inl        |    9 +
 3rdparty/bx/include/bx/simd256_ref.inl        |    9 +
 3rdparty/bx/include/bx/simd_ni.inl            |  558 ++++++
 3rdparty/bx/include/bx/simd_t.h               |  438 +++++
 3rdparty/bx/include/bx/string.h               |    2 +-
 3rdparty/bx/scripts/bx.lua                    |    1 +
 3rdparty/bx/scripts/toolchain.lua             |   10 +-
 3rdparty/bx/tests/float4_t.cpp                |  309 ----
 3rdparty/bx/tests/simd_t.cpp                  |  309 ++++
 3rdparty/bx/tests/vector_nodefault.cpp        |   10 +-
 3rdparty/bx/tools/bin/darwin/genie            |  Bin 483616 -> 487712 bytes
 3rdparty/bx/tools/bin/linux/genie             |  Bin 458392 -> 462504 bytes
 3rdparty/bx/tools/bin/windows/genie.exe       |  Bin 460800 -> 467456 bytes
 scripts/src/3rdparty.lua                      |   11 +-
 218 files changed, 10942 insertions(+), 4993 deletions(-)
 create mode 100644 3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-inES3.txt
 create mode 100644 3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-outES3.txt
 create mode 100644 3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-outES3Metal.txt
 create mode 100644 3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-inES3.txt
 create mode 100644 3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-outES3.txt
 create mode 100644 3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-outES3Metal.txt
 create mode 100644 3rdparty/bgfx/examples/29-debugdraw/screenshot.png
 create mode 100644 3rdparty/bgfx/examples/30-picking/fs_picking_id.sc
 create mode 100644 3rdparty/bgfx/examples/30-picking/fs_picking_shaded.sc
 create mode 100644 3rdparty/bgfx/examples/30-picking/makefile
 create mode 100644 3rdparty/bgfx/examples/30-picking/picking.cpp
 create mode 100644 3rdparty/bgfx/examples/30-picking/screenshot.png
 create mode 100644 3rdparty/bgfx/examples/30-picking/varying.def.sc
 create mode 100644 3rdparty/bgfx/examples/30-picking/vs_picking_shaded.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/fs_rsm_combine.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/fs_rsm_gbuffer.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/fs_rsm_lbuffer.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/fs_rsm_shadow.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/makefile
 create mode 100644 3rdparty/bgfx/examples/31-rsm/reflectiveshadowmap.cpp
 create mode 100644 3rdparty/bgfx/examples/31-rsm/screenshot.png
 create mode 100644 3rdparty/bgfx/examples/31-rsm/varying.def.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/vs_rsm_combine.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/vs_rsm_gbuffer.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/vs_rsm_lbuffer.sc
 create mode 100644 3rdparty/bgfx/examples/31-rsm/vs_rsm_shadow.sc
 delete mode 100644 3rdparty/bgfx/examples/assets/meshes/build.ninja
 create mode 100644 3rdparty/bgfx/examples/assets/meshes/meshes.ninja
 delete mode 100644 3rdparty/bgfx/examples/assets/textures/build.ninja
 create mode 100644 3rdparty/bgfx/examples/assets/textures/textures.ninja
 create mode 100644 3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h
 create mode 100644 3rdparty/bgfx/examples/runtime/meshes/unit_sphere.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_id.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/vs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_id.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/vs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/fs_picking_id.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/fs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/fs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/fs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/fs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/fs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/vs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/vs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/vs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/vs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/gles/vs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_id.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/fs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/vs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_id.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_shadow.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/vs_picking_shaded.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_combine.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin
 create mode 100644 3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_shadow.bin
 rename 3rdparty/bgfx/scripts/{common.ninja => build.ninja} (65%)
 delete mode 100644 3rdparty/bx/include/bx/float4_langext.h
 delete mode 100644 3rdparty/bx/include/bx/float4_neon.h
 delete mode 100644 3rdparty/bx/include/bx/float4_ni.h
 delete mode 100644 3rdparty/bx/include/bx/float4_sse.h
 delete mode 100644 3rdparty/bx/include/bx/float4_swizzle.inl
 delete mode 100644 3rdparty/bx/include/bx/float4_t.h
 create mode 100644 3rdparty/bx/include/bx/simd128_langext.inl
 create mode 100644 3rdparty/bx/include/bx/simd128_neon.inl
 rename 3rdparty/bx/include/bx/{float4_ref.h => simd128_ref.inl} (57%)
 create mode 100644 3rdparty/bx/include/bx/simd128_sse.inl
 create mode 100644 3rdparty/bx/include/bx/simd128_swizzle.inl
 create mode 100644 3rdparty/bx/include/bx/simd256_avx.inl
 create mode 100644 3rdparty/bx/include/bx/simd256_ref.inl
 create mode 100644 3rdparty/bx/include/bx/simd_ni.inl
 create mode 100644 3rdparty/bx/include/bx/simd_t.h
 delete mode 100644 3rdparty/bx/tests/float4_t.cpp
 create mode 100644 3rdparty/bx/tests/simd_t.cpp

diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/Changelog.md b/3rdparty/bgfx/3rdparty/glsl-optimizer/Changelog.md
index 39ce18b2541..92206386f12 100644
--- a/3rdparty/bgfx/3rdparty/glsl-optimizer/Changelog.md
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/Changelog.md
@@ -1,6 +1,23 @@
 GLSL optimizer Change Log
 =========================
 
+2016 06
+-------
+
+Fixed:
+
+* Fixed Metal translation in some cases having wrong precision on constants or constant arrays.
+
+
+2016 05
+-------
+
+Fixed:
+
+* Fixed Metal translation in some cases having wrong precision on struct members.
+* Fixed Metal translation in some cases emitting struct declarations vs. constant initializers in wrong order.
+
+
 2016 03
 -------
 
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ast_to_hir.cpp b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ast_to_hir.cpp
index c19ca4321ef..1d0fcb37203 100644
--- a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ast_to_hir.cpp
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ast_to_hir.cpp
@@ -3042,6 +3042,12 @@ process_initializer(ir_variable *var, ast_declaration *decl,
    ir_dereference *const lhs = new(state) ir_dereference_variable(var);
    ir_rvalue *rhs = decl->initializer->hir(initializer_instructions, state);
 
+   /* Propagate precision qualifier for constant value */
+   if (type->qualifier.flags.q.constant) {
+      ir_constant *constant_value = rhs->constant_expression_value();
+      constant_value->set_precision((glsl_precision)type->qualifier.precision);
+   }
+	
    /* Calculate the constant value if this is a const or uniform
     * declaration.
     */
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir.cpp b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir.cpp
index 636736e5237..ffb37eed157 100644
--- a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir.cpp
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir.cpp
@@ -647,8 +647,8 @@ ir_constant::ir_constant()
 }
 
 ir_constant::ir_constant(const struct glsl_type *type,
-			 const ir_constant_data *data)
-   : ir_rvalue(ir_type_constant, glsl_precision_undefined)
+			 const ir_constant_data *data, glsl_precision precision)
+   : ir_rvalue(ir_type_constant, precision)
 {
    assert((type->base_type >= GLSL_TYPE_UINT)
 	  && (type->base_type <= GLSL_TYPE_BOOL));
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir.h b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir.h
index 6d21d0e2e15..953e85e4e86 100644
--- a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir.h
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir.h
@@ -2161,7 +2161,7 @@ union ir_constant_data {
 
 class ir_constant : public ir_rvalue {
 public:
-   ir_constant(const struct glsl_type *type, const ir_constant_data *data);
+   ir_constant(const struct glsl_type *type, const ir_constant_data *data, glsl_precision precision = glsl_precision_undefined);
    ir_constant(bool b, unsigned vector_elements=1);
    ir_constant(unsigned int u, unsigned vector_elements=1);
    ir_constant(int i, unsigned vector_elements=1);
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp
index a32a836458d..140e36ff71e 100644
--- a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_clone.cpp
@@ -330,7 +330,7 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const
    case GLSL_TYPE_INT:
    case GLSL_TYPE_FLOAT:
    case GLSL_TYPE_BOOL:
-      return new(mem_ctx) ir_constant(this->type, &this->value);
+      return new(mem_ctx) ir_constant(this->type, &this->value, this->precision);
 
    case GLSL_TYPE_STRUCT: {
       ir_constant *c = new(mem_ctx) ir_constant;
@@ -351,6 +351,7 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const
       ir_constant *c = new(mem_ctx) ir_constant;
 
       c->type = this->type;
+      c->set_precision(this->get_precision());
       c->array_elements = ralloc_array(c, ir_constant *, this->type->length);
       for (unsigned i = 0; i < this->type->length; i++) {
 	 c->array_elements[i] = this->array_elements[i]->clone(mem_ctx, NULL);
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_print_metal_visitor.cpp b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_print_metal_visitor.cpp
index 9f7071d9564..c7919a4c568 100644
--- a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_print_metal_visitor.cpp
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/ir_print_metal_visitor.cpp
@@ -99,6 +99,7 @@ struct metal_print_context
 	, inoutStr(ralloc_strdup(buffer, ""))
 	, uniformStr(ralloc_strdup(buffer, ""))
 	, paramsStr(ralloc_strdup(buffer, ""))
+	, typedeclStr(ralloc_strdup(buffer, ""))
 	, writingParams(false)
 	, matrixCastsDone(false)
 	, matrixConstructorsDone(false)
@@ -117,6 +118,7 @@ struct metal_print_context
 	string_buffer inoutStr;
 	string_buffer uniformStr;
 	string_buffer paramsStr;
+	string_buffer typedeclStr;
 	bool writingParams;
 	bool matrixCastsDone;
 	bool matrixConstructorsDone;
@@ -267,7 +269,10 @@ _mesa_print_ir_metal(exec_list *instructions,
 			if (var->data.mode == ir_var_shader_inout)
 				strOut = &ctx.inoutStr;
 		}
-
+		
+		if (ir->ir_type == ir_type_typedecl) {
+			strOut = &ctx.typedeclStr;
+		}
 
 		ir_print_metal_visitor v (ctx, *strOut, >racker, mode, state);
 		v.loopstate = ls;
@@ -293,6 +298,8 @@ _mesa_print_ir_metal(exec_list *instructions,
 	ctx.uniformStr.asprintf_append("};\n");
 
 	// emit global array/struct constants
+	
+	ctx.prefixStr.asprintf_append("%s", ctx.typedeclStr.c_str());
 	foreach_in_list_safe(gconst_entry_metal, node, >racker.global_constants)
 	{
 		ir_constant* c = node->ir;
@@ -1968,7 +1975,7 @@ ir_print_metal_visitor::visit(ir_typedecl_statement *ir)
 		buffer.asprintf_append ("  ");
 		//if (state->es_shader)
 		//	buffer.asprintf_append ("%s", get_precision_string(s->fields.structure[j].precision)); //@TODO
-		print_type(buffer, ir, s->fields.structure[j].type, false);
+		print_type_precision(buffer, s->fields.structure[j].type, s->fields.structure[j].precision, false);
 		buffer.asprintf_append (" %s", s->fields.structure[j].name);
 		print_type_post(buffer, s->fields.structure[j].type, false);
 		buffer.asprintf_append (";\n");
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-inES3.txt b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-inES3.txt
new file mode 100644
index 00000000000..a1eb058d651
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-inES3.txt
@@ -0,0 +1,40 @@
+#version 300 es
+#define gl_FragData _glesFragData
+layout(location = 0) out mediump vec4 _glesFragData[1];
+
+struct v2f {
+    highp vec4 pos;
+    mediump vec2 uv;
+};
+
+struct u2v {
+    highp vec4 vertex;
+    mediump vec2 texcoord;
+};
+
+const mediump vec3[3] ha = vec3[3]( vec3( 1.0, 2.0, 3.0), vec3( 4.0, 5.0, 6.0), vec3( 7.0, 8.0, 9.0));
+const highp vec3[3] fa = vec3[3]( vec3( 11.0, 12.0, 13.0), vec3( 14.0, 15.0, 16.0), vec3( 17.0, 18.0, 19.0));
+
+mediump vec4 frag( in v2f i ) {
+    mediump vec3 h = vec3( 0.0);
+    highp vec3 f = vec3( 0.0);
+    highp vec3 p = vec3( i.uv.xy, 1.0);
+    highp int j = 0;
+    for ( ; (j < int((i.uv.x * 3.0))); (j++)) {
+        h += ha[j];
+        f += fa[j];
+        f += (p * ha[0]);
+    }
+    return vec4( h.xy, f.xy);
+}
+
+in mediump vec2 xlv_TEXCOORD0;
+void main() {
+    mediump vec4 xl_retval;
+    v2f xlt_i;
+    xlt_i.pos = vec4(0.0);
+    xlt_i.uv = vec2(xlv_TEXCOORD0);
+    xl_retval = frag( xlt_i);
+    gl_FragData[0] = vec4(xl_retval);
+}
+
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-outES3.txt b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-outES3.txt
new file mode 100644
index 00000000000..6676a2e8857
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-outES3.txt
@@ -0,0 +1,33 @@
+#version 300 es
+layout(location=0) out mediump vec4 _glesFragData[1];
+in mediump vec2 xlv_TEXCOORD0;
+void main ()
+{
+  mediump vec4 tmpvar_1;
+  mediump vec2 tmpvar_2;
+  tmpvar_2 = xlv_TEXCOORD0;
+  highp vec3 p_4;
+  highp vec3 f_5;
+  mediump vec3 h_6;
+  h_6 = vec3(0.0, 0.0, 0.0);
+  f_5 = vec3(0.0, 0.0, 0.0);
+  mediump vec3 tmpvar_7;
+  tmpvar_7.z = 1.0;
+  tmpvar_7.xy = xlv_TEXCOORD0;
+  p_4 = tmpvar_7;
+  for (highp int j_3 = 0; j_3 < int((tmpvar_2.x * 3.0)); j_3++) {
+    h_6 = (h_6 + vec3[3](vec3(1.0, 2.0, 3.0), vec3(4.0, 5.0, 6.0), vec3(7.0, 8.0, 9.0))[j_3]);
+    f_5 = (f_5 + vec3[3](vec3(11.0, 12.0, 13.0), vec3(14.0, 15.0, 16.0), vec3(17.0, 18.0, 19.0))[j_3]);
+    f_5 = (f_5 + (p_4 * vec3(1.0, 2.0, 3.0)));
+  };
+  highp vec4 tmpvar_8;
+  tmpvar_8.xy = h_6.xy;
+  tmpvar_8.zw = f_5.xy;
+  tmpvar_1 = tmpvar_8;
+  _glesFragData[0] = tmpvar_1;
+}
+
+
+// stats: 12 alu 0 tex 2 flow
+// inputs: 1
+//  #0: xlv_TEXCOORD0 (medium float) 2x1 [-1]
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-outES3Metal.txt b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-outES3Metal.txt
new file mode 100644
index 00000000000..78a6ad1bf92
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/const-precision-outES3Metal.txt
@@ -0,0 +1,45 @@
+#include 
+#pragma clang diagnostic ignored "-Wparentheses-equality"
+using namespace metal;
+constant half3 _xlat_mtl_const1[3] = {float3(1.0, 2.0, 3.0), float3(4.0, 5.0, 6.0), float3(7.0, 8.0, 9.0)};
+constant float3 _xlat_mtl_const2[3] = {float3(11.0, 12.0, 13.0), float3(14.0, 15.0, 16.0), float3(17.0, 18.0, 19.0)};
+struct xlatMtlShaderInput {
+  half2 xlv_TEXCOORD0;
+};
+struct xlatMtlShaderOutput {
+  half4 _glesFragData_0 [[color(0)]];
+};
+struct xlatMtlShaderUniform {
+};
+fragment xlatMtlShaderOutput xlatMtlMain (xlatMtlShaderInput _mtl_i [[stage_in]], constant xlatMtlShaderUniform& _mtl_u [[buffer(0)]])
+{
+  xlatMtlShaderOutput _mtl_o;
+  half4 tmpvar_1;
+  half2 tmpvar_2;
+  tmpvar_2 = _mtl_i.xlv_TEXCOORD0;
+  float3 p_4;
+  float3 f_5;
+  half3 h_6;
+  h_6 = half3(float3(0.0, 0.0, 0.0));
+  f_5 = float3(0.0, 0.0, 0.0);
+  half3 tmpvar_7;
+  tmpvar_7.z = half(1.0);
+  tmpvar_7.xy = _mtl_i.xlv_TEXCOORD0;
+  p_4 = float3(tmpvar_7);
+  for (int j_3 = 0; j_3 < short((tmpvar_2.x * (half)3.0)); j_3++) {
+    h_6 = (h_6 + _xlat_mtl_const1[j_3]);
+    f_5 = (f_5 + _xlat_mtl_const2[j_3]);
+    f_5 = (f_5 + (p_4 * float3(1.0, 2.0, 3.0)));
+  };
+  float4 tmpvar_8;
+  tmpvar_8.xy = float2(h_6.xy);
+  tmpvar_8.zw = f_5.xy;
+  tmpvar_1 = half4(tmpvar_8);
+  _mtl_o._glesFragData_0 = tmpvar_1;
+  return _mtl_o;
+}
+
+
+// stats: 12 alu 0 tex 2 flow
+// inputs: 1
+//  #0: xlv_TEXCOORD0 (medium float) 2x1 [-1]
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-inES3.txt b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-inES3.txt
new file mode 100644
index 00000000000..e6ef84c2bca
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-inES3.txt
@@ -0,0 +1,685 @@
+#version 300 es
+vec4 xll_texCUBElod(samplerCube s, vec4 coord) {
+  return textureLod( s, coord.xyz, coord.w);
+}
+float xll_shadow2D(mediump sampler2DShadow s, vec3 coord) { return texture (s, coord); }
+float xll_saturate_f( float x) {
+  return clamp( x, 0.0, 1.0);
+}
+vec2 xll_saturate_vf2( vec2 x) {
+  return clamp( x, 0.0, 1.0);
+}
+vec3 xll_saturate_vf3( vec3 x) {
+  return clamp( x, 0.0, 1.0); 
+}
+vec4 xll_saturate_vf4( vec4 x) {
+  return clamp( x, 0.0, 1.0);
+}
+mat2 xll_saturate_mf2x2(mat2 m) {
+  return mat2( clamp(m[0], 0.0, 1.0), clamp(m[1], 0.0, 1.0));
+}
+mat3 xll_saturate_mf3x3(mat3 m) {
+  return mat3( clamp(m[0], 0.0, 1.0), clamp(m[1], 0.0, 1.0), clamp(m[2], 0.0, 1.0));
+}
+mat4 xll_saturate_mf4x4(mat4 m) {
+  return mat4( clamp(m[0], 0.0, 1.0), clamp(m[1], 0.0, 1.0), clamp(m[2], 0.0, 1.0), clamp(m[3], 0.0, 1.0));
+}
+
+struct v2f_vertex_lit {
+    highp vec2 uv;
+    lowp vec4 diff;
+    lowp vec4 spec;
+};
+
+struct v2f_img {
+    highp vec4 pos;
+    mediump vec2 uv;
+};
+
+struct appdata_img {
+    highp vec4 vertex;
+    mediump vec2 texcoord;
+};
+
+struct Unity_GlossyEnvironmentData {
+    mediump float roughness;
+    mediump vec3 reflUVW;
+};
+
+struct UnityLight {
+    mediump vec3 color;
+    mediump vec3 dir;
+    mediump float ndotl;
+};
+
+struct UnityIndirect {
+    mediump vec3 diffuse;
+    mediump vec3 specular;
+};
+
+struct UnityGI {
+    UnityLight light;
+    UnityIndirect indirect;
+};
+
+struct UnityGIInput {
+    UnityLight light;
+    highp vec3 worldPos;
+    mediump vec3 worldViewDir;
+    mediump float atten;
+    mediump vec3 ambient;
+    mediump vec4 lightmapUV;
+    highp vec4 boxMax[2];
+    highp vec4 boxMin[2];
+    highp vec4 probePosition[2];
+    highp vec4 probeHDR[2];
+};
+
+struct SurfaceOutputStandard {
+    lowp vec3 Albedo;
+    lowp vec3 Normal;
+    mediump vec3 Emission;
+    mediump float Metallic;
+    mediump float Smoothness;
+    mediump float Occlusion;
+    lowp float Alpha;
+};
+
+struct SurfaceOutputStandardSpecular {
+    lowp vec3 Albedo;
+    lowp vec3 Specular;
+    lowp vec3 Normal;
+    mediump vec3 Emission;
+    mediump float Smoothness;
+    mediump float Occlusion;
+    lowp float Alpha;
+};
+
+struct VertexInput {
+    highp vec4 vertex;
+    mediump vec3 normal;
+    highp vec2 uv0;
+    highp vec2 uv1;
+};
+
+struct FragmentCommonData {
+    mediump vec3 diffColor;
+    mediump vec3 specColor;
+    mediump float oneMinusReflectivity;
+    mediump float oneMinusRoughness;
+    mediump vec3 normalWorld;
+    mediump vec3 eyeVec;
+    mediump vec3 posWorld;
+    mediump float alpha;
+};
+
+struct VertexOutputForwardBase {
+    highp vec4 pos;
+    highp vec4 tex;
+    mediump vec3 eyeVec;
+    mediump vec4 tangentToWorldAndParallax[3];
+    mediump vec4 ambientOrLightmapUV;
+    mediump vec4 _ShadowCoord;
+};
+
+struct VertexOutputForwardAdd {
+    highp vec4 pos;
+    highp vec4 tex;
+    mediump vec3 eyeVec;
+    mediump vec4 tangentToWorldAndLightDir[3];
+    mediump vec4 _ShadowCoord;
+};
+
+struct VertexOutputDeferred {
+    highp vec4 pos;
+    highp vec4 tex;
+    mediump vec3 eyeVec;
+    mediump vec4 tangentToWorldAndParallax[3];
+    mediump vec4 ambientOrLightmapUV;
+};
+
+struct VertexInput_VC {
+    highp vec4 vertex;
+    lowp vec4 color;
+    mediump vec3 normal;
+    highp vec2 uv0;
+    highp vec2 uv1;
+};
+
+struct VertexOutputForwardBase_VC {
+    highp vec4 pos;
+    highp vec4 tex;
+    mediump vec3 eyeVec;
+    mediump vec4 tangentToWorldAndParallax[3];
+    mediump vec4 ambientOrLightmapUV;
+    mediump vec4 _ShadowCoord;
+    lowp vec4 color;
+};
+
+struct VertexOutputDeferred_VC {
+    highp vec4 pos;
+    lowp vec4 color;
+    highp vec4 tex;
+    mediump vec3 eyeVec;
+    mediump vec4 tangentToWorldAndParallax[3];
+    mediump vec4 ambientOrLightmapUV;
+};
+
+uniform highp vec4 _Time;
+uniform highp vec4 _SinTime;
+uniform highp vec4 _CosTime;
+uniform highp vec4 unity_DeltaTime;
+
+uniform highp vec3 _WorldSpaceCameraPos;
+
+uniform highp vec4 _ProjectionParams;
+
+uniform highp vec4 _ScreenParams;
+
+uniform highp vec4 _ZBufferParams;
+
+uniform highp vec4 unity_OrthoParams;
+
+uniform highp vec4 unity_CameraWorldClipPlanes[6];
+
+uniform highp mat4 unity_CameraProjection;
+uniform highp mat4 unity_CameraInvProjection;
+
+uniform mediump vec4 _WorldSpaceLightPos0;
+
+uniform highp vec4 _LightPositionRange;
+uniform highp vec4 unity_4LightPosX0;
+uniform highp vec4 unity_4LightPosY0;
+
+uniform highp vec4 unity_4LightPosZ0;
+uniform mediump vec4 unity_4LightAtten0;
+uniform mediump vec4 unity_LightColor[8];
+
+uniform highp vec4 unity_LightPosition[8];
+
+uniform mediump vec4 unity_LightAtten[8];
+uniform highp vec4 unity_SpotDirection[8];
+
+uniform mediump vec4 unity_SHAr;
+uniform mediump vec4 unity_SHAg;
+uniform mediump vec4 unity_SHAb;
+uniform mediump vec4 unity_SHBr;
+
+uniform mediump vec4 unity_SHBg;
+uniform mediump vec4 unity_SHBb;
+uniform mediump vec4 unity_SHC;
+
+uniform mediump vec3 unity_LightColor0;
+uniform mediump vec3 unity_LightColor1;
+uniform mediump vec3 unity_LightColor2;
+uniform mediump vec3 unity_LightColor3;
+
+uniform highp vec4 unity_ShadowSplitSpheres[4];
+uniform highp vec4 unity_ShadowSplitSqRadii;
+uniform highp vec4 unity_LightShadowBias;
+uniform highp vec4 _LightSplitsNear;
+
+uniform highp vec4 _LightSplitsFar;
+uniform highp mat4 unity_World2Shadow[4];
+uniform mediump vec4 _LightShadowData;
+uniform highp vec4 unity_ShadowFadeCenterAndType;
+
+uniform highp mat4 glstate_matrix_mvp;
+uniform highp mat4 glstate_matrix_modelview0;
+uniform highp mat4 glstate_matrix_invtrans_modelview0;
+
+uniform highp mat4 _Object2World;
+uniform highp mat4 _World2Object;
+uniform highp vec4 unity_LODFade;
+uniform highp vec4 unity_WorldTransformParams;
+
+uniform highp mat4 glstate_matrix_transpose_modelview0;
+
+uniform highp mat4 glstate_matrix_projection;
+uniform lowp vec4 glstate_lightmodel_ambient;
+
+uniform highp mat4 unity_MatrixV;
+uniform highp mat4 unity_MatrixVP;
+
+uniform lowp vec4 unity_AmbientSky;
+uniform lowp vec4 unity_AmbientEquator;
+uniform lowp vec4 unity_AmbientGround;
+
+uniform lowp vec4 unity_FogColor;
+
+uniform highp vec4 unity_FogParams;
+
+uniform sampler2D unity_Lightmap;
+uniform sampler2D unity_LightmapInd;
+
+uniform sampler2D unity_DynamicLightmap;
+uniform sampler2D unity_DynamicDirectionality;
+uniform sampler2D unity_DynamicNormal;
+
+uniform highp vec4 unity_LightmapST;
+uniform highp vec4 unity_DynamicLightmapST;
+
+uniform samplerCube unity_SpecCube0;
+uniform samplerCube unity_SpecCube1;
+
+uniform highp vec4 unity_SpecCube0_BoxMax;
+uniform highp vec4 unity_SpecCube0_BoxMin;
+uniform highp vec4 unity_SpecCube0_ProbePosition;
+uniform mediump vec4 unity_SpecCube0_HDR;
+
+uniform highp vec4 unity_SpecCube1_BoxMax;
+uniform highp vec4 unity_SpecCube1_BoxMin;
+uniform highp vec4 unity_SpecCube1_ProbePosition;
+uniform mediump vec4 unity_SpecCube1_HDR;
+
+uniform lowp vec4 unity_ColorSpaceGrey;
+uniform lowp vec4 unity_ColorSpaceDouble;
+uniform mediump vec4 unity_ColorSpaceDielectricSpec;
+uniform mediump vec4 unity_ColorSpaceLuminance;
+
+uniform mediump vec4 unity_Lightmap_HDR;
+
+uniform mediump vec4 unity_DynamicLightmap_HDR;
+
+uniform lowp vec4 _LightColor0;
+uniform lowp vec4 _SpecColor;
+
+uniform sampler2D unity_NHxRoughness;
+
+uniform mediump vec4 _Color;
+uniform mediump float _Cutoff;
+uniform sampler2D _MainTex;
+
+uniform highp vec4 _MainTex_ST;
+uniform sampler2D _DetailAlbedoMap;
+uniform highp vec4 _DetailAlbedoMap_ST;
+
+uniform sampler2D _BumpMap;
+uniform mediump float _BumpScale;
+uniform sampler2D _DetailMask;
+
+uniform sampler2D _DetailNormalMap;
+uniform mediump float _DetailNormalMapScale;
+uniform sampler2D _SpecGlossMap;
+
+uniform sampler2D _MetallicGlossMap;
+uniform mediump float _Metallic;
+uniform mediump float _Glossiness;
+
+uniform sampler2D _OcclusionMap;
+uniform mediump float _OcclusionStrength;
+uniform sampler2D _ParallaxMap;
+
+uniform mediump float _Parallax;
+uniform mediump float _UVSec;
+uniform mediump vec4 _EmissionColor;
+
+uniform sampler2D _EmissionMap;
+
+uniform lowp sampler2DShadow _ShadowMapTexture;
+
+mediump float DotClamped( in mediump vec3 a, in mediump vec3 b ) {    
+    return max( 0.0, dot( a, b));
+}
+
+mediump float BlinnTerm( in mediump vec3 normal, in mediump vec3 halfDir ) {
+    return DotClamped( normal, halfDir);
+}
+
+mediump float Pow4( in mediump float x ) {
+    return (((x * x) * x) * x);
+}
+
+mediump vec3 FresnelLerpFast( in mediump vec3 F0, in mediump vec3 F90, in mediump float cosA ) {
+    mediump float t = Pow4( (1.0 - cosA));
+    return mix( F0, F90, vec3( t));
+}
+
+bool IsGammaSpace(  ) {
+    return true;
+}
+
+mediump float RoughnessToSpecPower( in mediump float roughness ) {
+    
+    mediump float m = max( 0.0001, (roughness * roughness));
+    mediump float n = ((2.0 / (m * m)) - 2.0);
+    n = max( n, 0.0001);
+    
+    return n;
+}
+
+mediump vec3 Unity_SafeNormalize( in mediump vec3 inVec ) {
+    mediump float dp3 = max( 0.001, dot( inVec, inVec));
+    return (inVec * inversesqrt(dp3));
+}
+
+mediump vec4 BRDF2_Unity_PBS( in mediump vec3 diffColor, in mediump vec3 specColor, in mediump float oneMinusReflectivity, in mediump float oneMinusRoughness, in mediump vec3 normal, in mediump vec3 viewDir, in UnityLight light, in UnityIndirect gi ) {
+    mediump vec3 halfDir = Unity_SafeNormalize( (light.dir + viewDir));
+    
+    mediump float nl = light.ndotl;
+    mediump float nh = BlinnTerm( normal, halfDir);
+    mediump float nv = DotClamped( normal, viewDir);
+    mediump float lh = DotClamped( light.dir, halfDir);
+    
+    mediump float roughness = (1.0 - oneMinusRoughness);
+    mediump float specularPower = RoughnessToSpecPower( roughness);
+    
+    mediump float invV = (((lh * lh) * oneMinusRoughness) + (roughness * roughness));
+    mediump float invF = lh;
+    mediump float specular = (((specularPower + 1.0) * pow( nh, specularPower)) / (((8.0 * invV) * invF) + 0.0001));
+    if (IsGammaSpace( )){
+        specular = sqrt(max( 0.0001, specular));
+    }
+    
+    mediump float realRoughness = (roughness * roughness);
+    mediump float surfaceReduction = (( IsGammaSpace( ) ) ? ( 0.28 ) : ( (0.6 - (0.08 * roughness)) ));
+    
+    surfaceReduction = (1.0 - ((realRoughness * roughness) * surfaceReduction));
+    
+    mediump float grazingTerm = xll_saturate_f((oneMinusRoughness + (1.0 - oneMinusReflectivity)));
+    mediump vec3 color = (((((diffColor + (specular * specColor)) * light.color) * nl) + (gi.diffuse * diffColor)) + ((surfaceReduction * gi.specular) * FresnelLerpFast( specColor, vec3( grazingTerm), nv)));
+    
+    return vec4( color, 1.0);
+}
+
+mediump vec3 BRDF_Unity_Indirect( in mediump vec3 baseColor, in mediump vec3 specColor, in mediump float oneMinusReflectivity, in mediump float oneMinusRoughness, in mediump vec3 normal, in mediump vec3 viewDir, in mediump float occlusion, in UnityGI gi ) {
+    mediump vec3 c = vec3( 0.0);
+    
+    return c;
+}
+
+mediump vec3 Emission( in highp vec2 uv ) {
+    return vec3( 0.0);
+}
+
+void ResetUnityLight( out UnityLight outLight ) {
+    
+    outLight.color = vec3( 0.0);
+    outLight.dir = vec3( 0.0);
+    outLight.ndotl = 0.0;
+}
+
+void ResetUnityGI( out UnityGI outGI ) {
+    ResetUnityLight( outGI.light);
+    
+    outGI.indirect.diffuse = vec3( 0.0);
+    outGI.indirect.specular = vec3( 0.0);
+}
+
+mediump vec3 LinearToGammaSpace( in mediump vec3 linRGB ) {
+    linRGB = max( linRGB, vec3( 0.0, 0.0, 0.0));
+    
+    return max( ((1.055 * pow( linRGB, vec3( 0.4166667))) - 0.055), vec3( 0.0));
+}
+
+mediump vec3 SHEvalLinearL0L1( in mediump vec4 normal ) {
+    mediump vec3 x;
+    
+    x.x = dot( unity_SHAr, normal);
+    x.y = dot( unity_SHAg, normal);
+    x.z = dot( unity_SHAb, normal);
+    
+    return x;
+}
+
+mediump vec3 ShadeSHPerPixel( in mediump vec3 normal, in mediump vec3 ambient ) {
+    
+    mediump vec3 ambient_contrib = vec3( 0.0);
+    
+    ambient_contrib = SHEvalLinearL0L1( vec4( normal, 1.0));
+    ambient = max( vec3( 0.0, 0.0, 0.0), (ambient + ambient_contrib));
+    if (IsGammaSpace( )){
+        ambient = LinearToGammaSpace( ambient);
+    }
+    
+    return ambient;
+}
+
+UnityGI UnityGI_Base( in UnityGIInput data, in mediump float occlusion, in mediump vec3 normalWorld ) {
+    UnityGI o_gi;
+    ResetUnityGI( o_gi);
+    
+    o_gi.light = data.light;
+    o_gi.light.color *= data.atten;
+    
+    o_gi.indirect.diffuse = ShadeSHPerPixel( normalWorld, data.ambient);
+    
+    o_gi.indirect.diffuse *= occlusion;
+    return o_gi;
+}
+
+UnityGI UnityGlobalIllumination( in UnityGIInput data, in mediump float occlusion, in mediump vec3 normalWorld ) {
+    return UnityGI_Base( data, occlusion, normalWorld);
+}
+
+mediump vec3 DecodeHDR( in mediump vec4 data, in mediump vec4 decodeInstructions ) {
+    return ((decodeInstructions.x * data.w) * data.xyz);
+}
+
+mediump vec3 DecodeHDR_NoLinearSupportInSM2( in mediump vec4 data, in mediump vec4 decodeInstructions ) {    
+    return DecodeHDR( data, decodeInstructions);
+}
+
+mediump vec3 Unity_GlossyEnvironment( in samplerCube tex, in mediump vec4 hdr, in Unity_GlossyEnvironmentData glossIn ) {
+    
+    mediump float roughness = glossIn.roughness;
+    
+    roughness = (roughness * (1.7 - (0.7 * roughness)));
+    
+    mediump float mip = (roughness * 6.0);
+    mediump vec4 rgbm = xll_texCUBElod( tex, vec4( glossIn.reflUVW, mip));
+    return DecodeHDR_NoLinearSupportInSM2( rgbm, hdr);
+}
+
+mediump vec3 UnityGI_IndirectSpecular( in UnityGIInput data, in mediump float occlusion, in mediump vec3 normalWorld, in Unity_GlossyEnvironmentData glossIn ) {
+    mediump vec3 specular;
+    mediump vec3 env0 = Unity_GlossyEnvironment( unity_SpecCube0, data.probeHDR[0], glossIn);
+    specular = env0;
+    return (specular * occlusion);
+}
+
+UnityGI UnityGlobalIllumination( in UnityGIInput data, in mediump float occlusion, in mediump vec3 normalWorld, in Unity_GlossyEnvironmentData glossIn ) {
+    UnityGI o_gi = UnityGI_Base( data, occlusion, normalWorld);
+    o_gi.indirect.specular = UnityGI_IndirectSpecular( data, occlusion, normalWorld, glossIn);    
+    return o_gi;
+}
+
+UnityGI FragmentGI( in FragmentCommonData s, in mediump float occlusion, in mediump vec4 i_ambientOrLightmapUV, in mediump float atten, in UnityLight light, in bool reflections ) {
+    UnityGIInput d;
+    d.light = light;
+    
+    d.worldPos = s.posWorld;
+    d.worldViewDir = (-s.eyeVec);
+    d.atten = atten;
+    
+    d.ambient = i_ambientOrLightmapUV.xyz;
+    d.lightmapUV = vec4( 0.0);
+    d.boxMax[0] = unity_SpecCube0_BoxMax;
+    
+    d.boxMin[0] = unity_SpecCube0_BoxMin;
+    d.probePosition[0] = unity_SpecCube0_ProbePosition;
+    d.probeHDR[0] = unity_SpecCube0_HDR;
+    
+    d.boxMax[1] = unity_SpecCube1_BoxMax;
+    d.boxMin[1] = unity_SpecCube1_BoxMin;
+    d.probePosition[1] = unity_SpecCube1_ProbePosition;
+    d.probeHDR[1] = unity_SpecCube1_HDR;
+    
+    if (reflections){
+        Unity_GlossyEnvironmentData g;
+        g.roughness = (1.0 - s.oneMinusRoughness);
+        
+        g.reflUVW = reflect( s.eyeVec, s.normalWorld);
+        return UnityGlobalIllumination( d, occlusion, s.normalWorld, g);
+    }
+    else{
+        return UnityGlobalIllumination( d, occlusion, s.normalWorld);
+    }
+}
+
+UnityGI FragmentGI( in highp vec3 posWorld, in mediump float occlusion, in mediump vec4 i_ambientOrLightmapUV, in mediump float atten, in mediump float oneMinusRoughness, in mediump vec3 normalWorld, in mediump vec3 eyeVec, in UnityLight light, in bool reflections ) {
+    FragmentCommonData s = FragmentCommonData(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), 0.0, 0.0, vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), 0.0);
+    s.oneMinusRoughness = oneMinusRoughness;
+    s.normalWorld = normalWorld;
+    s.eyeVec = eyeVec;
+    s.posWorld = posWorld;
+    return FragmentGI( s, occlusion, i_ambientOrLightmapUV, atten, light, reflections);
+}
+
+UnityGI FragmentGI( in highp vec3 posWorld, in mediump float occlusion, in mediump vec4 i_ambientOrLightmapUV, in mediump float atten, in mediump float oneMinusRoughness, in mediump vec3 normalWorld, in mediump vec3 eyeVec, in UnityLight light ) {
+    return FragmentGI( posWorld, occlusion, i_ambientOrLightmapUV, atten, oneMinusRoughness, normalWorld, eyeVec, light, true);
+}
+
+mediump float Alpha( in highp vec2 uv ) {
+    return (texture( _MainTex, uv).w * _Color.w);
+}
+
+mediump vec3 Albedo( in highp vec4 texcoords ) {
+    mediump vec3 albedo = (_Color.xyz * texture( _MainTex, texcoords.xy).xyz);
+    return albedo;
+}
+
+mediump float OneMinusReflectivityFromMetallic( in mediump float metallic ) {
+    mediump float oneMinusDielectricSpec = unity_ColorSpaceDielectricSpec.w;
+    return (oneMinusDielectricSpec - (metallic * oneMinusDielectricSpec));
+}
+
+mediump vec3 DiffuseAndSpecularFromMetallic( in mediump vec3 albedo, in mediump float metallic, out mediump vec3 specColor, out mediump float oneMinusReflectivity ) {
+    specColor = mix( unity_ColorSpaceDielectricSpec.xyz, albedo, vec3( metallic));
+    oneMinusReflectivity = OneMinusReflectivityFromMetallic( metallic);
+    
+    return (albedo * oneMinusReflectivity);
+}
+
+mediump vec2 MetallicGloss( in highp vec2 uv ) {
+    mediump vec2 mg;
+    
+    mg = vec2( _Metallic, _Glossiness);
+    return mg;
+}
+
+FragmentCommonData MetallicSetup( in highp vec4 i_tex ) {
+    mediump vec2 metallicGloss = MetallicGloss( i_tex.xy);
+    mediump float metallic = metallicGloss.x;
+    
+    mediump float oneMinusRoughness = metallicGloss.y;
+    mediump float oneMinusReflectivity;
+    mediump vec3 specColor;
+    
+    mediump vec3 diffColor = DiffuseAndSpecularFromMetallic( Albedo( i_tex), metallic, specColor, oneMinusReflectivity);
+    FragmentCommonData o = FragmentCommonData(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), 0.0, 0.0, vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), 0.0);
+    o.diffColor = diffColor;
+    
+    o.specColor = specColor;
+    o.oneMinusReflectivity = oneMinusReflectivity;
+    o.oneMinusRoughness = oneMinusRoughness;
+    return o;
+}
+
+mediump vec3 NormalizePerPixelNormal( in mediump vec3 n ) {
+    return normalize(n);
+}
+
+highp vec4 Parallax( in highp vec4 texcoords, in mediump vec3 viewDir ) {
+    return texcoords;
+}
+
+mediump vec3 PerPixelWorldNormal( in highp vec4 i_tex, in mediump vec4 tangentToWorld[3] ) {
+    mediump vec3 normalWorld = normalize(tangentToWorld[2].xyz);
+    return normalWorld;
+}
+
+mediump vec3 PreMultiplyAlpha( in mediump vec3 diffColor, in mediump float alpha, in mediump float oneMinusReflectivity, out mediump float outModifiedAlpha ) {
+    outModifiedAlpha = alpha;
+    return diffColor;
+}
+
+FragmentCommonData FragmentSetup( in highp vec4 i_tex, in mediump vec3 i_eyeVec, in mediump vec3 i_viewDirForParallax, in mediump vec4 tangentToWorld[3], in mediump vec3 i_posWorld ) {
+    i_tex = Parallax( i_tex, i_viewDirForParallax);
+    
+    mediump float alpha = Alpha( i_tex.xy);
+    
+    FragmentCommonData o = MetallicSetup( i_tex);
+    o.normalWorld = PerPixelWorldNormal( i_tex, tangentToWorld);
+    o.eyeVec = NormalizePerPixelNormal( i_eyeVec);
+    o.posWorld = i_posWorld;
+    
+    o.diffColor = PreMultiplyAlpha( o.diffColor, alpha, o.oneMinusReflectivity, o.alpha);
+    return o;
+}
+
+mediump float LambertTerm( in mediump vec3 normal, in mediump vec3 lightDir ) {
+    return DotClamped( normal, lightDir);
+}
+
+UnityLight MainLight( in mediump vec3 normalWorld ) {
+    UnityLight l;
+    
+    l.color = _LightColor0.xyz;
+    l.dir = _WorldSpaceLightPos0.xyz;
+    l.ndotl = LambertTerm( normalWorld, l.dir);
+    
+    return l;
+}
+
+mediump float LerpOneTo( in mediump float b, in mediump float t ) {
+    mediump float oneMinusT = (1.0 - t);
+    return (oneMinusT + (b * t));
+}
+
+mediump float Occlusion( in highp vec2 uv ) {    
+    mediump float occ = texture( _OcclusionMap, uv).y;
+    return LerpOneTo( occ, _OcclusionStrength);
+}
+
+mediump vec4 OutputForward( in mediump vec4 xlat_varoutput, in mediump float alphaFromSurface ) {
+    xlat_varoutput.w = 1.0;
+    return xlat_varoutput;
+}
+
+lowp float unitySampleShadow( in mediump vec4 shadowCoord ) {    
+    lowp float shadow = xll_shadow2D( _ShadowMapTexture, shadowCoord.xyz.xyz);
+    shadow = (_LightShadowData.x + (shadow * (1.0 - _LightShadowData.x)));
+    return shadow;
+}
+
+mediump vec4 fragForwardBase_VC( in VertexOutputForwardBase_VC i ) {
+    FragmentCommonData s = FragmentSetup( i.tex, i.eyeVec, vec3( 0.0, 0.0, 0.0), i.tangentToWorldAndParallax, vec3( 0.0, 0.0, 0.0));
+    UnityLight mainLight = MainLight( s.normalWorld);
+    
+    mediump float atten = unitySampleShadow( i._ShadowCoord);
+    mediump float occlusion = Occlusion( i.tex.xy);
+    UnityGI gi = FragmentGI( s.posWorld, occlusion, i.ambientOrLightmapUV, atten, s.oneMinusRoughness, s.normalWorld, s.eyeVec, mainLight);
+    
+    mediump vec4 c = BRDF2_Unity_PBS( s.diffColor, s.specColor, s.oneMinusReflectivity, s.oneMinusRoughness, s.normalWorld, (-s.eyeVec), gi.light, gi.indirect);
+    c *= i.color;
+    
+    c.xyz += BRDF_Unity_Indirect( s.diffColor, s.specColor, s.oneMinusReflectivity, s.oneMinusRoughness, s.normalWorld, (-s.eyeVec), occlusion, gi);
+    c.xyz += Emission( i.tex.xy);
+    
+    return OutputForward( c, (s.alpha * i.color.w));
+}
+in highp vec4 xlv_TEXCOORD0;
+in mediump vec3 xlv_TEXCOORD1;
+in mediump vec4 xlv_TEXCOORD2;
+in mediump vec4 xlv_TEXCOORD2_1;
+in mediump vec4 xlv_TEXCOORD2_2;
+in mediump vec4 xlv_TEXCOORD5;
+in mediump vec4 xlv_TEXCOORD6;
+in lowp vec4 xlv_COLOR;
+out lowp vec4 FragData [1];
+void main() {
+    mediump vec4 xl_retval;
+    VertexOutputForwardBase_VC xlt_i;
+    xlt_i.pos = vec4(0.0);
+    xlt_i.tex = vec4(xlv_TEXCOORD0);
+    xlt_i.eyeVec = vec3(xlv_TEXCOORD1);
+    xlt_i.tangentToWorldAndParallax[0] = vec4(xlv_TEXCOORD2);
+    xlt_i.tangentToWorldAndParallax[1] = vec4(xlv_TEXCOORD2_1);
+    xlt_i.tangentToWorldAndParallax[2] = vec4(xlv_TEXCOORD2_2);
+    xlt_i.ambientOrLightmapUV = vec4(xlv_TEXCOORD5);
+    xlt_i._ShadowCoord = vec4(xlv_TEXCOORD6);
+    xlt_i.color = vec4(xlv_COLOR);
+    xl_retval = fragForwardBase_VC( xlt_i);
+    FragData[0] = vec4(xl_retval);
+}
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-outES3.txt b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-outES3.txt
new file mode 100644
index 00000000000..3c6034fa529
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-outES3.txt
@@ -0,0 +1,187 @@
+#version 300 es
+struct FragmentCommonData {
+  mediump vec3 diffColor;
+  mediump vec3 specColor;
+  mediump float oneMinusReflectivity;
+  mediump float oneMinusRoughness;
+  mediump vec3 normalWorld;
+  mediump vec3 eyeVec;
+  mediump vec3 posWorld;
+  mediump float alpha;
+};
+uniform mediump vec4 _WorldSpaceLightPos0;
+uniform mediump vec4 unity_SHAr;
+uniform mediump vec4 unity_SHAg;
+uniform mediump vec4 unity_SHAb;
+uniform mediump vec4 _LightShadowData;
+uniform lowp samplerCube unity_SpecCube0;
+uniform mediump vec4 unity_SpecCube0_HDR;
+uniform mediump vec4 unity_ColorSpaceDielectricSpec;
+uniform lowp vec4 _LightColor0;
+uniform mediump vec4 _Color;
+uniform sampler2D _MainTex;
+uniform mediump float _Metallic;
+uniform mediump float _Glossiness;
+uniform sampler2D _OcclusionMap;
+uniform mediump float _OcclusionStrength;
+uniform lowp sampler2DShadow _ShadowMapTexture;
+in highp vec4 xlv_TEXCOORD0;
+in mediump vec3 xlv_TEXCOORD1;
+in mediump vec4 xlv_TEXCOORD2_2;
+in mediump vec4 xlv_TEXCOORD5;
+in mediump vec4 xlv_TEXCOORD6;
+in lowp vec4 xlv_COLOR;
+out lowp vec4 FragData[1];
+void main ()
+{
+  mediump vec4 c_1;
+  mediump float atten_2;
+  lowp vec4 tmpvar_3;
+  tmpvar_3 = texture (_MainTex, xlv_TEXCOORD0.xy);
+  mediump vec2 tmpvar_4;
+  tmpvar_4.x = _Metallic;
+  tmpvar_4.y = _Glossiness;
+  mediump vec3 tmpvar_5;
+  tmpvar_5 = (_Color.xyz * tmpvar_3.xyz);
+  mediump vec3 tmpvar_6;
+  mediump vec3 tmpvar_7;
+  tmpvar_7 = mix (unity_ColorSpaceDielectricSpec.xyz, tmpvar_5, vec3(_Metallic));
+  mediump float tmpvar_8;
+  tmpvar_8 = (unity_ColorSpaceDielectricSpec.w - (_Metallic * unity_ColorSpaceDielectricSpec.w));
+  tmpvar_6 = (tmpvar_5 * tmpvar_8);
+  mediump vec3 tmpvar_9;
+  tmpvar_9 = normalize(xlv_TEXCOORD2_2.xyz);
+  mediump vec3 tmpvar_10;
+  tmpvar_10 = normalize(xlv_TEXCOORD1);
+  mediump vec3 tmpvar_11;
+  tmpvar_11 = _LightColor0.xyz;
+  lowp float shadow_12;
+  mediump float tmpvar_13;
+  tmpvar_13 = texture (_ShadowMapTexture, xlv_TEXCOORD6.xyz);
+  lowp float tmpvar_14;
+  tmpvar_14 = tmpvar_13;
+  shadow_12 = (_LightShadowData.x + (tmpvar_14 * (1.0 - _LightShadowData.x)));
+  atten_2 = shadow_12;
+  mediump float occ_15;
+  lowp float tmpvar_16;
+  tmpvar_16 = texture (_OcclusionMap, xlv_TEXCOORD0.xy).y;
+  occ_15 = tmpvar_16;
+  mediump float tmpvar_17;
+  tmpvar_17 = ((1.0 - _OcclusionStrength) + (occ_15 * _OcclusionStrength));
+  FragmentCommonData s_18;
+  s_18 = FragmentCommonData(vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), 0.0, 0.0, vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0), 0.0);
+  s_18.oneMinusRoughness = tmpvar_4.y;
+  s_18.normalWorld = tmpvar_9;
+  s_18.eyeVec = tmpvar_10;
+  s_18.posWorld = vec3(0.0, 0.0, 0.0);
+  mediump vec3 tmpvar_19;
+  mediump vec3 tmpvar_20;
+  tmpvar_19 = s_18.normalWorld;
+  tmpvar_20 = s_18.eyeVec;
+  highp vec4 tmpvar_21;
+  tmpvar_21 = unity_SpecCube0_HDR;
+  mediump float tmpvar_22;
+  tmpvar_22 = (1.0 - s_18.oneMinusRoughness);
+  mediump vec3 tmpvar_23;
+  tmpvar_23 = (tmpvar_20 - (2.0 * (
+    dot (tmpvar_19, tmpvar_20)
+   * tmpvar_19)));
+  mediump vec4 tmpvar_24;
+  tmpvar_24.w = 1.0;
+  tmpvar_24.xyz = tmpvar_19;
+  mediump vec3 x_25;
+  x_25.x = dot (unity_SHAr, tmpvar_24);
+  x_25.y = dot (unity_SHAg, tmpvar_24);
+  x_25.z = dot (unity_SHAb, tmpvar_24);
+  mediump vec4 hdr_26;
+  hdr_26 = tmpvar_21;
+  mediump vec4 tmpvar_27;
+  tmpvar_27.xyz = tmpvar_23;
+  tmpvar_27.w = ((tmpvar_22 * (1.7 - 
+    (0.7 * tmpvar_22)
+  )) * 6.0);
+  lowp vec4 tmpvar_28;
+  tmpvar_28 = textureLod (unity_SpecCube0, tmpvar_23, tmpvar_27.w);
+  mediump vec4 tmpvar_29;
+  tmpvar_29 = tmpvar_28;
+  mediump vec3 viewDir_30;
+  viewDir_30 = -(tmpvar_10);
+  mediump vec3 tmpvar_31;
+  mediump vec3 inVec_32;
+  inVec_32 = (_WorldSpaceLightPos0.xyz + viewDir_30);
+  tmpvar_31 = (inVec_32 * inversesqrt(max (0.001, 
+    dot (inVec_32, inVec_32)
+  )));
+  mediump float tmpvar_33;
+  tmpvar_33 = max (0.0, dot (_WorldSpaceLightPos0.xyz, tmpvar_31));
+  mediump float tmpvar_34;
+  tmpvar_34 = (1.0 - _Glossiness);
+  mediump float tmpvar_35;
+  tmpvar_35 = max (0.0001, (tmpvar_34 * tmpvar_34));
+  mediump float tmpvar_36;
+  tmpvar_36 = max (((2.0 / 
+    (tmpvar_35 * tmpvar_35)
+  ) - 2.0), 0.0001);
+  mediump float x_37;
+  x_37 = (1.0 - max (0.0, dot (tmpvar_9, viewDir_30)));
+  mediump vec4 tmpvar_38;
+  tmpvar_38.w = 1.0;
+  tmpvar_38.xyz = (((
+    ((tmpvar_6 + (sqrt(
+      max (0.0001, (((tmpvar_36 + 1.0) * pow (
+        max (0.0, dot (tmpvar_9, tmpvar_31))
+      , tmpvar_36)) / ((
+        (8.0 * (((tmpvar_33 * tmpvar_33) * _Glossiness) + (tmpvar_34 * tmpvar_34)))
+       * tmpvar_33) + 0.0001)))
+    ) * tmpvar_7)) * (tmpvar_11 * atten_2))
+   * 
+    max (0.0, dot (tmpvar_9, _WorldSpaceLightPos0.xyz))
+  ) + (
+    (max (((1.055 * 
+      pow (max (vec3(0.0, 0.0, 0.0), (xlv_TEXCOORD5.xyz + x_25)), vec3(0.4166667, 0.4166667, 0.4166667))
+    ) - 0.055), vec3(0.0, 0.0, 0.0)) * tmpvar_17)
+   * tmpvar_6)) + ((
+    (1.0 - ((tmpvar_34 * tmpvar_34) * (tmpvar_34 * 0.28)))
+   * 
+    (((hdr_26.x * tmpvar_29.w) * tmpvar_29.xyz) * tmpvar_17)
+  ) * mix (tmpvar_7, vec3(
+    clamp ((_Glossiness + (1.0 - tmpvar_8)), 0.0, 1.0)
+  ), vec3(
+    ((x_37 * x_37) * (x_37 * x_37))
+  ))));
+  c_1 = (tmpvar_38 * xlv_COLOR);
+  c_1.xyz = c_1.xyz;
+  c_1.xyz = c_1.xyz;
+  mediump vec4 xlat_varoutput_39;
+  xlat_varoutput_39.xyz = c_1.xyz;
+  xlat_varoutput_39.w = 1.0;
+  FragData[0] = xlat_varoutput_39;
+}
+
+
+// stats: 97 alu 4 tex 0 flow
+// inputs: 6
+//  #0: xlv_TEXCOORD0 (high float) 4x1 [-1]
+//  #1: xlv_TEXCOORD1 (medium float) 3x1 [-1]
+//  #2: xlv_TEXCOORD2_2 (medium float) 4x1 [-1]
+//  #3: xlv_TEXCOORD5 (medium float) 4x1 [-1]
+//  #4: xlv_TEXCOORD6 (medium float) 4x1 [-1]
+//  #5: xlv_COLOR (low float) 4x1 [-1]
+// uniforms: 12 (total size: 0)
+//  #0: _WorldSpaceLightPos0 (medium float) 4x1 [-1]
+//  #1: unity_SHAr (medium float) 4x1 [-1]
+//  #2: unity_SHAg (medium float) 4x1 [-1]
+//  #3: unity_SHAb (medium float) 4x1 [-1]
+//  #4: _LightShadowData (medium float) 4x1 [-1]
+//  #5: unity_SpecCube0_HDR (medium float) 4x1 [-1]
+//  #6: unity_ColorSpaceDielectricSpec (medium float) 4x1 [-1]
+//  #7: _LightColor0 (low float) 4x1 [-1]
+//  #8: _Color (medium float) 4x1 [-1]
+//  #9: _Metallic (medium float) 1x1 [-1]
+//  #10: _Glossiness (medium float) 1x1 [-1]
+//  #11: _OcclusionStrength (medium float) 1x1 [-1]
+// textures: 4
+//  #0: unity_SpecCube0 (low cube) 0x0 [-1]
+//  #1: _MainTex (low 2d) 0x0 [-1]
+//  #2: _OcclusionMap (low 2d) 0x0 [-1]
+//  #3: _ShadowMapTexture (low 2dshadow) 0x0 [-1]
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-outES3Metal.txt b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-outES3Metal.txt
new file mode 100644
index 00000000000..ca71d1d321c
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/tests/fragment/global-struct-constant-init-metal-outES3Metal.txt
@@ -0,0 +1,199 @@
+#include 
+#pragma clang diagnostic ignored "-Wparentheses-equality"
+using namespace metal;
+constexpr sampler _mtl_xl_shadow_sampler(address::clamp_to_edge, filter::linear, compare_func::less);
+struct FragmentCommonData {
+  half3 diffColor;
+  half3 specColor;
+  half oneMinusReflectivity;
+  half oneMinusRoughness;
+  half3 normalWorld;
+  half3 eyeVec;
+  half3 posWorld;
+  half alpha;
+};
+constant FragmentCommonData _xlat_mtl_const1 = {float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), 0.0, 0.0, float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), float3(0.0, 0.0, 0.0), 0.0};
+struct xlatMtlShaderInput {
+  float4 xlv_TEXCOORD0;
+  half3 xlv_TEXCOORD1;
+  half4 xlv_TEXCOORD2_2;
+  half4 xlv_TEXCOORD5;
+  half4 xlv_TEXCOORD6;
+  half4 xlv_COLOR;
+};
+struct xlatMtlShaderOutput {
+  half4 FragData_0 [[color(0)]];
+};
+struct xlatMtlShaderUniform {
+  half4 _WorldSpaceLightPos0;
+  half4 unity_SHAr;
+  half4 unity_SHAg;
+  half4 unity_SHAb;
+  half4 _LightShadowData;
+  half4 unity_SpecCube0_HDR;
+  half4 unity_ColorSpaceDielectricSpec;
+  half4 _LightColor0;
+  half4 _Color;
+  half _Metallic;
+  half _Glossiness;
+  half _OcclusionStrength;
+};
+fragment xlatMtlShaderOutput xlatMtlMain (xlatMtlShaderInput _mtl_i [[stage_in]], constant xlatMtlShaderUniform& _mtl_u [[buffer(0)]]
+  ,   texturecube unity_SpecCube0 [[texture(0)]], sampler _mtlsmp_unity_SpecCube0 [[sampler(0)]]
+  ,   texture2d _MainTex [[texture(1)]], sampler _mtlsmp__MainTex [[sampler(1)]]
+  ,   texture2d _OcclusionMap [[texture(2)]], sampler _mtlsmp__OcclusionMap [[sampler(2)]]
+  ,   depth2d _ShadowMapTexture [[texture(3)]], sampler _mtlsmp__ShadowMapTexture [[sampler(3)]])
+{
+  xlatMtlShaderOutput _mtl_o;
+  half4 c_1;
+  half atten_2;
+  half4 tmpvar_3;
+  tmpvar_3 = _MainTex.sample(_mtlsmp__MainTex, (float2)(_mtl_i.xlv_TEXCOORD0.xy));
+  half2 tmpvar_4;
+  tmpvar_4.x = _mtl_u._Metallic;
+  tmpvar_4.y = _mtl_u._Glossiness;
+  half3 tmpvar_5;
+  tmpvar_5 = (_mtl_u._Color.xyz * tmpvar_3.xyz);
+  half3 tmpvar_6;
+  half3 tmpvar_7;
+  tmpvar_7 = mix (_mtl_u.unity_ColorSpaceDielectricSpec.xyz, tmpvar_5, half3(_mtl_u._Metallic));
+  half tmpvar_8;
+  tmpvar_8 = (_mtl_u.unity_ColorSpaceDielectricSpec.w - (_mtl_u._Metallic * _mtl_u.unity_ColorSpaceDielectricSpec.w));
+  tmpvar_6 = (tmpvar_5 * tmpvar_8);
+  half3 tmpvar_9;
+  tmpvar_9 = normalize(_mtl_i.xlv_TEXCOORD2_2.xyz);
+  half3 tmpvar_10;
+  tmpvar_10 = normalize(_mtl_i.xlv_TEXCOORD1);
+  half3 tmpvar_11;
+  tmpvar_11 = _mtl_u._LightColor0.xyz;
+  half shadow_12;
+  half tmpvar_13;
+  tmpvar_13 = _ShadowMapTexture.sample_compare(_mtl_xl_shadow_sampler, (float2)(_mtl_i.xlv_TEXCOORD6.xyz).xy, (float)(_mtl_i.xlv_TEXCOORD6.xyz).z);
+  half tmpvar_14;
+  tmpvar_14 = tmpvar_13;
+  shadow_12 = (_mtl_u._LightShadowData.x + (tmpvar_14 * ((half)1.0 - _mtl_u._LightShadowData.x)));
+  atten_2 = shadow_12;
+  half occ_15;
+  half tmpvar_16;
+  tmpvar_16 = _OcclusionMap.sample(_mtlsmp__OcclusionMap, (float2)(_mtl_i.xlv_TEXCOORD0.xy)).y;
+  occ_15 = tmpvar_16;
+  half tmpvar_17;
+  tmpvar_17 = (((half)1.0 - _mtl_u._OcclusionStrength) + (occ_15 * _mtl_u._OcclusionStrength));
+  FragmentCommonData s_18;
+  s_18 = _xlat_mtl_const1;
+  s_18.oneMinusRoughness = tmpvar_4.y;
+  s_18.normalWorld = tmpvar_9;
+  s_18.eyeVec = tmpvar_10;
+  s_18.posWorld = half3(float3(0.0, 0.0, 0.0));
+  half3 tmpvar_19;
+  half3 tmpvar_20;
+  tmpvar_19 = s_18.normalWorld;
+  tmpvar_20 = s_18.eyeVec;
+  float4 tmpvar_21;
+  tmpvar_21 = float4(_mtl_u.unity_SpecCube0_HDR);
+  half tmpvar_22;
+  tmpvar_22 = ((half)1.0 - s_18.oneMinusRoughness);
+  half3 tmpvar_23;
+  tmpvar_23 = (tmpvar_20 - ((half)2.0 * (
+    dot (tmpvar_19, tmpvar_20)
+   * tmpvar_19)));
+  half4 tmpvar_24;
+  tmpvar_24.w = half(1.0);
+  tmpvar_24.xyz = tmpvar_19;
+  half3 x_25;
+  x_25.x = dot (_mtl_u.unity_SHAr, tmpvar_24);
+  x_25.y = dot (_mtl_u.unity_SHAg, tmpvar_24);
+  x_25.z = dot (_mtl_u.unity_SHAb, tmpvar_24);
+  half4 hdr_26;
+  hdr_26 = half4(tmpvar_21);
+  half4 tmpvar_27;
+  tmpvar_27.xyz = tmpvar_23;
+  tmpvar_27.w = ((tmpvar_22 * ((half)1.7 - 
+    ((half)0.7 * tmpvar_22)
+  )) * (half)6.0);
+  half4 tmpvar_28;
+  tmpvar_28 = unity_SpecCube0.sample(_mtlsmp_unity_SpecCube0, (float3)(tmpvar_23), level(tmpvar_27.w));
+  half4 tmpvar_29;
+  tmpvar_29 = tmpvar_28;
+  half3 viewDir_30;
+  viewDir_30 = -(tmpvar_10);
+  half3 tmpvar_31;
+  half3 inVec_32;
+  inVec_32 = (_mtl_u._WorldSpaceLightPos0.xyz + viewDir_30);
+  tmpvar_31 = (inVec_32 * rsqrt(max ((half)0.001, 
+    dot (inVec_32, inVec_32)
+  )));
+  half tmpvar_33;
+  tmpvar_33 = max ((half)0.0, dot (_mtl_u._WorldSpaceLightPos0.xyz, tmpvar_31));
+  half tmpvar_34;
+  tmpvar_34 = ((half)1.0 - _mtl_u._Glossiness);
+  half tmpvar_35;
+  tmpvar_35 = max ((half)0.0001, (tmpvar_34 * tmpvar_34));
+  half tmpvar_36;
+  tmpvar_36 = max ((((half)2.0 / 
+    (tmpvar_35 * tmpvar_35)
+  ) - (half)2.0), (half)0.0001);
+  half x_37;
+  x_37 = ((half)1.0 - max ((half)0.0, dot (tmpvar_9, viewDir_30)));
+  half4 tmpvar_38;
+  tmpvar_38.w = half(1.0);
+  tmpvar_38.xyz = (((
+    ((tmpvar_6 + (sqrt(
+      max ((half)0.0001, (((tmpvar_36 + (half)1.0) * pow (
+        max ((half)0.0, dot (tmpvar_9, tmpvar_31))
+      , tmpvar_36)) / ((
+        ((half)8.0 * (((tmpvar_33 * tmpvar_33) * _mtl_u._Glossiness) + (tmpvar_34 * tmpvar_34)))
+       * tmpvar_33) + (half)0.0001)))
+    ) * tmpvar_7)) * (tmpvar_11 * atten_2))
+   * 
+    max ((half)0.0, dot (tmpvar_9, _mtl_u._WorldSpaceLightPos0.xyz))
+  ) + (
+    (max ((((half)1.055 * 
+      pow (max ((half3)float3(0.0, 0.0, 0.0), (_mtl_i.xlv_TEXCOORD5.xyz + x_25)), (half3)float3(0.4166667, 0.4166667, 0.4166667))
+    ) - (half)0.055), (half3)float3(0.0, 0.0, 0.0)) * tmpvar_17)
+   * tmpvar_6)) + ((
+    ((half)1.0 - ((tmpvar_34 * tmpvar_34) * (tmpvar_34 * (half)0.28)))
+   * 
+    (((hdr_26.x * tmpvar_29.w) * tmpvar_29.xyz) * tmpvar_17)
+  ) * mix (tmpvar_7, half3(
+    clamp ((_mtl_u._Glossiness + ((half)1.0 - tmpvar_8)), (half)0.0, (half)1.0)
+  ), half3(
+    ((x_37 * x_37) * (x_37 * x_37))
+  ))));
+  c_1 = (tmpvar_38 * _mtl_i.xlv_COLOR);
+  c_1.xyz = c_1.xyz;
+  c_1.xyz = c_1.xyz;
+  half4 xlat_varoutput_39;
+  xlat_varoutput_39.xyz = c_1.xyz;
+  xlat_varoutput_39.w = half(1.0);
+  _mtl_o.FragData_0 = xlat_varoutput_39;
+  return _mtl_o;
+}
+
+
+// stats: 97 alu 4 tex 0 flow
+// inputs: 6
+//  #0: xlv_TEXCOORD0 (high float) 4x1 [-1]
+//  #1: xlv_TEXCOORD1 (medium float) 3x1 [-1]
+//  #2: xlv_TEXCOORD2_2 (medium float) 4x1 [-1]
+//  #3: xlv_TEXCOORD5 (medium float) 4x1 [-1]
+//  #4: xlv_TEXCOORD6 (medium float) 4x1 [-1]
+//  #5: xlv_COLOR (low float) 4x1 [-1]
+// uniforms: 12 (total size: 78)
+//  #0: _WorldSpaceLightPos0 (medium float) 4x1 [-1] loc 0
+//  #1: unity_SHAr (medium float) 4x1 [-1] loc 8
+//  #2: unity_SHAg (medium float) 4x1 [-1] loc 16
+//  #3: unity_SHAb (medium float) 4x1 [-1] loc 24
+//  #4: _LightShadowData (medium float) 4x1 [-1] loc 32
+//  #5: unity_SpecCube0_HDR (medium float) 4x1 [-1] loc 40
+//  #6: unity_ColorSpaceDielectricSpec (medium float) 4x1 [-1] loc 48
+//  #7: _LightColor0 (low float) 4x1 [-1] loc 56
+//  #8: _Color (medium float) 4x1 [-1] loc 64
+//  #9: _Metallic (medium float) 1x1 [-1] loc 72
+//  #10: _Glossiness (medium float) 1x1 [-1] loc 74
+//  #11: _OcclusionStrength (medium float) 1x1 [-1] loc 76
+// textures: 4
+//  #0: unity_SpecCube0 (low cube) 0x0 [-1] loc 0
+//  #1: _MainTex (low 2d) 0x0 [-1] loc 1
+//  #2: _OcclusionMap (low 2d) 0x0 [-1] loc 2
+//  #3: _ShadowMapTexture (low 2dshadow) 0x0 [-1] loc 3
diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp
index 6ae5c798648..e3c3b915d2c 100644
--- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp
+++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp
@@ -131,11 +131,8 @@
             ImGui::NewFrame();
 
             // 3) most of your application code here
-            ImGui::Begin("My window");
-            ImGui::Text("Hello, world.");
-            ImGui::End();
-            MyGameUpdate(); // may use ImGui functions
-            MyGameRender(); // may use ImGui functions
+            MyGameUpdate(); // may use any ImGui functions, e.g. ImGui::Begin("My window"); ImGui::Text("Hello, world!"); ImGui::End();
+            MyGameRender(); // may use any ImGui functions
 
             // 4) render & swap video buffers
             ImGui::Render();
@@ -153,6 +150,7 @@
  Here is a change-log of API breaking changes, if you are using one of the functions listed, expect to have to fix some code.
  Also read releases logs https://github.com/ocornut/imgui/releases for more details.
 
+ - 2016/07/30 (1.50) - SameLine(x) with x>0.0f is now relative to left of column/group if any, and not always to left of window. This was sort of always the intent and hopefully breakage should be minimal.
  - 2016/05/12 (1.49) - title bar (using ImGuiCol_TitleBg/ImGuiCol_TitleBgActive colors) isn't rendered over a window background (ImGuiCol_WindowBg color) anymore. 
                        If your TitleBg/TitleBgActive alpha was 1.0f or you are using the default theme it will not affect you. 
                        However if your TitleBg/TitleBgActive alpha was <1.0f you need to tweak your custom theme to readjust for the fact that we don't draw a WindowBg background behind the title bar.
@@ -391,10 +389,12 @@
       e.g. when displaying a list of objects, using indices or pointers as ID will preserve the node open/closed state differently. experiment and see what makes more sense!
 
  Q: How can I tell when ImGui wants my mouse/keyboard inputs and when I can pass them to my application?
- A: You can read the 'io.WantCaptureXXX' flags in the ImGuiIO structure. Preferably read them after calling ImGui::NewFrame() to avoid those flags lagging by one frame.
+ A: You can read the 'io.WantCaptureXXX' flags in the ImGuiIO structure. Preferably read them after calling ImGui::NewFrame() to avoid those flags lagging by one frame, but either should be fine.
     When 'io.WantCaptureMouse' or 'io.WantCaptureKeyboard' flags are set you may want to discard/hide the inputs from the rest of your application.
     When 'io.WantInputsCharacters' is set to may want to notify your OS to popup an on-screen keyboard, if available.
     ImGui is tracking dragging and widget activity that may occur outside the boundary of a window, so 'io.WantCaptureMouse' is a more accurate and complete than testing for ImGui::IsMouseHoveringAnyWindow().
+    (Advanced note: text input releases focus on Return 'KeyDown', so the following Return 'KeyUp' event that your application receive will typically have 'io.WantcaptureKeyboard=false'. 
+     Depending on your application logic it may or not be inconvenient. You might want to track which key-downs were for ImGui (e.g. with an array of bool) and filter out the corresponding key-ups.)
 
  Q: How can I load a different font than the default? (default is an embedded version of ProggyClean.ttf, rendered at size 13)
  A: Use the font atlas to load the TTF file you want:
@@ -460,7 +460,7 @@
 
  - doc: add a proper documentation+regression testing system (#435)
  - window: add a way for very transient windows (non-saved, temporary overlay over hundreds of objects) to "clean" up from the global window list. perhaps a lightweight explicit cleanup pass.
- - window: calling SetNextWindowSize() every frame with <= 0 doesn't do anything, may be useful to allow (particularly when used for a single axis).
+ - window: calling SetNextWindowSize() every frame with <= 0 doesn't do anything, may be useful to allow (particularly when used for a single axis) (#690)
  - window: auto-fit feedback loop when user relies on any dynamic layout (window width multiplier, column) appears weird to end-user. clarify.
  - window: allow resizing of child windows (possibly given min/max for each axis?)
  - window: background options for child windows, border option (disable rounding)
@@ -488,9 +488,11 @@
  - input text: flag to disable live update of the user buffer (also applies to float/int text input) 
  - input text: resize behavior - field could stretch when being edited? hover tooltip shows more text?
  - input text: add ImGuiInputTextFlags_EnterToApply? (off #218)
+ - input text: add discard flag (e.g. ImGuiInputTextFlags_DiscardActiveBuffer) or make it easier to clear active focus for text replacement during edition (#725)
  - input text multi-line: don't directly call AddText() which does an unnecessary vertex reserve for character count prior to clipping. and/or more line-based clipping to AddText(). and/or reorganize TextUnformatted/RenderText for more efficiency for large text (e.g TextUnformatted could clip and log separately, etc).
  - input text multi-line: way to dynamically grow the buffer without forcing the user to initially allocate for worse case (follow up on #200)
  - input text multi-line: line numbers? status bar? (follow up on #200)
+ - input text multi-line: behave better when user changes input buffer while editing is active (even though it is illegal behavior). namely, the change of buffer can create a scrollbar glitch (#725)
  - input text: allow centering/positioning text so that ctrl+clicking Drag or Slider keeps the textual value at the same pixel position.
  - input number: optional range min/max for Input*() functions
  - input number: holding [-]/[+] buttons could increase the step speed non-linearly (or user-controlled)
@@ -834,10 +836,7 @@ ImGuiIO::ImGuiIO()
 
     // Set OS X style defaults based on __APPLE__ compile time flag
 #ifdef __APPLE__
-    WordMovementUsesAltKey = true;      // OS X style: Text editing cursor movement using Alt instead of Ctrl
-    ShortcutsUseSuperKey = true;        // OS X style: Shortcuts using Cmd/Super instead of Ctrl
-    DoubleClickSelectsWord = true;      // OS X style: Double click selects by word instead of selecting whole text
-    MultiSelectUsesSuperKey = true;     // OS X style: Multi-selection in lists uses Cmd/Super instead of Ctrl 
+    OSXBehaviors = true;
 #endif
 }
 
@@ -868,7 +867,8 @@ void ImGuiIO::AddInputCharactersUTF8(const char* utf8_chars)
 // HELPERS
 //-----------------------------------------------------------------------------
 
-#define IM_F32_TO_INT8(_VAL)  ((int)((_VAL) * 255.0f + 0.5f))
+#define IM_F32_TO_INT8_UNBOUND(_VAL)    ((int)((_VAL) * 255.0f + ((_VAL)>=0 ? 0.5f : -0.5f)))   // Unsaturated, for display purpose 
+#define IM_F32_TO_INT8_SAT(_VAL)        ((int)(ImSaturate(_VAL) * 255.0f + 0.5f))               // Saturated, always output 0..255
 
 // Play it nice with Windows users. Notepad in 2015 still doesn't display text data with Unix-style \n.
 #ifdef _WIN32
@@ -899,6 +899,13 @@ int ImStrnicmp(const char* str1, const char* str2, int count)
     return d;
 }
 
+void ImStrncpy(char* dst, const char* src, int count)
+{
+    if (count < 1) return;
+    strncpy(dst, src, (size_t)count);
+    dst[count-1] = 0;
+}
+
 char* ImStrdup(const char *str)
 {
     size_t len = strlen(str) + 1;
@@ -997,7 +1004,6 @@ ImU32 ImHash(const void* data, int data_size, ImU32 seed)
             // - We don't do 'current += 2; continue;' after handling ### to keep the code smaller.
             if (c == '#' && current[0] == '#' && current[1] == '#')
                 crc = seed;
-
             crc = (crc >> 8) ^ crc32_lut[(crc & 0xFF) ^ c];
         }
     }
@@ -1189,10 +1195,10 @@ ImVec4 ImGui::ColorConvertU32ToFloat4(ImU32 in)
 ImU32 ImGui::ColorConvertFloat4ToU32(const ImVec4& in)
 {
     ImU32 out;
-    out  = ((ImU32)IM_F32_TO_INT8(ImSaturate(in.x)));
-    out |= ((ImU32)IM_F32_TO_INT8(ImSaturate(in.y))) << 8;
-    out |= ((ImU32)IM_F32_TO_INT8(ImSaturate(in.z))) << 16;
-    out |= ((ImU32)IM_F32_TO_INT8(ImSaturate(in.w))) << 24;
+    out  = ((ImU32)IM_F32_TO_INT8_SAT(in.x));
+    out |= ((ImU32)IM_F32_TO_INT8_SAT(in.y)) << 8;
+    out |= ((ImU32)IM_F32_TO_INT8_SAT(in.z)) << 16;
+    out |= ((ImU32)IM_F32_TO_INT8_SAT(in.w)) << 24;
     return out;
 }
 
@@ -1300,7 +1306,7 @@ void ImGuiStorage::Clear()
 }
 
 // std::lower_bound but without the bullshit
-static ImVector::iterator LowerBound(ImVector& data, ImU32 key)
+static ImVector::iterator LowerBound(ImVector& data, ImGuiID key)
 {
     ImVector::iterator first = data.begin();
     ImVector::iterator last = data.end();
@@ -1322,7 +1328,7 @@ static ImVector::iterator LowerBound(ImVector::iterator it = LowerBound(const_cast&>(Data), key);
     if (it == Data.end() || it->key != key)
@@ -1330,12 +1336,12 @@ int ImGuiStorage::GetInt(ImU32 key, int default_val) const
     return it->val_i;
 }
 
-bool ImGuiStorage::GetBool(ImU32 key, bool default_val) const
+bool ImGuiStorage::GetBool(ImGuiID key, bool default_val) const
 {
     return GetInt(key, default_val ? 1 : 0) != 0;
 }
 
-float ImGuiStorage::GetFloat(ImU32 key, float default_val) const
+float ImGuiStorage::GetFloat(ImGuiID key, float default_val) const
 {
     ImVector::iterator it = LowerBound(const_cast&>(Data), key);
     if (it == Data.end() || it->key != key)
@@ -1382,7 +1388,7 @@ void** ImGuiStorage::GetVoidPtrRef(ImGuiID key, void* default_val)
 }
 
 // FIXME-OPT: Need a way to reuse the result of lower_bound when doing GetInt()/SetInt() - not too bad because it only happens on explicit interaction (maximum one a frame)
-void ImGuiStorage::SetInt(ImU32 key, int val)
+void ImGuiStorage::SetInt(ImGuiID key, int val)
 {
     ImVector::iterator it = LowerBound(Data, key);
     if (it == Data.end() || it->key != key)
@@ -1393,12 +1399,12 @@ void ImGuiStorage::SetInt(ImU32 key, int val)
     it->val_i = val;
 }
 
-void ImGuiStorage::SetBool(ImU32 key, bool val)
+void ImGuiStorage::SetBool(ImGuiID key, bool val)
 {
     SetInt(key, val ? 1 : 0);
 }
 
-void ImGuiStorage::SetFloat(ImU32 key, float val)
+void ImGuiStorage::SetFloat(ImGuiID key, float val)
 {
     ImVector::iterator it = LowerBound(Data, key);
     if (it == Data.end() || it->key != key)
@@ -1409,7 +1415,7 @@ void ImGuiStorage::SetFloat(ImU32 key, float val)
     it->val_f = val;
 }
 
-void ImGuiStorage::SetVoidPtr(ImU32 key, void* val)
+void ImGuiStorage::SetVoidPtr(ImGuiID key, void* val)
 {
     ImVector::iterator it = LowerBound(Data, key);
     if (it == Data.end() || it->key != key)
@@ -1435,7 +1441,7 @@ ImGuiTextFilter::ImGuiTextFilter(const char* default_filter)
 {
     if (default_filter)
     {
-        ImFormatString(InputBuf, IM_ARRAYSIZE(InputBuf), "%s", default_filter);
+        ImStrncpy(InputBuf, default_filter, IM_ARRAYSIZE(InputBuf));
         Build();
     }
     else
@@ -1617,12 +1623,14 @@ float ImGuiSimpleColumns::CalcExtraSpace(float avail_w)
 
 static void SetCursorPosYAndSetupDummyPrevLine(float pos_y, float line_height)
 {
-    // Setting those fields so that SetScrollHere() can properly function after the end of our clipper usage.
-    // If we end up needing more accurate data (to e.g. use SameLine) we may as well make the clipper have a fourth step to let user process and display the last item in their list.
+    // Set cursor position and a few other things so that SetScrollHere() and Columns() can work when seeking cursor. 
+    // FIXME: It is problematic that we have to do that here, because custom/equivalent end-user code would stumble on the same issue. Consider moving within SetCursorXXX functions?
     ImGui::SetCursorPosY(pos_y);
     ImGuiWindow* window = ImGui::GetCurrentWindow();
-    window->DC.CursorPosPrevLine.y = window->DC.CursorPos.y - line_height;
-    window->DC.PrevLineHeight = (line_height - GImGui->Style.ItemSpacing.y);
+    window->DC.CursorPosPrevLine.y = window->DC.CursorPos.y - line_height;      // Setting those fields so that SetScrollHere() can properly function after the end of our clipper usage.
+    window->DC.PrevLineHeight = (line_height - GImGui->Style.ItemSpacing.y);    // If we end up needing more accurate data (to e.g. use SameLine) we may as well make the clipper have a fourth step to let user process and display the last item in their list.
+    if (window->DC.ColumnsCount > 1)
+        window->DC.ColumnsCellMinY = window->DC.CursorPos.y;                    // Setting this so that cell Y position are set properly
 }
 
 // Use case A: Begin() called from constructor with items_height<0, then called again from Sync() in StepNo 1
@@ -1675,8 +1683,9 @@ bool ImGuiListClipper::Step()
         if (ItemsCount == 1) { ItemsCount = -1; return false; }
         float items_height = ImGui::GetCursorPosY() - StartPosY;
         IM_ASSERT(items_height > 0.0f);   // If this triggers, it means Item 0 hasn't moved the cursor vertically
-        ImGui::SetCursorPosY(StartPosY);  // Rewind cursor so we can Begin() again, this time with a known height.
-        Begin(ItemsCount, items_height);
+        Begin(ItemsCount-1, items_height);
+        DisplayStart++;
+        DisplayEnd++;
         StepNo = 3;
         return true;
     }
@@ -1700,7 +1709,7 @@ ImGuiWindow::ImGuiWindow(const char* name)
     Name = ImStrdup(name);
     ID = ImHash(name, 0);
     IDStack.push_back(ID);
-    MoveID = GetID("#MOVE");
+    MoveId = GetID("#MOVE");
 
     Flags = 0;
     IndexWithinParent = 0;
@@ -1719,7 +1728,7 @@ ImGuiWindow::ImGuiWindow(const char* name)
     Collapsed = false;
     SkipItems = false;
     BeginCount = 0;
-    PopupID = 0;
+    PopupId = 0;
     AutoFitFramesX = AutoFitFramesY = -1;
     AutoFitOnlyGrows = false;
     AutoPosLastDirection = -1;
@@ -1768,6 +1777,12 @@ ImGuiID ImGuiWindow::GetID(const void* ptr)
     return id;
 }
 
+ImGuiID ImGuiWindow::GetIDNoKeepAlive(const char* str, const char* str_end)
+{
+    ImGuiID seed = IDStack.back();
+    return ImHash(str, str_end ? (int)(str_end - str) : 0, seed);
+}
+
 //-----------------------------------------------------------------------------
 // Internal API exposed in imgui_internal.h
 //-----------------------------------------------------------------------------
@@ -1844,7 +1859,7 @@ void ImGui::ItemSize(const ImRect& bb, float text_offset_y)
 bool ImGui::ItemAdd(const ImRect& bb, const ImGuiID* id)
 {
     ImGuiWindow* window = GetCurrentWindow();
-    window->DC.LastItemID = id ? *id : 0;
+    window->DC.LastItemId = id ? *id : 0;
     window->DC.LastItemRect = bb;
     window->DC.LastItemHoveredAndUsable = window->DC.LastItemHoveredRect = false;
     if (IsClippedEx(bb, id, false))
@@ -1858,7 +1873,7 @@ bool ImGui::ItemAdd(const ImRect& bb, const ImGuiID* id)
         // So that clicking on items with no active id such as Text() still returns true with IsItemHovered()
         window->DC.LastItemHoveredRect = true;
         if (g.HoveredRootWindow == window->RootWindow)
-            if (g.ActiveId == 0 || (id && g.ActiveId == *id) || g.ActiveIdAllowOverlap || (g.ActiveId == window->MoveID))
+            if (g.ActiveId == 0 || (id && g.ActiveId == *id) || g.ActiveIdAllowOverlap || (g.ActiveId == window->MoveId))
                 if (IsWindowContentHoverable(window))
                     window->DC.LastItemHoveredAndUsable = true;
     }
@@ -1950,8 +1965,7 @@ float ImGui::CalcWrapWidthForPos(const ImVec2& pos, float wrap_pos_x)
     else if (wrap_pos_x > 0.0f)
         wrap_pos_x += window->Pos.x - window->Scroll.x; // wrap_pos_x is provided is window local space
 
-    const float wrap_width = wrap_pos_x > 0.0f ? ImMax(wrap_pos_x - pos.x, 0.00001f) : 0.0f;
-    return wrap_width;
+    return ImMax(wrap_pos_x - pos.x, 1.0f);
 }
 
 //-----------------------------------------------------------------------------
@@ -2071,7 +2085,6 @@ void ImGui::NewFrame()
     g.OverlayDrawList.Clear();
     g.OverlayDrawList.PushTextureID(g.IO.Fonts->TexID);
     g.OverlayDrawList.PushClipRectFullScreen();
-    g.OverlayDrawList.AddDrawCmd();
 
     // Mark rendering data as invalid to prevent user who may have a handle on it to use it
     g.RenderDrawData.Valid = false;
@@ -2138,7 +2151,7 @@ void ImGui::NewFrame()
     {
         KeepAliveID(g.MovedWindowMoveId);
         IM_ASSERT(g.MovedWindow && g.MovedWindow->RootWindow);
-        IM_ASSERT(g.MovedWindow->RootWindow->MoveID == g.MovedWindowMoveId);
+        IM_ASSERT(g.MovedWindow->RootWindow->MoveId == g.MovedWindowMoveId);
         if (g.IO.MouseDown[0])
         {
             if (!(g.MovedWindow->Flags & ImGuiWindowFlags_NoMove))
@@ -2239,14 +2252,11 @@ void ImGui::NewFrame()
                 window->SizeFull *= scale;
             }
         }
-        else
+        else if (!(window->Flags & ImGuiWindowFlags_NoScrollWithMouse))
         {
             // Scroll
-            if (!(window->Flags & ImGuiWindowFlags_NoScrollWithMouse))
-            {
-                const int scroll_lines = (window->Flags & ImGuiWindowFlags_ComboBox) ? 3 : 5;
-                SetWindowScrollY(window, window->Scroll.y - g.IO.MouseWheel * window->CalcFontSize() * scroll_lines);
-            }
+            const int scroll_lines = (window->Flags & ImGuiWindowFlags_ComboBox) ? 3 : 5;
+            SetWindowScrollY(window, window->Scroll.y - g.IO.MouseWheel * window->CalcFontSize() * scroll_lines);
         }
     }
 
@@ -2264,6 +2274,15 @@ void ImGui::NewFrame()
         window->Accessed = false;
     }
 
+    // Closing the focused window restore focus to the first active root window in descending z-order
+    if (g.FocusedWindow && !g.FocusedWindow->WasActive)
+        for (int i = g.Windows.Size-1; i >= 0; i--)
+            if (g.Windows[i]->WasActive && !(g.Windows[i]->Flags & ImGuiWindowFlags_ChildWindow))
+            {
+                FocusWindow(g.Windows[i]);
+                break;
+            }
+
     // No window should be open at the beginning of the frame.
     // But in order to allow the user to call NewFrame() multiple times without calling Render(), we are doing an explicit clear.
     g.CurrentWindowStack.resize(0);
@@ -2343,7 +2362,7 @@ static ImGuiIniData* FindWindowSettings(const char* name)
     for (int i = 0; i != g.Settings.Size; i++)
     {
         ImGuiIniData* ini = &g.Settings[i];
-        if (ini->ID == id)
+        if (ini->Id == id)
             return ini;
     }
     return NULL;
@@ -2354,7 +2373,7 @@ static ImGuiIniData* AddWindowSettings(const char* name)
     GImGui->Settings.resize(GImGui->Settings.Size + 1);
     ImGuiIniData* ini = &GImGui->Settings.back();
     ini->Name = ImStrdup(name);
-    ini->ID = ImHash(name, 0);
+    ini->Id = ImHash(name, 0);
     ini->Collapsed = false;
     ini->Pos = ImVec2(FLT_MAX,FLT_MAX);
     ini->Size = ImVec2(0,0);
@@ -2585,7 +2604,7 @@ void ImGui::EndFrame()
                 if (!(g.HoveredWindow->Flags & ImGuiWindowFlags_NoMove))
                 {
                     g.MovedWindow = g.HoveredWindow;
-                    g.MovedWindowMoveId = g.HoveredRootWindow->MoveID;
+                    g.MovedWindowMoveId = g.HoveredRootWindow->MoveId;
                     SetActiveID(g.MovedWindowMoveId, g.HoveredRootWindow);
                 }
             }
@@ -3217,7 +3236,7 @@ bool ImGui::IsItemActive()
     if (g.ActiveId)
     {
         ImGuiWindow* window = GetCurrentWindowRead();
-        return g.ActiveId == window->DC.LastItemID;
+        return g.ActiveId == window->DC.LastItemId;
     }
     return false;
 }
@@ -3248,9 +3267,9 @@ bool ImGui::IsItemVisible()
 void ImGui::SetItemAllowOverlap()
 {
     ImGuiContext& g = *GImGui;
-    if (g.HoveredId == g.CurrentWindow->DC.LastItemID)
+    if (g.HoveredId == g.CurrentWindow->DC.LastItemId)
         g.HoveredIdAllowOverlap = true;
-    if (g.ActiveId == g.CurrentWindow->DC.LastItemID)
+    if (g.ActiveId == g.CurrentWindow->DC.LastItemId)
         g.ActiveIdAllowOverlap = true;
 }
 
@@ -3318,7 +3337,7 @@ void ImGui::EndTooltip()
 static bool IsPopupOpen(ImGuiID id)
 {
     ImGuiContext& g = *GImGui;
-    const bool is_open = g.OpenPopupStack.Size > g.CurrentPopupStack.Size && g.OpenPopupStack[g.CurrentPopupStack.Size].PopupID == id;
+    const bool is_open = g.OpenPopupStack.Size > g.CurrentPopupStack.Size && g.OpenPopupStack[g.CurrentPopupStack.Size].PopupId == id;
     return is_open;
 }
 
@@ -3335,7 +3354,7 @@ void ImGui::OpenPopupEx(const char* str_id, bool reopen_existing)
     ImGuiPopupRef popup_ref = ImGuiPopupRef(id, window, window->GetID("##menus"), g.IO.MousePos); // Tagged as new ref because constructor sets Window to NULL (we are passing the ParentWindow info here)
     if (g.OpenPopupStack.Size < current_stack_size + 1)
         g.OpenPopupStack.push_back(popup_ref);
-    else if (reopen_existing || g.OpenPopupStack[current_stack_size].PopupID != id)
+    else if (reopen_existing || g.OpenPopupStack[current_stack_size].PopupId != id)
     {
         g.OpenPopupStack.resize(current_stack_size+1);
         g.OpenPopupStack[current_stack_size] = popup_ref;
@@ -3411,7 +3430,7 @@ void ImGui::CloseCurrentPopup()
 {
     ImGuiContext& g = *GImGui;
     int popup_idx = g.CurrentPopupStack.Size - 1;
-    if (popup_idx < 0 || popup_idx > g.OpenPopupStack.Size || g.CurrentPopupStack[popup_idx].PopupID != g.OpenPopupStack[popup_idx].PopupID)
+    if (popup_idx < 0 || popup_idx > g.OpenPopupStack.Size || g.CurrentPopupStack[popup_idx].PopupId != g.OpenPopupStack[popup_idx].PopupId)
         return;
     while (popup_idx > 0 && g.OpenPopupStack[popup_idx].Window && (g.OpenPopupStack[popup_idx].Window->Flags & ImGuiWindowFlags_ChildMenu))
         popup_idx--;
@@ -3814,11 +3833,11 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
     if (flags & ImGuiWindowFlags_Popup)
     {
         ImGuiPopupRef& popup_ref = g.OpenPopupStack[g.CurrentPopupStack.Size];
-        window_was_active &= (window->PopupID == popup_ref.PopupID);
+        window_was_active &= (window->PopupId == popup_ref.PopupId);
         window_was_active &= (window == popup_ref.Window);
         popup_ref.Window = window;
         g.CurrentPopupStack.push_back(popup_ref);
-        window->PopupID = popup_ref.PopupID;
+        window->PopupId = popup_ref.PopupId;
     }
 
     const bool window_appearing_after_being_hidden = (window->HiddenFrames == 1);
@@ -3901,16 +3920,10 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
         else
             PushClipRect(fullscreen_rect.Min, fullscreen_rect.Max, true);
 
-        // New windows appears in front
         if (!window_was_active)
         {
-            window->AutoPosLastDirection = -1;
-
-            if (!(flags & ImGuiWindowFlags_NoFocusOnAppearing))
-                if (!(flags & (ImGuiWindowFlags_ChildWindow|ImGuiWindowFlags_Tooltip)) || (flags & ImGuiWindowFlags_Popup))
-                    FocusWindow(window);
-
             // Popup first latch mouse position, will position itself when it appears next frame
+            window->AutoPosLastDirection = -1;
             if ((flags & ImGuiWindowFlags_Popup) != 0 && !window_pos_set_by_api)
                 window->PosFloat = g.IO.MousePos;
         }
@@ -4087,7 +4100,7 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
         if (window->ScrollTarget.y < FLT_MAX)
         {
             float center_ratio = window->ScrollTargetCenterRatio.y;
-            window->Scroll.y = window->ScrollTarget.y - ((1.0f - center_ratio) * window->TitleBarHeight()) - (center_ratio * window->SizeFull.y);
+            window->Scroll.y = window->ScrollTarget.y - ((1.0f - center_ratio) * (window->TitleBarHeight() + window->MenuBarHeight())) - (center_ratio * window->SizeFull.y);
             window->ScrollTarget.y = FLT_MAX;
         }
         window->Scroll = ImMax(window->Scroll, ImVec2(0.0f, 0.0f));
@@ -4213,6 +4226,7 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
 
         // Setup drawing context
         window->DC.IndentX = 0.0f + window->WindowPadding.x - window->Scroll.x;
+        window->DC.GroupOffsetX = 0.0f;
         window->DC.ColumnsOffsetX = 0.0f;
         window->DC.CursorStartPos = window->Pos + ImVec2(window->DC.IndentX + window->DC.ColumnsOffsetX, window->TitleBarHeight() + window->MenuBarHeight() + window->WindowPadding.y - window->Scroll.y);
         window->DC.CursorPos = window->DC.CursorStartPos;
@@ -4248,6 +4262,11 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
         if (window->AutoFitFramesY > 0)
             window->AutoFitFramesY--;
 
+        // New windows appears in front (we need to do that AFTER setting DC.CursorStartPos so our initial navigation reference rectangle can start around there)
+        if (!window_was_active && !(flags & ImGuiWindowFlags_NoFocusOnAppearing))
+            if (!(flags & (ImGuiWindowFlags_ChildWindow|ImGuiWindowFlags_Tooltip)) || (flags & ImGuiWindowFlags_Popup))
+                FocusWindow(window);
+
         // Title bar
         if (!(flags & ImGuiWindowFlags_NoTitleBar))
         {
@@ -4271,7 +4290,8 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
             if (style.WindowTitleAlign & ImGuiAlign_Center) pad_right = pad_left;
             if (pad_left) text_min.x += g.FontSize + style.ItemInnerSpacing.x;
             if (pad_right) text_max.x -= g.FontSize + style.ItemInnerSpacing.x;
-            RenderTextClipped(text_min, text_max, name, NULL, &text_size, style.WindowTitleAlign, NULL, &clip_max);
+            ImVec2 clip_min = ImVec2(text_min.x, window->Pos.y);
+            RenderTextClipped(text_min, text_max, name, NULL, &text_size, style.WindowTitleAlign, &clip_min, &clip_max);
         }
 
         // Save clipped aabb so we can access it in constant-time in FindHoveredWindow()
@@ -4913,8 +4933,7 @@ void ImGui::SetWindowFocus(const char* name)
 {
     if (name)
     {
-        ImGuiWindow* window = FindWindowByName(name);
-        if (window)
+        if (ImGuiWindow* window = FindWindowByName(name))
             FocusWindow(window);
     }
     else
@@ -5077,13 +5096,13 @@ ImVec2 ImGui::GetCursorPos()
 
 float ImGui::GetCursorPosX()
 {
-    ImGuiWindow* window = GetCurrentWindow();
+    ImGuiWindow* window = GetCurrentWindowRead();
     return window->DC.CursorPos.x - window->Pos.x + window->Scroll.x;
 }
 
 float ImGui::GetCursorPosY()
 {
-    ImGuiWindow* window = GetCurrentWindow();
+    ImGuiWindow* window = GetCurrentWindowRead();
     return window->DC.CursorPos.y - window->Pos.y + window->Scroll.y;
 }
 
@@ -5124,6 +5143,7 @@ void ImGui::SetCursorScreenPos(const ImVec2& screen_pos)
 {
     ImGuiWindow* window = GetCurrentWindow();
     window->DC.CursorPos = screen_pos;
+    window->DC.CursorMaxPos = ImMax(window->DC.CursorMaxPos, window->DC.CursorPos);
 }
 
 float ImGui::GetScrollX()
@@ -5158,7 +5178,7 @@ void ImGui::SetScrollX(float scroll_x)
 void ImGui::SetScrollY(float scroll_y)
 {
     ImGuiWindow* window = GetCurrentWindow();
-    window->ScrollTarget.y = scroll_y + window->TitleBarHeight(); // title bar height canceled out when using ScrollTargetRelY
+    window->ScrollTarget.y = scroll_y + window->TitleBarHeight() + window->MenuBarHeight(); // title bar height canceled out when using ScrollTargetRelY
     window->ScrollTargetCenterRatio.y = 0.0f;
 }
 
@@ -5251,9 +5271,10 @@ void ImGui::TextDisabled(const char* fmt, ...)
 
 void ImGui::TextWrappedV(const char* fmt, va_list args)
 {
-    PushTextWrapPos(0.0f);
+    bool need_wrap = (GImGui->CurrentWindow->DC.TextWrapPos < 0.0f);    // Keep existing wrap position is one ia already set
+    if (need_wrap) PushTextWrapPos(0.0f);
     TextV(fmt, args);
-    PopTextWrapPos();
+    if (need_wrap) PopTextWrapPos();
 }
 
 void ImGui::TextWrapped(const char* fmt, ...)
@@ -5316,7 +5337,7 @@ void ImGui::TextUnformatted(const char* text, const char* text_end)
             // Lines to render
             if (line < text_end)
             {
-                ImRect line_rect(pos, pos + ImVec2(GetWindowWidth(), line_height));
+                ImRect line_rect(pos, pos + ImVec2(FLT_MAX, line_height));
                 while (line < text_end)
                 {
                     const char* line_end = strchr(line, '\n');
@@ -5360,9 +5381,7 @@ void ImGui::TextUnformatted(const char* text, const char* text_end)
         const ImVec2 text_size = CalcTextSize(text_begin, text_end, false, wrap_width);
 
         // Account of baseline offset
-        ImVec2 text_pos = window->DC.CursorPos;
-        text_pos.y += window->DC.CurrentLineTextBaseOffset;
-
+        ImVec2 text_pos(window->DC.CursorPos.x, window->DC.CursorPos.y + window->DC.CurrentLineTextBaseOffset);
         ImRect bb(text_pos, text_pos + text_size);
         ItemSize(text_size);
         if (!ItemAdd(bb, NULL))
@@ -7405,6 +7424,7 @@ static void STB_TEXTEDIT_DELETECHARS(STB_TEXTEDIT_STRING* obj, int pos, int n)
 static bool STB_TEXTEDIT_INSERTCHARS(STB_TEXTEDIT_STRING* obj, int pos, const ImWchar* new_text, int new_text_len)
 {
     const int text_len = obj->CurLenW;
+    IM_ASSERT(pos <= text_len);
     if (new_text_len + text_len + 1 > obj->Text.Size)
         return false;
 
@@ -7612,10 +7632,6 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
     // NB: we are only allowed to access 'edit_state' if we are the active widget.
     ImGuiTextEditState& edit_state = g.InputTextState;
 
-    const bool is_ctrl_down = io.KeyCtrl;
-    const bool is_shift_down = io.KeyShift;
-    const bool is_alt_down = io.KeyAlt;
-    const bool is_super_down = io.KeySuper;
     const bool focus_requested = FocusableItemRegister(window, g.ActiveId == id, (flags & (ImGuiInputTextFlags_CallbackCompletion|ImGuiInputTextFlags_AllowTabInput)) == 0);    // Using completion callback disable keyboard tabbing
     const bool focus_requested_by_code = focus_requested && (window->FocusIdxAllCounter == window->FocusIdxAllRequestCurrent);
     const bool focus_requested_by_tab = focus_requested && !focus_requested_by_code;
@@ -7627,7 +7643,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
         g.MouseCursor = ImGuiMouseCursor_TextInput;
     }
     const bool user_clicked = hovered && io.MouseClicked[0];
-    const bool user_scrolled = is_multiline && g.ActiveId == 0 && edit_state.Id == id && g.ActiveIdPreviousFrame == draw_window->GetID("#SCROLLY");
+    const bool user_scrolled = is_multiline && g.ActiveId == 0 && edit_state.Id == id && g.ActiveIdPreviousFrame == draw_window->GetIDNoKeepAlive("#SCROLLY");
 
     bool select_all = (g.ActiveId != id) && (flags & ImGuiInputTextFlags_AutoSelectAll) != 0;
     if (focus_requested || user_clicked || user_scrolled)
@@ -7638,9 +7654,9 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
             // Take a copy of the initial buffer value (both in original UTF-8 format and converted to wchar)
             // From the moment we focused we are ignoring the content of 'buf' (unless we are in read-only mode)
             const int prev_len_w = edit_state.CurLenW;
-            edit_state.Text.resize(buf_size+1);        // wchar count <= utf-8 count. we use +1 to make sure that .Data isn't NULL so it doesn't crash.
-            edit_state.InitialText.resize(buf_size+1); // utf-8. we use +1 to make sure that .Data isn't NULL so it doesn't crash.
-            ImFormatString(edit_state.InitialText.Data, edit_state.InitialText.Size, "%s", buf);
+            edit_state.Text.resize(buf_size+1);        // wchar count <= UTF-8 count. we use +1 to make sure that .Data isn't NULL so it doesn't crash.
+            edit_state.InitialText.resize(buf_size+1); // UTF-8. we use +1 to make sure that .Data isn't NULL so it doesn't crash.
+            ImStrncpy(edit_state.InitialText.Data, buf, edit_state.InitialText.Size);
             const char* buf_end = NULL;
             edit_state.CurLenW = ImTextStrFromUtf8(edit_state.Text.Data, edit_state.Text.Size, buf, NULL, &buf_end);
             edit_state.CurLenA = (int)(buf_end - buf); // We can't get the result from ImFormatString() above because it is not UTF-8 aware. Here we'll cut off malformed UTF-8.
@@ -7665,7 +7681,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
             }
             if (flags & ImGuiInputTextFlags_AlwaysInsertMode)
                 edit_state.StbState.insert_mode = true;
-            if (!is_multiline && (focus_requested_by_tab || (user_clicked && is_ctrl_down)))
+            if (!is_multiline && (focus_requested_by_tab || (user_clicked && io.KeyCtrl)))
                 select_all = true;
         }
         SetActiveID(id, window);
@@ -7700,15 +7716,16 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
         g.ActiveIdAllowOverlap = !io.MouseDown[0];
 
         // Edit in progress
-        const float mouse_x = (g.IO.MousePos.x - frame_bb.Min.x - style.FramePadding.x) + edit_state.ScrollX;
-        const float mouse_y = (is_multiline ? (g.IO.MousePos.y - draw_window->DC.CursorPos.y - style.FramePadding.y) : (g.FontSize*0.5f));
+        const float mouse_x = (io.MousePos.x - frame_bb.Min.x - style.FramePadding.x) + edit_state.ScrollX;
+        const float mouse_y = (is_multiline ? (io.MousePos.y - draw_window->DC.CursorPos.y - style.FramePadding.y) : (g.FontSize*0.5f));
 
-        if (select_all || (hovered && !io.DoubleClickSelectsWord && io.MouseDoubleClicked[0]))
+        const bool osx_double_click_selects_words = io.OSXBehaviors;      // OS X style: Double click selects by word instead of selecting whole text
+        if (select_all || (hovered && !osx_double_click_selects_words && io.MouseDoubleClicked[0]))
         {
             edit_state.SelectAll();
             edit_state.SelectedAllMouseLock = true;
         }
-        else if (hovered && io.DoubleClickSelectsWord && io.MouseDoubleClicked[0])
+        else if (hovered && osx_double_click_selects_words && io.MouseDoubleClicked[0])
         {
             // Select a word only, OS X style (by simulating keystrokes)
             edit_state.OnKeyPressed(STB_TEXTEDIT_K_WORDLEFT);
@@ -7728,14 +7745,14 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
         if (edit_state.SelectedAllMouseLock && !io.MouseDown[0])
             edit_state.SelectedAllMouseLock = false;
 
-        if (g.IO.InputCharacters[0])
+        if (io.InputCharacters[0])
         {
             // Process text input (before we check for Return because using some IME will effectively send a Return?)
             // We ignore CTRL inputs, but need to allow CTRL+ALT as some keyboards (e.g. German) use AltGR - which is Alt+Ctrl - to input certain characters.
-            if (!(is_ctrl_down && !is_alt_down) && is_editable)
+            if (!(io.KeyCtrl && !io.KeyAlt) && is_editable)
             {
-                for (int n = 0; n < IM_ARRAYSIZE(g.IO.InputCharacters) && g.IO.InputCharacters[n]; n++)
-                    if (unsigned int c = (unsigned int)g.IO.InputCharacters[n])
+                for (int n = 0; n < IM_ARRAYSIZE(io.InputCharacters) && io.InputCharacters[n]; n++)
+                    if (unsigned int c = (unsigned int)io.InputCharacters[n])
                     {
                         // Insert character if they pass filtering
                         if (!InputTextFilterCharacter(&c, flags, callback, user_data))
@@ -7750,22 +7767,31 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
 
         // Handle various key-presses
         bool cancel_edit = false;
-        const int k_mask = (is_shift_down ? STB_TEXTEDIT_K_SHIFT : 0);
-        const bool is_shortcutkey_only = (io.ShortcutsUseSuperKey ? (is_super_down && !is_alt_down && !is_shift_down && !is_ctrl_down) : (is_ctrl_down && !is_alt_down && !is_shift_down && !is_super_down));
-        const bool is_wordmove_key_down = (io.WordMovementUsesAltKey ? io.KeyAlt : io.KeyCtrl);
+        const int k_mask = (io.KeyShift ? STB_TEXTEDIT_K_SHIFT : 0);
+        const bool is_shortcut_key_only = (io.OSXBehaviors ? (io.KeySuper && !io.KeyCtrl) : (io.KeyCtrl && !io.KeySuper)) && !io.KeyAlt && !io.KeyShift; // OS X style: Shortcuts using Cmd/Super instead of Ctrl
+        const bool is_wordmove_key_down = io.OSXBehaviors ? io.KeyAlt : io.KeyCtrl;                     // OS X style: Text editing cursor movement using Alt instead of Ctrl
+        const bool is_startend_key_down = io.OSXBehaviors && io.KeySuper && !io.KeyCtrl && !io.KeyAlt;  // OS X style: Line/Text Start and End using Cmd+Arrows instead of Home/End
 
-        if (IsKeyPressedMap(ImGuiKey_LeftArrow))                        { edit_state.OnKeyPressed(is_wordmove_key_down ? STB_TEXTEDIT_K_WORDLEFT | k_mask : STB_TEXTEDIT_K_LEFT | k_mask); }
-        else if (IsKeyPressedMap(ImGuiKey_RightArrow))                  { edit_state.OnKeyPressed(is_wordmove_key_down ? STB_TEXTEDIT_K_WORDRIGHT | k_mask  : STB_TEXTEDIT_K_RIGHT | k_mask); }
-        else if (is_multiline && IsKeyPressedMap(ImGuiKey_UpArrow))     { if (is_ctrl_down) SetWindowScrollY(draw_window, draw_window->Scroll.y - g.FontSize); else edit_state.OnKeyPressed(STB_TEXTEDIT_K_UP | k_mask); }
-        else if (is_multiline && IsKeyPressedMap(ImGuiKey_DownArrow))   { if (is_ctrl_down) SetWindowScrollY(draw_window, draw_window->Scroll.y + g.FontSize); else edit_state.OnKeyPressed(STB_TEXTEDIT_K_DOWN| k_mask); }
-        else if (IsKeyPressedMap(ImGuiKey_Home))                        { edit_state.OnKeyPressed(is_ctrl_down ? STB_TEXTEDIT_K_TEXTSTART | k_mask : STB_TEXTEDIT_K_LINESTART | k_mask); }
-        else if (IsKeyPressedMap(ImGuiKey_End))                         { edit_state.OnKeyPressed(is_ctrl_down ? STB_TEXTEDIT_K_TEXTEND | k_mask : STB_TEXTEDIT_K_LINEEND | k_mask); }
+        if (IsKeyPressedMap(ImGuiKey_LeftArrow))                        { edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_LINESTART : is_wordmove_key_down ? STB_TEXTEDIT_K_WORDLEFT : STB_TEXTEDIT_K_LEFT) | k_mask); }
+        else if (IsKeyPressedMap(ImGuiKey_RightArrow))                  { edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_LINEEND : is_wordmove_key_down ? STB_TEXTEDIT_K_WORDRIGHT : STB_TEXTEDIT_K_RIGHT) | k_mask); }
+        else if (IsKeyPressedMap(ImGuiKey_UpArrow) && is_multiline)     { if (io.KeyCtrl) SetWindowScrollY(draw_window, ImMax(draw_window->Scroll.y - g.FontSize, 0.0f)); else edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_TEXTSTART : STB_TEXTEDIT_K_UP) | k_mask); }
+        else if (IsKeyPressedMap(ImGuiKey_DownArrow) && is_multiline)   { if (io.KeyCtrl) SetWindowScrollY(draw_window, ImMin(draw_window->Scroll.y + g.FontSize, GetScrollMaxY())); else edit_state.OnKeyPressed((is_startend_key_down ? STB_TEXTEDIT_K_TEXTEND : STB_TEXTEDIT_K_DOWN) | k_mask); }
+        else if (IsKeyPressedMap(ImGuiKey_Home))                        { edit_state.OnKeyPressed(io.KeyCtrl ? STB_TEXTEDIT_K_TEXTSTART | k_mask : STB_TEXTEDIT_K_LINESTART | k_mask); }
+        else if (IsKeyPressedMap(ImGuiKey_End))                         { edit_state.OnKeyPressed(io.KeyCtrl ? STB_TEXTEDIT_K_TEXTEND | k_mask : STB_TEXTEDIT_K_LINEEND | k_mask); }
         else if (IsKeyPressedMap(ImGuiKey_Delete) && is_editable)       { edit_state.OnKeyPressed(STB_TEXTEDIT_K_DELETE | k_mask); }
-        else if (IsKeyPressedMap(ImGuiKey_Backspace) && is_editable)    { if (is_ctrl_down && !edit_state.HasSelection()) edit_state.OnKeyPressed(STB_TEXTEDIT_K_WORDLEFT|STB_TEXTEDIT_K_SHIFT); edit_state.OnKeyPressed(STB_TEXTEDIT_K_BACKSPACE | k_mask); }
+        else if (IsKeyPressedMap(ImGuiKey_Backspace) && is_editable)
+        {
+            if (!edit_state.HasSelection())
+            {
+                if (is_wordmove_key_down) edit_state.OnKeyPressed(STB_TEXTEDIT_K_WORDLEFT|STB_TEXTEDIT_K_SHIFT);
+                else if (io.OSXBehaviors && io.KeySuper && !io.KeyAlt && !io.KeyCtrl) edit_state.OnKeyPressed(STB_TEXTEDIT_K_LINESTART|STB_TEXTEDIT_K_SHIFT);
+            }
+            edit_state.OnKeyPressed(STB_TEXTEDIT_K_BACKSPACE | k_mask);
+        }
         else if (IsKeyPressedMap(ImGuiKey_Enter))
         {
             bool ctrl_enter_for_new_line = (flags & ImGuiInputTextFlags_CtrlEnterForNewLine) != 0;
-            if (!is_multiline || (ctrl_enter_for_new_line && !is_ctrl_down) || (!ctrl_enter_for_new_line && is_ctrl_down))
+            if (!is_multiline || (ctrl_enter_for_new_line && !io.KeyCtrl) || (!ctrl_enter_for_new_line && io.KeyCtrl))
             {
                 SetActiveID(0);
                 enter_pressed = true;
@@ -7777,30 +7803,30 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
                     edit_state.OnKeyPressed((int)c);
             }
         }
-        else if ((flags & ImGuiInputTextFlags_AllowTabInput) && IsKeyPressedMap(ImGuiKey_Tab) && !is_ctrl_down && !is_shift_down && !is_alt_down && is_editable)
+        else if ((flags & ImGuiInputTextFlags_AllowTabInput) && IsKeyPressedMap(ImGuiKey_Tab) && !io.KeyCtrl && !io.KeyShift && !io.KeyAlt && is_editable)
         {
             unsigned int c = '\t'; // Insert TAB
             if (InputTextFilterCharacter(&c, flags, callback, user_data))
                 edit_state.OnKeyPressed((int)c);
         }
         else if (IsKeyPressedMap(ImGuiKey_Escape))                                     { SetActiveID(0); cancel_edit = true; }
-        else if (is_shortcutkey_only && IsKeyPressedMap(ImGuiKey_Z) && is_editable)    { edit_state.OnKeyPressed(STB_TEXTEDIT_K_UNDO); edit_state.ClearSelection(); }
-        else if (is_shortcutkey_only && IsKeyPressedMap(ImGuiKey_Y) && is_editable)    { edit_state.OnKeyPressed(STB_TEXTEDIT_K_REDO); edit_state.ClearSelection(); }
-        else if (is_shortcutkey_only && IsKeyPressedMap(ImGuiKey_A))                   { edit_state.SelectAll(); edit_state.CursorFollow = true; }
-        else if (is_shortcutkey_only && !is_password && ((IsKeyPressedMap(ImGuiKey_X) && is_editable) || IsKeyPressedMap(ImGuiKey_C)) && (!is_multiline || edit_state.HasSelection()))
+        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Z) && is_editable)   { edit_state.OnKeyPressed(STB_TEXTEDIT_K_UNDO); edit_state.ClearSelection(); }
+        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_Y) && is_editable)   { edit_state.OnKeyPressed(STB_TEXTEDIT_K_REDO); edit_state.ClearSelection(); }
+        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_A))                  { edit_state.SelectAll(); edit_state.CursorFollow = true; }
+        else if (is_shortcut_key_only && !is_password && ((IsKeyPressedMap(ImGuiKey_X) && is_editable) || IsKeyPressedMap(ImGuiKey_C)) && (!is_multiline || edit_state.HasSelection()))
         {
             // Cut, Copy
             const bool cut = IsKeyPressedMap(ImGuiKey_X);
             if (cut && !edit_state.HasSelection())
                 edit_state.SelectAll();
 
-            if (g.IO.SetClipboardTextFn)
+            if (io.SetClipboardTextFn)
             {
                 const int ib = edit_state.HasSelection() ? ImMin(edit_state.StbState.select_start, edit_state.StbState.select_end) : 0;
                 const int ie = edit_state.HasSelection() ? ImMax(edit_state.StbState.select_start, edit_state.StbState.select_end) : edit_state.CurLenW;
                 edit_state.TempTextBuffer.resize((ie-ib) * 4 + 1);
                 ImTextStrToUtf8(edit_state.TempTextBuffer.Data, edit_state.TempTextBuffer.Size, edit_state.Text.Data+ib, edit_state.Text.Data+ie);
-                g.IO.SetClipboardTextFn(edit_state.TempTextBuffer.Data);
+                io.SetClipboardTextFn(edit_state.TempTextBuffer.Data);
             }
 
             if (cut)
@@ -7809,35 +7835,32 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
                 stb_textedit_cut(&edit_state, &edit_state.StbState);
             }
         }
-        else if (is_shortcutkey_only && IsKeyPressedMap(ImGuiKey_V) && is_editable)
+        else if (is_shortcut_key_only && IsKeyPressedMap(ImGuiKey_V) && is_editable)
         {
             // Paste
-            if (g.IO.GetClipboardTextFn)
+            if (const char* clipboard = io.GetClipboardTextFn ? io.GetClipboardTextFn() : NULL)
             {
-                if (const char* clipboard = g.IO.GetClipboardTextFn())
+                // Filter pasted buffer
+                const int clipboard_len = (int)strlen(clipboard);
+                ImWchar* clipboard_filtered = (ImWchar*)ImGui::MemAlloc((clipboard_len+1) * sizeof(ImWchar));
+                int clipboard_filtered_len = 0;
+                for (const char* s = clipboard; *s; )
                 {
-                    // Remove new-line from pasted buffer
-                    const int clipboard_len = (int)strlen(clipboard);
-                    ImWchar* clipboard_filtered = (ImWchar*)ImGui::MemAlloc((clipboard_len+1) * sizeof(ImWchar));
-                    int clipboard_filtered_len = 0;
-                    for (const char* s = clipboard; *s; )
-                    {
-                        unsigned int c;
-                        s += ImTextCharFromUtf8(&c, s, NULL);
-                        if (c == 0)
-                            break;
-                        if (c >= 0x10000 || !InputTextFilterCharacter(&c, flags, callback, user_data))
-                            continue;
-                        clipboard_filtered[clipboard_filtered_len++] = (ImWchar)c;
-                    }
-                    clipboard_filtered[clipboard_filtered_len] = 0;
-                    if (clipboard_filtered_len > 0) // If everything was filtered, ignore the pasting operation
-                    {
-                        stb_textedit_paste(&edit_state, &edit_state.StbState, clipboard_filtered, clipboard_filtered_len);
-                        edit_state.CursorFollow = true;
-                    }
-                    ImGui::MemFree(clipboard_filtered);
+                    unsigned int c;
+                    s += ImTextCharFromUtf8(&c, s, NULL);
+                    if (c == 0)
+                        break;
+                    if (c >= 0x10000 || !InputTextFilterCharacter(&c, flags, callback, user_data))
+                        continue;
+                    clipboard_filtered[clipboard_filtered_len++] = (ImWchar)c;
                 }
+                clipboard_filtered[clipboard_filtered_len] = 0;
+                if (clipboard_filtered_len > 0) // If everything was filtered, ignore the pasting operation
+                {
+                    stb_textedit_paste(&edit_state, &edit_state.StbState, clipboard_filtered, clipboard_filtered_len);
+                    edit_state.CursorFollow = true;
+                }
+                ImGui::MemFree(clipboard_filtered);
             }
         }
 
@@ -7846,7 +7869,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
             // Restore initial value
             if (is_editable)
             {
-                ImFormatString(buf, buf_size, "%s", edit_state.InitialText.Data);
+                ImStrncpy(buf, edit_state.InitialText.Data, buf_size);
                 value_changed = true;
             }
         }
@@ -7932,28 +7955,33 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
             // Copy back to user buffer
             if (is_editable && strcmp(edit_state.TempTextBuffer.Data, buf) != 0)
             {
-                ImFormatString(buf, buf_size, "%s", edit_state.TempTextBuffer.Data);
+                ImStrncpy(buf, edit_state.TempTextBuffer.Data, buf_size);
                 value_changed = true;
             }
         }
     }
 
+    // Render
+    // Select which buffer we are going to display. When ImGuiInputTextFlags_NoLiveEdit is set 'buf' might still be the old value. We set buf to NULL to prevent accidental usage from now on.
+    const char* buf_display = (g.ActiveId == id && is_editable) ? edit_state.TempTextBuffer.Data : buf; buf = NULL; 
+
     if (!is_multiline)
         RenderFrame(frame_bb.Min, frame_bb.Max, GetColorU32(ImGuiCol_FrameBg), true, style.FrameRounding);
 
-    // Render
     const ImVec4 clip_rect(frame_bb.Min.x, frame_bb.Min.y, frame_bb.Min.x + size.x, frame_bb.Min.y + size.y); // Not using frame_bb.Max because we have adjusted size
     ImVec2 render_pos = is_multiline ? draw_window->DC.CursorPos : frame_bb.Min + style.FramePadding;
     ImVec2 text_size(0.f, 0.f);
-    if (g.ActiveId == id || (edit_state.Id == id && is_multiline && g.ActiveId == draw_window->GetID("#SCROLLY")))
+    const bool is_currently_scrolling = (edit_state.Id == id && is_multiline && g.ActiveId == draw_window->GetIDNoKeepAlive("#SCROLLY"));
+    if (g.ActiveId == id || is_currently_scrolling)
     {
-        edit_state.CursorAnim += g.IO.DeltaTime;
+        edit_state.CursorAnim += io.DeltaTime;
 
-        // We need to:
-        // - Display the text (this can be more easily clipped)
+        // This is going to be messy. We need to:
+        // - Display the text (this alone can be more easily clipped)
         // - Handle scrolling, highlight selection, display cursor (those all requires some form of 1d->2d cursor position calculation)
         // - Measure text height (for scrollbar)
         // We are attempting to do most of that in **one main pass** to minimize the computation cost (non-negligible for large amount of text) + 2nd pass for selection rendering (we could merge them by an extra refactoring effort)
+        // FIXME: This should occur on buf_display but we'd need to maintain cursor/select_start/select_end for UTF-8.
         const ImWchar* text_begin = edit_state.Text.Data;
         ImVec2 cursor_offset, select_start_offset;
 
@@ -8067,7 +8095,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
             }
         }
 
-        draw_window->DrawList->AddText(g.Font, g.FontSize, render_pos - render_scroll, GetColorU32(ImGuiCol_Text), buf, buf+edit_state.CurLenA, 0.0f, is_multiline ? NULL : &clip_rect);
+        draw_window->DrawList->AddText(g.Font, g.FontSize, render_pos - render_scroll, GetColorU32(ImGuiCol_Text), buf_display, buf_display + edit_state.CurLenA, 0.0f, is_multiline ? NULL : &clip_rect);
 
         // Draw blinking cursor
         bool cursor_is_visible = (g.InputTextState.CursorAnim <= 0.0f) || fmodf(g.InputTextState.CursorAnim, 1.20f) <= 0.80f;
@@ -8085,8 +8113,8 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
         // Render text only
         const char* buf_end = NULL;
         if (is_multiline)
-            text_size = ImVec2(size.x, InputTextCalcTextLenAndLineCount(buf, &buf_end) * g.FontSize); // We don't need width
-        draw_window->DrawList->AddText(g.Font, g.FontSize, render_pos, GetColorU32(ImGuiCol_Text), buf, buf_end, 0.0f, is_multiline ? NULL : &clip_rect);
+            text_size = ImVec2(size.x, InputTextCalcTextLenAndLineCount(buf_display, &buf_end) * g.FontSize); // We don't need width
+        draw_window->DrawList->AddText(g.Font, g.FontSize, render_pos, GetColorU32(ImGuiCol_Text), buf_display, buf_end, 0.0f, is_multiline ? NULL : &clip_rect);
     }
 
     if (is_multiline)
@@ -8094,6 +8122,8 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
         Dummy(text_size + ImVec2(0.0f, g.FontSize)); // Always add room to scroll an extra line
         EndChildFrame();
         EndGroup();
+        if (g.ActiveId == id || is_currently_scrolling) // Set LastItemId which was lost by EndChild/EndGroup, so user can use IsItemActive()
+            window->DC.LastItemId = g.ActiveId;
     }
 
     if (is_password)
@@ -8101,7 +8131,7 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
 
     // Log as text
     if (g.LogEnabled && !is_password)
-        LogRenderedText(render_pos, buf, NULL);
+        LogRenderedText(render_pos, buf_display, NULL);
 
     if (label_size.x > 0)
         RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);
@@ -8115,14 +8145,12 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2
 bool ImGui::InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags, ImGuiTextEditCallback callback, void* user_data)
 {
     IM_ASSERT(!(flags & ImGuiInputTextFlags_Multiline)); // call InputTextMultiline()
-    bool ret = InputTextEx(label, buf, (int)buf_size, ImVec2(0,0), flags, callback, user_data);
-    return ret;
+    return InputTextEx(label, buf, (int)buf_size, ImVec2(0,0), flags, callback, user_data);
 }
 
 bool ImGui::InputTextMultiline(const char* label, char* buf, size_t buf_size, const ImVec2& size, ImGuiInputTextFlags flags, ImGuiTextEditCallback callback, void* user_data)
 {
-    bool ret = InputTextEx(label, buf, (int)buf_size, size, flags | ImGuiInputTextFlags_Multiline, callback, user_data);
-    return ret;
+    return InputTextEx(label, buf, (int)buf_size, size, flags | ImGuiInputTextFlags_Multiline, callback, user_data);
 }
 
 // NB: scalar_format here must be a simple "%xx" format string with no prefix/suffix (unlike the Drag/Slider functions "display_format" argument)
@@ -8856,7 +8884,7 @@ bool ImGui::ColorButton(const ImVec4& col, bool small_height, bool outline_borde
     RenderFrame(bb.Min, bb.Max, GetColorU32(col), outline_border, style.FrameRounding);
 
     if (hovered)
-        SetTooltip("Color:\n(%.2f,%.2f,%.2f,%.2f)\n#%02X%02X%02X%02X", col.x, col.y, col.z, col.w, IM_F32_TO_INT8(col.x), IM_F32_TO_INT8(col.y), IM_F32_TO_INT8(col.z), IM_F32_TO_INT8(col.z));
+        SetTooltip("Color:\n(%.2f,%.2f,%.2f,%.2f)\n#%02X%02X%02X%02X", col.x, col.y, col.z, col.w, IM_F32_TO_INT8_SAT(col.x), IM_F32_TO_INT8_SAT(col.y), IM_F32_TO_INT8_SAT(col.z), IM_F32_TO_INT8_SAT(col.z));
 
     return pressed;
 }
@@ -8897,7 +8925,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], bool alpha)
     if (edit_mode == ImGuiColorEditMode_HSV)
         ColorConvertRGBtoHSV(f[0], f[1], f[2], f[0], f[1], f[2]);
 
-    int i[4] = { IM_F32_TO_INT8(f[0]), IM_F32_TO_INT8(f[1]), IM_F32_TO_INT8(f[2]), IM_F32_TO_INT8(f[3]) };
+    int i[4] = { IM_F32_TO_INT8_UNBOUND(f[0]), IM_F32_TO_INT8_UNBOUND(f[1]), IM_F32_TO_INT8_UNBOUND(f[2]), IM_F32_TO_INT8_UNBOUND(f[3]) };
 
     int components = alpha ? 4 : 3;
     bool value_changed = false;
@@ -8974,7 +9002,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], bool alpha)
 
     // Recreate our own tooltip over's ColorButton() one because we want to display correct alpha here
     if (IsItemHovered())
-        SetTooltip("Color:\n(%.2f,%.2f,%.2f,%.2f)\n#%02X%02X%02X%02X", col[0], col[1], col[2], col[3], IM_F32_TO_INT8(col[0]), IM_F32_TO_INT8(col[1]), IM_F32_TO_INT8(col[2]), IM_F32_TO_INT8(col[3]));
+        SetTooltip("Color:\n(%.2f,%.2f,%.2f,%.2f)\n#%02X%02X%02X%02X", col[0], col[1], col[2], col[3], IM_F32_TO_INT8_SAT(col[0]), IM_F32_TO_INT8_SAT(col[1]), IM_F32_TO_INT8_SAT(col[2]), IM_F32_TO_INT8_SAT(col[3]));
 
     if (window->DC.ColorEditMode == ImGuiColorEditMode_UserSelectShowButton)
     {
@@ -9095,7 +9123,8 @@ void ImGui::BeginGroup()
     group_data.BackupLogLinePosY = window->DC.LogLinePosY;
     group_data.AdvanceCursor = true;
 
-    window->DC.IndentX = window->DC.CursorPos.x - window->Pos.x - window->DC.ColumnsOffsetX;
+    window->DC.GroupOffsetX = window->DC.CursorPos.x - window->Pos.x - window->DC.ColumnsOffsetX;
+    window->DC.IndentX = window->DC.GroupOffsetX;
     window->DC.CursorMaxPos = window->DC.CursorPos;
     window->DC.CurrentLineHeight = 0.0f;
     window->DC.LogLinePosY = window->DC.CursorPos.y - 9999.0f;
@@ -9119,6 +9148,7 @@ void ImGui::EndGroup()
     window->DC.CurrentLineHeight = group_data.BackupCurrentLineHeight;
     window->DC.CurrentLineTextBaseOffset = group_data.BackupCurrentLineTextBaseOffset;
     window->DC.IndentX = group_data.BackupIndentX;
+    window->DC.GroupOffsetX = window->DC.IndentX;
     window->DC.LogLinePosY = window->DC.CursorPos.y - 9999.0f;
 
     if (group_data.AdvanceCursor)
@@ -9135,7 +9165,7 @@ void ImGui::EndGroup()
 
 // Gets back to previous line and continue with horizontal layout
 //      pos_x == 0      : follow right after previous item
-//      pos_x != 0      : align to specified x position
+//      pos_x != 0      : align to specified x position (relative to window/group left)
 //      spacing_w < 0   : use default spacing if pos_x == 0, no spacing if pos_x != 0
 //      spacing_w >= 0  : enforce spacing amount
 void ImGui::SameLine(float pos_x, float spacing_w)
@@ -9148,7 +9178,7 @@ void ImGui::SameLine(float pos_x, float spacing_w)
     if (pos_x != 0.0f)
     {
         if (spacing_w < 0.0f) spacing_w = 0.0f;
-        window->DC.CursorPos.x = window->Pos.x - window->Scroll.x + pos_x + spacing_w;
+        window->DC.CursorPos.x = window->Pos.x - window->Scroll.x + pos_x + spacing_w + window->DC.GroupOffsetX + window->DC.ColumnsOffsetX;
         window->DC.CursorPos.y = window->DC.CursorPosPrevLine.y;
     }
     else
@@ -9175,37 +9205,34 @@ void ImGui::NewLine()
 void ImGui::NextColumn()
 {
     ImGuiWindow* window = GetCurrentWindow();
-    if (window->SkipItems)
+    if (window->SkipItems || window->DC.ColumnsCount <= 1)
         return;
 
     ImGuiContext& g = *GImGui;
-    if (window->DC.ColumnsCount > 1)
+    PopItemWidth();
+    PopClipRect();
+
+    window->DC.ColumnsCellMaxY = ImMax(window->DC.ColumnsCellMaxY, window->DC.CursorPos.y);
+    if (++window->DC.ColumnsCurrent < window->DC.ColumnsCount)
     {
-        PopItemWidth();
-        PopClipRect();
-
-        window->DC.ColumnsCellMaxY = ImMax(window->DC.ColumnsCellMaxY, window->DC.CursorPos.y);
-        if (++window->DC.ColumnsCurrent < window->DC.ColumnsCount)
-        {
-            // Columns 1+ cancel out IndentX
-            window->DC.ColumnsOffsetX = GetColumnOffset(window->DC.ColumnsCurrent) - window->DC.IndentX + g.Style.ItemSpacing.x;
-            window->DrawList->ChannelsSetCurrent(window->DC.ColumnsCurrent);
-        }
-        else
-        {
-            window->DC.ColumnsCurrent = 0;
-            window->DC.ColumnsOffsetX = 0.0f;
-            window->DC.ColumnsCellMinY = window->DC.ColumnsCellMaxY;
-            window->DrawList->ChannelsSetCurrent(0);
-        }
-        window->DC.CursorPos.x = (float)(int)(window->Pos.x + window->DC.IndentX + window->DC.ColumnsOffsetX);
-        window->DC.CursorPos.y = window->DC.ColumnsCellMinY;
-        window->DC.CurrentLineHeight = 0.0f;
-        window->DC.CurrentLineTextBaseOffset = 0.0f;
-
-        PushColumnClipRect();
-        PushItemWidth(GetColumnWidth() * 0.65f);  // FIXME: Move on columns setup
+        // Columns 1+ cancel out IndentX
+        window->DC.ColumnsOffsetX = GetColumnOffset(window->DC.ColumnsCurrent) - window->DC.IndentX + g.Style.ItemSpacing.x;
+        window->DrawList->ChannelsSetCurrent(window->DC.ColumnsCurrent);
     }
+    else
+    {
+        window->DC.ColumnsCurrent = 0;
+        window->DC.ColumnsOffsetX = 0.0f;
+        window->DC.ColumnsCellMinY = window->DC.ColumnsCellMaxY;
+        window->DrawList->ChannelsSetCurrent(0);
+    }
+    window->DC.CursorPos.x = (float)(int)(window->Pos.x + window->DC.IndentX + window->DC.ColumnsOffsetX);
+    window->DC.CursorPos.y = window->DC.ColumnsCellMinY;
+    window->DC.CurrentLineHeight = 0.0f;
+    window->DC.CurrentLineTextBaseOffset = 0.0f;
+
+    PushColumnClipRect();
+    PushItemWidth(GetColumnWidth() * 0.65f);  // FIXME: Move on columns setup
 }
 
 int ImGui::GetColumnIndex()
@@ -9227,7 +9254,7 @@ static float GetDraggedColumnOffset(int column_index)
     ImGuiContext& g = *GImGui;
     ImGuiWindow* window = ImGui::GetCurrentWindowRead();
     IM_ASSERT(column_index > 0); // We cannot drag column 0. If you get this assert you may have a conflict between the ID of your columns and another widgets.
-    IM_ASSERT(g.ActiveId == window->DC.ColumnsSetID + ImGuiID(column_index));
+    IM_ASSERT(g.ActiveId == window->DC.ColumnsSetId + ImGuiID(column_index));
 
     float x = g.IO.MousePos.x - g.ActiveIdClickOffset.x - window->Pos.x;
     x = ImClamp(x, ImGui::GetColumnOffset(column_index-1)+g.Style.ColumnsMinSpacing, ImGui::GetColumnOffset(column_index+1)-g.Style.ColumnsMinSpacing);
@@ -9244,7 +9271,7 @@ float ImGui::GetColumnOffset(int column_index)
 
     if (g.ActiveId)
     {
-        const ImGuiID column_id = window->DC.ColumnsSetID + ImGuiID(column_index);
+        const ImGuiID column_id = window->DC.ColumnsSetId + ImGuiID(column_index);
         if (g.ActiveId == column_id)
             return GetDraggedColumnOffset(column_index);
     }
@@ -9265,7 +9292,7 @@ void ImGui::SetColumnOffset(int column_index, float offset)
     const float t = (offset - window->DC.ColumnsMinX) / (window->DC.ColumnsMaxX - window->DC.ColumnsMinX);
     window->DC.ColumnsData[column_index].OffsetNorm = t;
 
-    const ImGuiID column_id = window->DC.ColumnsSetID + ImGuiID(column_index);
+    const ImGuiID column_id = window->DC.ColumnsSetId + ImGuiID(column_index);
     window->DC.StateStorage->SetFloat(column_id, t);
 }
 
@@ -9316,7 +9343,7 @@ void ImGui::Columns(int columns_count, const char* id, bool border)
         for (int i = 1; i < window->DC.ColumnsCount; i++)
         {
             float x = window->Pos.x + GetColumnOffset(i);
-            const ImGuiID column_id = window->DC.ColumnsSetID + ImGuiID(i);
+            const ImGuiID column_id = window->DC.ColumnsSetId + ImGuiID(i);
             const ImRect column_rect(ImVec2(x-4,y1),ImVec2(x+4,y2));
             if (IsClippedEx(column_rect, &column_id, false))
                 continue;
@@ -9334,7 +9361,7 @@ void ImGui::Columns(int columns_count, const char* id, bool border)
             if (held)
             {
                 if (g.ActiveIdIsJustActivated)
-                    g.ActiveIdClickOffset.x -= 4;   // Store from center of column line
+                    g.ActiveIdClickOffset.x -= 4;   // Store from center of column line (we used a 8 wide rect for columns clicking)
                 x = GetDraggedColumnOffset(i);
                 SetColumnOffset(i, x);
             }
@@ -9344,7 +9371,7 @@ void ImGui::Columns(int columns_count, const char* id, bool border)
     // Differentiate column ID with an arbitrary prefix for cases where users name their columns set the same as another widget.
     // In addition, when an identifier isn't explicitly provided we include the number of columns in the hash to make it uniquer.
     PushID(0x11223347 + (id ? 0 : columns_count));
-    window->DC.ColumnsSetID = window->GetID(id ? id : "columns");
+    window->DC.ColumnsSetId = window->GetID(id ? id : "columns");
     PopID();
 
     // Set state for first column
@@ -9366,7 +9393,7 @@ void ImGui::Columns(int columns_count, const char* id, bool border)
         window->DC.ColumnsData.resize(columns_count + 1);
         for (int column_index = 0; column_index < columns_count + 1; column_index++)
         {
-            const ImGuiID column_id = window->DC.ColumnsSetID + ImGuiID(column_index);
+            const ImGuiID column_id = window->DC.ColumnsSetId + ImGuiID(column_index);
             KeepAliveID(column_id);
             const float default_t = column_index / (float)window->DC.ColumnsCount;
             const float t = window->DC.StateStorage->GetFloat(column_id, default_t);      // Cheaply store our floating point value inside the integer (could store an union into the map?)
@@ -9467,7 +9494,7 @@ void ImGui::ValueColor(const char* prefix, const ImVec4& v)
     ColorButton(v, true);
 }
 
-void ImGui::ValueColor(const char* prefix, unsigned int v)
+void ImGui::ValueColor(const char* prefix, ImU32 v)
 {
     Text("%s: %08X", prefix, v);
     SameLine();
@@ -9499,12 +9526,8 @@ void ImGui::ValueColor(const char* prefix, unsigned int v)
 
 static const char* GetClipboardTextFn_DefaultImpl()
 {
-    static char* buf_local = NULL;
-    if (buf_local)
-    {
-        ImGui::MemFree(buf_local);
-        buf_local = NULL;
-    }
+    static ImVector buf_local;
+    buf_local.clear();
     if (!OpenClipboard(NULL))
         return NULL;
     HANDLE wbuf_handle = GetClipboardData(CF_UNICODETEXT);
@@ -9513,19 +9536,18 @@ static const char* GetClipboardTextFn_DefaultImpl()
     if (ImWchar* wbuf_global = (ImWchar*)GlobalLock(wbuf_handle))
     {
         int buf_len = ImTextCountUtf8BytesFromStr(wbuf_global, NULL) + 1;
-        buf_local = (char*)ImGui::MemAlloc(buf_len * sizeof(char));
-        ImTextStrToUtf8(buf_local, buf_len, wbuf_global, NULL);
+        buf_local.resize(buf_len);
+        ImTextStrToUtf8(buf_local.Data, buf_len, wbuf_global, NULL);
     }
     GlobalUnlock(wbuf_handle);
     CloseClipboard();
-    return buf_local;
+    return buf_local.Data;
 }
 
 static void SetClipboardTextFn_DefaultImpl(const char* text)
 {
     if (!OpenClipboard(NULL))
         return;
-
     const int wbuf_length = ImTextCountCharsFromUtf8(text, NULL) + 1;
     HGLOBAL wbuf_handle = GlobalAlloc(GMEM_MOVEABLE, (SIZE_T)wbuf_length * sizeof(ImWchar));
     if (wbuf_handle == NULL)
@@ -9564,7 +9586,7 @@ static void SetClipboardTextFn_DefaultImpl(const char* text)
 #endif
 
 // Win32 API IME support (for Asian languages, etc.)
-#if defined(_WIN32) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS)
+#if defined(_WIN32) && !defined(__GNUC__) && !defined(IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS)
 
 #include 
 #ifdef _MSC_VER
@@ -9681,6 +9703,8 @@ void ImGui::ShowMetricsWindow(bool* p_open)
                 if (!ImGui::TreeNode(window, "%s '%s', %d @ 0x%p", label, window->Name, window->Active || window->WasActive, window))
                     return;
                 NodeDrawList(window->DrawList, "DrawList");
+                ImGui::BulletText("Size: (%.1f,%.1f), SizeContents (%.1f,%.1f)", window->Size.x, window->Size.y, window->SizeContents.x, window->SizeContents.y);
+                ImGui::BulletText("Scroll: (%.2f,%.2f)", window->Scroll.x, window->Scroll.y);
                 if (window->RootWindow != window) NodeWindow(window->RootWindow, "RootWindow");
                 if (window->DC.ChildWindows.Size > 0) NodeWindows(window->DC.ChildWindows, "ChildWindows");
                 ImGui::BulletText("Storage: %d bytes", window->StateStorage.Data.Size * (int)sizeof(ImGuiStorage::Pair));
@@ -9701,7 +9725,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
             for (int i = 0; i < g.OpenPopupStack.Size; i++)
             {
                 ImGuiWindow* window = g.OpenPopupStack[i].Window;
-                ImGui::BulletText("PopupID: %08x, Window: '%s'%s%s", g.OpenPopupStack[i].PopupID, window ? window->Name : "NULL", window && (window->Flags & ImGuiWindowFlags_ChildWindow) ? " ChildWindow" : "", window && (window->Flags & ImGuiWindowFlags_ChildMenu) ? " ChildMenu" : "");
+                ImGui::BulletText("PopupID: %08x, Window: '%s'%s%s", g.OpenPopupStack[i].PopupId, window ? window->Name : "NULL", window && (window->Flags & ImGuiWindowFlags_ChildWindow) ? " ChildWindow" : "", window && (window->Flags & ImGuiWindowFlags_ChildMenu) ? " ChildMenu" : "");
             }
             ImGui::TreePop();
         }
diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h
index 97411beb216..6a1ed055964 100644
--- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h
+++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h
@@ -62,11 +62,11 @@ struct ImGuiSizeConstraintCallbackData;// Structure used to constraint window si
 struct ImGuiListClipper;            // Helper to manually clip large list of items
 struct ImGuiContext;                // ImGui context (opaque)
 
-// Enumerations (declared as int for compatibility and to not pollute the top of this file)
-typedef unsigned int ImU32;
+// Typedefs and Enumerations (declared as int for compatibility and to not pollute the top of this file)
+typedef unsigned int ImU32;         // 32-bit unsigned integer (typically used to store packed colors)
+typedef unsigned int ImGuiID;       // unique ID used by widgets (typically hashed from a stack of string)
 typedef unsigned short ImWchar;     // character for keyboard input/display
 typedef void* ImTextureID;          // user data to identify a texture (this is whatever to you want it to be! read the FAQ about ImTextureID in imgui.cpp)
-typedef ImU32 ImGuiID;              // unique ID used by widgets (typically hashed from a stack of string)
 typedef int ImGuiCol;               // a color identifier for styling       // enum ImGuiCol_
 typedef int ImGuiStyleVar;          // a variable identifier for styling    // enum ImGuiStyleVar_
 typedef int ImGuiKey;               // a key identifier (ImGui-side enum)   // enum ImGuiKey_
@@ -352,7 +352,7 @@ namespace ImGui
     IMGUI_API void          Value(const char* prefix, unsigned int v);
     IMGUI_API void          Value(const char* prefix, float v, const char* float_format = NULL);
     IMGUI_API void          ValueColor(const char* prefix, const ImVec4& v);
-    IMGUI_API void          ValueColor(const char* prefix, unsigned int v);
+    IMGUI_API void          ValueColor(const char* prefix, ImU32 v);
 
     // Tooltips
     IMGUI_API void          SetTooltip(const char* fmt, ...) IM_PRINTFARGS(1);                  // set tooltip under mouse-cursor, typically use with ImGui::IsHovered(). last call wins
@@ -694,9 +694,9 @@ enum ImGuiMouseCursor_
 enum ImGuiSetCond_
 {
     ImGuiSetCond_Always        = 1 << 0, // Set the variable
-    ImGuiSetCond_Once          = 1 << 1, // Only set the variable on the first call per runtime session
-    ImGuiSetCond_FirstUseEver  = 1 << 2, // Only set the variable if the window doesn't exist in the .ini file
-    ImGuiSetCond_Appearing     = 1 << 3  // Only set the variable if the window is appearing after being inactive (or the first time)
+    ImGuiSetCond_Once          = 1 << 1, // Set the variable once per runtime session (only the first call with succeed)
+    ImGuiSetCond_FirstUseEver  = 1 << 2, // Set the variable if the window has no saved data (if doesn't exist in the .ini file)
+    ImGuiSetCond_Appearing     = 1 << 3  // Set the variable if the window is appearing after being hidden/inactive (or the first time)
 };
 
 struct ImGuiStyle
@@ -758,10 +758,7 @@ struct ImGuiIO
     ImVec2        DisplayVisibleMax;        //  (0.0f,0.0f)  // If the values are the same, we defaults to Min=(0.0f) and Max=DisplaySize
 
     // Advanced/subtle behaviors
-    bool          WordMovementUsesAltKey;   // = defined(__APPLE__) // OS X style: Text editing cursor movement using Alt instead of Ctrl
-    bool          ShortcutsUseSuperKey;     // = defined(__APPLE__) // OS X style: Shortcuts using Cmd/Super instead of Ctrl
-    bool          DoubleClickSelectsWord;   // = defined(__APPLE__) // OS X style: Double click selects by word instead of selecting whole text
-    bool          MultiSelectUsesSuperKey;  // = defined(__APPLE__) // OS X style: Multi-selection in lists uses Cmd/Super instead of Ctrl [unused yet]
+    bool          OSXBehaviors;             // = defined(__APPLE__) // OS X style: Text editing cursor movement using Alt instead of Ctrl, Shortcuts using Cmd/Super instead of Ctrl, Line/Text Start and End using Cmd+Arrows instead of Home/End, Double click selects by word instead of selecting whole text, Multi-selection in lists uses Cmd/Super instead of Ctrl
 
     //------------------------------------------------------------------
     // User Functions
@@ -888,7 +885,8 @@ public:
         if (new_capacity <= Capacity) return;
         T* new_data = (value_type*)ImGui::MemAlloc((size_t)new_capacity * sizeof(value_type));
         memset(&new_data[Size], 0, (size_t)(new_capacity - Size) * sizeof(value_type)); // BK - clear garbage so that 0 initialized ImString works properly.
-        memcpy(new_data, Data, (size_t)Size * sizeof(value_type));
+        if (Data)
+            memcpy(new_data, Data, (size_t)Size * sizeof(value_type));
         ImGui::MemFree(Data);
         Data = new_data;
         Capacity = new_capacity;
@@ -1272,7 +1270,7 @@ struct ImFontConfig
     int             FontNo;                     // 0        // Index of font within TTF file
     float           SizePixels;                 //          // Size in pixels for rasterizer
     int             OversampleH, OversampleV;   // 3, 1     // Rasterize at higher quality for sub-pixel positioning. We don't use sub-pixel positions on the Y axis.
-    bool            PixelSnapH;                 // false    // Align every character to pixel boundary (if enabled, set OversampleH/V to 1)
+    bool            PixelSnapH;                 // false    // Align every glyph to pixel boundary. Useful e.g. if you are merging a non-pixel aligned font with the default font. If enabled, you can set OversampleH/V to 1.
     ImVec2          GlyphExtraSpacing;          // 0, 0     // Extra spacing (in pixels) between glyphs
     const ImWchar*  GlyphRanges;                //          // Pointer to a user-provided list of Unicode range (2 value per range, values are inclusive, zero-terminated list). THE ARRAY DATA NEEDS TO PERSIST AS LONG AS THE FONT IS ALIVE.
     bool            MergeMode;                  // false    // Merge into previous ImFont, so you can combine multiple inputs font into one ImFont (e.g. ASCII font + icons + Japanese glyphs).
@@ -1325,6 +1323,7 @@ struct ImFontAtlas
     IMGUI_API const ImWchar*    GetGlyphRangesJapanese();   // Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs
     IMGUI_API const ImWchar*    GetGlyphRangesChinese();    // Japanese + full set of about 21000 CJK Unified Ideographs
     IMGUI_API const ImWchar*    GetGlyphRangesCyrillic();   // Default + about 400 Cyrillic characters
+    IMGUI_API const ImWchar*    GetGlyphRangesThai();       // Default + Thai characters
 
     // Members
     // (Access texture data via GetTexData*() calls which will setup a default font for you.)
diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp
index 62bbd8c3bc5..67846e7ab1b 100644
--- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp
+++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp
@@ -1020,24 +1020,24 @@ void ImGui::ShowTestWindow(bool* p_open)
             ImGui::Text("Hello\nWorld"); ImGui::SameLine();
             ImGui::Text("One\nTwo\nThree");
 
-            ImGui::Button("HOP"); ImGui::SameLine();
+            ImGui::Button("HOP##1"); ImGui::SameLine();
             ImGui::Text("Banana"); ImGui::SameLine();
             ImGui::Text("Hello\nWorld"); ImGui::SameLine();
             ImGui::Text("Banana");
 
-            ImGui::Button("HOP"); ImGui::SameLine();
+            ImGui::Button("HOP##2"); ImGui::SameLine();
             ImGui::Text("Hello\nWorld"); ImGui::SameLine();
             ImGui::Text("Banana");
 
-            ImGui::Button("TEST"); ImGui::SameLine();
+            ImGui::Button("TEST##1"); ImGui::SameLine();
             ImGui::Text("TEST"); ImGui::SameLine();
-            ImGui::SmallButton("TEST");
+            ImGui::SmallButton("TEST##2");
 
             ImGui::AlignFirstTextHeightToWidgets(); // If your line starts with text, call this to align it to upcoming widgets.
             ImGui::Text("Text aligned to Widget"); ImGui::SameLine();
-            ImGui::Button("Widget"); ImGui::SameLine();
+            ImGui::Button("Widget##1"); ImGui::SameLine();
             ImGui::Text("Widget"); ImGui::SameLine();
-            ImGui::SmallButton("Widget");
+            ImGui::SmallButton("Widget##2");
 
             // Tree
             const float spacing = ImGui::GetStyle().ItemInnerSpacing.x;
@@ -1415,9 +1415,9 @@ void ImGui::ShowTestWindow(bool* p_open)
             ImGui::InputFloat("blue", &bar, 0.05f, 0, 3);
             ImGui::NextColumn();
 
-            if (ImGui::CollapsingHeader("Category A")) { ImGui::Text("Blah blah blah"); } ImGui::NextColumn();
-            if (ImGui::CollapsingHeader("Category B")) { ImGui::Text("Blah blah blah"); } ImGui::NextColumn();
-            if (ImGui::CollapsingHeader("Category C")) { ImGui::Text("Blah blah blah"); } ImGui::NextColumn();
+            if (ImGui::CollapsingHeader("Category A")) ImGui::Text("Blah blah blah"); ImGui::NextColumn();
+            if (ImGui::CollapsingHeader("Category B")) ImGui::Text("Blah blah blah"); ImGui::NextColumn();
+            if (ImGui::CollapsingHeader("Category C")) ImGui::Text("Blah blah blah"); ImGui::NextColumn();
             ImGui::Columns(1);
             ImGui::Separator();
             ImGui::TreePop();
@@ -1873,9 +1873,9 @@ static void ShowExampleAppConstrainedResize(bool* p_open)
             "Custom: Fixed Steps (100)",
         };
         ImGui::Combo("Constraint", &type, desc, IM_ARRAYSIZE(desc)); 
-        if (ImGui::Button("200x200")) { ImGui::SetWindowSize(ImVec2(200,200)); } ImGui::SameLine();
-        if (ImGui::Button("500x500")) { ImGui::SetWindowSize(ImVec2(500,500)); } ImGui::SameLine();
-        if (ImGui::Button("800x200")) { ImGui::SetWindowSize(ImVec2(800,200)); }
+        if (ImGui::Button("200x200")) ImGui::SetWindowSize(ImVec2(200,200)); ImGui::SameLine();
+        if (ImGui::Button("500x500")) ImGui::SetWindowSize(ImVec2(500,500)); ImGui::SameLine();
+        if (ImGui::Button("800x200")) ImGui::SetWindowSize(ImVec2(800,200));
         for (int i = 0; i < 10; i++) 
             ImGui::Text("Hello, sailor! Making this line long enough for the example.");
     }
@@ -2088,8 +2088,8 @@ struct ExampleAppConsole
         // TODO: display items starting from the bottom
 
         if (ImGui::SmallButton("Add Dummy Text")) { AddLog("%d some text", Items.Size); AddLog("some more text"); AddLog("display very important message here!"); } ImGui::SameLine();
-        if (ImGui::SmallButton("Add Dummy Error")) { AddLog("[error] something went wrong"); } ImGui::SameLine();
-        if (ImGui::SmallButton("Clear")) { ClearLog(); } ImGui::SameLine();
+        if (ImGui::SmallButton("Add Dummy Error")) AddLog("[error] something went wrong"); ImGui::SameLine();
+        if (ImGui::SmallButton("Clear")) ClearLog(); ImGui::SameLine();
         if (ImGui::SmallButton("Scroll to bottom")) ScrollToBottom = true;
         //static float t = 0.0f; if (ImGui::GetTime() - t > 0.02f) { t = ImGui::GetTime(); AddLog("Spam %f", t); }
 
@@ -2143,7 +2143,7 @@ struct ExampleAppConsole
         if (ImGui::InputText("Input", InputBuf, IM_ARRAYSIZE(InputBuf), ImGuiInputTextFlags_EnterReturnsTrue|ImGuiInputTextFlags_CallbackCompletion|ImGuiInputTextFlags_CallbackHistory, &TextEditCallbackStub, (void*)this))
         {
             char* input_end = InputBuf+strlen(InputBuf);
-            while (input_end > InputBuf && input_end[-1] == ' ') { input_end--; } *input_end = 0;
+            while (input_end > InputBuf && input_end[-1] == ' ') input_end--; *input_end = 0;
             if (InputBuf[0])
                 ExecCommand(InputBuf);
             strcpy(InputBuf, "");
diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_draw.cpp b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_draw.cpp
index 026f7f7e101..5721873aed3 100644
--- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_draw.cpp
+++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_draw.cpp
@@ -19,10 +19,10 @@
 
 #include       // vsnprintf, sscanf, printf
 #if !defined(alloca)
-#if defined(_WIN32)
+#ifdef _WIN32
 #include      // alloca
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
-#include      // alloca
+#elif (defined(__FreeBSD__) || defined(FreeBSD_kernel) || defined(__DragonFly__)) && !defined(__GLIBC__)
+#include      // alloca. FreeBSD uses stdlib.h unless GLIBC
 #else
 #include      // alloca
 #endif
@@ -199,7 +199,7 @@ void ImDrawList::UpdateClipRect()
 
     // Try to merge with previous command if it matches, else use current command
     ImDrawCmd* prev_cmd = CmdBuffer.Size > 1 ? curr_cmd - 1 : NULL;
-    if (prev_cmd && memcmp(&prev_cmd->ClipRect, &curr_clip_rect, sizeof(ImVec4)) == 0 && prev_cmd->TextureId == GetCurrentTextureId() && prev_cmd->UserCallback == NULL)
+    if (curr_cmd->ElemCount == 0 && prev_cmd && memcmp(&prev_cmd->ClipRect, &curr_clip_rect, sizeof(ImVec4)) == 0 && prev_cmd->TextureId == GetCurrentTextureId() && prev_cmd->UserCallback == NULL)
         CmdBuffer.pop_back();
     else
         curr_cmd->ClipRect = curr_clip_rect;
@@ -1654,6 +1654,17 @@ const ImWchar*  ImFontAtlas::GetGlyphRangesCyrillic()
     return &ranges[0];
 }
 
+const ImWchar*  ImFontAtlas::GetGlyphRangesThai()
+{
+    static const ImWchar ranges[] =
+    {
+        0x0020, 0x00FF, // Basic Latin
+        0x0E00, 0x0E7F, // Thai
+        0,
+    };
+    return &ranges[0];
+}
+
 //-----------------------------------------------------------------------------
 // ImFont
 //-----------------------------------------------------------------------------
diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_internal.h b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_internal.h
index 28fb93e98d2..7b59bb63f66 100644
--- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_internal.h
+++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_internal.h
@@ -312,7 +312,7 @@ struct IMGUI_API ImGuiTextEditState
 struct ImGuiIniData
 {
     char*       Name;
-    ImGuiID     ID;
+    ImGuiID     Id;
     ImVec2      Pos;
     ImVec2      Size;
     bool        Collapsed;
@@ -331,13 +331,13 @@ struct ImGuiMouseCursorData
 // Storage for current popup stack
 struct ImGuiPopupRef
 {
-    ImGuiID         PopupID;        // Set on OpenPopup()
+    ImGuiID         PopupId;        // Set on OpenPopup()
     ImGuiWindow*    Window;         // Resolved on BeginPopup() - may stay unresolved if user never calls OpenPopup()
     ImGuiWindow*    ParentWindow;   // Set on OpenPopup()
     ImGuiID         ParentMenuSet;  // Set on OpenPopup()
     ImVec2          MousePosOnOpen; // Copy of mouse position at the time of opening popup
 
-    ImGuiPopupRef(ImGuiID id, ImGuiWindow* parent_window, ImGuiID parent_menu_set, const ImVec2& mouse_pos) { PopupID = id; Window = NULL; ParentWindow = parent_window; ParentMenuSet = parent_menu_set; MousePosOnOpen = mouse_pos; }
+    ImGuiPopupRef(ImGuiID id, ImGuiWindow* parent_window, ImGuiID parent_menu_set, const ImVec2& mouse_pos) { PopupId = id; Window = NULL; ParentWindow = parent_window; ParentMenuSet = parent_menu_set; MousePosOnOpen = mouse_pos; }
 };
 
 // Main state for ImGui
@@ -481,7 +481,7 @@ struct ImGuiContext
         ScalarAsInputTextId = 0;
         DragCurrentValue = 0.0f;
         DragLastMouseDelta = ImVec2(0.0f, 0.0f);
-        DragSpeedDefaultRatio = 0.01f;
+        DragSpeedDefaultRatio = 1.0f / 100.0f;
         DragSpeedScaleSlow = 0.01f;
         DragSpeedScaleFast = 10.0f;
         ScrollbarClickDeltaToGrabCenter = ImVec2(0.0f, 0.0f);
@@ -522,7 +522,7 @@ struct IMGUI_API ImGuiDrawContext
     float                   PrevLineTextBaseOffset;
     float                   LogLinePosY;
     int                     TreeDepth;
-    ImGuiID                 LastItemID;
+    ImGuiID                 LastItemId;
     ImRect                  LastItemRect;
     bool                    LastItemHoveredAndUsable;  // Item rectangle is hovered, and its window is currently interactable with (not blocked by a popup preventing access to the window)
     bool                    LastItemHoveredRect;       // Item rectangle is hovered, but its window may or not be currently interactable with (might be blocked by a popup preventing access to the window)
@@ -546,6 +546,7 @@ struct IMGUI_API ImGuiDrawContext
     int                     StackSizesBackup[6];    // Store size of various stacks for asserting
 
     float                   IndentX;                // Indentation / start position from left of window (increased by TreePush/TreePop, etc.)
+    float                   GroupOffsetX;
     float                   ColumnsOffsetX;         // Offset to the current column (if ColumnsCurrent > 0). FIXME: This and the above should be a stack to allow use cases like Tree->Column->Tree. Need revamp columns API.
     int                     ColumnsCurrent;
     int                     ColumnsCount;
@@ -555,7 +556,7 @@ struct IMGUI_API ImGuiDrawContext
     float                   ColumnsCellMinY;
     float                   ColumnsCellMaxY;
     bool                    ColumnsShowBorders;
-    ImGuiID                 ColumnsSetID;
+    ImGuiID                 ColumnsSetId;
     ImVector ColumnsData;
 
     ImGuiDrawContext()
@@ -565,7 +566,7 @@ struct IMGUI_API ImGuiDrawContext
         CurrentLineTextBaseOffset = PrevLineTextBaseOffset = 0.0f;
         LogLinePosY = -1.0f;
         TreeDepth = 0;
-        LastItemID = 0;
+        LastItemId = 0;
         LastItemRect = ImRect(0.0f,0.0f,0.0f,0.0f);
         LastItemHoveredAndUsable = LastItemHoveredRect = false;
         MenuBarAppending = false;
@@ -587,7 +588,7 @@ struct IMGUI_API ImGuiDrawContext
         ColumnsStartPosY = 0.0f;
         ColumnsCellMinY = ColumnsCellMaxY = 0.0f;
         ColumnsShowBorders = true;
-        ColumnsSetID = 0;
+        ColumnsSetId = 0;
     }
 };
 
@@ -606,7 +607,7 @@ struct IMGUI_API ImGuiWindow
     ImVec2                  SizeContentsExplicit;               // Size of contents explicitly set by the user via SetNextWindowContentSize()
     ImRect                  ContentsRegionRect;                 // Maximum visible content position in window coordinates. ~~ (SizeContentsExplicit ? SizeContentsExplicit : Size - ScrollbarSizes) - CursorStartPos, per axis
     ImVec2                  WindowPadding;                      // Window padding at the time of begin. We need to lock it, in particular manipulation of the ShowBorder would have an effect
-    ImGuiID                 MoveID;                             // == window->GetID("#MOVE")
+    ImGuiID                 MoveId;                             // == window->GetID("#MOVE")
     ImVec2                  Scroll;
     ImVec2                  ScrollTarget;                       // target scroll position. stored as cursor position with scrolling canceled out, so the highest point is always 0.0f. (FLT_MAX for no change)
     ImVec2                  ScrollTargetCenterRatio;            // 0.0f = scroll so that target position is at top, 0.5f = scroll so that target position is centered
@@ -619,7 +620,7 @@ struct IMGUI_API ImGuiWindow
     bool                    Collapsed;                          // Set when collapsing window to become only title-bar
     bool                    SkipItems;                          // == Visible && !Collapsed
     int                     BeginCount;                         // Number of Begin() during the current frame (generally 0 or 1, 1+ if appending via multiple Begin/End pairs)
-    ImGuiID                 PopupID;                            // ID in the popup stack when this window is used as a popup/menu (because we use generic Name/ID for recycling)
+    ImGuiID                 PopupId;                            // ID in the popup stack when this window is used as a popup/menu (because we use generic Name/ID for recycling)
     int                     AutoFitFramesX, AutoFitFramesY;
     bool                    AutoFitOnlyGrows;
     int                     AutoPosLastDirection;
@@ -643,7 +644,7 @@ struct IMGUI_API ImGuiWindow
     ImGuiWindow*            RootNonPopupWindow;                 // If we are a child window, this is pointing to the first non-child non-popup parent window. Else point to ourself.
     ImGuiWindow*            ParentWindow;                       // If we are a child window, this is pointing to our parent window. Else point to NULL.
 
-    // Focus
+    // Navigation / Focus
     int                     FocusIdxAllCounter;                 // Start at -1 and increase as assigned via FocusItemRegister()
     int                     FocusIdxTabCounter;                 // (same, but only count widgets which you can Tab through)
     int                     FocusIdxAllRequestCurrent;          // Item being requested for focus
@@ -657,6 +658,7 @@ public:
 
     ImGuiID     GetID(const char* str, const char* str_end = NULL);
     ImGuiID     GetID(const void* ptr);
+    ImGuiID     GetIDNoKeepAlive(const char* str, const char* str_end = NULL);
 
     ImRect      Rect() const                            { return ImRect(Pos.x, Pos.y, Pos.x+Size.x, Pos.y+Size.y); }
     float       CalcFontSize() const                    { return GImGui->FontBaseSize * FontWindowScale; }
diff --git a/3rdparty/bgfx/3rdparty/remotery/lib/Remotery.c b/3rdparty/bgfx/3rdparty/remotery/lib/Remotery.c
index 6b3a35695f2..3acc72fa336 100644
--- a/3rdparty/bgfx/3rdparty/remotery/lib/Remotery.c
+++ b/3rdparty/bgfx/3rdparty/remotery/lib/Remotery.c
@@ -1,5 +1,5 @@
 //
-// Copyright 2014 Celtoys Ltd
+// Copyright 2014-2016 Celtoys Ltd
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -128,8 +128,11 @@ static rmtBool g_SettingsInitialized = RMT_FALSE;
 
 #endif
 
-
-#define RMT_UNREFERENCED_PARAMETER(i) (void)(1 ? (void)0 : ((void)i))
+#if 0 //def _MSC_VER
+    #define RMT_UNREFERENCED_PARAMETER(i) assert(i == 0 || i != 0);	// To fool warning C4100 on warning level 4
+#else
+    #define RMT_UNREFERENCED_PARAMETER(i) (void)(1 ? (void)0 : ((void)i))
+#endif
 
 
 #if RMT_USE_CUDA
@@ -173,9 +176,9 @@ static void rmtFree( void* ptr )
     g_Settings.free( g_Settings.mm_context, ptr );
 }
 
-
+#if RMT_USE_OPENGL
 // DLL/Shared Library functions
-void* rmtLoadLibrary(const char* path)
+static void* rmtLoadLibrary(const char* path)
 {
     #if defined(RMT_PLATFORM_WINDOWS)
         return (void*)LoadLibraryA(path);
@@ -198,14 +201,21 @@ static void rmtFreeLibrary(void* handle)
 static void* rmtGetProcAddress(void* handle, const char* symbol)
 {
     #if defined(RMT_PLATFORM_WINDOWS)
+        #ifdef _MSC_VER
+            #pragma warning(push)
+            #pragma warning(disable:4152) // C4152: nonstandard extension, function/data pointer conversion in expression
+        #endif
         return GetProcAddress((HMODULE)handle, (LPCSTR)symbol);
+        #ifdef _MSC_VER
+            #pragma warning(pop)
+        #endif
     #elif defined(RMT_PLATFORM_POSIX)
         return dlsym(handle, symbol);
     #else
         return NULL;
     #endif
 }
-
+#endif
 
 /*
 ------------------------------------------------------------------------------------------------------------------------
@@ -856,8 +866,9 @@ static void VirtualMirrorBuffer_Destructor(VirtualMirrorBuffer* buffer)
 */
 
 
-typedef struct Thread Thread;
-typedef rmtError(*ThreadProc)(Thread* thread);
+struct Thread;
+typedef rmtError(*ThreadProc)(struct Thread* thread);
+
 
 typedef struct Thread
 {
@@ -883,9 +894,6 @@ typedef struct Thread
 } Thread;
 
 
-typedef rmtError (*ThreadProc)(Thread* thread);
-
-
 #if defined(RMT_PLATFORM_WINDOWS)
 
     static DWORD WINAPI ThreadProcWindows(LPVOID lpParameter)
@@ -1046,6 +1054,7 @@ static void Thread_Destructor(Thread* thread)
 // NOTE: Microsoft also has its own version of these functions so I'm do some hacky PP to remove them
 #define strnlen_s strnlen_s_safe_c
 #define strncat_s strncat_s_safe_c
+#define strcpy_s strcpy_s_safe_c
 
 
 #define RSIZE_MAX_STR (4UL << 10)   /* 4KB */
@@ -1066,7 +1075,7 @@ static void Thread_Destructor(Thread* thread)
 typedef int errno_t;
 #endif
 
-#if !defined(_WIN64) && !defined(__APPLE__) || defined(__MINGW32__)
+#if (!defined(_WIN64) && !defined(__APPLE__)) || (defined(__MINGW32__) && !defined(RSIZE_T_DEFINED))
 typedef unsigned int rsize_t;
 #endif
 
@@ -1299,6 +1308,79 @@ strncat_s (char *dest, rsize_t dmax, const char *src, rsize_t slen)
 }
 
 
+errno_t
+strcpy_s(char *dest, rsize_t dmax, const char *src)
+{
+    const char *overlap_bumper;
+
+    if (dest == NULL) {
+        return RCNEGATE(ESNULLP);
+    }
+
+    if (dmax == 0) {
+        return RCNEGATE(ESZEROL);
+    }
+
+    if (dmax > RSIZE_MAX_STR) {
+        return RCNEGATE(ESLEMAX);
+    }
+
+    if (src == NULL) {
+        *dest = '\0';
+        return RCNEGATE(ESNULLP);
+    }
+
+    if (dest == src) {
+        return RCNEGATE(EOK);
+    }
+
+    /* hold base of dest in case src was not copied */
+    if (dest < src) {
+        overlap_bumper = src;
+
+        while (dmax > 0) {
+            if (dest == overlap_bumper) {
+                return RCNEGATE(ESOVRLP);
+            }
+
+            *dest = *src;
+            if (*dest == '\0') {
+                return RCNEGATE(EOK);
+            }
+
+            dmax--;
+            dest++;
+            src++;
+        }
+
+    }
+    else {
+        overlap_bumper = dest;
+
+        while (dmax > 0) {
+            if (src == overlap_bumper) {
+                return RCNEGATE(ESOVRLP);
+            }
+
+            *dest = *src;
+            if (*dest == '\0') {
+                return RCNEGATE(EOK);
+            }
+
+            dmax--;
+            dest++;
+            src++;
+        }
+    }
+
+    /*
+    * the entire src must have been copied, if not reset dest
+    * to null the string.
+    */
+    return RCNEGATE(ESNOSPC);
+}
+
+
 
 /* very simple integer to hex */
 static const char* hex_encoding_table = "0123456789ABCDEF";
@@ -1681,10 +1763,11 @@ static void TCPSocket_Destructor(TCPSocket* tcp_socket)
 }
 
 
-static rmtError TCPSocket_RunServer(TCPSocket* tcp_socket, rmtU16 port)
+static rmtError TCPSocket_RunServer(TCPSocket* tcp_socket, rmtU16 port, rmtBool limit_connections_to_localhost)
 {
     SOCKET s = INVALID_SOCKET;
     struct sockaddr_in sin;
+    int enable = 1;
     #ifdef RMT_PLATFORM_WINDOWS
         u_long nonblock = 1;
     #endif
@@ -1697,9 +1780,23 @@ static rmtError TCPSocket_RunServer(TCPSocket* tcp_socket, rmtU16 port)
     if (s == SOCKET_ERROR)
         return RMT_ERROR_SOCKET_CREATE_FAIL;
 
+    // set SO_REUSEADDR so binding doesn't fail when restarting the application
+    // (otherwise the same port can't be reused within TIME_WAIT)
+    // I'm not checking for errors because if this fails (unlikely) we might still
+    // be able to bind to the socket anyway
+    #ifdef RMT_PLATFORM_POSIX
+        setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(enable));
+    #elif defined(RMT_PLATFORM_WINDOWS)
+        // windows also needs SO_EXCLUSEIVEADDRUSE,
+        // see http://www.andy-pearce.com/blog/posts/2013/Feb/so_reuseaddr-on-windows/
+        setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&enable, sizeof(enable));
+        enable = 1;
+        setsockopt(s, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, (char *)&enable, sizeof(enable));
+    #endif
+
     // Bind the socket to the incoming port
     sin.sin_family = AF_INET;
-    sin.sin_addr.s_addr = INADDR_ANY;
+    sin.sin_addr.s_addr = htonl(limit_connections_to_localhost ? INADDR_LOOPBACK : INADDR_ANY);
     sin.sin_port = htons(port);
     if (bind(s, (struct sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
         return RMT_ERROR_SOCKET_BIND_FAIL;
@@ -1816,6 +1913,18 @@ static rmtError TCPSocket_AcceptConnection(TCPSocket* tcp_socket, TCPSocket** cl
     if (s == SOCKET_ERROR)
         return RMT_ERROR_SOCKET_ACCEPT_FAIL;
 
+#ifdef SO_NOSIGPIPE
+    // On POSIX systems, send() may send a SIGPIPE signal when writing to an
+    // already closed connection. By setting this option, we prevent the
+    // signal from being emitted and send will instead return an error and set
+    // errno to EPIPE.
+    //
+    // This is supported on BSD platforms and not on Linux.
+    {
+        int flag = 1;
+        setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, &flag, sizeof(flag));
+    }
+#endif
     // Create a client socket for the new connection
     assert(client_socket != NULL);
     New_0(TCPSocket, *client_socket);
@@ -1871,7 +1980,14 @@ static rmtError TCPSocket_Send(TCPSocket* tcp_socket, const void* data, rmtU32 l
     while (cur_data < end_data)
     {
         // Attempt to send the remaining chunk of data
-        int bytes_sent = (int)send(tcp_socket->socket, cur_data, (int)(end_data - cur_data), 0);
+        int bytes_sent;
+        int send_flags = 0;
+#ifdef MSG_NOSIGNAL
+        // On Linux this prevents send from emitting a SIGPIPE signal
+        // Equivalent on BSD to the SO_NOSIGPIPE option.
+        send_flags = MSG_NOSIGNAL;
+#endif
+        bytes_sent = (int)send(tcp_socket->socket, cur_data, (int)(end_data - cur_data), send_flags);
 
         if (bytes_sent == SOCKET_ERROR || bytes_sent == 0)
         {
@@ -2371,9 +2487,10 @@ typedef struct
 
     union
     {
-        rmtU8 data_mask[4];
-        rmtU32 data_mask_u32;
-    };
+        rmtU8 mask[4];
+        rmtU32 mask_u32;
+    } data;
+
 } WebSocket;
 
 
@@ -2536,10 +2653,10 @@ static rmtError WebSocket_Constructor(WebSocket* web_socket, TCPSocket* tcp_sock
     web_socket->mode = WEBSOCKET_NONE;
     web_socket->frame_bytes_remaining = 0;
     web_socket->mask_offset = 0;
-    web_socket->data_mask[0] = 0;
-    web_socket->data_mask[1] = 0;
-    web_socket->data_mask[2] = 0;
-    web_socket->data_mask[3] = 0;
+    web_socket->data.mask[0] = 0;
+    web_socket->data.mask[1] = 0;
+    web_socket->data.mask[2] = 0;
+    web_socket->data.mask[3] = 0;
 
     // Caller can optionally specify which TCP socket to use
     if (web_socket->tcp_socket == NULL)
@@ -2555,12 +2672,12 @@ static void WebSocket_Destructor(WebSocket* web_socket)
 }
 
 
-static rmtError WebSocket_RunServer(WebSocket* web_socket, rmtU32 port, enum WebSocketMode mode)
+static rmtError WebSocket_RunServer(WebSocket* web_socket, rmtU16 port, rmtBool limit_connections_to_localhost, enum WebSocketMode mode)
 {
     // Create the server's listening socket
     assert(web_socket != NULL);
     web_socket->mode = mode;
-    return TCPSocket_RunServer(web_socket->tcp_socket, (rmtU16)port);
+    return TCPSocket_RunServer(web_socket->tcp_socket, port, limit_connections_to_localhost);
 }
 
 
@@ -2728,7 +2845,7 @@ static rmtError ReceiveFrameHeader(WebSocket* web_socket)
     mask_present = (msg_header[1] & 0x80) != 0 ? RMT_TRUE : RMT_FALSE;
     if (mask_present)
     {
-        error = TCPSocket_Receive(web_socket->tcp_socket, web_socket->data_mask, 4, 20);
+        error = TCPSocket_Receive(web_socket->tcp_socket, web_socket->data.mask, 4, 20);
         if (error != RMT_ERROR_NONE)
             return error;
     }
@@ -2790,12 +2907,12 @@ static rmtError WebSocket_Receive(WebSocket* web_socket, void* data, rmtU32* msg
         }
 
         // Apply data mask
-        if (web_socket->data_mask_u32 != 0)
+        if (web_socket->data.mask_u32 != 0)
         {
             rmtU32 i;
             for (i = 0; i < bytes_to_read; i++)
             {
-                *((rmtU8*)cur_data + i) ^= web_socket->data_mask[web_socket->mask_offset & 3];
+                *((rmtU8*)cur_data + i) ^= web_socket->data.mask[web_socket->mask_offset & 3];
                 web_socket->mask_offset++;
             }
         }
@@ -2892,11 +3009,20 @@ static void MessageQueue_Destructor(MessageQueue* queue)
 }
 
 
+static rmtU32 MessageQueue_SizeForPayload(rmtU32 payload_size)
+{
+    // Add message header and align for ARM platforms
+    rmtU32 size = sizeof(Message) + payload_size;
+    size = (size + 3) & ~3U;
+    return size;
+}
+
+
 static Message* MessageQueue_AllocMessage(MessageQueue* queue, rmtU32 payload_size, struct ThreadSampler* thread_sampler)
 {
     Message* msg;
 
-    rmtU32 write_size = sizeof(Message) + payload_size;
+    rmtU32 write_size = MessageQueue_SizeForPayload(payload_size);
 
     assert(queue != NULL);
 
@@ -2926,9 +3052,8 @@ static Message* MessageQueue_AllocMessage(MessageQueue* queue, rmtU32 payload_si
 }
 
 
-static void MessageQueue_CommitMessage(MessageQueue* queue, Message* message, MessageID id)
+static void MessageQueue_CommitMessage(Message* message, MessageID id)
 {
-    assert(queue != NULL);
     assert(message != NULL);
 
     // Ensure message writes complete before commit
@@ -2937,8 +3062,6 @@ static void MessageQueue_CommitMessage(MessageQueue* queue, Message* message, Me
     // Setting the message ID signals to the consumer that the message is ready
     assert(message->id == MsgID_NotReady);
     message->id = id;
-
-    RMT_UNREFERENCED_PARAMETER(queue);
 }
 
 
@@ -2981,7 +3104,7 @@ static void MessageQueue_ConsumeNextMessage(MessageQueue* queue, Message* messag
     // the read position so that a winning thread's allocation will inherit the "not ready" state.
     //
     // This costs some write bandwidth and has the potential to flush cache to other cores.
-    message_size = sizeof(Message) + message->payload_size;
+    message_size = MessageQueue_SizeForPayload(message->payload_size);
     memset(message, MsgID_NotReady, message_size);
 
     // Ensure clear completes before advancing the read position
@@ -3009,31 +3132,33 @@ typedef struct
     rmtU32 last_ping_time;
 
     rmtU16 port;
+    rmtBool limit_connections_to_localhost;
 } Server;
 
 
-static rmtError Server_CreateListenSocket(Server* server, rmtU16 port)
+static rmtError Server_CreateListenSocket(Server* server, rmtU16 port, rmtBool limit_connections_to_localhost)
 {
     rmtError error = RMT_ERROR_NONE;
 
     New_1(WebSocket, server->listen_socket, NULL);
     if (error == RMT_ERROR_NONE)
-        error = WebSocket_RunServer(server->listen_socket, port, WEBSOCKET_TEXT);
+        error = WebSocket_RunServer(server->listen_socket, port, limit_connections_to_localhost, WEBSOCKET_TEXT);
 
     return error;
 }
 
 
-static rmtError Server_Constructor(Server* server, rmtU16 port)
+static rmtError Server_Constructor(Server* server, rmtU16 port, rmtBool limit_connections_to_localhost)
 {
     assert(server != NULL);
     server->listen_socket = NULL;
     server->client_socket = NULL;
     server->last_ping_time = 0;
     server->port = port;
+    server->limit_connections_to_localhost = limit_connections_to_localhost;
 
     // Create the listening WebSocket
-    return Server_CreateListenSocket(server, port);
+    return Server_CreateListenSocket(server, port, limit_connections_to_localhost);
 }
 
 
@@ -3129,7 +3254,7 @@ static void Server_Update(Server* server)
 
     // Recreate the listening socket if it's been destroyed earlier
     if (server->listen_socket == NULL)
-        Server_CreateListenSocket(server, server->port);
+        Server_CreateListenSocket(server, server->port, server->limit_connections_to_localhost);
 
     if (server->listen_socket != NULL && server->client_socket == NULL)
     {
@@ -3303,6 +3428,9 @@ static rmtError json_CloseArray(Buffer* buffer)
 
 
 
+#define SAMPLE_NAME_LEN 128
+
+
 enum SampleType
 {
     SampleType_CPU,
@@ -3324,7 +3452,7 @@ typedef struct Sample
     rmtU32 size_bytes;
 
     // Sample name and unique hash
-    rmtPStr name;
+    char name[SAMPLE_NAME_LEN];
     rmtU32 name_hash;
 
     // Unique, persistent ID among all samples
@@ -3343,9 +3471,10 @@ typedef struct Sample
     // This is also mixed with the callstack hash to allow consistent addressing of any point in the tree
     rmtU32 nb_children;
 
-    // Start and end of the sample in microseconds
+    // Sample end points and length in microseconds
     rmtU64 us_start;
     rmtU64 us_end;
+    rmtU64 us_length;
 
 } Sample;
 
@@ -3358,7 +3487,7 @@ static rmtError Sample_Constructor(Sample* sample)
 
     sample->type = SampleType_CPU;
     sample->size_bytes = sizeof(Sample);
-    sample->name = NULL;
+    sample->name[0] = 0;
     sample->name_hash = 0;
     sample->unique_id = 0;
     sample->unique_id_html_colour[0] = '#';
@@ -3371,6 +3500,7 @@ static rmtError Sample_Constructor(Sample* sample)
     sample->nb_children = 0;
     sample->us_start = 0;
     sample->us_end = 0;
+    sample->us_length = 0;
 
     return RMT_ERROR_NONE;
 }
@@ -3384,7 +3514,10 @@ static void Sample_Destructor(Sample* sample)
 
 static void Sample_Prepare(Sample* sample, rmtPStr name, rmtU32 name_hash, Sample* parent)
 {
-    sample->name = name;
+    // Copy sample name away for two reasons:
+    //   1. It allows dynamic sprintf-style strings to be transient
+    //   2. The Remotery thread can still inspect the sample even when the source module has been unloaded
+    strcpy_s(sample->name, sizeof(sample->name), name);
     sample->name_hash = name_hash;
     sample->unique_id = 0;
     sample->parent = parent;
@@ -3394,6 +3527,7 @@ static void Sample_Prepare(Sample* sample, rmtPStr name, rmtU32 name_hash, Sampl
     sample->nb_children = 0;
     sample->us_start = 0;
     sample->us_end = 0;
+    sample->us_length = 0;
 }
 
 
@@ -3416,7 +3550,7 @@ static rmtError json_Sample(Buffer* buffer, Sample* sample)
         JSON_ERROR_CHECK(json_Comma(buffer));
         JSON_ERROR_CHECK(json_FieldU64(buffer, "us_start", sample->us_start));
         JSON_ERROR_CHECK(json_Comma(buffer));
-        JSON_ERROR_CHECK(json_FieldU64(buffer, "us_length", maxS64(sample->us_end - sample->us_start, 0)));
+        JSON_ERROR_CHECK(json_FieldU64(buffer, "us_length", maxS64(sample->us_length, 0)));
 
         if (sample->first_child != NULL)
         {
@@ -3524,7 +3658,7 @@ static rmtU32 HashCombine(rmtU32 hash_a, rmtU32 hash_b)
 }
 
 
-static rmtError SampleTree_Push(SampleTree* tree, rmtPStr name, rmtU32 name_hash, Sample** sample)
+static rmtError SampleTree_Push(SampleTree* tree, rmtPStr name, rmtU32 name_hash, rmtU32 flags, Sample** sample)
 {
     Sample* parent;
     rmtError error;
@@ -3535,11 +3669,21 @@ static rmtError SampleTree_Push(SampleTree* tree, rmtPStr name, rmtU32 name_hash
     assert(tree->current_parent != NULL);
     parent = tree->current_parent;
 
-    if (parent->last_child != NULL && parent->last_child->name_hash == name_hash)
+    if ((flags & RMTSF_Aggregate) != 0)
     {
-        // TODO: Collapse siblings with flag exception?
-        //       Note that above check is not enough - requires a linear search
+        // Linear search for previous instance of this sample name
+        Sample* sibling;
+        for (sibling = parent->first_child; sibling != NULL; sibling = sibling->next_sibling)
+        {
+            if (sibling->name_hash == name_hash)
+            {
+                tree->current_parent = sibling;
+                *sample = sibling;
+                return RMT_ERROR_NONE;
+            }
+        }
     }
+
     if (parent->name_hash == name_hash)
     {
         // TODO: Collapse recursion on flag?
@@ -3657,7 +3801,7 @@ static void AddSampleTreeMessage(MessageQueue* queue, Sample* sample, ObjectAllo
     payload->root_sample = sample;
     payload->allocator = allocator;
     payload->thread_name = thread_name;
-    MessageQueue_CommitMessage(queue, message, MsgID_SampleTree);
+    MessageQueue_CommitMessage(message, MsgID_SampleTree);
 }
 
 
@@ -3686,8 +3830,6 @@ typedef struct ThreadSampler
 
 } ThreadSampler;
 
-static rmtS32 countThreads = 0;
-
 static rmtError ThreadSampler_Constructor(ThreadSampler* thread_sampler)
 {
     rmtError error;
@@ -3705,8 +3847,11 @@ static rmtError ThreadSampler_Constructor(ThreadSampler* thread_sampler)
     #if defined(RMT_PLATFORM_LINUX) && RMT_USE_POSIX_THREADNAMES
     prctl(PR_GET_NAME,thread_sampler->name,0,0,0);
     #else
-    strncat_s(thread_sampler->name, sizeof(thread_sampler->name), "Thread", 6);
-    itoahex_s(thread_sampler->name + 6, sizeof(thread_sampler->name) - 6, AtomicAdd(&countThreads, 1));
+    {
+        static rmtS32 countThreads = 0;
+        strncat_s(thread_sampler->name, sizeof(thread_sampler->name), "Thread", 6);
+        itoahex_s(thread_sampler->name + 6, sizeof(thread_sampler->name) - 6, AtomicAdd(&countThreads, 1));
+    }
     #endif
 
     // Create the CPU sample tree only - the rest are created on-demand as they need
@@ -3729,10 +3874,9 @@ static void ThreadSampler_Destructor(ThreadSampler* ts)
 }
 
 
-static rmtError ThreadSampler_Push(ThreadSampler* ts, SampleTree* tree, rmtPStr name, rmtU32 name_hash, Sample** sample)
+static rmtError ThreadSampler_Push(SampleTree* tree, rmtPStr name, rmtU32 name_hash, rmtU32 flags, Sample** sample)
 {
-    RMT_UNREFERENCED_PARAMETER(ts);
-    return SampleTree_Push(tree, name, name_hash, sample);
+    return SampleTree_Push(tree, name, name_hash, flags, sample);
 }
 
 
@@ -3967,7 +4111,7 @@ static rmtError Remotery_SendSampleTreeMessage(Remotery* rmt, Message* message)
     {
         // If these CUDA samples aren't ready yet, stick them to the back of the queue and continue
         rmtBool are_samples_ready;
-        rmt_BeginCPUSample(AreCUDASamplesReady);
+        rmt_BeginCPUSample(AreCUDASamplesReady, 0);
         are_samples_ready = AreCUDASamplesReady(sample);
         rmt_EndCPUSample();
         if (!are_samples_ready)
@@ -3977,7 +4121,7 @@ static rmtError Remotery_SendSampleTreeMessage(Remotery* rmt, Message* message)
         }
 
         // Retrieve timing of all CUDA samples
-        rmt_BeginCPUSample(GetCUDASampleTimes);
+        rmt_BeginCPUSample(GetCUDASampleTimes, 0);
         GetCUDASampleTimes(sample->parent, sample);
         rmt_EndCPUSample();
     }
@@ -4082,13 +4226,13 @@ static rmtError Remotery_ThreadMain(Thread* thread)
 
     while (thread->request_exit == RMT_FALSE)
     {
-        rmt_BeginCPUSample(Wakeup);
+        rmt_BeginCPUSample(Wakeup, 0);
 
-            rmt_BeginCPUSample(ServerUpdate);
+            rmt_BeginCPUSample(ServerUpdate, 0);
             Server_Update(rmt->server);
             rmt_EndCPUSample();
 
-            rmt_BeginCPUSample(ConsumeMessageQueue);
+            rmt_BeginCPUSample(ConsumeMessageQueue, 0);
             Remotery_ConsumeMessageQueue(rmt);
             rmt_EndCPUSample();
 
@@ -4129,6 +4273,23 @@ static rmtError Remotery_Constructor(Remotery* rmt)
     rmt->json_buf = NULL;
     rmt->thread = NULL;
 
+    #if RMT_USE_CUDA
+        rmt->cuda.CtxSetCurrent = NULL;
+        rmt->cuda.EventCreate = NULL;
+        rmt->cuda.EventDestroy = NULL;
+        rmt->cuda.EventElapsedTime = NULL;
+        rmt->cuda.EventQuery = NULL;
+        rmt->cuda.EventRecord = NULL;
+    #endif
+
+    #if RMT_USE_D3D11
+        rmt->d3d11 = NULL;
+    #endif
+
+    #if RMT_USE_OPENGL
+        rmt->opengl = NULL;
+    #endif
+
     // Kick-off the timer
     usTimer_Init(&rmt->timer);
 
@@ -4138,7 +4299,7 @@ static rmtError Remotery_Constructor(Remotery* rmt)
         return error;
 
     // Create the server
-    New_1( Server, rmt->server, g_Settings.port );
+    New_2(Server, rmt->server, g_Settings.port, g_Settings.limit_connections_to_localhost);
     if (error != RMT_ERROR_NONE)
         return error;
 
@@ -4152,26 +4313,13 @@ static rmtError Remotery_Constructor(Remotery* rmt)
     if (error != RMT_ERROR_NONE)
         return error;
 
-    #if RMT_USE_CUDA
-
-        rmt->cuda.CtxSetCurrent = NULL;
-        rmt->cuda.EventCreate = NULL;
-        rmt->cuda.EventDestroy = NULL;
-        rmt->cuda.EventElapsedTime = NULL;
-        rmt->cuda.EventQuery = NULL;
-        rmt->cuda.EventRecord = NULL;
-
-    #endif
-
     #if RMT_USE_D3D11
-        rmt->d3d11 = NULL;
         error = D3D11_Create(&rmt->d3d11);
         if (error != RMT_ERROR_NONE)
             return error;
     #endif
 
     #if RMT_USE_OPENGL
-        rmt->opengl = NULL;
         error = OpenGL_Create(&rmt->opengl);
         if (error != RMT_ERROR_NONE)
             return error;
@@ -4198,11 +4346,11 @@ static void Remotery_Destructor(Remotery* rmt)
     // Join the remotery thread before clearing the global object as the thread is profiling itself
     Delete(Thread, rmt->thread);
 
-    // Ensure this is the module that created it
-    assert(g_RemoteryCreated == RMT_TRUE);
-    assert(g_Remotery == rmt);
-    g_Remotery = NULL;
-    g_RemoteryCreated = RMT_FALSE;
+    if (g_RemoteryCreated)
+    {
+      g_Remotery = NULL;
+      g_RemoteryCreated = RMT_FALSE;
+    }
 
     #if RMT_USE_D3D11
         Delete(D3D11, rmt->d3d11);
@@ -4324,6 +4472,7 @@ RMT_API rmtSettings* _rmt_Settings(void)
     if( g_SettingsInitialized == RMT_FALSE )
     {
         g_Settings.port = 0x4597;
+        g_Settings.limit_connections_to_localhost = RMT_FALSE;
         g_Settings.msSleepBetweenServerUpdates = 10;
         g_Settings.messageQueueSizeInBytes = 64 * 1024;
         g_Settings.maxNbMessagesPerUpdate = 100;
@@ -4357,6 +4506,9 @@ RMT_API rmtError _rmt_CreateGlobalInstance(Remotery** remotery)
 
 RMT_API void _rmt_DestroyGlobalInstance(Remotery* remotery)
 {
+    // Ensure this is the module that created it
+    assert(g_RemoteryCreated == RMT_TRUE);
+    assert(g_Remotery == remotery);
     Delete(Remotery, remotery);
 }
 
@@ -4460,7 +4612,7 @@ static rmtBool QueueLine(MessageQueue* queue, char* text, rmtU32 size, struct Th
 
     // Copy the text and commit the message
     memcpy(message->payload, text, size);
-    MessageQueue_CommitMessage(queue, message, MsgID_LogText);
+    MessageQueue_CommitMessage(message, MsgID_LogText);
 
     return RMT_TRUE;
 }
@@ -4554,7 +4706,7 @@ static rmtU32 GetNameHash(rmtPStr name, rmtU32* hash_cache)
 }
 
 
-RMT_API void _rmt_BeginCPUSample(rmtPStr name, rmtU32* hash_cache)
+RMT_API void _rmt_BeginCPUSample(rmtPStr name, rmtU32 flags, rmtU32* hash_cache)
 {
     // 'hash_cache' stores a pointer to a sample name's hash value. Internally this is used to identify unique callstacks and it
     // would be ideal that it's not recalculated each time the sample is used. This can be statically cached at the point
@@ -4573,8 +4725,14 @@ RMT_API void _rmt_BeginCPUSample(rmtPStr name, rmtU32* hash_cache)
     {
         Sample* sample;
         rmtU32 name_hash = GetNameHash(name, hash_cache);
-        if (ThreadSampler_Push(ts, ts->sample_trees[SampleType_CPU], name, name_hash, &sample) == RMT_ERROR_NONE)
-            sample->us_start = usTimer_Get(&g_Remotery->timer);
+        if (ThreadSampler_Push(ts->sample_trees[SampleType_CPU], name, name_hash, flags, &sample) == RMT_ERROR_NONE)
+        {
+            // If this is an aggregate sample, store the time in 'end' as we want to preserve 'start'
+            if (sample->us_length != 0)
+                sample->us_end = usTimer_Get(&g_Remotery->timer);
+            else
+                sample->us_start = usTimer_Get(&g_Remotery->timer);
+        }
     }
 }
 
@@ -4589,6 +4747,21 @@ RMT_API void _rmt_EndCPUSample(void)
     if (Remotery_GetThreadSampler(g_Remotery, &ts) == RMT_ERROR_NONE)
     {
         Sample* sample = ts->sample_trees[SampleType_CPU]->current_parent;
+
+        rmtU64 us_end = usTimer_Get(&g_Remotery->timer);
+
+        // Is this an aggregate sample?
+        if (sample->us_length != 0)
+        {
+            sample->us_length += (us_end - sample->us_end);
+            sample->us_end = us_end;
+        }
+        else
+        {
+            sample->us_end = us_end;
+            sample->us_length = (us_end - sample->us_start);
+        }
+
         sample->us_end = usTimer_Get(&g_Remotery->timer);
         ThreadSampler_Pop(ts, g_Remotery->mq_to_rmt_thread, sample);
     }
@@ -4794,6 +4967,7 @@ static rmtBool GetCUDASampleTimes(Sample* root_sample, Sample* sample)
     // Convert to microseconds and add to the sample
     sample->us_start = (rmtU64)(ms_start * 1000);
     sample->us_end = (rmtU64)(ms_end * 1000);
+    sample->us_length = sample->us_end - sample->us_start;
 
     // Get child sample times
     for (child = sample->first_child; child != NULL; child = child->next_sibling)
@@ -4847,7 +5021,7 @@ RMT_API void _rmt_BeginCUDASample(rmtPStr name, rmtU32* hash_cache, void* stream
         }
 
         // Push the same and record its event
-        if (ThreadSampler_Push(ts, *cuda_tree, name, name_hash, &sample) == RMT_ERROR_NONE)
+        if (ThreadSampler_Push(*cuda_tree, name, name_hash, 0, &sample) == RMT_ERROR_NONE)
         {
             CUDASample* cuda_sample = (CUDASample*)sample;
             CUDAEventRecord(cuda_sample->event_start, stream);
@@ -5233,7 +5407,7 @@ RMT_API void _rmt_BeginD3D11Sample(rmtPStr name, rmtU32* hash_cache)
             New_3(ObjectAllocator, d3d11->timestamp_allocator, sizeof(D3D11Timestamp), (ObjConstructor)D3D11Timestamp_Constructor, (ObjDestructor)D3D11Timestamp_Destructor);
 
         // Push the sample
-        if (ThreadSampler_Push(ts, *d3d_tree, name, name_hash, &sample) == RMT_ERROR_NONE)
+        if (ThreadSampler_Push(*d3d_tree, name, name_hash, 0, &sample) == RMT_ERROR_NONE)
         {
             D3D11Sample* d3d_sample = (D3D11Sample*)sample;
 
@@ -5273,6 +5447,8 @@ static rmtBool GetD3D11SampleTimes(Sample* sample, rmtU64* out_first_timestamp)
             d3d11->last_error = result;
             return RMT_FALSE;
         }
+
+        sample->us_length = sample->us_end - sample->us_start;
     }
 
     // Get child sample times
@@ -5296,7 +5472,7 @@ static void UpdateD3D11Frame(void)
     d3d11 = g_Remotery->d3d11;
     assert(d3d11 != NULL);
 
-    rmt_BeginCPUSample(rmt_UpdateD3D11Frame);
+    rmt_BeginCPUSample(rmt_UpdateD3D11Frame, 0);
 
     // Process all messages in the D3D queue
     for (;;)
@@ -5506,8 +5682,7 @@ static void* rmtglGetProcAddress(OpenGL* opengl, const char* symbol)
 
     #elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
 
-        extern void* nsglGetProcAddress(const GLubyte* _name);
-        return nsglGetProcAddress((const GLubyte*)symbol);
+        return NSGLGetProcAddress((const GLubyte*)symbol);
 
     #elif defined(RMT_PLATFORM_LINUX)
 
@@ -5820,7 +5995,7 @@ RMT_API void _rmt_BeginOpenGLSample(rmtPStr name, rmtU32* hash_cache)
             New_3(ObjectAllocator, opengl->timestamp_allocator, sizeof(OpenGLTimestamp), (ObjConstructor)OpenGLTimestamp_Constructor, (ObjDestructor)OpenGLTimestamp_Destructor);
 
         // Push the sample
-        if (ThreadSampler_Push(ts, *ogl_tree, name, name_hash, &sample) == RMT_ERROR_NONE)
+        if (ThreadSampler_Push(*ogl_tree, name, name_hash, 0, &sample) == RMT_ERROR_NONE)
         {
             OpenGLSample* ogl_sample = (OpenGLSample*)sample;
 
@@ -5845,6 +6020,8 @@ static rmtBool GetOpenGLSampleTimes(Sample* sample, rmtU64* out_first_timestamp)
     {
         if (!OpenGLTimestamp_GetData(ogl_sample->timestamp, &sample->us_start, &sample->us_end, out_first_timestamp))
             return RMT_FALSE;
+
+        sample->us_length = sample->us_end - sample->us_start;
     }
 
     // Get child sample times
@@ -5868,7 +6045,7 @@ static void UpdateOpenGLFrame(void)
     opengl = g_Remotery->opengl;
     assert(opengl != NULL);
 
-    rmt_BeginCPUSample(rmt_UpdateOpenGLFrame);
+    rmt_BeginCPUSample(rmt_UpdateOpenGLFrame, 0);
 
     // Process all messages in the OpenGL queue
     while (1)
diff --git a/3rdparty/bgfx/3rdparty/remotery/lib/Remotery.h b/3rdparty/bgfx/3rdparty/remotery/lib/Remotery.h
index 20836f68610..141aeb9315f 100644
--- a/3rdparty/bgfx/3rdparty/remotery/lib/Remotery.h
+++ b/3rdparty/bgfx/3rdparty/remotery/lib/Remotery.h
@@ -82,17 +82,6 @@ documented just below this comment.
 */
 
 
-
-// Compiler identification
-#if defined(_MSC_VER)
-    #define RMT_COMPILER_MSVC
-#elif defined(__GNUC__)
-    #define RMT_COMPILER_GNUC
-#elif defined(__clang__)
-    #define RMT_COMPILER_CLANG
-#endif
-
-
 // Platform identification
 #if defined(_WINDOWS) || defined(_WIN32)
     #define RMT_PLATFORM_WINDOWS
@@ -254,6 +243,15 @@ typedef enum rmtError
 } rmtError;
 
 
+typedef enum rmtSampleFlags
+{
+    // Default behaviour
+    RMTSF_None          = 0,
+
+    // Search parent for same-named samples and merge timing instead of adding a new sample
+    RMTSF_Aggregate     = 1,
+} rmtSampleFlags;
+
 
 /*
 ------------------------------------------------------------------------------------------------------------------------
@@ -289,14 +287,14 @@ typedef enum rmtError
 #define rmt_LogText(text)                                                           \
     RMT_OPTIONAL(RMT_ENABLED, _rmt_LogText(text))
 
-#define rmt_BeginCPUSample(name)                                                    \
+#define rmt_BeginCPUSample(name, flags)                                             \
     RMT_OPTIONAL(RMT_ENABLED, {                                                     \
         static rmtU32 rmt_sample_hash_##name = 0;                                   \
-        _rmt_BeginCPUSample(#name, &rmt_sample_hash_##name);                        \
+        _rmt_BeginCPUSample(#name, flags, &rmt_sample_hash_##name);                 \
     })
 
-#define rmt_BeginCPUSampleDynamic(namestr)                                          \
-    RMT_OPTIONAL(RMT_ENABLED, _rmt_BeginCPUSample(namestr, NULL))
+#define rmt_BeginCPUSampleDynamic(namestr, flags)                                   \
+    RMT_OPTIONAL(RMT_ENABLED, _rmt_BeginCPUSample(namestr, flags, NULL))
 
 #define rmt_EndCPUSample()                                                          \
     RMT_OPTIONAL(RMT_ENABLED, _rmt_EndCPUSample())
@@ -312,8 +310,15 @@ typedef void (*rmtInputHandlerPtr)(const char* text, void* context);
 // Struture to fill in to modify Remotery default settings
 typedef struct rmtSettings
 {
+    // Which port to listen for incoming connections on
     rmtU16 port;
 
+    // Only allow connections on localhost?
+    // For dev builds you may want to access your game from other devices but if
+    // you distribute a game to your players with Remotery active, probably best
+    // to limit connections to localhost.
+    rmtBool limit_connections_to_localhost;
+
     // How long to sleep between server updates, hopefully trying to give
     // a little CPU back to other threads.
     rmtU32 msSleepBetweenServerUpdates;
@@ -485,8 +490,8 @@ struct rmt_EndOpenGLSampleOnScopeExit
 
 
 // Pairs a call to rmt_BeginSample with its call to rmt_EndSample when leaving scope
-#define rmt_ScopedCPUSample(name)                                                                       \
-        RMT_OPTIONAL(RMT_ENABLED, rmt_BeginCPUSample(name));                                            \
+#define rmt_ScopedCPUSample(name, flags)                                                                \
+        RMT_OPTIONAL(RMT_ENABLED, rmt_BeginCPUSample(name, flags));                                     \
         RMT_OPTIONAL(RMT_ENABLED, rmt_EndCPUSampleOnScopeExit rmt_ScopedCPUSample##name);
 #define rmt_ScopedCUDASample(name, stream)                                                              \
         RMT_OPTIONAL(RMT_USE_CUDA, rmt_BeginCUDASample(name, stream));                                  \
@@ -525,7 +530,7 @@ RMT_API void _rmt_SetGlobalInstance(Remotery* remotery);
 RMT_API Remotery* _rmt_GetGlobalInstance(void);
 RMT_API void _rmt_SetCurrentThreadName(rmtPStr thread_name);
 RMT_API void _rmt_LogText(rmtPStr text);
-RMT_API void _rmt_BeginCPUSample(rmtPStr name, rmtU32* hash_cache);
+RMT_API void _rmt_BeginCPUSample(rmtPStr name, rmtU32 flags, rmtU32* hash_cache);
 RMT_API void _rmt_EndCPUSample(void);
 
 #if RMT_USE_CUDA
diff --git a/3rdparty/bgfx/3rdparty/remotery/readme.md b/3rdparty/bgfx/3rdparty/remotery/readme.md
index 99cbdf9ad7f..143f58247b7 100644
--- a/3rdparty/bgfx/3rdparty/remotery/readme.md
+++ b/3rdparty/bgfx/3rdparty/remotery/readme.md
@@ -54,14 +54,14 @@ See the sample directory for further examples. A quick example:
 
         // Explicit begin/end for C
         {
-            rmt_BeginCPUSample(LogText);
+            rmt_BeginCPUSample(LogText, 0);
             rmt_LogText("Time me, please!");
             rmt_EndCPUSample();
         }
 
         // Scoped begin/end for C++
         {
-            rmt_ScopedCPUSample(LogText);
+            rmt_ScopedCPUSample(LogText, 0);
             rmt_LogText("Time me, too!");
         }
 
diff --git a/3rdparty/bgfx/3rdparty/remotery/sample/sample.c b/3rdparty/bgfx/3rdparty/remotery/sample/sample.c
index 3339fa35f60..f579e1c1f99 100644
--- a/3rdparty/bgfx/3rdparty/remotery/sample/sample.c
+++ b/3rdparty/bgfx/3rdparty/remotery/sample/sample.c
@@ -1,12 +1,14 @@
 #include 
 #include 
+#include 
+#include 
 #include "Remotery.h"
 
 double delay() {
     int i, end;
     double j = 0;
 
-    rmt_BeginCPUSample(delay);
+    rmt_BeginCPUSample(delay, 0);
     for( i = 0, end = rand()/100; i < end; ++i ) {
         j += sin(i);
     }
@@ -14,20 +16,30 @@ double delay() {
     return j;
 }
 
+int sig = 0;
+
+/// Allow to close cleanly with ctrl + c
+void sigintHandler(int sig_num) {
+    sig = sig_num;
+    printf("Interrupted\n");
+}
+
+int main( ) {
+    signal(SIGINT, sigintHandler);
 
-int main( int argc, const char **argv ) {
     Remotery *rmt;
 
     if( RMT_ERROR_NONE != rmt_CreateGlobalInstance(&rmt) ) {
         return -1;
     }
 
-    for(;;) {
+    while (sig == 0) {
         rmt_LogText("start profiling");
         delay();
         rmt_LogText("end profiling");
     }
 
     rmt_DestroyGlobalInstance(rmt);
+    printf("Cleaned up and quit\n");
     return 0;
 }
diff --git a/3rdparty/bgfx/3rdparty/remotery/vis/Code/Console.js b/3rdparty/bgfx/3rdparty/remotery/vis/Code/Console.js
index 06f5e55a8cc..a18f3dce49e 100644
--- a/3rdparty/bgfx/3rdparty/remotery/vis/Code/Console.js
+++ b/3rdparty/bgfx/3rdparty/remotery/vis/Code/Console.js
@@ -19,7 +19,16 @@ Console = (function()
 
 		// This accumulates log text as fast as is required
 		this.PageTextBuffer = "";
+		this.LastPageTextBufferLen = 0;
 		this.AppTextBuffer = "";
+		this.LastAppTextBufferLen = 0;
+
+		// Setup command history control
+		this.CommandHistory = LocalStore.Get("App", "Global", "CommandHistory", [ ]);
+		this.CommandIndex = 0;
+		this.MaxNbCommands = 200;
+		DOM.Event.AddHandler(this.UserInput.EditNode, "keydown", Bind(OnKeyPress, this));
+		DOM.Event.AddHandler(this.UserInput.EditNode, "focus", Bind(OnFocus, this));
 
 		// At a much lower frequency this will update the console window
 		window.setInterval(Bind(UpdateHTML, this), 500);
@@ -91,13 +100,21 @@ Console = (function()
 	{
 		// Reset the current text buffer as html
 
-		var page_node = self.PageContainer.Node;
-		page_node.innerHTML = self.PageTextBuffer;
-		page_node.scrollTop = page_node.scrollHeight;
+		if (self.LastPageTextBufferLen != self.PageTextBuffer.length)
+		{
+			var page_node = self.PageContainer.Node;
+			page_node.innerHTML = self.PageTextBuffer;
+			page_node.scrollTop = page_node.scrollHeight;
+			self.LastPageTextBufferLen = self.PageTextBuffer.length;
+		}
 
-		var app_node = self.AppContainer.Node;
-		app_node.innerHTML = self.AppTextBuffer;
-		app_node.scrollTop = app_node.scrollHeight;
+		if (self.LastAppTextBufferLen != self.AppTextBuffer.length)
+		{		
+			var app_node = self.AppContainer.Node;
+			app_node.innerHTML = self.AppTextBuffer;
+			app_node.scrollTop = app_node.scrollHeight;
+			self.LastAppTextBufferLen = self.AppTextBuffer.length;
+		}
 	}
 
 
@@ -110,6 +127,64 @@ Console = (function()
 		// Emit to console and clear
 		self.Log("> " + msg);
 		self.UserInput.SetValue("");
+
+		// Keep track of recently issued commands, with an upper bound
+		self.CommandHistory.push(msg);
+		var extra_commands = self.CommandHistory.length - self.MaxNbCommands;
+		if (extra_commands > 0)
+			self.CommandHistory.splice(0, extra_commands);
+
+		// Set command history index to the most recent command
+		self.CommandIndex = self.CommandHistory.length;
+
+		// Backup to local store
+		LocalStore.Set("App", "Global", "CommandHistory", self.CommandHistory);
+
+		// Keep focus with the edit box
+		return true;
+	}
+
+
+	function OnKeyPress(self, evt)
+	{
+		evt = DOM.Event.Get(evt);
+
+		if (evt.keyCode == Keyboard.Codes.UP)
+		{
+			if (self.CommandHistory.length > 0)
+			{
+				// Cycle backwards through the command history
+				self.CommandIndex--;
+				if (self.CommandIndex < 0)
+					self.CommandIndex = self.CommandHistory.length - 1;
+				var command = self.CommandHistory[self.CommandIndex];
+				self.UserInput.SetValue(command);
+			}
+
+			// Stops default behaviour of moving cursor to the beginning
+			DOM.Event.StopDefaultAction(evt);
+		}
+
+		else if (evt.keyCode == Keyboard.Codes.DOWN)
+		{
+			if (self.CommandHistory.length > 0)
+			{
+				// Cycle fowards through the command history
+				self.CommandIndex = (self.CommandIndex + 1) % self.CommandHistory.length;
+				var command = self.CommandHistory[self.CommandIndex];
+				self.UserInput.SetValue(command);
+			}
+
+			// Stops default behaviour of moving cursor to the end
+			DOM.Event.StopDefaultAction(evt);
+		}
+	}
+
+
+	function OnFocus(self)
+	{
+		// Reset command index on focus
+		self.CommandIndex = self.CommandHistory.length;
 	}
 
 
diff --git a/3rdparty/bgfx/3rdparty/remotery/vis/Code/Remotery.js b/3rdparty/bgfx/3rdparty/remotery/vis/Code/Remotery.js
index 31fe09dc239..5030f8802bb 100644
--- a/3rdparty/bgfx/3rdparty/remotery/vis/Code/Remotery.js
+++ b/3rdparty/bgfx/3rdparty/remotery/vis/Code/Remotery.js
@@ -92,6 +92,9 @@ Remotery = (function()
 		// Update and disconnect, relying on auto-connect to reconnect
 		self.ConnectionAddress = node.value;
 		self.Server.Disconnect();
+
+		// Give input focus away
+		return false;
 	}
 
 
diff --git a/3rdparty/bgfx/3rdparty/remotery/vis/Styles/Remotery.css b/3rdparty/bgfx/3rdparty/remotery/vis/Styles/Remotery.css
index 836dd68d734..995095f417e 100644
--- a/3rdparty/bgfx/3rdparty/remotery/vis/Styles/Remotery.css
+++ b/3rdparty/bgfx/3rdparty/remotery/vis/Styles/Remotery.css
@@ -67,6 +67,7 @@ body
     color: #BBB;
     font: 9px Verdana;
     margin: 2px;
+    white-space: pre;
 }
 
 
diff --git a/3rdparty/bgfx/3rdparty/remotery/vis/extern/BrowserLib/WindowManager/Code/EditBox.js b/3rdparty/bgfx/3rdparty/remotery/vis/extern/BrowserLib/WindowManager/Code/EditBox.js
index b78c9725d53..fd0a039450c 100644
--- a/3rdparty/bgfx/3rdparty/remotery/vis/extern/BrowserLib/WindowManager/Code/EditBox.js
+++ b/3rdparty/bgfx/3rdparty/remotery/vis/extern/BrowserLib/WindowManager/Code/EditBox.js
@@ -27,11 +27,12 @@ WM.EditBox = (function()
 		this.SetPosition(x, y);
 		this.SetSize(w, h);
 
+		this.PreviousValue = "";
+
 		// Hook up the event handlers
 		DOM.Event.AddHandler(this.EditNode, "focus", Bind(OnFocus, this));
 		DOM.Event.AddHandler(this.EditNode, "keypress", Bind(OnKeyPress, this));
 		DOM.Event.AddHandler(this.EditNode, "keydown", Bind(OnKeyDown, this));
-		DOM.Event.AddHandler(this.EditNode, "change", Bind(OnChange, this));
 	}
 
 
@@ -88,9 +89,12 @@ WM.EditBox = (function()
 	function OnKeyPress(self, evt)
 	{
 		// Allow enter to confirm the text only when there's data
-		if (evt.keyCode == 13 && self.EditNode.value != "")
+		if (evt.keyCode == 13 && self.EditNode.value != "" && self.ChangeHandler)
 		{
-			self.EditNode.blur();
+			var focus = self.ChangeHandler(self.EditNode);
+			if (!focus)
+				self.EditNode.blur();
+			self.PreviousValue = "";
 		}
 	}
 
@@ -100,18 +104,16 @@ WM.EditBox = (function()
 		// Allow escape to cancel any text changes
 		if (evt.keyCode == 27)
 		{
-			self.EditNode.value = self.PreviousValue;
+			// On initial edit of the input, escape should NOT replace with the empty string
+			if (self.PreviousValue != "")
+			{
+				self.EditNode.value = self.PreviousValue;
+			}
+
 			self.EditNode.blur();
 		}
 	}
 
 
-	function OnChange(self, evt)
-	{
-		if (self.ChangeHandler)
-			self.ChangeHandler(self.EditNode);
-	}
-
-
 	return EditBox;
 })();
diff --git a/3rdparty/bgfx/3rdparty/remotery/vis/index.html b/3rdparty/bgfx/3rdparty/remotery/vis/index.html
index 7d1620d5aca..b761290559a 100644
--- a/3rdparty/bgfx/3rdparty/remotery/vis/index.html
+++ b/3rdparty/bgfx/3rdparty/remotery/vis/index.html
@@ -17,6 +17,7 @@
 		
 		
 		
+		
 
 		
 		
diff --git a/3rdparty/bgfx/3rdparty/renderdoc/renderdoc_app.h b/3rdparty/bgfx/3rdparty/renderdoc/renderdoc_app.h
index 67c179ad0a9..a392cecbbd7 100644
--- a/3rdparty/bgfx/3rdparty/renderdoc/renderdoc_app.h
+++ b/3rdparty/bgfx/3rdparty/renderdoc/renderdoc_app.h
@@ -1,18 +1,18 @@
 /******************************************************************************
  * The MIT License (MIT)
- * 
+ *
  * Copyright (c) 2015-2016 Baldur Karlsson
- * 
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
  * in the Software without restriction, including without limitation the rights
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  * copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -29,11 +29,13 @@
 #endif
 
 #if defined(WIN32)
-	#define RENDERDOC_CC __cdecl
+#define RENDERDOC_CC __cdecl
 #elif defined(__linux__)
-	#define RENDERDOC_CC
+#define RENDERDOC_CC
+#elif defined(__APPLE__)
+#define RENDERDOC_CC
 #else
-	#error "Unknown platform"
+#error "Unknown platform"
 #endif
 
 #ifdef __cplusplus
@@ -45,137 +47,144 @@ extern "C" {
 
 // This is a GUID/magic value used for when applications pass a path where shader debug
 // information can be found to match up with a stripped shader.
-// the define can be used like so: const GUID RENDERDOC_ShaderDebugMagicValue = RENDERDOC_ShaderDebugMagicValue_value
-#define RENDERDOC_ShaderDebugMagicValue_struct { 0xeab25520, 0x6670, 0x4865, 0x84, 0x29, 0x6c, 0x8, 0x51, 0x54, 0x00, 0xff }
+// the define can be used like so: const GUID RENDERDOC_ShaderDebugMagicValue =
+// RENDERDOC_ShaderDebugMagicValue_value
+#define RENDERDOC_ShaderDebugMagicValue_struct                                \
+  {                                                                           \
+    0xeab25520, 0x6670, 0x4865, 0x84, 0x29, 0x6c, 0x8, 0x51, 0x54, 0x00, 0xff \
+  }
 
 // as an alternative when you want a byte array (assuming x86 endianness):
-#define RENDERDOC_ShaderDebugMagicValue_bytearray { 0x20, 0x55, 0xb2, 0xea, 0x70, 0x66, 0x65, 0x48, 0x84, 0x29, 0x6c, 0x8, 0x51, 0x54, 0x00, 0xff }
-	
+#define RENDERDOC_ShaderDebugMagicValue_bytearray                                                 \
+  {                                                                                               \
+    0x20, 0x55, 0xb2, 0xea, 0x70, 0x66, 0x65, 0x48, 0x84, 0x29, 0x6c, 0x8, 0x51, 0x54, 0x00, 0xff \
+  }
+
 // truncated version when only a uint64_t is available (e.g. Vulkan tags):
 #define RENDERDOC_ShaderDebugMagicValue_truncated 0x48656670eab25520ULL
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 // RenderDoc capture options
-// 
+//
 
-typedef enum
-{
-	// Allow the application to enable vsync
-	//
-	// Default - enabled
-	//
-	// 1 - The application can enable or disable vsync at will
-	// 0 - vsync is force disabled
-	eRENDERDOC_Option_AllowVSync = 0,
-	
-	// Allow the application to enable fullscreen
-	//
-	// Default - enabled
-	//
-	// 1 - The application can enable or disable fullscreen at will
-	// 0 - fullscreen is force disabled
-	eRENDERDOC_Option_AllowFullscreen = 1,
+typedef enum {
+  // Allow the application to enable vsync
+  //
+  // Default - enabled
+  //
+  // 1 - The application can enable or disable vsync at will
+  // 0 - vsync is force disabled
+  eRENDERDOC_Option_AllowVSync = 0,
 
-	// Record API debugging events and messages 
-	//
-	// Default - disabled
-	//
-	// 1 - Enable built-in API debugging features and records the results into
-	//     the capture logfile, which is matched up with events on replay
-	// 0 - no API debugging is forcibly enabled
-	eRENDERDOC_Option_DebugDeviceMode = 2,
-	
-	// Capture CPU callstacks for API events 
-	//
-	// Default - disabled
-	//
-	// 1 - Enables capturing of callstacks
-	// 0 - no callstacks are captured
-	eRENDERDOC_Option_CaptureCallstacks = 3,
-	
-	// When capturing CPU callstacks, only capture them from drawcalls.
-	// This option does nothing without the above option being enabled
-	//
-	// Default - disabled
-	//
-	// 1 - Only captures callstacks for drawcall type API events.
-	//     Ignored if CaptureCallstacks is disabled
-	// 0 - Callstacks, if enabled, are captured for every event.
-	eRENDERDOC_Option_CaptureCallstacksOnlyDraws = 4,
+  // Allow the application to enable fullscreen
+  //
+  // Default - enabled
+  //
+  // 1 - The application can enable or disable fullscreen at will
+  // 0 - fullscreen is force disabled
+  eRENDERDOC_Option_AllowFullscreen = 1,
 
-	// Specify a delay in seconds to wait for a debugger to attach, after
-	// creating or injecting into a process, before continuing to allow it to run.
-	//
-	// 0 indicates no delay, and the process will run immediately after injection
-	//
-	// Default - 0 seconds
-	//
-	eRENDERDOC_Option_DelayForDebugger = 5,
-	
-	// Verify any writes to mapped buffers, by checking the memory after the
-	// bounds of the returned pointer to detect any modification.
-	//
-	// Default - disabled
-	//
-	// 1 - Verify any writes to mapped buffers
-	// 0 - No verification is performed, and overwriting bounds may cause
-	//     crashes or corruption in RenderDoc
-	eRENDERDOC_Option_VerifyMapWrites = 6,
-	
-	// Hooks any system API calls that create child processes, and injects
-	// RenderDoc into them recursively with the same options.
-	//
-	// Default - disabled
-	//
-	// 1 - Hooks into spawned child processes
-	// 0 - Child processes are not hooked by RenderDoc
-	eRENDERDOC_Option_HookIntoChildren = 7,
+  // Record API debugging events and messages
+  //
+  // Default - disabled
+  //
+  // 1 - Enable built-in API debugging features and records the results into
+  //     the capture logfile, which is matched up with events on replay
+  // 0 - no API debugging is forcibly enabled
+  eRENDERDOC_Option_APIValidation = 2,
+  eRENDERDOC_Option_DebugDeviceMode = 2,    // deprecated name of this enum
 
-	// By default RenderDoc only includes resources in the final logfile necessary
-	// for that frame, this allows you to override that behaviour.
-	//
-	// Default - disabled
-	//
-	// 1 - all live resources at the time of capture are included in the log
-	//     and available for inspection
-	// 0 - only the resources referenced by the captured frame are included
-	eRENDERDOC_Option_RefAllResources = 8,
+  // Capture CPU callstacks for API events
+  //
+  // Default - disabled
+  //
+  // 1 - Enables capturing of callstacks
+  // 0 - no callstacks are captured
+  eRENDERDOC_Option_CaptureCallstacks = 3,
 
-	// By default RenderDoc skips saving initial states for resources where the
-	// previous contents don't appear to be used, assuming that writes before
-	// reads indicate previous contents aren't used.
-	//
-	// Default - disabled
-	//
-	// 1 - initial contents at the start of each captured frame are saved, even if
-	//     they are later overwritten or cleared before being used.
-	// 0 - unless a read is detected, initial contents will not be saved and will
-	//     appear as black or empty data.
-	eRENDERDOC_Option_SaveAllInitials = 9,
+  // When capturing CPU callstacks, only capture them from drawcalls.
+  // This option does nothing without the above option being enabled
+  //
+  // Default - disabled
+  //
+  // 1 - Only captures callstacks for drawcall type API events.
+  //     Ignored if CaptureCallstacks is disabled
+  // 0 - Callstacks, if enabled, are captured for every event.
+  eRENDERDOC_Option_CaptureCallstacksOnlyDraws = 4,
 
-	// In APIs that allow for the recording of command lists to be replayed later,
-	// RenderDoc may choose to not capture command lists before a frame capture is
-	// triggered, to reduce overheads. This means any command lists recorded once
-	// and replayed many times will not be available and may cause a failure to
-	// capture.
-	//
-	// Note this is only true for APIs where multithreading is difficult or
-	// discouraged. Newer APIs like Vulkan and D3D12 will ignore this option
-	// and always capture all command lists since the API is heavily oriented
-	// around it and the overheads have been reduced by API design.
-	//
-	// 1 - All command lists are captured from the start of the application
-	// 0 - Command lists are only captured if their recording begins during
-	//     the period when a frame capture is in progress.
-	eRENDERDOC_Option_CaptureAllCmdLists = 10,
+  // Specify a delay in seconds to wait for a debugger to attach, after
+  // creating or injecting into a process, before continuing to allow it to run.
+  //
+  // 0 indicates no delay, and the process will run immediately after injection
+  //
+  // Default - 0 seconds
+  //
+  eRENDERDOC_Option_DelayForDebugger = 5,
 
-	// Mute API debugging output when the debug device mode option is enabled 
-	//
-	// Default - enabled
-	//
-	// 1 - Mute any API debug messages from being displayed or passed through
-	// 0 - API debugging is displayed as normal
-	eRENDERDOC_Option_DebugOutputMute = 11,
+  // Verify any writes to mapped buffers, by checking the memory after the
+  // bounds of the returned pointer to detect any modification.
+  //
+  // Default - disabled
+  //
+  // 1 - Verify any writes to mapped buffers
+  // 0 - No verification is performed, and overwriting bounds may cause
+  //     crashes or corruption in RenderDoc
+  eRENDERDOC_Option_VerifyMapWrites = 6,
+
+  // Hooks any system API calls that create child processes, and injects
+  // RenderDoc into them recursively with the same options.
+  //
+  // Default - disabled
+  //
+  // 1 - Hooks into spawned child processes
+  // 0 - Child processes are not hooked by RenderDoc
+  eRENDERDOC_Option_HookIntoChildren = 7,
+
+  // By default RenderDoc only includes resources in the final logfile necessary
+  // for that frame, this allows you to override that behaviour.
+  //
+  // Default - disabled
+  //
+  // 1 - all live resources at the time of capture are included in the log
+  //     and available for inspection
+  // 0 - only the resources referenced by the captured frame are included
+  eRENDERDOC_Option_RefAllResources = 8,
+
+  // By default RenderDoc skips saving initial states for resources where the
+  // previous contents don't appear to be used, assuming that writes before
+  // reads indicate previous contents aren't used.
+  //
+  // Default - disabled
+  //
+  // 1 - initial contents at the start of each captured frame are saved, even if
+  //     they are later overwritten or cleared before being used.
+  // 0 - unless a read is detected, initial contents will not be saved and will
+  //     appear as black or empty data.
+  eRENDERDOC_Option_SaveAllInitials = 9,
+
+  // In APIs that allow for the recording of command lists to be replayed later,
+  // RenderDoc may choose to not capture command lists before a frame capture is
+  // triggered, to reduce overheads. This means any command lists recorded once
+  // and replayed many times will not be available and may cause a failure to
+  // capture.
+  //
+  // Note this is only true for APIs where multithreading is difficult or
+  // discouraged. Newer APIs like Vulkan and D3D12 will ignore this option
+  // and always capture all command lists since the API is heavily oriented
+  // around it and the overheads have been reduced by API design.
+  //
+  // 1 - All command lists are captured from the start of the application
+  // 0 - Command lists are only captured if their recording begins during
+  //     the period when a frame capture is in progress.
+  eRENDERDOC_Option_CaptureAllCmdLists = 10,
+
+  // Mute API debugging output when the API validation mode option is enabled
+  //
+  // Default - enabled
+  //
+  // 1 - Mute any API debug messages from being displayed or passed through
+  // 0 - API debugging is displayed as normal
+  eRENDERDOC_Option_DebugOutputMute = 11,
 
 } RENDERDOC_CaptureOption;
 
@@ -183,140 +192,135 @@ typedef enum
 //
 // Returns 1 if the option and value are valid
 // Returns 0 if either is invalid and the option is unchanged
-typedef int (RENDERDOC_CC *pRENDERDOC_SetCaptureOptionU32)(RENDERDOC_CaptureOption opt, uint32_t val);
-typedef int (RENDERDOC_CC *pRENDERDOC_SetCaptureOptionF32)(RENDERDOC_CaptureOption opt, float val);
+typedef int(RENDERDOC_CC *pRENDERDOC_SetCaptureOptionU32)(RENDERDOC_CaptureOption opt, uint32_t val);
+typedef int(RENDERDOC_CC *pRENDERDOC_SetCaptureOptionF32)(RENDERDOC_CaptureOption opt, float val);
 
 // Gets the current value of an option as a uint32_t
 //
 // If the option is invalid, 0xffffffff is returned
-typedef uint32_t (RENDERDOC_CC *pRENDERDOC_GetCaptureOptionU32)(RENDERDOC_CaptureOption opt);
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetCaptureOptionU32)(RENDERDOC_CaptureOption opt);
 
 // Gets the current value of an option as a float
 //
 // If the option is invalid, -FLT_MAX is returned
-typedef float (RENDERDOC_CC *pRENDERDOC_GetCaptureOptionF32)(RENDERDOC_CaptureOption opt);
+typedef float(RENDERDOC_CC *pRENDERDOC_GetCaptureOptionF32)(RENDERDOC_CaptureOption opt);
 
-typedef enum
-{
-	// '0' - '9' matches ASCII values
-	eRENDERDOC_Key_0 = 0x30,
-	eRENDERDOC_Key_1 = 0x31,
-	eRENDERDOC_Key_2 = 0x32,
-	eRENDERDOC_Key_3 = 0x33,
-	eRENDERDOC_Key_4 = 0x34,
-	eRENDERDOC_Key_5 = 0x35,
-	eRENDERDOC_Key_6 = 0x36,
-	eRENDERDOC_Key_7 = 0x37,
-	eRENDERDOC_Key_8 = 0x38,
-	eRENDERDOC_Key_9 = 0x39,
+typedef enum {
+  // '0' - '9' matches ASCII values
+  eRENDERDOC_Key_0 = 0x30,
+  eRENDERDOC_Key_1 = 0x31,
+  eRENDERDOC_Key_2 = 0x32,
+  eRENDERDOC_Key_3 = 0x33,
+  eRENDERDOC_Key_4 = 0x34,
+  eRENDERDOC_Key_5 = 0x35,
+  eRENDERDOC_Key_6 = 0x36,
+  eRENDERDOC_Key_7 = 0x37,
+  eRENDERDOC_Key_8 = 0x38,
+  eRENDERDOC_Key_9 = 0x39,
 
-	// 'A' - 'Z' matches ASCII values
-	eRENDERDOC_Key_A = 0x41,
-	eRENDERDOC_Key_B = 0x42,
-	eRENDERDOC_Key_C = 0x43,
-	eRENDERDOC_Key_D = 0x44,
-	eRENDERDOC_Key_E = 0x45,
-	eRENDERDOC_Key_F = 0x46,
-	eRENDERDOC_Key_G = 0x47,
-	eRENDERDOC_Key_H = 0x48,
-	eRENDERDOC_Key_I = 0x49,
-	eRENDERDOC_Key_J = 0x4A,
-	eRENDERDOC_Key_K = 0x4B,
-	eRENDERDOC_Key_L = 0x4C,
-	eRENDERDOC_Key_M = 0x4D,
-	eRENDERDOC_Key_N = 0x4E,
-	eRENDERDOC_Key_O = 0x4F,
-	eRENDERDOC_Key_P = 0x50,
-	eRENDERDOC_Key_Q = 0x51,
-	eRENDERDOC_Key_R = 0x52,
-	eRENDERDOC_Key_S = 0x53,
-	eRENDERDOC_Key_T = 0x54,
-	eRENDERDOC_Key_U = 0x55,
-	eRENDERDOC_Key_V = 0x56,
-	eRENDERDOC_Key_W = 0x57,
-	eRENDERDOC_Key_X = 0x58,
-	eRENDERDOC_Key_Y = 0x59,
-	eRENDERDOC_Key_Z = 0x5A,
+  // 'A' - 'Z' matches ASCII values
+  eRENDERDOC_Key_A = 0x41,
+  eRENDERDOC_Key_B = 0x42,
+  eRENDERDOC_Key_C = 0x43,
+  eRENDERDOC_Key_D = 0x44,
+  eRENDERDOC_Key_E = 0x45,
+  eRENDERDOC_Key_F = 0x46,
+  eRENDERDOC_Key_G = 0x47,
+  eRENDERDOC_Key_H = 0x48,
+  eRENDERDOC_Key_I = 0x49,
+  eRENDERDOC_Key_J = 0x4A,
+  eRENDERDOC_Key_K = 0x4B,
+  eRENDERDOC_Key_L = 0x4C,
+  eRENDERDOC_Key_M = 0x4D,
+  eRENDERDOC_Key_N = 0x4E,
+  eRENDERDOC_Key_O = 0x4F,
+  eRENDERDOC_Key_P = 0x50,
+  eRENDERDOC_Key_Q = 0x51,
+  eRENDERDOC_Key_R = 0x52,
+  eRENDERDOC_Key_S = 0x53,
+  eRENDERDOC_Key_T = 0x54,
+  eRENDERDOC_Key_U = 0x55,
+  eRENDERDOC_Key_V = 0x56,
+  eRENDERDOC_Key_W = 0x57,
+  eRENDERDOC_Key_X = 0x58,
+  eRENDERDOC_Key_Y = 0x59,
+  eRENDERDOC_Key_Z = 0x5A,
 
-	// leave the rest of the ASCII range free
-	// in case we want to use it later
-	eRENDERDOC_Key_NonPrintable = 0x100,
+  // leave the rest of the ASCII range free
+  // in case we want to use it later
+  eRENDERDOC_Key_NonPrintable = 0x100,
 
-	eRENDERDOC_Key_Divide,
-	eRENDERDOC_Key_Multiply,
-	eRENDERDOC_Key_Subtract,
-	eRENDERDOC_Key_Plus,
+  eRENDERDOC_Key_Divide,
+  eRENDERDOC_Key_Multiply,
+  eRENDERDOC_Key_Subtract,
+  eRENDERDOC_Key_Plus,
 
-	eRENDERDOC_Key_F1,
-	eRENDERDOC_Key_F2,
-	eRENDERDOC_Key_F3,
-	eRENDERDOC_Key_F4,
-	eRENDERDOC_Key_F5,
-	eRENDERDOC_Key_F6,
-	eRENDERDOC_Key_F7,
-	eRENDERDOC_Key_F8,
-	eRENDERDOC_Key_F9,
-	eRENDERDOC_Key_F10,
-	eRENDERDOC_Key_F11,
-	eRENDERDOC_Key_F12,
+  eRENDERDOC_Key_F1,
+  eRENDERDOC_Key_F2,
+  eRENDERDOC_Key_F3,
+  eRENDERDOC_Key_F4,
+  eRENDERDOC_Key_F5,
+  eRENDERDOC_Key_F6,
+  eRENDERDOC_Key_F7,
+  eRENDERDOC_Key_F8,
+  eRENDERDOC_Key_F9,
+  eRENDERDOC_Key_F10,
+  eRENDERDOC_Key_F11,
+  eRENDERDOC_Key_F12,
 
-	eRENDERDOC_Key_Home,
-	eRENDERDOC_Key_End,
-	eRENDERDOC_Key_Insert,
-	eRENDERDOC_Key_Delete,
-	eRENDERDOC_Key_PageUp,
-	eRENDERDOC_Key_PageDn,
+  eRENDERDOC_Key_Home,
+  eRENDERDOC_Key_End,
+  eRENDERDOC_Key_Insert,
+  eRENDERDOC_Key_Delete,
+  eRENDERDOC_Key_PageUp,
+  eRENDERDOC_Key_PageDn,
 
-	eRENDERDOC_Key_Backspace,
-	eRENDERDOC_Key_Tab,
-	eRENDERDOC_Key_PrtScrn,
-	eRENDERDOC_Key_Pause,
+  eRENDERDOC_Key_Backspace,
+  eRENDERDOC_Key_Tab,
+  eRENDERDOC_Key_PrtScrn,
+  eRENDERDOC_Key_Pause,
 
-	eRENDERDOC_Key_Max,
+  eRENDERDOC_Key_Max,
 } RENDERDOC_InputButton;
 
 // Sets which key or keys can be used to toggle focus between multiple windows
 //
 // If keys is NULL or num is 0, toggle keys will be disabled
-typedef void (RENDERDOC_CC *pRENDERDOC_SetFocusToggleKeys)(RENDERDOC_InputButton *keys, int num);
+typedef void(RENDERDOC_CC *pRENDERDOC_SetFocusToggleKeys)(RENDERDOC_InputButton *keys, int num);
 
 // Sets which key or keys can be used to capture the next frame
 //
 // If keys is NULL or num is 0, captures keys will be disabled
-typedef void (RENDERDOC_CC *pRENDERDOC_SetCaptureKeys)(RENDERDOC_InputButton *keys, int num);
+typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureKeys)(RENDERDOC_InputButton *keys, int num);
 
-typedef enum
-{
-	// This single bit controls whether the overlay is enabled or disabled globally
-	eRENDERDOC_Overlay_Enabled = 0x1,
+typedef enum {
+  // This single bit controls whether the overlay is enabled or disabled globally
+  eRENDERDOC_Overlay_Enabled = 0x1,
 
-	// Show the average framerate over several seconds as well as min/max
-	eRENDERDOC_Overlay_FrameRate = 0x2,
+  // Show the average framerate over several seconds as well as min/max
+  eRENDERDOC_Overlay_FrameRate = 0x2,
 
-	// Show the current frame number
-	eRENDERDOC_Overlay_FrameNumber = 0x4,
+  // Show the current frame number
+  eRENDERDOC_Overlay_FrameNumber = 0x4,
 
-	// Show a list of recent captures, and how many captures have been made
-	eRENDERDOC_Overlay_CaptureList = 0x8,
+  // Show a list of recent captures, and how many captures have been made
+  eRENDERDOC_Overlay_CaptureList = 0x8,
 
-	// Default values for the overlay mask
-	eRENDERDOC_Overlay_Default =
-	       (eRENDERDOC_Overlay_Enabled|
-	        eRENDERDOC_Overlay_FrameRate|
-	        eRENDERDOC_Overlay_FrameNumber|
-	        eRENDERDOC_Overlay_CaptureList),
+  // Default values for the overlay mask
+  eRENDERDOC_Overlay_Default = (eRENDERDOC_Overlay_Enabled | eRENDERDOC_Overlay_FrameRate |
+                                eRENDERDOC_Overlay_FrameNumber | eRENDERDOC_Overlay_CaptureList),
 
-	// Enable all bits
-	eRENDERDOC_Overlay_All = ~0U,
+  // Enable all bits
+  eRENDERDOC_Overlay_All = ~0U,
 
-	// Disable all bits
-	eRENDERDOC_Overlay_None = 0,
+  // Disable all bits
+  eRENDERDOC_Overlay_None = 0,
 } RENDERDOC_OverlayBits;
 
 // returns the overlay bits that have been set
-typedef uint32_t (RENDERDOC_CC *pRENDERDOC_GetOverlayBits)();
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetOverlayBits)();
 // sets the overlay bits with an and & or mask
-typedef void (RENDERDOC_CC *pRENDERDOC_MaskOverlayBits)(uint32_t And, uint32_t Or);
+typedef void(RENDERDOC_CC *pRENDERDOC_MaskOverlayBits)(uint32_t And, uint32_t Or);
 
 // this function will attempt to shut down RenderDoc.
 //
@@ -324,14 +328,14 @@ typedef void (RENDERDOC_CC *pRENDERDOC_MaskOverlayBits)(uint32_t And, uint32_t O
 // the dll is loaded, before any API work happens. RenderDoc will remove its
 // injected hooks and shut down. Behaviour is undefined if this is called
 // after any API functions have been called.
-typedef void (RENDERDOC_CC *pRENDERDOC_Shutdown)();
+typedef void(RENDERDOC_CC *pRENDERDOC_Shutdown)();
 
 // This function will unload RenderDoc's crash handler.
 //
 // If you use your own crash handler and don't want RenderDoc's handler to
 // intercede, you can call this function to unload it and any unhandled
 // exceptions will pass to the next handler.
-typedef void (RENDERDOC_CC *pRENDERDOC_UnloadCrashHandler)();
+typedef void(RENDERDOC_CC *pRENDERDOC_UnloadCrashHandler)();
 
 // Sets the logfile path template
 //
@@ -350,13 +354,13 @@ typedef void (RENDERDOC_CC *pRENDERDOC_UnloadCrashHandler)();
 //
 // Capture #1 -> my_captures/example_frame123.rdc
 // Capture #2 -> my_captures/example_frame456.rdc
-typedef void (RENDERDOC_CC *pRENDERDOC_SetLogFilePathTemplate)(const char *pathtemplate);
+typedef void(RENDERDOC_CC *pRENDERDOC_SetLogFilePathTemplate)(const char *pathtemplate);
 
 // returns the current logfile template, see SetLogFileTemplate above, as a UTF-8 string
-typedef const char* (RENDERDOC_CC *pRENDERDOC_GetLogFilePathTemplate)();
+typedef const char *(RENDERDOC_CC *pRENDERDOC_GetLogFilePathTemplate)();
 
 // returns the number of captures that have been made
-typedef uint32_t (RENDERDOC_CC *pRENDERDOC_GetNumCaptures)();
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetNumCaptures)();
 
 // This function returns the details of a capture, by index. New captures are added
 // to the end of the list.
@@ -372,13 +376,11 @@ typedef uint32_t (RENDERDOC_CC *pRENDERDOC_GetNumCaptures)();
 //
 // Note: when captures are deleted in the UI they will remain in this list, so the
 // logfile path may not exist anymore.
-typedef uint32_t (RENDERDOC_CC *pRENDERDOC_GetCapture)(uint32_t idx, char *logfile, uint32_t *pathlength, uint64_t *timestamp);
-
-// capture the next frame on whichever window and API is currently considered active
-typedef void (RENDERDOC_CC *pRENDERDOC_TriggerCapture)();
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetCapture)(uint32_t idx, char *logfile,
+                                                      uint32_t *pathlength, uint64_t *timestamp);
 
 // returns 1 if the RenderDoc UI is connected to this application, 0 otherwise
-typedef uint32_t (RENDERDOC_CC *pRENDERDOC_IsRemoteAccessConnected)();
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_IsRemoteAccessConnected)();
 
 // This function will launch the Replay UI associated with the RenderDoc library injected
 // into the running application.
@@ -389,12 +391,13 @@ typedef uint32_t (RENDERDOC_CC *pRENDERDOC_IsRemoteAccessConnected)();
 // if cmdline is NULL, the command line will be empty.
 //
 // returns the PID of the replay UI if successful, 0 if not successful.
-typedef uint32_t (RENDERDOC_CC *pRENDERDOC_LaunchReplayUI)(uint32_t connectRemoteAccess, const char *cmdline);
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_LaunchReplayUI)(uint32_t connectRemoteAccess,
+                                                          const char *cmdline);
 
 // RenderDoc can return a higher version than requested if it's backwards compatible,
 // this function returns the actual version returned. If a parameter is NULL, it will be
 // ignored and the others will be filled out.
-typedef void (RENDERDOC_CC *pRENDERDOC_GetAPIVersion)(int *major, int *minor, int *patch);
+typedef void(RENDERDOC_CC *pRENDERDOC_GetAPIVersion)(int *major, int *minor, int *patch);
 
 //////////////////////////////////////////////////////////////////////////
 // Capturing functions
@@ -403,16 +406,23 @@ typedef void (RENDERDOC_CC *pRENDERDOC_GetAPIVersion)(int *major, int *minor, in
 // A device pointer is a pointer to the API's root handle.
 //
 // This would be an ID3D11Device, HGLRC/GLXContext, ID3D12Device, etc
-typedef void* RENDERDOC_DevicePointer;
+typedef void *RENDERDOC_DevicePointer;
 
 // A window handle is the OS's native window handle
 //
 // This would be an HWND, GLXDrawable, etc
-typedef void* RENDERDOC_WindowHandle;
+typedef void *RENDERDOC_WindowHandle;
 
 // This sets the RenderDoc in-app overlay in the API/window pair as 'active' and it will
 // respond to keypresses. Neither parameter can be NULL
-typedef void (RENDERDOC_CC *pRENDERDOC_SetActiveWindow)(RENDERDOC_DevicePointer device, RENDERDOC_WindowHandle wndHandle);
+typedef void(RENDERDOC_CC *pRENDERDOC_SetActiveWindow)(RENDERDOC_DevicePointer device,
+                                                       RENDERDOC_WindowHandle wndHandle);
+
+// capture the next frame on whichever window and API is currently considered active
+typedef void(RENDERDOC_CC *pRENDERDOC_TriggerCapture)();
+
+// capture the next N frames on whichever window and API is currently considered active
+typedef void(RENDERDOC_CC *pRENDERDOC_TriggerMultiFrameCapture)(uint32_t numFrames);
 
 // When choosing either a device pointer or a window handle to capture, you can pass NULL.
 // Passing NULL specifies a 'wildcard' match against anything. This allows you to specify
@@ -432,24 +442,26 @@ typedef void (RENDERDOC_CC *pRENDERDOC_SetActiveWindow)(RENDERDOC_DevicePointer
 //
 // The results are undefined (including crashes) if two captures are started overlapping,
 // even on separate devices and/oror windows.
-typedef void (RENDERDOC_CC *pRENDERDOC_StartFrameCapture)(RENDERDOC_DevicePointer device, RENDERDOC_WindowHandle wndHandle);
+typedef void(RENDERDOC_CC *pRENDERDOC_StartFrameCapture)(RENDERDOC_DevicePointer device,
+                                                         RENDERDOC_WindowHandle wndHandle);
 
 // Returns whether or not a frame capture is currently ongoing anywhere.
 //
 // This will return 1 if a capture is ongoing, and 0 if there is no capture running
-typedef uint32_t (RENDERDOC_CC *pRENDERDOC_IsFrameCapturing)();
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_IsFrameCapturing)();
 
 // Ends capturing immediately.
 //
 // This will return 1 if the capture succeeded, and 0 if there was an error capturing.
-typedef uint32_t (RENDERDOC_CC *pRENDERDOC_EndFrameCapture)(RENDERDOC_DevicePointer device, RENDERDOC_WindowHandle wndHandle);
+typedef uint32_t(RENDERDOC_CC *pRENDERDOC_EndFrameCapture)(RENDERDOC_DevicePointer device,
+                                                           RENDERDOC_WindowHandle wndHandle);
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 // RenderDoc API versions
-// 
+//
 
 // RenderDoc uses semantic versioning (http://semver.org/).
-// 
+//
 // MAJOR version is incremented when incompatible API changes happen.
 // MINOR version is incremented when functionality is added in a backwards-compatible manner.
 // PATCH version is incremented when backwards-compatible bug fixes happen.
@@ -457,10 +469,11 @@ typedef uint32_t (RENDERDOC_CC *pRENDERDOC_EndFrameCapture)(RENDERDOC_DevicePoin
 // Note that this means the API returned can be higher than the one you might have requested.
 // e.g. if you are running against a newer RenderDoc that supports 1.0.1, it will be returned
 // instead of 1.0.0. You can check this with the GetAPIVersion entry point
-typedef enum
-{
-	eRENDERDOC_API_Version_1_0_0 = 10000, // RENDERDOC_API_1_0_0 = 1 00 00
-	eRENDERDOC_API_Version_1_0_1 = 10001, // RENDERDOC_API_1_0_1 = 1 00 01
+typedef enum {
+  eRENDERDOC_API_Version_1_0_0 = 10000,    // RENDERDOC_API_1_0_0 = 1 00 00
+  eRENDERDOC_API_Version_1_0_1 = 10001,    // RENDERDOC_API_1_0_1 = 1 00 01
+  eRENDERDOC_API_Version_1_0_2 = 10002,    // RENDERDOC_API_1_0_2 = 1 00 02
+  eRENDERDOC_API_Version_1_1_0 = 10100,    // RENDERDOC_API_1_1_0 = 1 01 00
 } RENDERDOC_Version;
 
 // API version changelog:
@@ -468,52 +481,59 @@ typedef enum
 // 1.0.0 - initial release
 // 1.0.1 - Bugfix: IsFrameCapturing() was returning false for captures that were triggered
 //         by keypress or TriggerCapture, instead of Start/EndFrameCapture.
+// 1.0.2 - Refactor: Renamed eRENDERDOC_Option_DebugDeviceMode to eRENDERDOC_Option_APIValidation
+// 1.1.0 - Add feature: TriggerMultiFrameCapture(). Backwards compatible with 1.0.x since the new
+//         function pointer is added to the end of the struct, the original layout is identical
 
-// eRENDERDOC_API_Version_1_0_1
+// eRENDERDOC_API_Version_1_1_0
 typedef struct
 {
-	pRENDERDOC_GetAPIVersion              GetAPIVersion;
+  pRENDERDOC_GetAPIVersion GetAPIVersion;
 
-	pRENDERDOC_SetCaptureOptionU32        SetCaptureOptionU32;
-	pRENDERDOC_SetCaptureOptionF32        SetCaptureOptionF32;
+  pRENDERDOC_SetCaptureOptionU32 SetCaptureOptionU32;
+  pRENDERDOC_SetCaptureOptionF32 SetCaptureOptionF32;
 
-	pRENDERDOC_GetCaptureOptionU32        GetCaptureOptionU32;
-	pRENDERDOC_GetCaptureOptionF32        GetCaptureOptionF32;
+  pRENDERDOC_GetCaptureOptionU32 GetCaptureOptionU32;
+  pRENDERDOC_GetCaptureOptionF32 GetCaptureOptionF32;
 
-	pRENDERDOC_SetFocusToggleKeys         SetFocusToggleKeys;
-	pRENDERDOC_SetCaptureKeys             SetCaptureKeys;
+  pRENDERDOC_SetFocusToggleKeys SetFocusToggleKeys;
+  pRENDERDOC_SetCaptureKeys SetCaptureKeys;
 
-	pRENDERDOC_GetOverlayBits             GetOverlayBits;
-	pRENDERDOC_MaskOverlayBits            MaskOverlayBits;
+  pRENDERDOC_GetOverlayBits GetOverlayBits;
+  pRENDERDOC_MaskOverlayBits MaskOverlayBits;
 
-	pRENDERDOC_Shutdown                   Shutdown;
-	pRENDERDOC_UnloadCrashHandler         UnloadCrashHandler;
+  pRENDERDOC_Shutdown Shutdown;
+  pRENDERDOC_UnloadCrashHandler UnloadCrashHandler;
 
-	pRENDERDOC_SetLogFilePathTemplate     SetLogFilePathTemplate;
-	pRENDERDOC_GetLogFilePathTemplate     GetLogFilePathTemplate;
+  pRENDERDOC_SetLogFilePathTemplate SetLogFilePathTemplate;
+  pRENDERDOC_GetLogFilePathTemplate GetLogFilePathTemplate;
 
-	pRENDERDOC_GetNumCaptures             GetNumCaptures;
-	pRENDERDOC_GetCapture                 GetCapture;
+  pRENDERDOC_GetNumCaptures GetNumCaptures;
+  pRENDERDOC_GetCapture GetCapture;
 
-	pRENDERDOC_TriggerCapture             TriggerCapture;
+  pRENDERDOC_TriggerCapture TriggerCapture;
 
-	pRENDERDOC_IsRemoteAccessConnected    IsRemoteAccessConnected;
-	pRENDERDOC_LaunchReplayUI             LaunchReplayUI;
+  pRENDERDOC_IsRemoteAccessConnected IsRemoteAccessConnected;
+  pRENDERDOC_LaunchReplayUI LaunchReplayUI;
 
-	pRENDERDOC_SetActiveWindow            SetActiveWindow;
+  pRENDERDOC_SetActiveWindow SetActiveWindow;
 
-	pRENDERDOC_StartFrameCapture          StartFrameCapture;
-	pRENDERDOC_IsFrameCapturing           IsFrameCapturing;
-	pRENDERDOC_EndFrameCapture            EndFrameCapture;
-} RENDERDOC_API_1_0_1;
+  pRENDERDOC_StartFrameCapture StartFrameCapture;
+  pRENDERDOC_IsFrameCapturing IsFrameCapturing;
+  pRENDERDOC_EndFrameCapture EndFrameCapture;
 
-typedef RENDERDOC_API_1_0_1 RENDERDOC_API_1_0_0;
+  pRENDERDOC_TriggerMultiFrameCapture TriggerMultiFrameCapture;
+} RENDERDOC_API_1_1_0;
+
+typedef RENDERDOC_API_1_1_0 RENDERDOC_API_1_0_0;
+typedef RENDERDOC_API_1_1_0 RENDERDOC_API_1_0_1;
+typedef RENDERDOC_API_1_1_0 RENDERDOC_API_1_0_2;
 
 //////////////////////////////////////////////////////////////////////////////////////////////////
 // RenderDoc API entry point
-// 
+//
 // This entry point can be obtained via GetProcAddress/dlsym if RenderDoc is available.
-// 
+//
 // The name is the same as the typedef - "RENDERDOC_GetAPI"
 //
 // This function is not thread safe, and should not be called on multiple threads at once.
@@ -531,8 +551,8 @@ typedef RENDERDOC_API_1_0_1 RENDERDOC_API_1_0_0;
 //   1 - if the outAPIPointers has been filled with a pointer to the API struct requested
 //   0 - if the requested version is not supported or the arguments are invalid.
 //
-typedef int (RENDERDOC_CC *pRENDERDOC_GetAPI)(RENDERDOC_Version version, void **outAPIPointers);
+typedef int(RENDERDOC_CC *pRENDERDOC_GetAPI)(RENDERDOC_Version version, void **outAPIPointers);
 
 #ifdef __cplusplus
-}  // extern "C"
+}    // extern "C"
 #endif
diff --git a/3rdparty/bgfx/3rdparty/stb/stb_image.c b/3rdparty/bgfx/3rdparty/stb/stb_image.c
index 16e04103441..ad26b74f55d 100644
--- a/3rdparty/bgfx/3rdparty/stb/stb_image.c
+++ b/3rdparty/bgfx/3rdparty/stb/stb_image.c
@@ -1375,18 +1375,18 @@ static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int r
       // convert source image with img_n components to one with req_comp components;
       // avoid switch per pixel, so use switch per scanline and massive macros
       switch (COMBO(img_n, req_comp)) {
-         CASE(1,2) { dest[0]=src[0]; dest[1]=255; } break;
-         CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break;
-         CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255; } break;
-         CASE(2,1) { dest[0]=src[0]; } break;
-         CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break;
-         CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break;
-         CASE(3,4) { dest[0]=src[0]; dest[1]=src[1]; dest[2]=src[2]; dest[3]=255; } break;
-         CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break;
-         CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255; } break;
-         CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break;
-         CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break;
-         CASE(4,3) { dest[0]=src[0]; dest[1]=src[1]; dest[2]=src[2]; } break;
+         CASE(1,2) dest[0]=src[0], dest[1]=255; break;
+         CASE(1,3) dest[0]=dest[1]=dest[2]=src[0]; break;
+         CASE(1,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; break;
+         CASE(2,1) dest[0]=src[0]; break;
+         CASE(2,3) dest[0]=dest[1]=dest[2]=src[0]; break;
+         CASE(2,4) dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; break;
+         CASE(3,4) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; break;
+         CASE(3,1) dest[0]=stbi__compute_y(src[0],src[1],src[2]); break;
+         CASE(3,2) dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; break;
+         CASE(4,1) dest[0]=stbi__compute_y(src[0],src[1],src[2]); break;
+         CASE(4,2) dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; break;
+         CASE(4,3) dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; break;
          default: STBI_ASSERT(0);
       }
       #undef CASE
@@ -4101,12 +4101,12 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r
          switch (filter) {
             // "none" filter turns into a memcpy here; make that explicit.
             case STBI__F_none:         memcpy(cur, raw, nk); break;
-            CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break;
-            CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;
-            CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break;
-            CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break;
-            CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break;
-            CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break;
+            CASE(STBI__F_sub)          cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); break;
+            CASE(STBI__F_up)           cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break;
+            CASE(STBI__F_avg)          cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); break;
+            CASE(STBI__F_paeth)        cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); break;
+            CASE(STBI__F_avg_first)    cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); break;
+            CASE(STBI__F_paeth_first)  cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); break;
          }
          #undef CASE
          raw += nk;
@@ -4117,13 +4117,13 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r
                 for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \
                    for (k=0; k < filter_bytes; ++k)
          switch (filter) {
-            CASE(STBI__F_none)         { cur[k] = raw[k]; } break;
-            CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break;
-            CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;
-            CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break;
-            CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break;
-            CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break;
-            CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break;
+            CASE(STBI__F_none)         cur[k] = raw[k]; break;
+            CASE(STBI__F_sub)          cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); break;
+            CASE(STBI__F_up)           cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break;
+            CASE(STBI__F_avg)          cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); break;
+            CASE(STBI__F_paeth)        cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); break;
+            CASE(STBI__F_avg_first)    cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); break;
+            CASE(STBI__F_paeth_first)  cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); break;
          }
          #undef CASE
 
diff --git a/3rdparty/bgfx/README.md b/3rdparty/bgfx/README.md
index 5e45925d013..9f5c27d2059 100644
--- a/3rdparty/bgfx/README.md
+++ b/3rdparty/bgfx/README.md
@@ -139,7 +139,6 @@ https://github.com/mamedev/mame MAME - Multiple Arcade Machine Emulator
 https://blackshift.itch.io/blackshift - Blackshift is a grid-based, space-themed
 action puzzle game which isn't afraid of complexity — think Chip's Challenge on
 crack. 
-https://www.youtube.com/watch?v=PUl8612Y-ds
 Blackshift Trailer, May 2016
+
+http://www.dogbytegames.com/dead_venture.html - Dead Venture is a new Drive 'N
+Gun game where you help a handful of survivals reach the safe haven: a military
+base on a far island.
+
 
 [License (BSD 2-clause)](https://bkaradzic.github.io/bgfx/license.html)
diff --git a/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp b/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp
index 8b08dec93cb..3ebe122d776 100644
--- a/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp
+++ b/3rdparty/bgfx/examples/14-shadowvolumes/shadowvolumes.cpp
@@ -23,7 +23,7 @@ using namespace std::tr1;
 #include 
 #include 
 #include 
-#include 
+#include 
 #include 
 #include 
 #include "entry/entry.h"
@@ -1513,9 +1513,9 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume
 
 			using namespace bx;
 
-			const float4_t lx = float4_splat(_light[0]);
-			const float4_t ly = float4_splat(_light[1]);
-			const float4_t lz = float4_splat(_light[2]);
+			const simd128_t lx = simd_splat(_light[0]);
+			const simd128_t ly = simd_splat(_light[1]);
+			const simd128_t lz = simd_splat(_light[2]);
 
 			for (; ii < numEdgesRounded; ii+=2)
 			{
@@ -1524,47 +1524,47 @@ void shadowVolumeCreate(ShadowVolume& _shadowVolume
 				const Plane* edgePlane0 = &edgePlanes[ii*2];
 				const Plane* edgePlane1 = &edgePlanes[ii*2 + 2];
 
-				const float4_t reverse =
-					float4_ild(edge0.m_faceReverseOrder[0]
+				const simd128_t reverse =
+					simd_ild(edge0.m_faceReverseOrder[0]
 							, edge1.m_faceReverseOrder[0]
 							, edge0.m_faceReverseOrder[1]
 							, edge1.m_faceReverseOrder[1]
 							);
 
-				const float4_t p00 = float4_ld(edgePlane0[0].m_plane);
-				const float4_t p10 = float4_ld(edgePlane1[0].m_plane);
-				const float4_t p01 = float4_ld(edgePlane0[1].m_plane);
-				const float4_t p11 = float4_ld(edgePlane1[1].m_plane);
+				const simd128_t p00 = simd_ld(edgePlane0[0].m_plane);
+				const simd128_t p10 = simd_ld(edgePlane1[0].m_plane);
+				const simd128_t p01 = simd_ld(edgePlane0[1].m_plane);
+				const simd128_t p11 = simd_ld(edgePlane1[1].m_plane);
 
-				const float4_t xxyy0 = float4_shuf_xAyB(p00, p01);
-				const float4_t zzww0 = float4_shuf_zCwD(p00, p01);
-				const float4_t xxyy1 = float4_shuf_xAyB(p10, p11);
-				const float4_t zzww1 = float4_shuf_zCwD(p10, p11);
+				const simd128_t xxyy0 = simd_shuf_xAyB(p00, p01);
+				const simd128_t zzww0 = simd_shuf_zCwD(p00, p01);
+				const simd128_t xxyy1 = simd_shuf_xAyB(p10, p11);
+				const simd128_t zzww1 = simd_shuf_zCwD(p10, p11);
 
-				const float4_t vX = float4_shuf_xAyB(xxyy0, xxyy1);
-				const float4_t vY = float4_shuf_zCwD(xxyy0, xxyy1);
-				const float4_t vZ = float4_shuf_xAyB(zzww0, zzww1);
-				const float4_t vW = float4_shuf_zCwD(zzww0, zzww1);
+				const simd128_t vX = simd_shuf_xAyB(xxyy0, xxyy1);
+				const simd128_t vY = simd_shuf_zCwD(xxyy0, xxyy1);
+				const simd128_t vZ = simd_shuf_xAyB(zzww0, zzww1);
+				const simd128_t vW = simd_shuf_zCwD(zzww0, zzww1);
 
-				const float4_t r0 = float4_mul(vX, lx);
-				const float4_t r1 = float4_mul(vY, ly);
-				const float4_t r2 = float4_mul(vZ, lz);
+				const simd128_t r0 = simd_mul(vX, lx);
+				const simd128_t r1 = simd_mul(vY, ly);
+				const simd128_t r2 = simd_mul(vZ, lz);
 
-				const float4_t dot = float4_add(r0, float4_add(r1, r2) );
-				const float4_t f = float4_add(dot, vW);
+				const simd128_t dot = simd_add(r0, simd_add(r1, r2) );
+				const simd128_t f = simd_add(dot, vW);
 
-				const float4_t zero = float4_zero();
-				const float4_t mask = float4_cmpgt(f, zero);
-				const float4_t onef = float4_splat(1.0f);
-				const float4_t tmp0 = float4_and(mask, onef);
-				const float4_t tmp1 = float4_ftoi(tmp0);
-				const float4_t tmp2 = float4_xor(tmp1, reverse);
-				const float4_t tmp3 = float4_sll(tmp2, 1);
-				const float4_t onei = float4_isplat(1);
-				const float4_t tmp4 = float4_isub(tmp3, onei);
+				const simd128_t zero = simd_zero();
+				const simd128_t mask = simd_cmpgt(f, zero);
+				const simd128_t onef = simd_splat(1.0f);
+				const simd128_t tmp0 = simd_and(mask, onef);
+				const simd128_t tmp1 = simd_ftoi(tmp0);
+				const simd128_t tmp2 = simd_xor(tmp1, reverse);
+				const simd128_t tmp3 = simd_sll(tmp2, 1);
+				const simd128_t onei = simd_isplat(1);
+				const simd128_t tmp4 = simd_isub(tmp3, onei);
 
 				BX_ALIGN_DECL_16(int32_t res[4]);
-				float4_st(&res, tmp4);
+				simd_st(&res, tmp4);
 
 				for (uint16_t jj = 0; jj < 2; ++jj)
 				{
diff --git a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sc b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sc
index 3cdf1973f2e..cfaf3412c17 100644
--- a/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sc
+++ b/3rdparty/bgfx/examples/15-shadowmaps-simple/fs_sms_shadow.sc
@@ -7,5 +7,4 @@
 
 void main()
 {
-	gl_FragColor = vec4_splat(0.0);
 }
diff --git a/3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc b/3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc
index 28aa831331f..836400b9ed0 100644
--- a/3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc
+++ b/3rdparty/bgfx/examples/18-ibl/fs_ibl_mesh.sc
@@ -11,9 +11,9 @@ $input v_view, v_normal
 SAMPLERCUBE(s_texCube, 0);
 SAMPLERCUBE(s_texCubeIrr, 1);
 
-vec3 calcFresnel(vec3 _cspec, float _dot)
+vec3 calcFresnel(vec3 _cspec, float _dot, float _strength)
 {
-	return _cspec + (1.0 - _cspec)*pow(1.0 - _dot, 5.0);
+	return _cspec + (1.0 - _cspec)*pow(1.0 - _dot, 5.0) * _strength;
 }
 
 vec3 calcLambert(vec3 _cdiff, float _ndotl)
@@ -50,35 +50,28 @@ void main()
 	float hdotv = clamp(dot(hh, vv), 0.0, 1.0);
 
 	// Material params.
-	vec3  albedo       = u_rgbDiff.xyz;
-	float reflectivity = u_reflectivity;
-	float gloss        = u_glossiness;
+	vec3  inAlbedo       = u_rgbDiff.xyz;
+	float inReflectivity = u_reflectivity;
+	float inGloss        = u_glossiness;
 
 	// Reflection.
 	vec3 refl;
 	if (0.0 == u_metalOrSpec) // Metalness workflow.
 	{
-		refl = mix(vec3_splat(0.04), albedo, reflectivity);
+		refl = mix(vec3_splat(0.04), inAlbedo, inReflectivity);
 	}
 	else // Specular workflow.
 	{
-		refl = u_rgbSpec.xyz * vec3_splat(reflectivity);
+		refl = u_rgbSpec.xyz * vec3_splat(inReflectivity);
 	}
-	vec3 dirF0 = calcFresnel(refl, hdotv);
-	vec3 envF0 = calcFresnel(refl, ndotv);
+	vec3 albedo = inAlbedo * (1.0 - inReflectivity);
+	vec3 dirFresnel = calcFresnel(refl, hdotv, inGloss);
+	vec3 envFresnel = calcFresnel(refl, ndotv, inGloss);
 
-	// Direct lighting.
-	vec3 dirSpec = dirF0;
-	vec3 dirDiff = albedo * 1.0-dirF0;
-
-	vec3 lambert = u_doDiffuse  * calcLambert(dirDiff, ndotl);
-	vec3 blinn   = u_doSpecular * calcBlinn(dirSpec, ndoth, ndotl, specPwr(gloss));
+	vec3 lambert = u_doDiffuse  * calcLambert(albedo * (1.0 - dirFresnel), ndotl);
+	vec3 blinn   = u_doSpecular * calcBlinn(dirFresnel, ndoth, ndotl, specPwr(inGloss));
 	vec3 direct  = (lambert + blinn)*clight;
 
-	// Indirect lighting.
-	vec3 envSpec = envF0;
-	vec3 envDiff = albedo * 1.0-envF0;
-
 	// Note: Environment textures are filtered with cmft: https://github.com/dariomanesku/cmft
 	// Params used:
 	// --excludeBase true //!< First level mip is not filtered.
@@ -86,7 +79,7 @@ void main()
 	// --glossScale 10    //!< Spec power scale. See: specPwr().
 	// --glossBias 2      //!< Spec power bias. See: specPwr().
 	// --edgeFixup warp   //!< This must be used on DirectX9. When fileted with 'warp', fixCubeLookup() should be used.
-	float mip = 1.0 + 5.0*(1.0 - gloss); // Use mip levels [1..6] for radiance.
+	float mip = 1.0 + 5.0*(1.0 - inGloss); // Use mip levels [1..6] for radiance.
 
 	mat4 mtx;
 	mtx[0] = u_mtx0;
@@ -98,9 +91,11 @@ void main()
 	vec3 cubeN = normalize(instMul(mtx, vec4(nn, 0.0)).xyz);
 	cubeR = fixCubeLookup(cubeR, mip, 256.0);
 
-	vec3 radiance   = u_doDiffuseIbl  * envSpec * toLinear(textureCubeLod(s_texCube, cubeR, mip).xyz);
-	vec3 irradiance = u_doSpecularIbl * envDiff * toLinear(textureCube(s_texCubeIrr, cubeN).xyz);
-	vec3 indirect = radiance + irradiance;
+	vec3 radiance    = toLinear(textureCubeLod(s_texCube, cubeR, mip).xyz);
+	vec3 irradiance  = toLinear(textureCube(s_texCubeIrr, cubeN).xyz);
+	vec3 envDiffuse  = albedo     * irradiance * u_doDiffuseIbl;
+	vec3 envSpecular = envFresnel * radiance   * u_doSpecularIbl;
+	vec3 indirect    = envDiffuse + envSpecular;
 
 	// Color.
 	vec3 color = direct + indirect;
diff --git a/3rdparty/bgfx/examples/18-ibl/ibl.cpp b/3rdparty/bgfx/examples/18-ibl/ibl.cpp
index c21b729ae46..06f280f1c64 100644
--- a/3rdparty/bgfx/examples/18-ibl/ibl.cpp
+++ b/3rdparty/bgfx/examples/18-ibl/ibl.cpp
@@ -731,7 +731,7 @@ int _main_(int _argc, char** _argv)
 		camera.envViewMtx(mtxEnvView);
 		float mtxEnvRot[16];
 		bx::mtxRotateY(mtxEnvRot, settings.m_envRotCurr);
-		bx::mtxMul(uniforms.m_mtx, mtxEnvView, mtxEnvRot);
+		bx::mtxMul(uniforms.m_mtx, mtxEnvView, mtxEnvRot); // Used for Skybox.
 
 		// Submit view 0.
 		bgfx::setTexture(0, s_texCube, lightProbes[currentLightProbe].m_tex);
@@ -742,6 +742,7 @@ int _main_(int _argc, char** _argv)
 		bgfx::submit(0, programSky);
 
 		// Submit view 1.
+		memcpy(uniforms.m_mtx, mtxEnvRot, 16*sizeof(float)); // Used for IBL.
 		if (0 == settings.m_meshSelection)
 		{
 			// Submit bunny.
@@ -749,6 +750,7 @@ int _main_(int _argc, char** _argv)
 			bx::mtxSRT(mtx, 1.0f, 1.0f, 1.0f, 0.0f, bx::pi, 0.0f, 0.0f, -0.80f, 0.0f);
 			bgfx::setTexture(0, s_texCube,    lightProbes[currentLightProbe].m_tex);
 			bgfx::setTexture(1, s_texCubeIrr, lightProbes[currentLightProbe].m_texIrr);
+			uniforms.submit();
 			meshSubmit(meshBunny, 1, programMesh, mtx);
 		}
 		else
diff --git a/3rdparty/bgfx/examples/18-ibl/vs_ibl_skybox.sc b/3rdparty/bgfx/examples/18-ibl/vs_ibl_skybox.sc
index b83fdd19e25..f3a15e0c73f 100644
--- a/3rdparty/bgfx/examples/18-ibl/vs_ibl_skybox.sc
+++ b/3rdparty/bgfx/examples/18-ibl/vs_ibl_skybox.sc
@@ -15,9 +15,9 @@ void main()
 {
 	gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
 
-	float fov = 45.0;
+	float fov = radians(45.0);
 	float height = tan(fov*0.5);
-	float aspect = height*(4.0/3.0);
+	float aspect = height*(u_viewRect.z / u_viewRect.w);
 	vec2 tex = (2.0*a_texcoord0-1.0) * vec2(aspect, height);
 
 	mat4 mtx;
diff --git a/3rdparty/bgfx/examples/19-oit/oit.cpp b/3rdparty/bgfx/examples/19-oit/oit.cpp
index b9bbd041934..78c600331dd 100644
--- a/3rdparty/bgfx/examples/19-oit/oit.cpp
+++ b/3rdparty/bgfx/examples/19-oit/oit.cpp
@@ -410,6 +410,14 @@ class ExampleOIT : public entry::AppI
 							| BGFX_STATE_MSAA
 							;
 
+						const uint64_t stateNoDepth = 0
+						| BGFX_STATE_CULL_CW
+						| BGFX_STATE_RGB_WRITE
+						| BGFX_STATE_ALPHA_WRITE
+						| BGFX_STATE_DEPTH_TEST_ALWAYS
+						| BGFX_STATE_MSAA
+						;
+						
 						bgfx::ProgramHandle program = BGFX_INVALID_HANDLE;
 						switch (m_mode)
 						{
@@ -428,7 +436,7 @@ class ExampleOIT : public entry::AppI
 								program = m_wbSeparatePass;
 
 								// Set render states.
-								bgfx::setState(state
+								bgfx::setState(stateNoDepth
 									| BGFX_STATE_BLEND_FUNC_SEPARATE(BGFX_STATE_BLEND_ONE, BGFX_STATE_BLEND_ONE, BGFX_STATE_BLEND_ZERO, BGFX_STATE_BLEND_INV_SRC_ALPHA)
 									);
 								break;
@@ -438,7 +446,7 @@ class ExampleOIT : public entry::AppI
 								program = m_wbPass;
 
 								// Set render states.
-								bgfx::setState(state
+								bgfx::setState(stateNoDepth
 									| BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_ONE, BGFX_STATE_BLEND_ONE)
 									| BGFX_STATE_BLEND_INDEPENDENT
 									, 0
diff --git a/3rdparty/bgfx/examples/21-deferred/fs_deferred_light.sc b/3rdparty/bgfx/examples/21-deferred/fs_deferred_light.sc
index 81f9ad25984..42571157767 100644
--- a/3rdparty/bgfx/examples/21-deferred/fs_deferred_light.sc
+++ b/3rdparty/bgfx/examples/21-deferred/fs_deferred_light.sc
@@ -56,11 +56,11 @@ vec3 calcLight(int _idx, vec3 _wpos, vec3 _normal, vec3 _view)
 
 float toClipSpaceDepth(float _depthTextureZ)
 {
-#if BGFX_SHADER_LANGUAGE_HLSL
+#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL
 	return _depthTextureZ;
 #else
 	return _depthTextureZ * 2.0 - 1.0;
-#endif // BGFX_SHADER_LANGUAGE_HLSL
+#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL
 }
 
 vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos)
@@ -76,9 +76,9 @@ void main()
 	float depth       = toClipSpaceDepth(deviceDepth);
 
 	vec3 clip = vec3(v_texcoord0 * 2.0 - 1.0, depth);
-#if BGFX_SHADER_LANGUAGE_HLSL
+#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL
 	clip.y = -clip.y;
-#endif // BGFX_SHADER_LANGUAGE_HLSL
+#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL
 	vec3 wpos = clipToWorld(u_mtx, clip);
 
 	vec3 view = mul(u_view, vec4(wpos, 0.0) ).xyz;
diff --git a/3rdparty/bgfx/examples/29-debugdraw/debugdraw.cpp b/3rdparty/bgfx/examples/29-debugdraw/debugdraw.cpp
index 4efcd80b882..a1ffa395bed 100644
--- a/3rdparty/bgfx/examples/29-debugdraw/debugdraw.cpp
+++ b/3rdparty/bgfx/examples/29-debugdraw/debugdraw.cpp
@@ -152,12 +152,12 @@ class DebugDrawApp : public entry::AppI
 				ddDraw(sphere);
 				ddSetWireframe(false);
 
-				ddSetColor(0xf0ffc0ff);
+				ddSetColor(0xc0ffc0ff);
 				sphere.m_center[0] = -2.0f;
 				ddSetLod(2);
 				ddDraw(sphere);
 
-				ddSetColor(0xc0f0ffff);
+				ddSetColor(0xa0f0ffff);
 				sphere.m_center[0] = -4.0f;
 				ddSetLod(1);
 				ddDraw(sphere);
@@ -198,6 +198,12 @@ class DebugDrawApp : public entry::AppI
 					float to[3]   = { -11.0f, 4.0f,  0.0f };
 					ddDrawCylinder(from, to, 0.5f );
 				}
+
+				{
+					float from[3] = {  0.0f, 7.0f, 0.0f };
+					float to[3]   = { -6.0f, 7.0f, 0.0f };
+					ddDrawCylinder(from, to, 0.5f, true);
+				}
 			ddPop();
 
 			ddDrawOrb(-11.0f, 0.0f, 0.0f, 1.0f);
diff --git a/3rdparty/bgfx/examples/29-debugdraw/screenshot.png b/3rdparty/bgfx/examples/29-debugdraw/screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..f00864eda50ad1c294b6db6e9a5f26d102b2421e
GIT binary patch
literal 75915
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

DCC7uVo@Wt{{_hte@EfPd8hn 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 Jmvv4FO#nqvRgM4v literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/30-picking/fs_picking_id.sc b/3rdparty/bgfx/examples/30-picking/fs_picking_id.sc new file mode 100644 index 00000000000..899371379db --- /dev/null +++ b/3rdparty/bgfx/examples/30-picking/fs_picking_id.sc @@ -0,0 +1,16 @@ +$input v_pos, v_view, v_normal, v_color0 + +/* + * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +uniform vec4 u_id; + +void main() +{ + gl_FragColor.xyz = u_id.xyz; // This is dumb, should use u8 texture + gl_FragColor.w = 1.0; +} diff --git a/3rdparty/bgfx/examples/30-picking/fs_picking_shaded.sc b/3rdparty/bgfx/examples/30-picking/fs_picking_shaded.sc new file mode 100644 index 00000000000..668b8014251 --- /dev/null +++ b/3rdparty/bgfx/examples/30-picking/fs_picking_shaded.sc @@ -0,0 +1,44 @@ +$input v_pos, v_view, v_normal, v_color0 + +/* + * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +vec2 blinn(vec3 _lightDir, vec3 _normal, vec3 _viewDir) +{ + float ndotl = dot(_normal, _lightDir); + vec3 reflected = _lightDir - 2.0*ndotl*_normal; // reflect(_lightDir, _normal); + float rdotv = dot(reflected, _viewDir); + return vec2(ndotl, rdotv); +} + +float fresnel(float _ndotl, float _bias, float _pow) +{ + float facing = (1.0 - _ndotl); + return max(_bias + (1.0 - _bias) * pow(facing, _pow), 0.0); +} + +vec4 lit(float _ndotl, float _rdotv, float _m) +{ + float diff = max(0.0, _ndotl); + float spec = step(0.0, _ndotl) * max(0.0, _rdotv * _m); + return vec4(1.0, diff, spec, 1.0); +} + +void main() +{ + vec3 lightDir = vec3(0.0, 0.0, -1.0); + vec3 normal = normalize(v_normal); + vec3 view = normalize(v_view); + vec2 bln = blinn(lightDir, normal, view); + vec4 lc = lit(bln.x, bln.y, 1.0); + float fres = fresnel(bln.x, 0.2, 5.0); + + vec3 color = v_color0.xyz; + + gl_FragColor.xyz = pow(vec3(0.07, 0.06, 0.08) + color*lc.y + fres*pow(lc.z, 128.0), vec3_splat(1.0/2.2) ); + gl_FragColor.w = 1.0; +} diff --git a/3rdparty/bgfx/examples/30-picking/makefile b/3rdparty/bgfx/examples/30-picking/makefile new file mode 100644 index 00000000000..e6278cb66dc --- /dev/null +++ b/3rdparty/bgfx/examples/30-picking/makefile @@ -0,0 +1,18 @@ +# +# Copyright 2011-2016 Branimir Karadzic. All rights reserved. +# License: http://www.opensource.org/licenses/BSD-2-Clause +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk + +rebuild: + @make -s --no-print-directory TARGET=0 clean all + @make -s --no-print-directory TARGET=1 clean all + @make -s --no-print-directory TARGET=2 clean all + @make -s --no-print-directory TARGET=3 clean all + @make -s --no-print-directory TARGET=4 clean all + @make -s --no-print-directory TARGET=5 clean all diff --git a/3rdparty/bgfx/examples/30-picking/picking.cpp b/3rdparty/bgfx/examples/30-picking/picking.cpp new file mode 100644 index 00000000000..b6419a884bc --- /dev/null +++ b/3rdparty/bgfx/examples/30-picking/picking.cpp @@ -0,0 +1,423 @@ +/* + * Copyright 2016 Joseph Cherlin. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "common.h" +#include "bgfx_utils.h" +#include "imgui/imgui.h" +#include +#include + +#define RENDER_PASS_SHADING 0 // Default forward rendered geo with simple shading +#define RENDER_PASS_ID 1 // ID buffer for picking +#define RENDER_PASS_BLIT 2 // Blit GPU render target to CPU texture + +#define ID_DIM 8 // Size of the ID buffer + +class ExamplePicking : public entry::AppI +{ + void init(int _argc, char** _argv) BX_OVERRIDE + { + Args args(_argc, _argv); + + m_width = 1280; + m_height = 720; + m_debug = BGFX_DEBUG_TEXT; + m_reset = BGFX_RESET_VSYNC; + + bgfx::init(args.m_type, args.m_pciId); + + bgfx::reset(m_width, m_height, m_reset); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Set up screen clears + bgfx::setViewClear(RENDER_PASS_SHADING + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0x303030ff + , 1.0f + , 0 + ); + + // ID buffer clears to black, which represnts clicking on nothing (background) + bgfx::setViewClear(RENDER_PASS_ID + , BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH + , 0x000000ff + , 1.0f + , 0 + ); + + // Create uniforms + u_tint = bgfx::createUniform("u_tint", bgfx::UniformType::Vec4); // Tint for when you click on items + u_id = bgfx::createUniform("u_id", bgfx::UniformType::Vec4); // ID for drawing into ID buffer + + // Create program from shaders. + m_shadingProgram = loadProgram("vs_picking_shaded", "fs_picking_shaded"); // Blinn shading + m_idProgram = loadProgram("vs_picking_shaded", "fs_picking_id"); // Shader for drawing into ID buffer + + static const char* meshPaths[] = + { + "meshes/orb.bin", + "meshes/column.bin", + "meshes/bunny.bin", + "meshes/cube.bin", + "meshes/tree.bin", + "meshes/hollowcube.bin", + }; + + static const float meshScale[] = + { + 0.5f, + 0.05f, + 0.5f, + 0.25f, + 0.05f, + 0.05f, + }; + + m_highlighted = UINT32_MAX; + m_reading = 0; + m_currFrame = UINT32_MAX; + m_fov = 3.0f; + m_cameraSpin = false; + + bx::RngMwc mwc; // Random number generator + for (uint32_t ii = 0; ii < 12; ++ii) + { + m_meshes[ii] = meshLoad(meshPaths[ii % BX_COUNTOF(meshPaths)]); + m_meshScale[ii] = meshScale[ii % BX_COUNTOF(meshPaths)]; + // For the sake of this example, we'll give each mesh a random color, so the debug output looks colorful. + // In an actual app, you'd probably just want to count starting from 1 + uint32_t rr = mwc.gen() % 256; + uint32_t gg = mwc.gen() % 256; + uint32_t bb = mwc.gen() % 256; + m_idsF[ii][0] = rr / 255.0f; + m_idsF[ii][1] = gg / 255.0f; + m_idsF[ii][2] = bb / 255.0f; + m_idsF[ii][3] = 1.0f; + m_idsU[ii] = rr + (gg << 8) + (bb << 16) + (255u << 24); + } + + m_timeOffset = bx::getHPCounter(); + + // Set up ID buffer, which has a color target and depth buffer + m_pickingRT = bgfx::createTexture2D(ID_DIM, ID_DIM, 1, bgfx::TextureFormat::RGBA8, 0 + | BGFX_TEXTURE_RT + | BGFX_TEXTURE_MIN_POINT + | BGFX_TEXTURE_MAG_POINT + | BGFX_TEXTURE_MIP_POINT + | BGFX_TEXTURE_U_CLAMP + | BGFX_TEXTURE_V_CLAMP + ); + m_pickingRTDepth = bgfx::createTexture2D(ID_DIM, ID_DIM, 1, bgfx::TextureFormat::D24S8, 0 + | BGFX_TEXTURE_RT + | BGFX_TEXTURE_MIN_POINT + | BGFX_TEXTURE_MAG_POINT + | BGFX_TEXTURE_MIP_POINT + | BGFX_TEXTURE_U_CLAMP + | BGFX_TEXTURE_V_CLAMP + ); + + // CPU texture for blitting to and reading ID buffer so we can see what was clicked on. + // Impossible to read directly from a render target, you *must* blit to a CPU texture + // first. Algorithm Overview: Render on GPU -> Blit to CPU texture -> Read from CPU + // texture. + m_blitTex = bgfx::createTexture2D(ID_DIM, ID_DIM, 1, bgfx::TextureFormat::RGBA8, 0 + | BGFX_TEXTURE_BLIT_DST + | BGFX_TEXTURE_READ_BACK + | BGFX_TEXTURE_MIN_POINT + | BGFX_TEXTURE_MAG_POINT + | BGFX_TEXTURE_MIP_POINT + | BGFX_TEXTURE_U_CLAMP + | BGFX_TEXTURE_V_CLAMP + ); + + bgfx::TextureHandle rt[2] = + { + m_pickingRT, + m_pickingRTDepth + }; + m_pickingFB = bgfx::createFrameBuffer(BX_COUNTOF(rt), rt, true); + + imguiCreate(); + } + + int shutdown() BX_OVERRIDE + { + for (uint32_t ii = 0; ii < 12; ++ii) + { + meshUnload(m_meshes[ii]); + } + + // Cleanup. + bgfx::destroyProgram(m_shadingProgram); + bgfx::destroyProgram(m_idProgram); + + bgfx::destroyUniform(u_tint); + bgfx::destroyUniform(u_id); + + bgfx::destroyFrameBuffer(m_pickingFB); + bgfx::destroyTexture(m_pickingRT); + bgfx::destroyTexture(m_pickingRTDepth); + bgfx::destroyTexture(m_blitTex); + + imguiDestroy(); + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + bool update() BX_OVERRIDE + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) + { + bgfx::setViewFrameBuffer(RENDER_PASS_ID, m_pickingFB); + + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const double toMs = 1000.0 / freq; + float time = (float)( (bx::getHPCounter() - m_timeOffset) / double(bx::getHPFrequency() ) ); + + // Use debug font to print information about this example. + bgfx::dbgTextClear(); + bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/30-picking"); + bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Mouse picking via GPU texture readback."); + bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs); + + // Set up matrices for basic forward renderer + const float camSpeed = 0.25; + float cameraSpin = (float)m_cameraSpin; + float eyeDist = 2.5f; + float eye[3] = + { + -eyeDist * bx::fsin(time*cameraSpin*camSpeed), + 0.0f, + -eyeDist * bx::fcos(time*cameraSpin*camSpeed), + }; + float at[3] = { 0.0f, 0.0f, 0.0f }; + + float view[16]; + bx::mtxLookAt(view, eye, at); + + float proj[16]; + bx::mtxProj(proj, 60.0f, float(m_width) / float(m_height), 0.1f, 100.0f); + + // Set up view rect and transform for the shaded pass + bgfx::setViewRect(RENDER_PASS_SHADING, 0, 0, uint16_t(m_width), uint16_t(m_height) ); + bgfx::setViewTransform(RENDER_PASS_SHADING, view, proj); + + // Set up picking pass + float pickView[16]; + float pickAt[4]; // Need to inversly project the mouse pointer to determin what we're looking at + float pickEye[3] = { eye[0], eye[1], eye[2] }; // Eye is same location as before + float viewProj[16]; + bx::mtxMul(viewProj, view, proj); + float invViewProj[16]; + bx::mtxInverse(invViewProj, viewProj); + // Mouse coord in NDC + float mouseXNDC = (m_mouseState.m_mx / (float)m_width) * 2.0f - 1.0f; + float mouseYNDC = ((m_height - m_mouseState.m_my) / (float)m_height) * 2.0f - 1.0f; + float mousePosNDC[4] = { mouseXNDC, mouseYNDC, 0, 1.0f }; + // Unproject and perspective divide + bx::vec4MulMtx(pickAt, mousePosNDC, invViewProj); + pickAt[3] = 1.0f / pickAt[3]; + pickAt[0] *= pickAt[3]; + pickAt[1] *= pickAt[3]; + pickAt[2] *= pickAt[3]; + + // Look at our unprojected point + bx::mtxLookAt(pickView, pickEye, pickAt); + float pickProj[16]; + + // Tight FOV is best for picking + bx::mtxProj(pickProj, m_fov, 1, 0.1f, 100.0f); + // View rect and transforms for picking pass + bgfx::setViewRect(RENDER_PASS_ID, 0, 0, ID_DIM, ID_DIM); + bgfx::setViewTransform(RENDER_PASS_ID, pickView, pickProj); + + // Now that our passes are set up, we can finally draw each mesh + + // Picking highlights a mesh so we'll set up this tint color + const float tintBasic[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + const float tintHighlighted[4] = { 0.3f, 0.3f, 2.0f, 1.0f }; + + for (uint32_t mesh = 0; mesh < 12; ++mesh) + { + const float scale = m_meshScale[mesh]; + + // Set up transform matrix for each mesh + float mtx[16]; + bx::mtxSRT(mtx + , scale, scale, scale + , 0.0f + , time*0.37f*(mesh % 2 ? 1.0f : -1.0f) + , 0.0f + , (mesh % 4) - 1.5f + , (mesh / 4) - 1.25f + , 0.0f + ); + + // Submit mesh to both of our render passes + // Set uniform based on if this is the highlighted mesh + bgfx::setUniform(u_tint + , mesh == m_highlighted + ? tintHighlighted + : tintBasic + ); + meshSubmit(m_meshes[mesh], RENDER_PASS_SHADING, m_shadingProgram, mtx); + + // Submit ID pass based on mesh ID + bgfx::setUniform(u_id, m_idsF[mesh]); + meshSubmit(m_meshes[mesh], RENDER_PASS_ID, m_idProgram, mtx); + } + + // If the user previously clicked, and we're done reading data from GPU, look at ID buffer on CPU + // Whatever mesh has the most pixels in the ID buffer is the one the user clicked on. + if (m_reading == m_currFrame) + { + m_reading = 0; + std::map ids; // This contains all the IDs found in the buffer + uint32_t maxAmount = 0; + for (uint8_t *x = m_blitData; x < m_blitData + ID_DIM * ID_DIM * 4;) + { + uint8_t rr = *x++; + uint8_t gg = *x++; + uint8_t bb = *x++; + uint8_t aa = *x++; + + const bgfx::Caps* caps = bgfx::getCaps(); + if (bgfx::RendererType::Direct3D9 == caps->rendererType) + { + // Comes back as BGRA + uint8_t temp = rr; + rr = bb; + bb = temp; + } + + if (0 == (rr|gg|bb) ) // Skip background + { + continue; + } + + uint32_t hashKey = rr + (gg << 8) + (bb << 16) + (aa << 24); + std::map::iterator mapIter = ids.find(hashKey); + uint32_t amount = 1; + if (mapIter != ids.end() ) + { + amount = mapIter->second + 1; + } + + ids[hashKey] = amount; // Amount of times this ID (color) has been clicked on in buffer + maxAmount = maxAmount > amount + ? maxAmount + : amount + ; + } + + uint32_t idKey = 0; + m_highlighted = UINT32_MAX; + if (maxAmount) + { + for (std::map::iterator mapIter = ids.begin(); mapIter != ids.end(); mapIter++) + { + if (mapIter->second == maxAmount) + { + idKey = mapIter->first; + break; + } + } + + for (uint32_t ii = 0; ii < 12; ++ii) + { + if (m_idsU[ii] == idKey) + { + m_highlighted = ii; + break; + } + } + } + } + + // Start a new readback? + if (!m_reading + && m_mouseState.m_buttons[entry::MouseButton::Left]) + { + // Blit and read + bgfx::blit(RENDER_PASS_BLIT, m_blitTex, 0, 0, m_pickingRT); + m_reading = bgfx::readTexture(m_blitTex, m_blitData); + } + + // Draw UI + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , m_width + , m_height + ); + + imguiBeginArea("Picking Render Target:", 10, 100, 300, 400); + imguiImage(m_pickingRT, 1.0f, 1.0f, 1.0f); + imguiSlider("FOV", m_fov, 1.0f, 60.0f, 1.0f); + + if (imguiCheck("Spin Camera", m_cameraSpin)) + { + m_cameraSpin = !m_cameraSpin; + } + + imguiEndArea(); + imguiEndFrame(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + m_currFrame = bgfx::frame(); + + return true; + } + + return false; + } + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + int64_t m_timeOffset; + + entry::MouseState m_mouseState; + + Mesh* m_meshes[12]; + float m_meshScale[12]; + float m_idsF[12][4]; + uint32_t m_idsU[12]; + uint32_t m_highlighted; + + // Resource handles + bgfx::ProgramHandle m_shadingProgram; + bgfx::ProgramHandle m_idProgram; + bgfx::UniformHandle u_tint; + bgfx::UniformHandle u_id; + bgfx::TextureHandle m_pickingRT; + bgfx::TextureHandle m_pickingRTDepth; + bgfx::TextureHandle m_blitTex; + bgfx::FrameBufferHandle m_pickingFB; + + uint8_t m_blitData[ID_DIM*ID_DIM * 4]; // Read blit into this + + uint32_t m_reading; + uint32_t m_currFrame; + + float m_fov; + bool m_cameraSpin; +}; + +ENTRY_IMPLEMENT_MAIN(ExamplePicking); diff --git a/3rdparty/bgfx/examples/30-picking/screenshot.png b/3rdparty/bgfx/examples/30-picking/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e51fcee2a431cb823d017bed8b6ae01fed24be9d GIT binary patch literal 72262 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%0DY~A-+^Ld_Ind?M6WpBqnJtT6^7EnTJCYyi2 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�T{{Ie_Hr&b7arl-*3L)6ofvfxAJ07Yq!{NpklK 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 literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/30-picking/varying.def.sc b/3rdparty/bgfx/examples/30-picking/varying.def.sc new file mode 100644 index 00000000000..a6670786528 --- /dev/null +++ b/3rdparty/bgfx/examples/30-picking/varying.def.sc @@ -0,0 +1,10 @@ +vec4 v_color0 : COLOR0 = vec4(1.0, 0.0, 0.0, 1.0); +vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0); +vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0); +vec3 v_pos : TEXCOORD1 = vec3(0.0, 0.0, 0.0); +vec3 v_view : TEXCOORD2 = vec3(0.0, 0.0, 0.0); + +vec3 a_position : POSITION; +vec4 a_color0 : COLOR0; +vec2 a_texcoord0 : TEXCOORD0; +vec3 a_normal : NORMAL; diff --git a/3rdparty/bgfx/examples/30-picking/vs_picking_shaded.sc b/3rdparty/bgfx/examples/30-picking/vs_picking_shaded.sc new file mode 100644 index 00000000000..441419040bb --- /dev/null +++ b/3rdparty/bgfx/examples/30-picking/vs_picking_shaded.sc @@ -0,0 +1,25 @@ +$input a_position, a_normal +$output v_pos, v_view, v_normal, v_color0 + +/* + * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +uniform vec4 u_tint; + +void main() +{ + vec3 pos = a_position; + vec3 normal = a_normal.xyz*2.0 - 1.0; + + gl_Position = mul(u_modelViewProj, vec4(pos, 1.0) ); + v_pos = gl_Position.xyz; + v_view = mul(u_modelView, vec4(pos, 1.0) ).xyz; + + v_normal = mul(u_modelView, vec4(normal, 0.0) ).xyz; + + v_color0 = u_tint*vec4(0.8, 0.8, 0.8, 1.0); +} diff --git a/3rdparty/bgfx/examples/31-rsm/fs_rsm_combine.sc b/3rdparty/bgfx/examples/31-rsm/fs_rsm_combine.sc new file mode 100644 index 00000000000..af4f5fc23f7 --- /dev/null +++ b/3rdparty/bgfx/examples/31-rsm/fs_rsm_combine.sc @@ -0,0 +1,131 @@ +$input v_texcoord0 + +/* + * Copyright 2016 Joseph Cherlin. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +SAMPLER2D(s_normal, 0); +SAMPLER2D(s_color, 1); +SAMPLER2D(s_light, 2); +SAMPLER2D(s_depth, 3); +SAMPLER2DSHADOW(s_shadowMap, 4); + +// Single directional light for entire scene +uniform vec4 u_lightDir; +uniform mat4 u_invMvp; +uniform mat4 u_lightMtx; +uniform vec4 u_shadowDimsInv; +uniform vec4 u_rsmAmount; + +float hardShadow(sampler2DShadow _sampler, vec4 _shadowCoord, float _bias) +{ + vec2 texCoord = _shadowCoord.xy; + return shadow2D(_sampler, vec3(texCoord.xy, _shadowCoord.z-_bias) ); +} + +float PCF(sampler2DShadow _sampler, vec4 _shadowCoord, float _bias, vec2 _texelSize) +{ + vec2 texCoord = _shadowCoord.xy; + + bool outside = any(greaterThan(texCoord, vec2_splat(1.0))) + || any(lessThan (texCoord, vec2_splat(0.0))) + ; + + if (outside) + { + return 1.0; + } + + float result = 0.0; + vec2 offset = _texelSize * _shadowCoord.w; + + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, -1.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, -0.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, 0.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, 1.5) * offset, 0.0, 0.0), _bias); + + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, -1.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, -0.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, 0.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, 1.5) * offset, 0.0, 0.0), _bias); + + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, -1.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, -0.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, 0.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, 1.5) * offset, 0.0, 0.0), _bias); + + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, -1.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, -0.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, 0.5) * offset, 0.0, 0.0), _bias); + result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, 1.5) * offset, 0.0, 0.0), _bias); + + return result / 16.0; +} + + +float toClipSpaceDepth(float _depthTextureZ) +{ +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL + return _depthTextureZ; +#else + return _depthTextureZ * 2.0 - 1.0; +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +} + +vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) +{ + vec4 wpos = mul(_invViewProj, vec4(_clipPos, 1.0) ); + return wpos.xyz / wpos.w; +} + + +void main() +{ + vec3 n = texture2D(s_normal, v_texcoord0).xyz; + // Expand out normal + n = n*2.0+-1.0; + vec3 l = u_lightDir.xyz;//normalize(vec3(-0.8,0.75,-1.0)); + float dirLightIntensity = 1.0; + float dirLight = max(0.0,dot(n,l)) * dirLightIntensity; + + // Apply shadow map + + // Get world position so we can transform it into light space, to look into shadow map + vec2 texCoord = v_texcoord0.xy; + float deviceDepth = texture2D(s_depth, texCoord).x; + float depth = toClipSpaceDepth(deviceDepth); + vec3 clip = vec3(texCoord * 2.0 - 1.0, depth); +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL + clip.y = -clip.y; +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL + vec3 wpos = clipToWorld(u_invMvp, clip); + + const float shadowMapOffset = 0.003; + vec3 posOffset = wpos + n.xyz * shadowMapOffset; + vec4 shadowCoord = mul(u_lightMtx, vec4(posOffset, 1.0) ); + +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL + shadowCoord.y *= -1.0; +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL + + float shadowMapBias = 0.001; + vec2 texelSize = vec2_splat(u_shadowDimsInv.x); + + shadowCoord.xy /= shadowCoord.w; + shadowCoord.xy = shadowCoord.xy*0.5+0.5; + + float visibility = PCF(s_shadowMap, shadowCoord, shadowMapBias, texelSize); + + dirLight *= visibility; + + // Light from light buffer + vec3 albedo = texture2D(s_color, v_texcoord0).xyz; + vec3 lightBuffer = texture2D(s_light, v_texcoord0).xyz; + + gl_FragColor.xyz = mix(dirLight * albedo, lightBuffer * albedo, u_rsmAmount.x); + + gl_FragColor.w = 1.0; +} diff --git a/3rdparty/bgfx/examples/31-rsm/fs_rsm_gbuffer.sc b/3rdparty/bgfx/examples/31-rsm/fs_rsm_gbuffer.sc new file mode 100644 index 00000000000..a220ecf9dc3 --- /dev/null +++ b/3rdparty/bgfx/examples/31-rsm/fs_rsm_gbuffer.sc @@ -0,0 +1,22 @@ +$input v_normal + +/* + * Copyright 2016 Joseph Cherlin. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +uniform vec4 u_tint; + +void main() +{ + vec3 normalWorldSpace = v_normal; + + // Write normal + gl_FragData[0].xyz = normalWorldSpace.xyz; // Normal is already compressed to [0,1] so can fit in gbuffer + gl_FragData[0].w = 0.0; + + // Write color + gl_FragData[1] = u_tint; +} diff --git a/3rdparty/bgfx/examples/31-rsm/fs_rsm_lbuffer.sc b/3rdparty/bgfx/examples/31-rsm/fs_rsm_lbuffer.sc new file mode 100644 index 00000000000..259c850a3e5 --- /dev/null +++ b/3rdparty/bgfx/examples/31-rsm/fs_rsm_lbuffer.sc @@ -0,0 +1,67 @@ +$input v_lightCenterScale, v_color0 + +/* + * Copyright 2016 Joseph Cherlin. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +SAMPLER2D(s_normal, 0); // Normal output from gbuffer +SAMPLER2D(s_depth, 1); // Depth output from gbuffer + +uniform mat4 u_invMvp; + +float toClipSpaceDepth(float _depthTextureZ) +{ +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL + return _depthTextureZ; +#else + return _depthTextureZ * 2.0 - 1.0; +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL +} + +vec3 clipToWorld(mat4 _invViewProj, vec3 _clipPos) +{ + vec4 wpos = mul(_invViewProj, vec4(_clipPos, 1.0) ); + return wpos.xyz / wpos.w; +} + +void main() +{ +#if BGFX_SHADER_LANGUAGE_HLSL && (BGFX_SHADER_LANGUAGE_HLSL < 4) + vec2 texCoord = gl_FragCoord.xy * u_viewTexel.xy + u_viewTexel.xy * vec2_splat(0.5); +#else + vec2 texCoord = gl_FragCoord.xy * u_viewTexel.xy; +#endif + + // Get world position + float deviceDepth = texture2D(s_depth, texCoord).x; + float depth = toClipSpaceDepth(deviceDepth); + + vec3 clip = vec3(texCoord * 2.0 - 1.0, depth); +#if BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL + clip.y = -clip.y; +#endif // BGFX_SHADER_LANGUAGE_HLSL || BGFX_SHADER_LANGUAGE_METAL + vec3 wpos = clipToWorld(u_invMvp, clip); + + // Get normal from its map, and decompress + vec3 n = texture2D(s_normal, texCoord).xyz*2.0-1.0; + + // Do lighting + vec3 pointToLight = v_lightCenterScale.xyz-wpos; + float lightLen = sqrt(dot(pointToLight, pointToLight)); + + float lightFalloff; + + if (lightLen > v_lightCenterScale.w) + lightFalloff = 0.0; + else + lightFalloff = 1.0-(lightLen/v_lightCenterScale.w); // Linear falloff for light (could use dist sq if you want) + + vec3 l = normalize(pointToLight)*lightFalloff; + + gl_FragColor.xyz = v_color0.xyz * max(0.0, dot(n,l)); + + gl_FragColor.w = 1.0; +} diff --git a/3rdparty/bgfx/examples/31-rsm/fs_rsm_shadow.sc b/3rdparty/bgfx/examples/31-rsm/fs_rsm_shadow.sc new file mode 100644 index 00000000000..56026da168a --- /dev/null +++ b/3rdparty/bgfx/examples/31-rsm/fs_rsm_shadow.sc @@ -0,0 +1,22 @@ +$input v_normal + +/* + * Copyright 2016 Joseph Cherlin. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "../common/common.sh" + +uniform vec4 u_tint; + +void main() +{ +#if BGFX_SHADER_LANGUAGE_HLSL && (BGFX_SHADER_LANGUAGE_HLSL < 4) + vec2 texCoord = gl_FragCoord.xy * u_viewTexel.xy + u_viewTexel.xy * vec2_splat(0.5); +#else + vec2 texCoord = gl_FragCoord.xy * u_viewTexel.xy; +#endif + + gl_FragData[0].xyz = u_tint.xyz; // Color of light sphere + gl_FragData[0].w = -v_normal.z; // Radius of light sphere +} diff --git a/3rdparty/bgfx/examples/31-rsm/makefile b/3rdparty/bgfx/examples/31-rsm/makefile new file mode 100644 index 00000000000..e6278cb66dc --- /dev/null +++ b/3rdparty/bgfx/examples/31-rsm/makefile @@ -0,0 +1,18 @@ +# +# Copyright 2011-2016 Branimir Karadzic. All rights reserved. +# License: http://www.opensource.org/licenses/BSD-2-Clause +# + +BGFX_DIR=../.. +RUNTIME_DIR=$(BGFX_DIR)/examples/runtime +BUILD_DIR=../../.build + +include $(BGFX_DIR)/scripts/shader.mk + +rebuild: + @make -s --no-print-directory TARGET=0 clean all + @make -s --no-print-directory TARGET=1 clean all + @make -s --no-print-directory TARGET=2 clean all + @make -s --no-print-directory TARGET=3 clean all + @make -s --no-print-directory TARGET=4 clean all + @make -s --no-print-directory TARGET=5 clean all diff --git a/3rdparty/bgfx/examples/31-rsm/reflectiveshadowmap.cpp b/3rdparty/bgfx/examples/31-rsm/reflectiveshadowmap.cpp new file mode 100644 index 00000000000..a7bbb6078db --- /dev/null +++ b/3rdparty/bgfx/examples/31-rsm/reflectiveshadowmap.cpp @@ -0,0 +1,745 @@ +/* + * Copyright 2016 Joseph Cherlin. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#include "common.h" +#include "camera.h" +#include "bgfx_utils.h" +#include "imgui/imgui.h" +#include + +/* + * Intro + * ===== + * + * RSM (reflective shadow map) is a technique for global illumination. + * It is similar to shadow map. It piggybacks on the shadow map, in fact. + * + * RSM is compatible with any type of lighting which can handle handle + * a lot of point lights. This sample happens to use a deferred renderer, + * but other types would work. + * + * Overview: + * + * - Draw into G-Buffer + * - Draw Shadow Map (with RSM piggybacked on) + * - Populate light buffer + * - Deferred "combine" pass. + * + * Details + * ======= + * + * ## G-Buffer + * + * Typical G-Buffer with normals, color, depth. + * + * ## RSM + * + * A typical shadow map, except it also outputs to a "RSM" buffer. + * The RSM contains the color of the item drawn, as well as a scalar value which represents + * how much light would bounce off of the surface if it were hit with light from the origin + * of the shadow map. + * + * ## Light Buffer + * + * We draw a lot of spheres into the light buffer. These spheres are called VPL (virtual + * point lights). VPLs represent bounced light, and let us eliminate the classic "ambient" + * term. Instead of us supplying their world space position in a transform matrix, + * VPLs gain their position from the shadow map from step 2, using an unprojection. They gain + * their color from the RSM. You could also store their position in a buffer while drawing shadows, + * I'm just using depth to keep the sample smaller. + * + * ## Deferred combine + * + * Typical combine used in almost any sort of deferred renderer. + * + * References + * ========== + * + * http: *www.bpeers.com/blog/?itemid=517 + * + */ + +// Render passes +#define RENDER_PASS_GBUFFER 0 // GBuffer for normals and albedo +#define RENDER_PASS_SHADOW_MAP 1 // Draw into the shadow map (RSM and regular shadow map at same time) +#define RENDER_PASS_LIGHT_BUFFER 2 // Light buffer for point lights +#define RENDER_PASS_COMBINE 3 // Directional light and final result + +// Gbuffer has multiple render targets +#define GBUFFER_RT_NORMAL 0 +#define GBUFFER_RT_COLOR 1 +#define GBUFFER_RT_DEPTH 2 + +// Shadow map has multiple render targets +#define SHADOW_RT_RSM 0 // In this algorithm, shadows write lighting info as well. +#define SHADOW_RT_DEPTH 1 // Shadow maps always write a depth + +// Random meshes we draw +#define MODEL_COUNT 222 // In this demo, a model is a mesh plus a transform and a color + +#define SHADOW_MAP_DIM 512 +#define LIGHT_DIST 10.0f + +static const char * s_meshPaths[] = +{ + "meshes/cube.bin", + "meshes/orb.bin", + "meshes/column.bin", + "meshes/bunny.bin", + "meshes/tree.bin", + "meshes/hollowcube.bin" +}; + +static const float s_meshScale[] = +{ + 0.25f, + 0.5f, + 0.05f, + 0.5f, + 0.05f, + 0.05f +}; + +// Vertex decl for our screen space quad (used in deferred rendering) +struct PosTexCoord0Vertex +{ + float m_x; + float m_y; + float m_z; + float m_u; + float m_v; + + static void init() + { + ms_decl + .begin() + .add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float) + .add(bgfx::Attrib::TexCoord0, 2, bgfx::AttribType::Float) + .end(); + } + + static bgfx::VertexDecl ms_decl; +}; +bgfx::VertexDecl PosTexCoord0Vertex::ms_decl; + +// Utility function to draw a screen space quad for deferred rendering +void screenSpaceQuad(float _textureWidth, float _textureHeight, float _texelHalf, bool _originBottomLeft, float _width = 1.0f, float _height = 1.0f) +{ + if (bgfx::checkAvailTransientVertexBuffer(3, PosTexCoord0Vertex::ms_decl) ) + { + bgfx::TransientVertexBuffer vb; + bgfx::allocTransientVertexBuffer(&vb, 3, PosTexCoord0Vertex::ms_decl); + PosTexCoord0Vertex* vertex = (PosTexCoord0Vertex*)vb.data; + + const float minx = -_width; + const float maxx = _width; + const float miny = 0.0f; + const float maxy = _height*2.0f; + + const float texelHalfW = _texelHalf/_textureWidth; + const float texelHalfH = _texelHalf/_textureHeight; + const float minu = -1.0f + texelHalfW; + const float maxu = 1.0f + texelHalfH; + + const float zz = 0.0f; + + float minv = texelHalfH; + float maxv = 2.0f + texelHalfH; + + if (_originBottomLeft) + { + float temp = minv; + minv = maxv; + maxv = temp; + + minv -= 1.0f; + maxv -= 1.0f; + } + + vertex[0].m_x = minx; + vertex[0].m_y = miny; + vertex[0].m_z = zz; + vertex[0].m_u = minu; + vertex[0].m_v = minv; + + vertex[1].m_x = maxx; + vertex[1].m_y = miny; + vertex[1].m_z = zz; + vertex[1].m_u = maxu; + vertex[1].m_v = minv; + + vertex[2].m_x = maxx; + vertex[2].m_y = maxy; + vertex[2].m_z = zz; + vertex[2].m_u = maxu; + vertex[2].m_v = maxv; + + bgfx::setVertexBuffer(&vb); + } +} + +class ExampleRSM : public entry::AppI +{ +public: + ExampleRSM() + : m_reading(0) + , m_currFrame(UINT32_MAX) + , m_cameraSpin(false) + , m_lightElevation(35.0f) + , m_lightAzimuth(215.0f) + , m_rsmAmount(0.25f) + , m_vplRadius(3.0f) + , m_texelHalf(0.0f) + { + } + + void init(int _argc, char** _argv) BX_OVERRIDE + { + Args args(_argc, _argv); + + m_width = 1280; + m_height = 720; + m_debug = BGFX_DEBUG_TEXT; + m_reset = BGFX_RESET_VSYNC; + + bgfx::init(args.m_type, args.m_pciId); + + bgfx::reset(m_width, m_height, m_reset); + + // Enable debug text. + bgfx::setDebug(m_debug); + + // Labeling for renderdoc captures, etc + bgfx::setViewName(RENDER_PASS_GBUFFER, "gbuffer" ); + bgfx::setViewName(RENDER_PASS_SHADOW_MAP, "shadow map" ); + bgfx::setViewName(RENDER_PASS_LIGHT_BUFFER, "light buffer"); + bgfx::setViewName(RENDER_PASS_COMBINE, "post combine"); + + // Set up screen clears + bgfx::setViewClear(RENDER_PASS_GBUFFER + , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH + , 0 + , 1.0f + , 0 + ); + + bgfx::setViewClear(RENDER_PASS_LIGHT_BUFFER + , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH + , 0 + , 1.0f + , 0 + ); + + bgfx::setViewClear(RENDER_PASS_SHADOW_MAP + , BGFX_CLEAR_COLOR|BGFX_CLEAR_DEPTH + , 0 + , 1.0f + , 0 + ); + + // Create uniforms + u_tint = bgfx::createUniform("u_tint", bgfx::UniformType::Vec4); // Tint for when you click on items + u_lightDir = bgfx::createUniform("u_lightDir", bgfx::UniformType::Vec4); // Single directional light for entire scene + u_sphereInfo = bgfx::createUniform("u_sphereInfo", bgfx::UniformType::Vec4); // Info for RSM + u_invMvp = bgfx::createUniform("u_invMvp", bgfx::UniformType::Mat4); // Matrix needed in light buffer + u_invMvpShadow = bgfx::createUniform("u_invMvpShadow", bgfx::UniformType::Mat4); // Matrix needed in light buffer + u_lightMtx = bgfx::createUniform("u_lightMtx", bgfx::UniformType::Mat4); // Matrix needed to use shadow map (world to shadow space) + u_shadowDimsInv = bgfx::createUniform("u_shadowDimsInv", bgfx::UniformType::Vec4); // Used in PCF + u_rsmAmount = bgfx::createUniform("u_rsmAmount", bgfx::UniformType::Vec4); // How much RSM to use vs directional light + + // Create texture sampler uniforms (used when we bind textures) + s_normal = bgfx::createUniform("s_normal", bgfx::UniformType::Int1); // Normal gbuffer + s_depth = bgfx::createUniform("s_depth", bgfx::UniformType::Int1); // Normal gbuffer + s_color = bgfx::createUniform("s_color", bgfx::UniformType::Int1); // Color (albedo) gbuffer + s_light = bgfx::createUniform("s_light", bgfx::UniformType::Int1); // Light buffer + s_shadowMap = bgfx::createUniform("s_shadowMap", bgfx::UniformType::Int1); // Shadow map + s_rsm = bgfx::createUniform("s_rsm", bgfx::UniformType::Int1); // Reflective shadow map + + // Create program from shaders. + m_gbufferProgram = loadProgram("vs_rsm_gbuffer", "fs_rsm_gbuffer"); // Gbuffer + m_shadowProgram = loadProgram("vs_rsm_shadow", "fs_rsm_shadow" ); // Drawing shadow map + m_lightProgram = loadProgram("vs_rsm_lbuffer", "fs_rsm_lbuffer"); // Light buffer + m_combineProgram = loadProgram("vs_rsm_combine", "fs_rsm_combine"); // Combiner + + // Load some meshes + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + m_meshes[ii] = meshLoad(s_meshPaths[ii]); + } + + // Randomly create some models + bx::RngMwc mwc; // Random number generator + for (uint32_t ii = 0; ii < BX_COUNTOF(m_models); ++ii) + { + Model& model = m_models[ii]; + + uint32_t rr = mwc.gen() % 256; + uint32_t gg = mwc.gen() % 256; + uint32_t bb = mwc.gen() % 256; + model.mesh = 1+mwc.gen()%(BX_COUNTOF(s_meshPaths)-1); + model.color[0] = rr/255.0f; + model.color[1] = gg/255.0f; + model.color[2] = bb/255.0f; + model.color[3] = 1.0f; + model.position[0] = (((mwc.gen() % 256)) - 128.0f)/20.0f; + model.position[1] = 0; + model.position[2] = (((mwc.gen() % 256)) - 128.0f)/20.0f; + } + + // Load ground. We'll just use the cube since I don't have a ground model right now + m_ground = meshLoad("meshes/cube.bin"); + + // Light sphere + m_lightSphere = meshLoad("meshes/unit_sphere.bin"); + + const uint32_t samplerFlags = 0 + | BGFX_TEXTURE_RT + | BGFX_TEXTURE_MIN_POINT + | BGFX_TEXTURE_MAG_POINT + | BGFX_TEXTURE_MIP_POINT + | BGFX_TEXTURE_U_CLAMP + | BGFX_TEXTURE_V_CLAMP + ; + + // Make gbuffer and related textures + m_gbufferTex[GBUFFER_RT_NORMAL] = bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, 1, bgfx::TextureFormat::BGRA8, samplerFlags); + m_gbufferTex[GBUFFER_RT_COLOR] = bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, 1, bgfx::TextureFormat::BGRA8, samplerFlags); + m_gbufferTex[GBUFFER_RT_DEPTH] = bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, 1, bgfx::TextureFormat::D24, samplerFlags); + m_gbuffer = bgfx::createFrameBuffer(BX_COUNTOF(m_gbufferTex), m_gbufferTex, true); + + // Make light buffer + m_lightBufferTex = bgfx::createTexture2D(bgfx::BackbufferRatio::Equal, 1, bgfx::TextureFormat::BGRA8, samplerFlags); + bgfx::TextureHandle lightBufferRTs[] = { + m_lightBufferTex + }; + m_lightBuffer = bgfx::createFrameBuffer(BX_COUNTOF(lightBufferRTs), lightBufferRTs, true); + + // Make shadow buffer + const uint32_t rsmFlags = 0 + | BGFX_TEXTURE_RT + | BGFX_TEXTURE_MIN_POINT + | BGFX_TEXTURE_MAG_POINT + | BGFX_TEXTURE_MIP_POINT + | BGFX_TEXTURE_U_CLAMP + | BGFX_TEXTURE_V_CLAMP + ; + + // Reflective shadow map + m_shadowBufferTex[SHADOW_RT_RSM] = bgfx::createTexture2D( + SHADOW_MAP_DIM + , SHADOW_MAP_DIM + , 1 + , bgfx::TextureFormat::BGRA8, + rsmFlags + ); + + // Typical shadow map + m_shadowBufferTex[SHADOW_RT_DEPTH] = bgfx::createTexture2D( + SHADOW_MAP_DIM + , SHADOW_MAP_DIM + , 1 + , bgfx::TextureFormat::D16, + BGFX_TEXTURE_RT/* | BGFX_TEXTURE_COMPARE_LEQUAL*/ + ); // Note I'm not setting BGFX_TEXTURE_COMPARE_LEQUAL. Why? + // Normally a PCF shadow map such as this requires a compare. However, this sample also + // reads from this texture in the lighting pass, and only uses the PCF capabilites in the + // combine pass, so the flag is disabled by default. + + m_shadowBuffer = bgfx::createFrameBuffer(BX_COUNTOF(m_shadowBufferTex), m_shadowBufferTex, true); + + // Vertex decl + PosTexCoord0Vertex::init(); + + // Init camera + cameraCreate(); + float camPos[] = {0.0f, 1.5f, 0.0f}; + cameraSetPosition(camPos); + cameraSetVerticalAngle(-0.3f); + + // Init directional light + updateLightDir(); + + // Get renderer capabilities info. + m_caps = bgfx::getCaps(); + const bgfx::RendererType::Enum renderer = bgfx::getRendererType(); + m_texelHalf = bgfx::RendererType::Direct3D9 == renderer ? 0.5f : 0.0f; + + imguiCreate(); + } + + int shutdown() BX_OVERRIDE + { + for (uint32_t ii = 0; ii < BX_COUNTOF(s_meshPaths); ++ii) + { + meshUnload(m_meshes[ii]); + } + + meshUnload(m_ground); + meshUnload(m_lightSphere); + + // Cleanup. + bgfx::destroyProgram(m_gbufferProgram); + bgfx::destroyProgram(m_lightProgram); + bgfx::destroyProgram(m_combineProgram); + bgfx::destroyProgram(m_shadowProgram); + + bgfx::destroyUniform(u_tint); + bgfx::destroyUniform(u_lightDir); + bgfx::destroyUniform(u_sphereInfo); + bgfx::destroyUniform(u_invMvp); + bgfx::destroyUniform(u_invMvpShadow); + bgfx::destroyUniform(u_lightMtx); + bgfx::destroyUniform(u_shadowDimsInv); + bgfx::destroyUniform(u_rsmAmount); + bgfx::destroyUniform(s_normal); + bgfx::destroyUniform(s_depth); + bgfx::destroyUniform(s_light); + bgfx::destroyUniform(s_color); + bgfx::destroyUniform(s_shadowMap); + bgfx::destroyUniform(s_rsm); + + bgfx::destroyFrameBuffer(m_gbuffer); + bgfx::destroyFrameBuffer(m_lightBuffer); + bgfx::destroyFrameBuffer(m_shadowBuffer); + + for (uint32_t ii = 0; ii < BX_COUNTOF(m_gbufferTex); ++ii) + { + bgfx::destroyTexture(m_gbufferTex[ii]); + } + + bgfx::destroyTexture(m_lightBufferTex); + for (uint32_t ii = 0; ii < BX_COUNTOF(m_shadowBufferTex); ++ii) + { + bgfx::destroyTexture(m_shadowBufferTex[ii]); + } + + cameraDestroy(); + + imguiDestroy(); + + // Shutdown bgfx. + bgfx::shutdown(); + + return 0; + } + + bool update() BX_OVERRIDE + { + if (!entry::processEvents(m_width, m_height, m_debug, m_reset, &m_mouseState) ) + { + // Update frame timer + int64_t now = bx::getHPCounter(); + static int64_t last = now; + const int64_t frameTime = now - last; + last = now; + const double freq = double(bx::getHPFrequency()); + const double toMs = 1000.0 / freq; + const float deltaTime = float(frameTime/freq); + + // Use debug font to print information about this example. + bgfx::dbgTextClear(); + bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/31-rsm"); + bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Global Illumination with Reflective Shadow Map."); + bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs); + + // Update camera + cameraUpdate(deltaTime*0.15f, m_mouseState); + + // Set up matrices for gbuffer + float view[16]; + cameraGetViewMtx(view); + + float proj[16]; + bx::mtxProj(proj, 60.0f, float(m_width)/float(m_height), 0.1f, 100.0f); + + bgfx::setViewRect(RENDER_PASS_GBUFFER, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(RENDER_PASS_GBUFFER, view, proj); + // Make sure when we draw it goes into gbuffer and not backbuffer + bgfx::setViewFrameBuffer(RENDER_PASS_GBUFFER, m_gbuffer); + // Draw everything into g-buffer + drawAllModels(RENDER_PASS_GBUFFER, m_gbufferProgram); + + // Draw shadow map + + // Set up transforms for shadow map + float smView[16], smProj[16], lightEye[3], lightAt[3]; + lightEye[0] = m_lightDir[0]*LIGHT_DIST; + lightEye[1] = m_lightDir[1]*LIGHT_DIST; + lightEye[2] = m_lightDir[2]*LIGHT_DIST; + + lightAt[0] = 0.0f; + lightAt[1] = 0.0f; + lightAt[2] = 0.0f; + + bx::mtxLookAt(smView, lightEye, lightAt); + const float area = 10.0f; + bgfx::RendererType::Enum renderer = bgfx::getRendererType(); + bool flipV = false + || renderer == bgfx::RendererType::OpenGL + || renderer == bgfx::RendererType::OpenGLES + ; + bx::mtxOrtho(smProj, -area, area, -area, area, -100.0f, 100.0f, 0.0f, flipV); + bgfx::setViewTransform(RENDER_PASS_SHADOW_MAP, smView, smProj); + bgfx::setViewFrameBuffer(RENDER_PASS_SHADOW_MAP, m_shadowBuffer); + bgfx::setViewRect(RENDER_PASS_SHADOW_MAP, 0, 0, SHADOW_MAP_DIM, SHADOW_MAP_DIM); + + drawAllModels(RENDER_PASS_SHADOW_MAP, m_shadowProgram); + + // Next draw light buffer + + // Set up matrices for light buffer + bgfx::setViewRect(RENDER_PASS_LIGHT_BUFFER, 0, 0, uint16_t(m_width), uint16_t(m_height)); + bgfx::setViewTransform(RENDER_PASS_LIGHT_BUFFER, view, proj); // Notice, same view and proj as gbuffer + // Set drawing into light buffer + bgfx::setViewFrameBuffer(RENDER_PASS_LIGHT_BUFFER, m_lightBuffer); + + // Inverse view projection is needed in shader so set that up + float vp[16], invMvp[16]; + bx::mtxMul(vp, view, proj); + bx::mtxInverse(invMvp, vp); + + // Light matrix used in combine pass and inverse used in light pass + float lightMtx[16]; // World space to light space (shadow map space) + bx::mtxMul(lightMtx, smView, smProj); + float invMvpShadow[16]; + bx::mtxInverse(invMvpShadow, lightMtx); + + // Draw some lights (these should really be instanced but for this example they aren't...) + const unsigned MAX_SPHERE = 32; + for (uint32_t i = 0; i < MAX_SPHERE; i++) + { + for (uint32_t j = 0; j < MAX_SPHERE; j++) + { + // These are used in the fragment shader + bgfx::setTexture(0, s_normal, m_gbuffer, GBUFFER_RT_NORMAL); // Normal for lighting calculations + bgfx::setTexture(1, s_depth, m_gbuffer, GBUFFER_RT_DEPTH); // Depth to reconstruct world position + + // Thse are used in the vert shader + bgfx::setTexture(2, s_shadowMap, m_shadowBuffer, SHADOW_RT_DEPTH); // Used to place sphere + bgfx::setTexture(3, s_rsm, m_shadowBuffer, SHADOW_RT_RSM); // Used to scale/color sphere + + bgfx::setUniform(u_invMvp, invMvp); + bgfx::setUniform(u_invMvpShadow, invMvpShadow); + float sphereInfo[4]; + sphereInfo[0] = ((float)i/(MAX_SPHERE-1)); + sphereInfo[1] = ((float)j/(MAX_SPHERE-1)); + sphereInfo[2] = m_vplRadius; + sphereInfo[3] = 0.0; // Unused + bgfx::setUniform(u_sphereInfo, sphereInfo); + + const uint64_t lightDrawState = 0 + | BGFX_STATE_RGB_WRITE + | BGFX_STATE_BLEND_ADD // <=== Overlapping lights contribute more + | BGFX_STATE_ALPHA_WRITE + | BGFX_STATE_CULL_CW // <=== If we go into the lights, there will be problems, so we draw the far back face. + ; + + meshSubmit( + m_lightSphere, + RENDER_PASS_LIGHT_BUFFER, + m_lightProgram, + NULL, + lightDrawState + ); + } + } + + // Draw combine pass + + // Texture inputs for combine pass + bgfx::setTexture(0, s_normal, m_gbuffer, GBUFFER_RT_NORMAL); + bgfx::setTexture(1, s_color, m_gbuffer, GBUFFER_RT_COLOR); + bgfx::setTexture(2, s_light, m_lightBuffer, 0); + bgfx::setTexture(3, s_depth, m_gbuffer, GBUFFER_RT_DEPTH); + bgfx::setTexture(4, s_shadowMap, m_shadowBuffer, SHADOW_RT_DEPTH, BGFX_TEXTURE_COMPARE_LEQUAL); + + // Uniforms for combine pass + + bgfx::setUniform(u_lightDir, m_lightDir); + bgfx::setUniform(u_invMvp, invMvp); + bgfx::setUniform(u_lightMtx, lightMtx); + const float invDim[4] = {1.0f/SHADOW_MAP_DIM, 0.0f, 0.0f, 0.0f}; + bgfx::setUniform(u_shadowDimsInv, invDim); + float rsmAmount[4] = {m_rsmAmount,m_rsmAmount,m_rsmAmount,m_rsmAmount}; + bgfx::setUniform(u_rsmAmount, rsmAmount); + + // Set up state for combine pass + // point of this is to avoid doing depth test, which is in the default state + bgfx::setState(0 + | BGFX_STATE_RGB_WRITE + | BGFX_STATE_ALPHA_WRITE + ); + + // Set up transform matrix for fullscreen quad + float orthoProj[16]; + bx::mtxOrtho(orthoProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 100.0f); + bgfx::setViewTransform(RENDER_PASS_COMBINE, NULL, orthoProj); + bgfx::setViewRect(RENDER_PASS_COMBINE, 0, 0, m_width, m_height); + // Bind vertex buffer and draw quad + screenSpaceQuad( (float)m_width, (float)m_height, m_texelHalf, m_caps->originBottomLeft); + bgfx::submit(RENDER_PASS_COMBINE, m_combineProgram); + + // Draw UI + imguiBeginFrame(m_mouseState.m_mx + , m_mouseState.m_my + , (m_mouseState.m_buttons[entry::MouseButton::Left] ? IMGUI_MBUT_LEFT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Right] ? IMGUI_MBUT_RIGHT : 0) + | (m_mouseState.m_buttons[entry::MouseButton::Middle] ? IMGUI_MBUT_MIDDLE : 0) + , m_mouseState.m_mz + , m_width + , m_height + ); + + imguiBeginArea("RSM:", 10, 100, 300, 400); + + imguiSlider("rsm amount", m_rsmAmount, 0.0f, 0.7f, 0.01f); + imguiSlider("vpl radius", m_vplRadius, 0.25f, 20.0f, 0.1f); + imguiSlider("light azimuth", m_lightAzimuth, 0.0f, 360.0f, 0.01f); + imguiSlider("light elevation", m_lightElevation, 35.0f, 90.0f, 0.01f); + + imguiEndArea(); + imguiEndFrame(); + + updateLightDir(); + + // Advance to next frame. Rendering thread will be kicked to + // process submitted rendering primitives. + m_currFrame = bgfx::frame(); + + return true; + } + + return false; + } + + void drawAllModels(uint8_t _pass, bgfx::ProgramHandle _program) + { + for (uint32_t ii = 0; ii < BX_COUNTOF(m_models); ++ii) + { + const Model& model = m_models[ii]; + + // Set up transform matrix for each model + float scale = s_meshScale[model.mesh]; + float mtx[16]; + bx::mtxSRT(mtx + , scale + , scale + , scale + , 0.0f + , 0.0f + , 0.0f + , model.position[0] + , model.position[1] + , model.position[2] + ); + + // Submit mesh to gbuffer + bgfx::setUniform(u_tint, model.color); + meshSubmit(m_meshes[model.mesh], _pass, _program, mtx); + } + + // Draw ground + const float white[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; + bgfx::setUniform(u_tint, white); + float mtxScale[16]; + float scale = 10.0; + bx::mtxScale(mtxScale + , scale + , scale + , scale + ); + float mtxTrans[16]; + bx::mtxTranslate(mtxTrans + , 0.0f + , -10.0f + , 0.0f + ); + float mtx[16]; + bx::mtxMul(mtx, mtxScale, mtxTrans); + meshSubmit(m_ground, _pass, _program, mtx); + } + + void updateLightDir() + { + float el = m_lightElevation * (bx::pi/180.0f); + float az = m_lightAzimuth * (bx::pi/180.0f); + m_lightDir[0] = cos(el)*cos(az); + m_lightDir[2] = cos(el)*sin(az); + m_lightDir[1] = sin(el); + m_lightDir[3] = 0.0f; + } + + uint32_t m_width; + uint32_t m_height; + uint32_t m_debug; + uint32_t m_reset; + + entry::MouseState m_mouseState; + + Mesh* m_ground; + Mesh* m_lightSphere; // Unit sphere + + // Resource handles + bgfx::ProgramHandle m_gbufferProgram; + bgfx::ProgramHandle m_shadowProgram; + bgfx::ProgramHandle m_lightProgram; + bgfx::ProgramHandle m_combineProgram; + bgfx::FrameBufferHandle m_gbuffer; + bgfx::FrameBufferHandle m_lightBuffer; + bgfx::FrameBufferHandle m_shadowBuffer; + + // Shader uniforms + bgfx::UniformHandle u_tint; + bgfx::UniformHandle u_invMvp; + bgfx::UniformHandle u_invMvpShadow; + bgfx::UniformHandle u_lightMtx; + bgfx::UniformHandle u_lightDir; + bgfx::UniformHandle u_sphereInfo; + bgfx::UniformHandle u_shadowDimsInv; + bgfx::UniformHandle u_rsmAmount; + + // Uniforms to identify texture samples + bgfx::UniformHandle s_normal; + bgfx::UniformHandle s_depth; + bgfx::UniformHandle s_color; + bgfx::UniformHandle s_light; + bgfx::UniformHandle s_shadowMap; + bgfx::UniformHandle s_rsm; + + // Various render targets + bgfx::TextureHandle m_gbufferTex[3]; + bgfx::TextureHandle m_lightBufferTex; + bgfx::TextureHandle m_shadowBufferTex[2]; + + const bgfx::Caps* m_caps; + + struct Model + { + uint32_t mesh; // Index of mesh in m_meshes + float color[4]; + float position[3]; + }; + + Model m_models[MODEL_COUNT]; + Mesh * m_meshes[BX_COUNTOF(s_meshPaths)]; + + uint32_t m_reading; + uint32_t m_currFrame; + + // UI + bool m_cameraSpin; + + // Light position; + float m_lightDir[4]; + float m_lightElevation; + float m_lightAzimuth; + + float m_rsmAmount; // Amount of rsm + float m_vplRadius; // Radius of virtual point light + + float m_texelHalf; +}; + +ENTRY_IMPLEMENT_MAIN(ExampleRSM); diff --git a/3rdparty/bgfx/examples/31-rsm/screenshot.png b/3rdparty/bgfx/examples/31-rsm/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..f6cea0274769984403a684bba0e3f488986e4df4 GIT binary patch literal 207402 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[m_mesh[id].m_startVertex * stride] , vertices[id] , m_mesh[id].m_numVertices*stride @@ -780,7 +980,7 @@ struct DebugDraw void draw(const Cylinder& _cylinder, bool _capsule) { - BX_UNUSED(_cylinder, _capsule); + drawCylinder(_cylinder.m_pos, _cylinder.m_end, _cylinder.m_radius, _capsule); } void draw(const Disk& _disk) @@ -823,7 +1023,7 @@ struct DebugDraw } else { - draw(Mesh::Cube, _obb.m_mtx, false); + draw(Mesh::Cube, _obb.m_mtx, 1, false); } } @@ -846,7 +1046,7 @@ struct DebugDraw ? uint8_t(Mesh::SphereMaxLod) : attrib.m_lod ; - draw(Mesh::Enum(Mesh::Sphere0 + lod), mtx, attrib.m_wireframe); + draw(Mesh::Enum(Mesh::Sphere0 + lod), mtx, 1, attrib.m_wireframe); } void drawFrustum(const float* _viewProj) @@ -936,7 +1136,7 @@ struct DebugDraw lineTo(_x, _y, _z); } - void drawCircle(const float* _normal, const float* _center, float _radius, float _weight = 0.0f) + void drawCircle(const float* _normal, const float* _center, float _radius, float _weight) { const Attrib& attrib = m_attrib[m_stack]; const uint32_t num = getCircleLod(attrib.m_lod); @@ -979,12 +1179,12 @@ struct DebugDraw close(); } - void drawCircle(const void* _normal, const void* _center, float _radius, float _weight = 0.0f) + void drawCircle(const void* _normal, const void* _center, float _radius, float _weight) { drawCircle( (const float*)_normal, (const float*)_center, _radius, _weight); } - void drawCircle(Axis::Enum _axis, float _x, float _y, float _z, float _radius, float _weight = 0.0f) + void drawCircle(Axis::Enum _axis, float _x, float _y, float _z, float _radius, float _weight) { const Attrib& attrib = m_attrib[m_stack]; const uint32_t num = getCircleLod(attrib.m_lod); @@ -1018,147 +1218,139 @@ struct DebugDraw close(); } - void drawCone(const float* _from, const float* _to, float _radius, float _weight = 0.0f) + void drawCone(const float* _from, const float* _to, float _radius) { const Attrib& attrib = m_attrib[m_stack]; - const uint32_t num = getCircleLod(attrib.m_lod); - const float step = bx::pi * 2.0f / num; - _weight = bx::fclamp(_weight, 0.0f, 2.0f); - float pos[3]; float tmp0[3]; - float tmp1[3]; - bx::vec3Sub(tmp0, _from, _to); - Plane plane; - plane.m_dist = 0.0f; - bx::vec3Norm(plane.m_normal, tmp0); + float normal[3]; + bx::vec3Norm(normal, tmp0); - float udir[3]; - float vdir[3]; - calcPlaneUv(plane, udir, vdir); + float mtx[2][16]; + bx::mtxFromNormal(mtx[0], normal, _radius, _from); - float xy0[2]; - float xy1[2]; - circle(xy0, 0.0f); - squircle(xy1, 0.0f); + memcpy(mtx[1], mtx[0], 64); + mtx[1][12] = _to[0]; + mtx[1][13] = _to[1]; + mtx[1][14] = _to[2]; - bx::vec3Mul(pos, udir, bx::flerp(xy0[0], xy1[0], _weight)*_radius); - bx::vec3Mul(tmp0, vdir, bx::flerp(xy0[1], xy1[1], _weight)*_radius); - bx::vec3Add(tmp1, pos, tmp0); - bx::vec3Add(pos, tmp1, _from); - moveTo(pos); - - for (uint32_t ii = 1; ii < num; ++ii) - { - float angle = step * ii; - circle(xy0, angle); - squircle(xy1, angle); - - bx::vec3Mul(pos, udir, bx::flerp(xy0[0], xy1[0], _weight)*_radius); - bx::vec3Mul(tmp0, vdir, bx::flerp(xy0[1], xy1[1], _weight)*_radius); - bx::vec3Add(tmp1, pos, tmp0); - bx::vec3Add(pos, tmp1, _from); - lineTo(pos); - } - - close(); - - for (uint32_t ii = 0; ii < num; ++ii) - { - float angle = step * ii; - circle(xy0, angle); - squircle(xy1, angle); - - bx::vec3Mul(pos, udir, bx::flerp(xy0[0], xy1[0], _weight)*_radius); - bx::vec3Mul(tmp0, vdir, bx::flerp(xy0[1], xy1[1], _weight)*_radius); - bx::vec3Add(tmp1, pos, tmp0); - bx::vec3Add(pos, tmp1, _from); - moveTo(pos); - lineTo(_to); - } + uint8_t lod = attrib.m_lod > Mesh::ConeMaxLod + ? uint8_t(Mesh::ConeMaxLod) + : attrib.m_lod + ; + draw(Mesh::Enum(Mesh::Cone0 + lod), mtx[0], 2, attrib.m_wireframe); } - void drawCone(const void* _from, const void* _to, float _radius, float _weight = 0.0f) + void drawCone(const void* _from, const void* _to, float _radius) { - drawCone( (const float*)_from, (const float*)_to, _radius, _weight); + drawCone( (const float*)_from, (const float*)_to, _radius); } - void drawCylinder(const float* _from, const float* _to, float _radius, float _weight = 0.0f) + void drawCylinder(const float* _from, const float* _to, float _radius, bool _capsule) { const Attrib& attrib = m_attrib[m_stack]; - const uint32_t num = getCircleLod(attrib.m_lod); - const float step = bx::pi * 2.0f / num; - _weight = bx::fclamp(_weight, 0.0f, 2.0f); - float pos[3]; float tmp0[3]; - float tmp1[3]; - bx::vec3Sub(tmp0, _from, _to); - Plane plane; - plane.m_dist = 0.0f; - bx::vec3Norm(plane.m_normal, tmp0); + float normal[3]; + bx::vec3Norm(normal, tmp0); - float udir[3]; - float vdir[3]; - calcPlaneUv(plane, udir, vdir); + float mtx[2][16]; + bx::mtxFromNormal(mtx[0], normal, _radius, _from); - float xy0[2]; - float xy1[2]; - circle(xy0, 0.0f); - squircle(xy1, 0.0f); + memcpy(mtx[1], mtx[0], 64); + mtx[1][12] = _to[0]; + mtx[1][13] = _to[1]; + mtx[1][14] = _to[2]; - float pos1[3]; - bx::vec3Mul(pos, udir, bx::flerp(xy0[0], xy1[0], _weight)*_radius); - bx::vec3Mul(tmp0, vdir, bx::flerp(xy0[1], xy1[1], _weight)*_radius); - bx::vec3Add(tmp1, pos, tmp0); - bx::vec3Add(pos, tmp1, _from); - bx::vec3Add(pos1, tmp1, _to); - - for (uint32_t ii = 1; ii < num+1; ++ii) + if (_capsule) { - float angle = step * ii; - circle(xy0, angle); - squircle(xy1, angle); + uint8_t lod = attrib.m_lod > Mesh::CapsuleMaxLod + ? uint8_t(Mesh::CapsuleMaxLod) + : attrib.m_lod + ; + draw(Mesh::Enum(Mesh::Capsule0 + lod), mtx[0], 2, attrib.m_wireframe); - moveTo(pos); lineTo(pos1); + Sphere sphere; + bx::vec3Move(sphere.m_center, _from); + sphere.m_radius = _radius; + draw(sphere); - moveTo(pos); - bx::vec3Mul(pos, udir, bx::flerp(xy0[0], xy1[0], _weight)*_radius); - bx::vec3Mul(tmp0, vdir, bx::flerp(xy0[1], xy1[1], _weight)*_radius); - bx::vec3Add(tmp1, pos, tmp0); - bx::vec3Add(pos, tmp1, _from); - lineTo(pos); - - moveTo(pos1); - bx::vec3Add(pos1, tmp1, _to); - lineTo(pos1); + bx::vec3Move(sphere.m_center, _to); + draw(sphere); + } + else + { + uint8_t lod = attrib.m_lod > Mesh::CylinderMaxLod + ? uint8_t(Mesh::CylinderMaxLod) + : attrib.m_lod + ; + draw(Mesh::Enum(Mesh::Cylinder0 + lod), mtx[0], 2, attrib.m_wireframe); } } - void drawCylinder(const void* _from, const void* _to, float _radius, float _weight = 0.0f) + void drawCylinder(const void* _from, const void* _to, float _radius, bool _capsule) { - drawCylinder( (const float*)_from, (const float*)_to, _radius, _weight); + drawCylinder( (const float*)_from, (const float*)_to, _radius, _capsule); } - void drawAxis(float _x, float _y, float _z, float _len, Axis::Enum _highlight) + void drawAxis(float _x, float _y, float _z, float _len, Axis::Enum _highlight, float _thickness) { push(); - setColor(Axis::X == _highlight ? 0xff00ffff : 0xff0000ff); - moveTo(_x, _y, _z); - lineTo(_x + _len, _y, _z); + if (_thickness > 0.0f) + { + float from[3] = { _x, _y, _z }; + float mid[3]; + float to[3]; - setColor(Axis::Y == _highlight ? 0xff00ffff : 0xff00ff00); - moveTo(_x, _y, _z); - lineTo(_x, _y + _len, _z); + setColor(Axis::X == _highlight ? 0xff00ffff : 0xff0000ff); + mid[0] = _x + _len - _thickness; + mid[1] = _y; + mid[2] = _z; + to[0] = _x + _len; + to[1] = _y; + to[2] = _z; + drawCylinder(from, mid, _thickness, false); + drawCone(mid, to, _thickness); - setColor(Axis::Z == _highlight ? 0xff00ffff : 0xffff0000); - moveTo(_x, _y, _z); - lineTo(_x, _y, _z + _len); + setColor(Axis::Y == _highlight ? 0xff00ffff : 0xff00ff00); + mid[0] = _x; + mid[1] = _y + _len - _thickness; + mid[2] = _z; + to[0] = _x; + to[1] = _y + _len; + to[2] = _z; + drawCylinder(from, mid, _thickness, false); + drawCone(mid, to, _thickness); + + setColor(Axis::Z == _highlight ? 0xff00ffff : 0xffff0000); + mid[0] = _x; + mid[1] = _y; + mid[2] = _z + _len - _thickness; + to[0] = _x; + to[1] = _y; + to[2] = _z + _len; + drawCylinder(from, mid, _thickness, false); + drawCone(mid, to, _thickness); + } + else + { + setColor(Axis::X == _highlight ? 0xff00ffff : 0xff0000ff); + moveTo(_x, _y, _z); + lineTo(_x + _len, _y, _z); + + setColor(Axis::Y == _highlight ? 0xff00ffff : 0xff00ff00); + moveTo(_x, _y, _z); + lineTo(_x, _y + _len, _z); + + setColor(Axis::Z == _highlight ? 0xff00ffff : 0xffff0000); + moveTo(_x, _y, _z); + lineTo(_x, _y, _z + _len); + } pop(); } @@ -1274,13 +1466,13 @@ struct DebugDraw push(); setColor(Axis::X == _hightlight ? 0xff00ffff : 0xff0000ff); - drawCircle(Axis::X, _x, _y, _z, _radius); + drawCircle(Axis::X, _x, _y, _z, _radius, 0.0f); setColor(Axis::Y == _hightlight ? 0xff00ffff : 0xff00ff00); - drawCircle(Axis::Y, _x, _y, _z, _radius); + drawCircle(Axis::Y, _x, _y, _z, _radius, 0.0f); setColor(Axis::Z == _hightlight ? 0xff00ffff : 0xffff0000); - drawCircle(Axis::Z, _x, _y, _z, _radius); + drawCircle(Axis::Z, _x, _y, _z, _radius, 0.0f); pop(); } @@ -1294,11 +1486,30 @@ private: Sphere1, Sphere2, Sphere3, + + Cone0, + Cone1, + Cone2, + Cone3, + + Cylinder0, + Cylinder1, + Cylinder2, + Cylinder3, + + Capsule0, + Capsule1, + Capsule2, + Capsule3, + Cube, Count, - SphereMaxLod = Sphere3 - Sphere0, + SphereMaxLod = Sphere3 - Sphere0, + ConeMaxLod = Cone3 - Cone0, + CylinderMaxLod = Cylinder3 - Cylinder0, + CapsuleMaxLod = Capsule3 - Capsule0, }; uint32_t m_startVertex; @@ -1320,7 +1531,7 @@ private: }; }; - void draw(Mesh::Enum _mesh, const float* _mtx, bool _wireframe) const + void draw(Mesh::Enum _mesh, const float* _mtx, uint16_t _num, bool _wireframe) const { const Mesh& mesh = m_mesh[_mesh]; @@ -1334,31 +1545,34 @@ private: ); } + const float flip = 0 == (attrib.m_state & BGFX_STATE_CULL_CCW) ? 1.0f : -1.0f; + const uint8_t alpha = attrib.m_abgr>>24; + float params[4][4] = { - { - 0.0f, - -1.0f, - 0.0f, - 3.0f, + { // lightDir + 0.0f * flip, + -1.0f * flip, + 0.0f * flip, + 3.0f, // shininess }, - { + { // skyColor 1.0f, 0.9f, 0.8f, - 0.0f, + 0.0f, // unused }, - { + { // groundColor.xyz0 0.2f, 0.22f, 0.5f, - 0.0f, + 0.0f, // unused }, - { - ( (attrib.m_abgr>>24) )/255.0f, - ( (attrib.m_abgr>>16)&0xff)/255.0f, - ( (attrib.m_abgr>> 8)&0xff)/255.0f, + { // matColor ( (attrib.m_abgr )&0xff)/255.0f, + ( (attrib.m_abgr>> 8)&0xff)/255.0f, + ( (attrib.m_abgr>>16)&0xff)/255.0f, + ( alpha )/255.0f, }, }; @@ -1366,11 +1580,12 @@ private: bgfx::setUniform(u_params, params, 4); - bgfx::setTransform(_mtx); + bgfx::setTransform(_mtx, _num); bgfx::setVertexBuffer(m_vbh, mesh.m_startVertex, mesh.m_numVertices); bgfx::setState(0 | attrib.m_state - | (_wireframe ? BGFX_STATE_PT_LINES|BGFX_STATE_LINEAA|BGFX_STATE_BLEND_ALPHA : 0) + | (_wireframe ? BGFX_STATE_PT_LINES|BGFX_STATE_LINEAA|BGFX_STATE_BLEND_ALPHA + : (alpha < 0xff) ? BGFX_STATE_BLEND_ALPHA : 0) ); bgfx::submit(m_viewId, m_program[_wireframe ? Program::Fill : Program::FillLit]); } @@ -1608,19 +1823,34 @@ void ddDrawCircle(Axis::Enum _axis, float _x, float _y, float _z, float _radius, s_dd.drawCircle(_axis, _x, _y, _z, _radius, _weight); } -void ddDrawCone(const void* _from, const void* _to, float _radius, float _weight) +void ddDrawCone(const void* _from, const void* _to, float _radius) { - s_dd.drawCone(_from, _to, _radius, _weight); + s_dd.drawCone(_from, _to, _radius); } -void ddDrawCylinder(const void* _from, const void* _to, float _radius, float _weight) +void ddDrawCylinder(const void* _from, const void* _to, float _radius, bool _capsule) { - s_dd.drawCylinder(_from, _to, _radius, _weight); + if (_capsule) + { + s_dd.push(); + s_dd.setLod(0); + s_dd.drawCylinder(_from, _to, _radius, true); + s_dd.pop(); + } + else + { + s_dd.drawCylinder(_from, _to, _radius, false); + } } -void ddDrawAxis(float _x, float _y, float _z, float _len, Axis::Enum _hightlight) +void ddDrawCapsule(const void* _from, const void* _to, float _radius) { - s_dd.drawAxis(_x, _y, _z, _len, _hightlight); + s_dd.drawCylinder(_from, _to, _radius, true); +} + +void ddDrawAxis(float _x, float _y, float _z, float _len, Axis::Enum _hightlight, float _thickness) +{ + s_dd.drawAxis(_x, _y, _z, _len, _hightlight, _thickness); } void ddDrawGrid(const void* _normal, const void* _center, uint32_t _size, float _step) diff --git a/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h b/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h index 0888ffdae61..2535e5b7aff 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h +++ b/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h @@ -103,13 +103,16 @@ void ddDrawCircle(const void* _normal, const void* _center, float _radius, float void ddDrawCircle(Axis::Enum _axis, float _x, float _y, float _z, float _radius, float _weight = 0.0f); /// -void ddDrawCone(const void* _from, const void* _to, float _radius, float _weight = 0.0f); +void ddDrawCone(const void* _from, const void* _to, float _radius); /// -void ddDrawCylinder(const void* _from, const void* _to, float _radius, float _weight = 0.0f); +void ddDrawCylinder(const void* _from, const void* _to, float _radius, bool _capsule = false); /// -void ddDrawAxis(float _x, float _y, float _z, float _len = 1.0f, Axis::Enum _highlight = Axis::Count); +void ddDrawCapsule(const void* _from, const void* _to, float _radius); + +/// +void ddDrawAxis(float _x, float _y, float _z, float _len = 1.0f, Axis::Enum _highlight = Axis::Count, float _thickness = 0.0f); /// void ddDrawGrid(const void* _normal, const void* _center, uint32_t _size = 20, float _step = 1.0f); diff --git a/3rdparty/bgfx/examples/common/debugdraw/varying.def.sc b/3rdparty/bgfx/examples/common/debugdraw/varying.def.sc index 79ed7aebf68..07d21a33f59 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/varying.def.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/varying.def.sc @@ -1,4 +1,5 @@ vec3 a_position : POSITION; +ivec4 a_indices : BLENDINDICES; vec4 a_color0 : COLOR0; float a_texcoord0 : TEXCOORD0; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.bin.h index 16fd98a58ef..50c1b1e580d 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.bin.h @@ -1,107 +1,148 @@ -static const uint8_t vs_debugdraw_fill_glsl[242] = +static const uint8_t vs_debugdraw_fill_glsl[329] = { - 0x56, 0x53, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0xcd, 0x00, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ....attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // ghp vec3 a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, // ion;.uniform hig - 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, // hp mat4 u_modelV - 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, // iewProj;.void ma - 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // in ().{. highp - 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, // vec4 tmpvar_1;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, // tmpvar_1.w = 1. - 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, // 0;. tmpvar_1.xy - 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, // z = a_position;. - 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, // gl_Position = - 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // (u_modelViewProj - 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, // * tmpvar_1);.}. - 0x0a, 0x00, // .. + 0x56, 0x53, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, // wProj.......u_mo + 0x64, 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, // del. .. .....att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x0a, 0x61, 0x74, 0x74, // 4 a_indices;.att + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ribute highp vec + 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x75, 0x6e, // 3 a_position;.un + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, // iform highp mat4 + 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // u_viewProj;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // form mat4 u_mode + 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, // l[32];.void main + 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // ().{. highp ve + 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, // c4 tmpvar_1;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, // mpvar_1.w = 1.0; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, // . tmpvar_1.xyz + 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, // = a_position;. + 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, // gl_Position = (u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x5f, 0x6d, // _viewProj * (u_m + 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, // odel[int(a_indic + 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // es.x)] * tmpvar_ + 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // 1));.}... }; -static const uint8_t vs_debugdraw_fill_dx9[287] = +static const uint8_t vs_debugdraw_fill_dx9[492] = { - 0x56, 0x53, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0xfc, 0x00, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x24, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........$.CTAB.. - 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, // ..W............. - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, // ......P...0..... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ......@.......u_ - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x03, 0x00, // modelViewProj... - 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x73, // ..............vs - 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, // _3_0.Microsoft ( - 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, // R) HLSL Shader C - 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x30, // ompiler 10.0.100 - 0x31, 0x31, 0x2e, 0x31, 0x36, 0x33, 0x38, 0x34, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, // 11.16384........ - 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // ................ - 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0xe4, 0xa0, 0x00, 0x00, // ................ - 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0xe4, 0xa0, 0x00, 0x00, // U............... - 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x00, // ................ - 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // ................ - 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0xff, 0xff, 0x00, 0x00, 0x00, // ............... + 0x56, 0x53, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod + 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, // el. .....u_viewP + 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x80, 0x00, 0x04, 0x00, 0xc0, 0x01, 0x00, 0x03, 0xfe, 0xff, 0xfe, // roj............. + 0xff, 0x2e, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, // ...CTAB......... + 0x03, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x78, // ...............x + 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x4c, // ...D...........L + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x00, 0x04, // ................ + 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // ...h.......u_mod + 0x65, 0x6c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, // el......... .... + 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0xab, 0x03, // ...u_viewProj... + 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, // ...............v + 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, // s_3_0.Microsoft + 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, // (R) HLSL Shader + 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x30, // Compiler 10.0.10 + 0x30, 0x31, 0x31, 0x2e, 0x31, 0x36, 0x33, 0x38, 0x34, 0x00, 0xab, 0x51, 0x00, 0x00, 0x05, 0x84, // 011.16384..Q.... + 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......@......... + 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, // ................ + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, // ................ + 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x84, // ................ + 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x2e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0xb0, 0x00, // ................ + 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0x55, 0x90, 0x01, // .............U.. + 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0x80, 0x00, // ............... + 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, // ............... + 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x01, // ........ ....... + 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x00, // ................ + 0x00, 0xe4, 0x80, 0x03, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x05, 0x00, 0x00, 0x03, 0x01, // .... ........... + 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x81, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, // .....U.......... + 0x00, 0x0f, 0x80, 0x80, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, // ................ + 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x82, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x01, // ................ + 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0xe0, 0x83, 0x00, 0xe4, 0xa0, 0x00, // ................ + 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, // ............ }; -static const uint8_t vs_debugdraw_fill_dx11[404] = +static const uint8_t vs_debugdraw_fill_dx11[675] = { - 0x56, 0x53, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH........u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, // elViewProj...... - 0x6c, 0x01, 0x44, 0x58, 0x42, 0x43, 0x87, 0x3c, 0x16, 0xa4, 0x8d, 0x3d, 0x5b, 0xea, 0x61, 0x5c, // l.DXBC.<...=[.a. - 0x10, 0x3b, 0xa1, 0xf8, 0xf8, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x03, 0x00, // .;........l..... - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...`.......IS - 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // GN,........... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, // ......POSITION.. - 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGN,......... - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, // .. ............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, // ..........SV_POS - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x53, 0x48, 0x44, 0x52, 0xd0, 0x00, 0x00, 0x00, 0x40, 0x00, // ITION.SHDR....@. - 0x01, 0x00, 0x34, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..4...Y...F. ... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, // ......_...r..... - 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // ..g.... ........ - 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, // ..h.......8..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......V.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, // .........2..... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......F. ....... - 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ..........F..... - 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ..2...........F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x00, 0x00, // ............... - 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf2, 0x20, // ..F............ - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, // ......F.......F. - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x01, // .........>..... - 0x01, 0x00, 0x40, 0x00, // ..@. + 0x56, 0x53, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH........u_vie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, // wProj.......u_mo + 0x64, 0x65, 0x6c, 0x04, 0x20, 0x40, 0x00, 0x80, 0x00, 0x70, 0x02, 0x44, 0x58, 0x42, 0x43, 0x21, // del. @...p.DXBC! + 0x99, 0xbc, 0x62, 0x67, 0xb7, 0x95, 0xd6, 0x90, 0x9d, 0x96, 0xc0, 0x0e, 0x98, 0x00, 0xf9, 0x01, // ..bg............ + 0x00, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, // ...p.......,.... + 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, // .......ISGNP.... + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .......8........ + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x45, // ...............E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, // ................ + 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x42, 0x4c, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x44, 0x49, // .......BLENDINDI + 0x43, 0x45, 0x53, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0x4f, // CES.POSITION...O + 0x53, 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, // SGN,........... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, // .......SV_POSITI + 0x4f, 0x4e, 0x00, 0x53, 0x48, 0x44, 0x52, 0xb0, 0x01, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x6c, // ON.SHDR....@...l + 0x00, 0x00, 0x00, 0x59, 0x08, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, // ...Y...F. ...... + 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x12, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, // ..._..........._ + 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, // ...r.......g.... + 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, // ..........h.... + 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, // ...)............ + 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, // ........@......8 + 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x01, // ...........V.... + 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0a, // ...F. .......... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x01, // .......2........ + 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0a, // ...F. .......... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // ...............F + 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, 0x01, // .......2........ + 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0a, // ...F. .......... + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, // ...............F + 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, // ................ + 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, // ...F.......F. .. + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, // ...............8 + 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, // ...........V.... + 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, // ...F. .........2 + 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, // ...........F. .. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...............F + 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, // .......2........ + 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, // ...F. .......... + 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, // .......F.......2 + 0x00, 0x00, 0x0a, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, // .... ......F. .. + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, // ...............F + 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x0e, 0x00, 0x01, // .......>........ + 0x00, 0x40, 0x08, // .@. }; -static const uint8_t vs_debugdraw_fill_mtl[555] = +static const uint8_t vs_debugdraw_fill_mtl[650] = { - 0x56, 0x53, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x75, 0x73, // VSH...........us + 0x56, 0x53, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x02, 0x00, 0x00, 0x75, 0x73, // VSH.......{...us 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // . float3 a_posi - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // tion [[attribute - 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // (0)]];.};.struct - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu - 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // tput {. float4 - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, // gl_Position [[po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, // sition]];.};.str - 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // uct xlatMtlShade - 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // rUniform {. flo - 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, // at4x4 u_modelVie - 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, // wProj;.};.vertex - 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu - 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, // tput xlatMtlMain - 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, // (xlatMtlShaderI - 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, // nput _mtl_i [[st - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, // age_in]], consta - 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // nt xlatMtlShader - 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, // Uniform& _mtl_u - 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, // [[buffer(0)]]).{ - 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, // . xlatMtlShader - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, // Output _mtl_o;. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // float4 tmpvar_1 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, // ;. tmpvar_1.w = - 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // 1.0;. tmpvar_1 - 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, // .xyz = _mtl_i.a_ - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // position;. _mtl - 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // _o.gl_Position = - 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // (_mtl_u.u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ViewProj * tmpva - 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, // r_1);. return _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // mtl_o;.}... + 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, // . float4 a_indi + 0x63, 0x65, 0x73, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // ces [[attribute( + 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, // 0)]];. float3 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // _position [[attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // ibute(1)]];.};.s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha + 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // derOutput {. fl + 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // oat4 gl_Position + 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, // [[position]];.} + 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.struct xlatMtl + 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, // ShaderUniform {. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, // float4x4 u_vie + 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, // wProj;. float4x + 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, // 4 u_model[32];.} + 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, // ;.vertex xlatMtl + 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, // ShaderOutput xla + 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, // tMtlMain (xlatMt + 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, // lShaderInput _mt + 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, // l_i [[stage_in]] + 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // , constant xlatM + 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, // tlShaderUniform& + 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, // _mtl_u [[buffer + 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, // (0)]]).{. xlatM + 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, // tlShaderOutput _ + 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // mtl_o;. float4 + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // tmpvar_1;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, // ar_1.w = 1.0;. + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, // tmpvar_1.xyz = _ + 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // mtl_i.a_position + 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // ;. _mtl_o.gl_Po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // sition = (_mtl_u + 0x2e, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x28, 0x5f, // .u_viewProj * (_ + 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, // mtl_u.u_model[in + 0x74, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, // t(_mtl_i.a_indic + 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // es.x)] * tmpvar_ + 0x31, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, // 1));. return _m + 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tl_o;.}... }; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.sc index d007e9367cd..58f7be44248 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill.sc @@ -1,4 +1,4 @@ -$input a_position +$input a_position, a_indices /* * Copyright 2011-2016 Branimir Karadzic. All rights reserved. @@ -9,5 +9,6 @@ $input a_position void main() { - gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) ); + vec4 model = mul(u_model[int(a_indices.x)], vec4(a_position, 1.0) ); + gl_Position = mul(u_viewProj, model); } diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.bin.h b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.bin.h index 2df5e3fbe89..c8201414fa4 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.bin.h +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.bin.h @@ -1,195 +1,198 @@ -static const uint8_t vs_debugdraw_fill_lit_glsl[613] = +static const uint8_t vs_debugdraw_fill_lit_glsl[532] = { - 0x56, 0x53, 0x48, 0x04, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...V_...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0x0b, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // el. .. ..u_model - 0x56, 0x69, 0x65, 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // View.......u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, // elViewProj...... - 0x20, 0x02, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, // ...attribute hi - 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, // ghp vec3 a_posit - 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, // ion;.varying hig - 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, // hp vec3 v_view;. - 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, // varying highp ve - 0x63, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // c3 v_world;.unif + 0x56, 0x53, 0x48, 0x04, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH...V_...u_vie + 0x77, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // w.......u_viewPr + 0x6f, 0x6a, 0x04, 0x01, 0x00, 0x00, 0x01, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // oj.......u_model + 0x04, 0x20, 0x00, 0x00, 0x20, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // . .. .....attrib + 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x61, // ute highp vec4 a + 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x3b, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, // _indices;.attrib + 0x75, 0x74, 0x65, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x61, // ute highp vec3 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, // _position;.varyi + 0x6e, 0x67, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, // ng highp vec3 v_ + 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x76, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x69, // view;.varying hi + 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, // ghp vec3 v_world + 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, // ;.uniform highp + 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x75, 0x6e, 0x69, // mat4 u_view;.uni + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, // form highp mat4 + 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, // u_viewProj;.unif 0x6f, 0x72, 0x6d, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // orm mat4 u_model - 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, // [32];.uniform hi - 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // ghp mat4 u_model - 0x56, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x68, 0x69, // View;.uniform hi - 0x67, 0x68, 0x70, 0x20, 0x6d, 0x61, 0x74, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // ghp mat4 u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, // ViewProj;.void m - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, // ain ().{. highp - 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, // vec4 tmpvar_1;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, // tmpvar_1.w = 1 - 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // .0;. tmpvar_1.x - 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, // yz = a_position; - 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, // . gl_Position = - 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, // (u_modelViewPro - 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, // j * tmpvar_1);. - 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, // highp vec4 tmpv - 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // ar_2;. tmpvar_2 - 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // .w = 1.0;. tmpv - 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, // ar_2.xyz = a_pos - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, // ition;. v_view - 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x20, 0x2a, // = (u_modelView * - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, // tmpvar_2).xyz;. - 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, // highp vec4 tmp - 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_3;. tmpvar_ - 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // 3.w = 1.0;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x61, 0x5f, 0x70, 0x6f, // var_3.xyz = a_po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, // sition;. v_worl - 0x64, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, // d = (u_model[0] - 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, // * tmpvar_3).xyz; - 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... + 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, // [32];.void main + 0x28, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x68, 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, // ().{. highp vec + 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_1;. tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, // pvar_1.w = 1.0;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_1.xyz = + 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x68, // a_position;. h + 0x69, 0x67, 0x68, 0x70, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ighp vec4 tmpvar + 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, // _2;. tmpvar_2 = + 0x20, 0x28, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x61, 0x5f, // (u_model[int(a_ + 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, // indices.x)] * tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, // pvar_1);. gl_Po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, // sition = (u_view + 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // Proj * tmpvar_2) + 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x5f, // ;. v_view = (u_ + 0x76, 0x69, 0x65, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x29, // view * tmpvar_2) + 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, // .xyz;. v_world + 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, // = tmpvar_2.xyz;. + 0x7d, 0x0a, 0x0a, 0x00, // }... }; -static const uint8_t vs_debugdraw_fill_lit_dx9[563] = +static const uint8_t vs_debugdraw_fill_lit_dx9[645] = { 0x56, 0x53, 0x48, 0x04, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...V_...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x04, 0x00, 0x0b, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // el. .....u_model - 0x56, 0x69, 0x65, 0x77, 0x04, 0x01, 0x04, 0x00, 0x04, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // View.......u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x01, 0x08, 0x00, 0x04, 0x00, // elViewProj...... - 0xf0, 0x01, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x37, 0x00, 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, // ........7.CTAB.. - 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, // ................ - 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, // ..........X..... - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, // ......`.......p. - 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, // ..........|..... - 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7c, 0x00, // ..............|. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x00, 0x03, 0x00, // ......u_model... - 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, // ...... .......u_ - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, // modelView....... - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, // ..........u_mode - 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, // lViewProj.vs_3_0 - 0x00, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, // .Microsoft (R) H - 0x4c, 0x53, 0x4c, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, // LSL Shader Compi - 0x6c, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x30, 0x31, 0x31, 0x2e, 0x31, // ler 10.0.10011.1 - 0x36, 0x33, 0x38, 0x34, 0x00, 0xab, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // 6384............ - 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, 0x1f, 0x00, // ................ - 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0xe0, 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, // ................ - 0x01, 0x80, 0x02, 0x00, 0x07, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x80, 0x09, 0x00, // ................ - 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x08, 0x00, // ....U........... - 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x0f, 0x80, 0x0a, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, // ................ - 0x00, 0x03, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x0b, 0x00, 0xe4, 0xa0, 0x05, 0x00, // ................ - 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x05, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, 0x04, 0x00, // ............U... - 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x04, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, // ................ - 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x06, 0x00, 0xe4, 0xa0, 0x00, 0x00, // ................ - 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0xe0, 0x00, 0x00, // ................ - 0xe4, 0x80, 0x07, 0x00, 0xe4, 0xa0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x80, 0x01, 0x00, // ................ - 0xe4, 0xa0, 0x00, 0x00, 0x55, 0x90, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, // ....U........... - 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, // ................ - 0x07, 0x80, 0x02, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, // ................ - 0x00, 0x03, 0x02, 0x00, 0x07, 0xe0, 0x00, 0x00, 0xe4, 0x80, 0x03, 0x00, 0xe4, 0xa0, 0xff, 0xff, // ................ - 0x00, 0x00, 0x00, // ... + 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x04, // el. .....u_view. + 0x01, 0x80, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, // ......u_viewProj + 0x04, 0x01, 0x84, 0x00, 0x04, 0x00, 0x4c, 0x02, 0x00, 0x03, 0xfe, 0xff, 0xfe, 0xff, 0x35, 0x00, // ......L.......5. + 0x43, 0x54, 0x41, 0x42, 0x1c, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0xff, // CTAB............ + 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, // ................ + 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, // X...........`... + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, // ....p........... + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x02, 0x00, 0x84, 0x00, // x............... + 0x04, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x6d, 0x6f, // ....x.......u_mo + 0x64, 0x65, 0x6c, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, // del......... ... + 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x00, 0xab, 0x03, 0x00, 0x03, 0x00, // ....u_view...... + 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x5f, 0x76, 0x69, // ............u_vi + 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x00, 0x76, 0x73, 0x5f, 0x33, 0x5f, 0x30, 0x00, 0x4d, 0x69, // ewProj.vs_3_0.Mi + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4c, 0x53, 0x4c, // crosoft (R) HLSL + 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, // Shader Compiler + 0x20, 0x31, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x30, 0x31, 0x31, 0x2e, 0x31, 0x36, 0x33, 0x38, // 10.0.10011.1638 + 0x34, 0x00, 0xab, 0xab, 0x51, 0x00, 0x00, 0x05, 0x88, 0x00, 0x0f, 0xa0, 0x00, 0x00, 0x80, 0x40, // 4...Q..........@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, // ................ + 0x01, 0x00, 0x0f, 0x90, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, 0xe0, // ................ + 0x1f, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x80, 0x01, 0x00, 0x07, 0xe0, 0x1f, 0x00, 0x00, 0x02, // ................ + 0x05, 0x00, 0x01, 0x80, 0x02, 0x00, 0x07, 0xe0, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, // ................ + 0x88, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x90, 0x2e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0xb0, // ................ + 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x00, 0x55, 0x90, // ..............U. + 0x01, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0x80, // . .............. + 0x00, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00, 0xe4, 0x80, // . .............. + 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x0f, 0x80, 0x02, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, // ......... ...... + 0x01, 0x00, 0xaa, 0x90, 0x00, 0x00, 0xe4, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0x80, // ................ + 0x00, 0x00, 0xe4, 0x80, 0x03, 0x20, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0xb0, 0x05, 0x00, 0x00, 0x03, // ..... .......... + 0x01, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x55, 0x80, 0x85, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, // ......U......... + 0x01, 0x00, 0x0f, 0x80, 0x84, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0x80, // ................ + 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x0f, 0x80, 0x86, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x80, // ................ + 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0f, 0xe0, 0x87, 0x00, 0xe4, 0xa0, // ................ + 0x00, 0x00, 0xff, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x05, 0x00, 0x00, 0x03, 0x01, 0x00, 0x07, 0x80, // ................ + 0x00, 0x00, 0x55, 0x80, 0x81, 0x00, 0xe4, 0xa0, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0x80, // ..U............. + 0x80, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xe4, 0x80, 0x04, 0x00, 0x00, 0x04, // ................ + 0x01, 0x00, 0x07, 0x80, 0x82, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xaa, 0x80, 0x01, 0x00, 0xe4, 0x80, // ................ + 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x07, 0xe0, 0x83, 0x00, 0xe4, 0xa0, 0x00, 0x00, 0xff, 0x80, // ................ + 0x01, 0x00, 0xe4, 0x80, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x07, 0xe0, 0x00, 0x00, 0xe4, 0x80, // ................ + 0xff, 0xff, 0x00, 0x00, 0x00, // ..... }; -static const uint8_t vs_debugdraw_fill_lit_dx11[808] = +static const uint8_t vs_debugdraw_fill_lit_dx11[944] = { - 0x56, 0x53, 0x48, 0x04, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // VSH...V_...u_mod - 0x65, 0x6c, 0x04, 0x20, 0x00, 0x00, 0x80, 0x00, 0x0b, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // el. .....u_model - 0x56, 0x69, 0x65, 0x77, 0x04, 0x00, 0x00, 0x08, 0x04, 0x00, 0x0f, 0x75, 0x5f, 0x6d, 0x6f, 0x64, // View.......u_mod - 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x04, 0x00, 0x40, 0x08, 0x04, 0x00, // elViewProj..@... - 0xe0, 0x02, 0x44, 0x58, 0x42, 0x43, 0xda, 0xb8, 0xef, 0x0e, 0x34, 0xc8, 0x8c, 0x2c, 0x06, 0xbc, // ..DXBC....4..,.. - 0x07, 0x0b, 0x43, 0x58, 0xee, 0x33, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x00, 0x03, 0x00, // ..CX.3.......... - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x49, 0x53, // ..,...`.......IS - 0x47, 0x4e, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, // GN,........... . - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, // ......POSITION.. - 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, // ..OSGNh......... - 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, // ..P............. - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x08, // ................ - 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, // ................ - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, // ..........SV_POS - 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, // ITION.TEXCOORD.. - 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, 0x08, 0x02, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x82, 0x00, // ..SHDR....@..... - 0x00, 0x00, 0x59, 0x00, 0x00, 0x04, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, // ..Y...F. ....... - 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x00, // .._...r.......g. - 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, // ... ..........e. - 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, // ..r ......e...r - 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, // ......h.......8. - 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, // ..........V..... - 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x32, 0x00, // ..F. .........2. - 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, // ..........F. ... - 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, // ..............F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2......... - 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0xa6, 0x1a, // ..F. ........... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......F......... - 0x00, 0x08, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x00, 0x00, // ... ......F..... - 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x38, 0x00, // ..F. .........8. - 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, // ..r.......V..... - 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x32, 0x00, // ..F. .........2. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..r.......F. ... - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..............F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2...r..... - 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0xa6, 0x1a, // ..F. ........... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......F......... - 0x00, 0x08, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r ......F..... - 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x38, 0x00, // ..F. .........8. - 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, 0x00, 0x00, // ..r.......V..... - 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, // ..F. .........2. - 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, // ..r.......F. ... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, // ..............F. - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, // ......2...r..... - 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x1a, // ..F. ........... - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ......F......... - 0x00, 0x08, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, // ..r ......F..... - 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x00, // ..F. .........>. - 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x80, 0x08, // ........ + 0x56, 0x53, 0x48, 0x04, 0x0f, 0xc8, 0x56, 0x5f, 0x03, 0x00, 0x06, 0x75, 0x5f, 0x76, 0x69, 0x65, // VSH...V_...u_vie + 0x77, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0a, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, // w.......u_viewPr + 0x6f, 0x6a, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x07, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // oj..@....u_model + 0x04, 0x20, 0x80, 0x00, 0x80, 0x00, 0x70, 0x03, 0x44, 0x58, 0x42, 0x43, 0x4a, 0x63, 0x00, 0x1f, // . ....p.DXBCJc.. + 0x8c, 0xf0, 0x42, 0x23, 0xf7, 0x2c, 0xd7, 0x55, 0x64, 0x23, 0x64, 0x92, 0x01, 0x00, 0x00, 0x00, // ..B#.,.Ud#d..... + 0x70, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, // p.......,....... + 0xf4, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x4e, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ....ISGNP....... + 0x08, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....8........... + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, // ............E... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x07, 0x07, 0x00, 0x00, 0x42, 0x4c, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x44, 0x49, 0x43, 0x45, 0x53, // ....BLENDINDICES + 0x00, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0xab, 0xab, 0x4f, 0x53, 0x47, 0x4e, // .POSITION...OSGN + 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, // h...........P... + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x0f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, // ................ + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // ................ + 0x07, 0x08, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, // ....SV_POSITION. + 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0xab, 0xab, 0xab, 0x53, 0x48, 0x44, 0x52, // TEXCOORD....SHDR + 0x74, 0x02, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x59, 0x08, 0x00, 0x04, // t...@.......Y... + 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, // F. ........._... + 0x12, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x03, 0x72, 0x10, 0x10, 0x00, // ........_...r... + 0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....g.... ...... + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ....e...r ...... + 0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, // e...r ......h... + 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ....)........... + 0x0a, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // .........@...... + 0x38, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x15, 0x10, 0x00, // 8...........V... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, // ....F. ......... + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, // ........2....... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // ....F. ......... + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0c, 0xf2, 0x00, 0x10, 0x00, // F.......2....... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, // ....F. ......... + 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x1a, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F............... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x06, // ....F.......F. . + 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x38, 0x00, 0x00, 0x08, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, // 8...........V... + 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, // ....F. ......... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2...........F. . + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x00, 0x10, 0x00, // F.......2....... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // ....F. ......... + 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... + 0x32, 0x00, 0x00, 0x0a, 0xf2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x8e, 0x20, 0x00, // 2.... ......F. . + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x46, 0x0e, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, // F.......8...r... + 0x01, 0x00, 0x00, 0x00, 0x56, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, // ....V.......F. . + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, // ........2...r... + 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ....F. ......... + 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... + 0x32, 0x00, 0x00, 0x0a, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, // 2...r.......F. . + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // ................ + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x0a, 0x72, 0x20, 0x10, 0x00, // F.......2...r .. + 0x01, 0x00, 0x00, 0x00, 0x46, 0x82, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, // ....F. ......... + 0xf6, 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, // ........F....... + 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, // 6...r ......F... + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x02, 0x0e, 0x00, 0x01, 0x00, 0x80, 0x08, // ....>........... }; -static const uint8_t vs_debugdraw_fill_lit_mtl[898] = +static const uint8_t vs_debugdraw_fill_lit_mtl[829] = { - 0x56, 0x53, 0x48, 0x04, 0x0f, 0xc8, 0x56, 0x5f, 0x00, 0x00, 0x73, 0x03, 0x00, 0x00, 0x75, 0x73, // VSH...V_..s...us + 0x56, 0x53, 0x48, 0x04, 0x0f, 0xc8, 0x56, 0x5f, 0x00, 0x00, 0x2e, 0x03, 0x00, 0x00, 0x75, 0x73, // VSH...V_......us 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { - 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // . float3 a_posi - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, // tion [[attribute - 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, // (0)]];.};.struct + 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, // . float4 a_indi + 0x63, 0x65, 0x73, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, // ces [[attribute( + 0x30, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, // 0)]];. float3 a + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x61, 0x74, 0x74, 0x72, // _position [[attr + 0x69, 0x62, 0x75, 0x74, 0x65, 0x28, 0x31, 0x29, 0x5d, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, // ibute(1)]];.};.s + 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // truct xlatMtlSha + 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, // derOutput {. fl + 0x6f, 0x61, 0x74, 0x34, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, // oat4 gl_Position + 0x20, 0x5b, 0x5b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, // [[position]];. + 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, // float3 v_view;. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, // float3 v_world + 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // ;.};.struct xlat + 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, // MtlShaderUniform + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, // {. float4x4 u_ + 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, // view;. float4x4 + 0x20, 0x75, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x20, 0x20, 0x66, // u_viewProj;. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, // loat4x4 u_model[ + 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x78, // 32];.};.vertex x + 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, // latMtlShaderOutp + 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x28, // ut xlatMtlMain ( + 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, // xlatMtlShaderInp + 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, 0x5b, 0x73, 0x74, 0x61, 0x67, // ut _mtl_i [[stag + 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, // e_in]], constant + 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, // xlatMtlShaderUn + 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x20, 0x5b, 0x5b, // iform& _mtl_u [[ + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, 0x29, 0x0a, 0x7b, 0x0a, 0x20, // buffer(0)]]).{. 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x75, // xlatMtlShaderOu - 0x74, 0x70, 0x75, 0x74, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, // tput {. float4 - 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x5b, 0x5b, 0x70, 0x6f, // gl_Position [[po - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5d, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // sition]];. floa - 0x74, 0x33, 0x20, 0x76, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // t3 v_view;. flo - 0x61, 0x74, 0x33, 0x20, 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, // at3 v_world;.};. - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, // struct xlatMtlSh - 0x61, 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x7b, 0x0a, 0x20, 0x20, // aderUniform {. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // float4x4 u_model - 0x5b, 0x33, 0x32, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, // [32];. float4x4 - 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x3b, 0x0a, 0x20, 0x20, // u_modelView;. - 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x78, 0x34, 0x20, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, // float4x4 u_model - 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x3b, 0x0a, 0x7d, 0x3b, 0x0a, 0x76, 0x65, 0x72, // ViewProj;.};.ver - 0x74, 0x65, 0x78, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, // tex xlatMtlShade - 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x4d, // rOutput xlatMtlM - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, // ain (xlatMtlShad - 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x20, 0x5b, // erInput _mtl_i [ - 0x5b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x5d, 0x5d, 0x2c, 0x20, 0x63, 0x6f, 0x6e, // [stage_in]], con - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // stant xlatMtlSha - 0x64, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x26, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // derUniform& _mtl - 0x5f, 0x75, 0x20, 0x5b, 0x5b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x28, 0x30, 0x29, 0x5d, 0x5d, // _u [[buffer(0)]] - 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x78, 0x6c, 0x61, 0x74, 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, // ).{. xlatMtlSha - 0x64, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, // derOutput _mtl_o - 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // ;. float4 tmpva - 0x72, 0x5f, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, // r_1;. tmpvar_1. - 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // w = 1.0;. tmpva - 0x72, 0x5f, 0x31, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, // r_1.xyz = _mtl_i - 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // .a_position;. _ - 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, // mtl_o.gl_Positio - 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x6d, 0x6f, // n = (_mtl_u.u_mo - 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, // delViewProj * tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // pvar_1);. float - 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 4 tmpvar_2;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, 0x3b, 0x0a, // pvar_2.w = 1.0;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, // tmpvar_2.xyz = - 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, // _mtl_i.a_positi - 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, 0x76, // on;. _mtl_o.v_v - 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, // iew = (_mtl_u.u_ - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, // modelView * tmpv - 0x61, 0x72, 0x5f, 0x32, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, // ar_2).xyz;. flo - 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x3b, 0x0a, 0x20, 0x20, // at4 tmpvar_3;. - 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, 0x2e, 0x30, // tmpvar_3.w = 1.0 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2e, 0x78, 0x79, 0x7a, // ;. tmpvar_3.xyz - 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, 0x73, 0x69, // = _mtl_i.a_posi - 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, // tion;. _mtl_o.v - 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, // _world = (_mtl_u - 0x2e, 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x74, 0x6d, // .u_model[0] * tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, // pvar_3).xyz;. r - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, // eturn _mtl_o;.}. - 0x0a, 0x00, // .. + 0x74, 0x70, 0x75, 0x74, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x20, 0x20, 0x66, // tput _mtl_o;. f + 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x3b, 0x0a, // loat4 tmpvar_1;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x31, // tmpvar_1.w = 1 + 0x2e, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x2e, 0x78, // .0;. tmpvar_1.x + 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x70, 0x6f, // yz = _mtl_i.a_po + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, // sition;. float4 + 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_2;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, // var_2 = (_mtl_u. + 0x75, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5b, 0x69, 0x6e, 0x74, 0x28, 0x5f, 0x6d, 0x74, 0x6c, // u_model[int(_mtl + 0x5f, 0x69, 0x2e, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x78, 0x29, 0x5d, // _i.a_indices.x)] + 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, // * tmpvar_1);. + 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, // _mtl_o.gl_Positi + 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, 0x5f, 0x76, // on = (_mtl_u.u_v + 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // iewProj * tmpvar + 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x76, 0x5f, // _2);. _mtl_o.v_ + 0x76, 0x69, 0x65, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x75, 0x2e, 0x75, // view = (_mtl_u.u + 0x5f, 0x76, 0x69, 0x65, 0x77, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // _view * tmpvar_2 + 0x29, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, // ).xyz;. _mtl_o. + 0x76, 0x5f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // v_world = tmpvar + 0x5f, 0x32, 0x2e, 0x78, 0x79, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, // _2.xyz;. return + 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // _mtl_o;.}... }; diff --git a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.sc b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.sc index 02054e3ef28..ea4ce6bdcad 100644 --- a/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.sc +++ b/3rdparty/bgfx/examples/common/debugdraw/vs_debugdraw_fill_lit.sc @@ -1,4 +1,4 @@ -$input a_position +$input a_position, a_indices $output v_view, v_world /* @@ -10,7 +10,8 @@ $output v_view, v_world void main() { - gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) ); - v_view = mul(u_modelView, vec4(a_position, 1.0) ).xyz; - v_world = mul(u_model[0], vec4(a_position, 1.0) ).xyz; + vec4 world = mul(u_model[int(a_indices.x)], vec4(a_position, 1.0) ); + gl_Position = mul(u_viewProj, world); + v_view = mul(u_view, world).xyz; + v_world = world.xyz; } diff --git a/3rdparty/bgfx/examples/common/entry/entry.cpp b/3rdparty/bgfx/examples/common/entry/entry.cpp index 0e03876a17e..a72b8027864 100644 --- a/3rdparty/bgfx/examples/common/entry/entry.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry.cpp @@ -473,11 +473,8 @@ BX_PRAGMA_DIAGNOSTIC_POP(); const MouseEvent* mouse = static_cast(ev); handle = mouse->m_handle; - if (mouse->m_move) - { - inputSetMousePos(mouse->m_mx, mouse->m_my, mouse->m_mz); - } - else + inputSetMousePos(mouse->m_mx, mouse->m_my, mouse->m_mz); + if (!mouse->m_move) { inputSetMouseButtonState(mouse->m_button, mouse->m_down); } @@ -485,13 +482,10 @@ BX_PRAGMA_DIAGNOSTIC_POP(); if (NULL != _mouse && !mouseLock) { - if (mouse->m_move) - { - _mouse->m_mx = mouse->m_mx; - _mouse->m_my = mouse->m_my; - _mouse->m_mz = mouse->m_mz; - } - else + _mouse->m_mx = mouse->m_mx; + _mouse->m_my = mouse->m_my; + _mouse->m_mz = mouse->m_mz; + if (!mouse->m_move) { _mouse->m_buttons[mouse->m_button] = mouse->m_down; } diff --git a/3rdparty/bgfx/examples/common/entry/entry_android.cpp b/3rdparty/bgfx/examples/common/entry/entry_android.cpp index 78c9dccbefa..90bfd131368 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_android.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry_android.cpp @@ -82,7 +82,6 @@ namespace entry { Context() : m_window(NULL) - , m_count(0) { memset(m_value, 0, sizeof(m_value) ); @@ -297,43 +296,35 @@ namespace entry int32_t action = (actionBits & AMOTION_EVENT_ACTION_MASK); int32_t index = (actionBits & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; - count = m_count; - - switch (action) + // Simulate left mouse click with 1st touch and right mouse click with 2nd touch. ignore other touchs + if (count < 2) { - case AMOTION_EVENT_ACTION_DOWN: - case AMOTION_EVENT_ACTION_POINTER_DOWN: - m_count++; - break; - - case AMOTION_EVENT_ACTION_UP: - case AMOTION_EVENT_ACTION_POINTER_UP: - m_count--; - break; - - default: - break; - } - - if (count != m_count) - { - m_eventQueue.postMouseEvent(defaultWindow - , (int32_t)mx - , (int32_t)my - , 0 - , 1 == count ? MouseButton::Left : MouseButton::Right - , false - ); - - if (0 != m_count) + switch (action) { + case AMOTION_EVENT_ACTION_DOWN: + case AMOTION_EVENT_ACTION_POINTER_DOWN: m_eventQueue.postMouseEvent(defaultWindow , (int32_t)mx , (int32_t)my , 0 - , 1 == m_count ? MouseButton::Left : MouseButton::Right + , action == AMOTION_EVENT_ACTION_DOWN ? MouseButton::Left : MouseButton::Right , true ); + break; + + case AMOTION_EVENT_ACTION_UP: + case AMOTION_EVENT_ACTION_POINTER_UP: + m_eventQueue.postMouseEvent(defaultWindow + , (int32_t)mx + , (int32_t)my + , 0 + , action == AMOTION_EVENT_ACTION_UP ? MouseButton::Left : MouseButton::Right + , false + ); + break; + + default: + break; } } @@ -405,7 +396,6 @@ namespace entry ANativeWindow* m_window; android_app* m_app; - int32_t m_count; int32_t m_value[GamepadAxis::Count]; int32_t m_deadzone[GamepadAxis::Count]; }; diff --git a/3rdparty/bgfx/examples/common/entry/entry_ios.mm b/3rdparty/bgfx/examples/common/entry/entry_ios.mm index 052c161abd4..a5348212ef0 100644 --- a/3rdparty/bgfx/examples/common/entry/entry_ios.mm +++ b/3rdparty/bgfx/examples/common/entry/entry_ios.mm @@ -312,7 +312,7 @@ static void* m_device = NULL; [m_window makeKeyAndVisible]; - //float scaleFactor = [[UIScreen mainScreen] scale]; // should use this, but ui is too small on ipad retina + //float scaleFactor = [[UIScreen mainScreen] scale]; // should use this, but needs to further pass the value to the `nvgBeginFrame()` call's `devicePixelRatio` parameter in `ExampleNanoVG` class' `update()` method so it can actually work properly. float scaleFactor = 1.0f; [m_view setContentScaleFactor: scaleFactor ]; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field.bin.h index 9bd34a78a05..c3d5b95de55 100644 --- a/3rdparty/bgfx/examples/common/font/fs_font_distance_field.bin.h +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field.bin.h @@ -185,9 +185,9 @@ static const uint8_t fs_font_distance_field_dx11[1053] = 0x00, 0x36, 0x00, 0x00, 0x05, 0x72, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x12, 0x10, // .6...r ......F.. 0x00, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // .....>....... }; -static const uint8_t fs_font_distance_field_mtl[1492] = +static const uint8_t fs_font_distance_field_mtl[1493] = { - 0x46, 0x53, 0x48, 0x04, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xc5, 0x05, 0x00, 0x00, 0x75, 0x73, // FSH...........us + 0x46, 0x53, 0x48, 0x04, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0xc6, 0x05, 0x00, 0x00, 0x75, 0x73, // FSH...........us 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { @@ -240,45 +240,45 @@ static const uint8_t fs_font_distance_field_mtl[1492] = 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, // mtl_i.v_texcoord 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // 0.xyz);. float3 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_5;. tmp - 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x64, 0x66, 0x64, 0x79, 0x28, 0x5f, 0x6d, 0x74, // var_5 = dfdy(_mt - 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, // l_i.v_texcoord0. - 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // xyz);. float tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_6;. tmpvar - 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, 0x72, // _6 = (8.0 * (sqr - 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, // t(. dot (tmpv - 0x61, 0x72, 0x5f, 0x34, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x0a, // ar_4, tmpvar_4). - 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, // ) + sqrt(. - 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2c, 0x20, 0x74, // dot (tmpvar_5, t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, 0x0a, // mpvar_5). )));. - 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x3b, // float edge0_7; - 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, // . edge0_7 = (0. - 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, 0x0a, 0x20, // 5 - tmpvar_6);. - 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x31, 0x5f, 0x38, 0x3b, 0x0a, // float edge1_8;. - 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x31, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, // edge1_8 = (0.5 - 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, // + tmpvar_6);. - 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, 0x20, // half tmpvar_9;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, // tmpvar_9 = clam - 0x70, 0x20, 0x28, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, // p (((half)((floa - 0x74, 0x29, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, // t)((half)((float - 0x29, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // )rgba_1[tmpvar_3 - 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x29, 0x29, 0x20, 0x2f, 0x20, // ] - edge0_7)) / - 0x28, 0x65, 0x64, 0x67, 0x65, 0x31, 0x5f, 0x38, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, // (edge1_8 - edge0 - 0x5f, 0x37, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x30, 0x2e, 0x30, // _7))), (half)0.0 - 0x2c, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, // , (half)1.0);. - 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, // half4 tmpvar_10; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x78, 0x79, 0x7a, // . tmpvar_10.xyz - 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, // = half3(_mtl_i. - 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, // v_color0.xyz);. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, // tmpvar_10.w = ( - 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, // (half)(_mtl_i.v_ - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, // color0.w * (floa - 0x74, 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x28, 0x74, // t)(tmpvar_9 * (t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, // mpvar_9 * . ( - 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x68, 0x61, // (half)3.0 - ((ha - 0x6c, 0x66, 0x29, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // lf)2.0 * tmpvar_ - 0x39, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, // 9)). ))));. _m - 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // tl_o.gl_FragColo - 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, // r = tmpvar_10;. - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, // return _mtl_o;. - 0x7d, 0x0a, 0x0a, 0x00, // }... + 0x76, 0x61, 0x72, 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x64, 0x66, 0x64, 0x79, 0x28, 0x2d, 0x5f, 0x6d, // var_5 = dfdy(-_m + 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, // tl_i.v_texcoord0 + 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // .xyz);. float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // mpvar_6;. tmpva + 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, 0x71, // r_6 = (8.0 * (sq + 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, // rt(. dot (tmp + 0x76, 0x61, 0x72, 0x5f, 0x34, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, // var_4, tmpvar_4) + 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, // . ) + sqrt(. + 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x2c, 0x20, // dot (tmpvar_5, + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x3b, // tmpvar_5). ))); + 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, // . float edge0_7 + 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x28, 0x30, // ;. edge0_7 = (0 + 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, 0x0a, // .5 - tmpvar_6);. + 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, 0x65, 0x31, 0x5f, 0x38, 0x3b, // float edge1_8; + 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x31, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, // . edge1_8 = (0. + 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x3b, 0x0a, 0x20, // 5 + tmpvar_6);. + 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, // half tmpvar_9;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, // tmpvar_9 = cla + 0x6d, 0x70, 0x20, 0x28, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, // mp (((half)((flo + 0x61, 0x74, 0x29, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, // at)((half)((floa + 0x74, 0x29, 0x72, 0x67, 0x62, 0x61, 0x5f, 0x31, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // t)rgba_1[tmpvar_ + 0x33, 0x5d, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x37, 0x29, 0x29, 0x20, 0x2f, // 3] - edge0_7)) / + 0x20, 0x28, 0x65, 0x64, 0x67, 0x65, 0x31, 0x5f, 0x38, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, // (edge1_8 - edge + 0x30, 0x5f, 0x37, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x30, 0x2e, // 0_7))), (half)0. + 0x30, 0x2c, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, // 0, (half)1.0);. + 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, // half4 tmpvar_10 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x78, 0x79, // ;. tmpvar_10.xy + 0x7a, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, // z = half3(_mtl_i + 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, // .v_color0.xyz);. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x2e, 0x77, 0x20, 0x3d, 0x20, // tmpvar_10.w = + 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, // ((half)(_mtl_i.v + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x20, 0x2a, 0x20, 0x28, 0x66, 0x6c, 0x6f, // _color0.w * (flo + 0x61, 0x74, 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x28, // at)(tmpvar_9 * ( + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, // tmpvar_9 * . + 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x68, // ((half)3.0 - ((h + 0x61, 0x6c, 0x66, 0x29, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // alf)2.0 * tmpvar + 0x5f, 0x39, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // _9)). ))));. _ + 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, // mtl_o.gl_FragCol + 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, // or = tmpvar_10;. + 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x3b, // return _mtl_o; + 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // .}... }; diff --git a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_subpixel.bin.h b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_subpixel.bin.h index 154481dc393..f338948d50c 100644 --- a/3rdparty/bgfx/examples/common/font/fs_font_distance_field_subpixel.bin.h +++ b/3rdparty/bgfx/examples/common/font/fs_font_distance_field_subpixel.bin.h @@ -226,9 +226,9 @@ static const uint8_t fs_font_distance_field_subpixel_dx11[1305] = 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x1f, 0x10, 0x00, 0x01, 0x00, 0x00, // .F.............. 0x00, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // .>....... }; -static const uint8_t fs_font_distance_field_subpixel_mtl[1945] = +static const uint8_t fs_font_distance_field_subpixel_mtl[1946] = { - 0x46, 0x53, 0x48, 0x04, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x8a, 0x07, 0x00, 0x00, 0x75, 0x73, // FSH...........us + 0x46, 0x53, 0x48, 0x04, 0x01, 0x83, 0xf2, 0xe1, 0x00, 0x00, 0x8b, 0x07, 0x00, 0x00, 0x75, 0x73, // FSH...........us 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x65, // ing namespace me 0x74, 0x61, 0x6c, 0x3b, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x78, 0x6c, 0x61, 0x74, // tal;.struct xlat 0x4d, 0x74, 0x6c, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x7b, // MtlShaderInput { @@ -267,87 +267,87 @@ static const uint8_t fs_font_distance_field_subpixel_mtl[1945] = 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, // excoord0.xyz);. 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // float3 tmpvar_3 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x20, 0x3d, 0x20, 0x64, // ;. tmpvar_3 = d - 0x66, 0x64, 0x79, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, // fdy(_mtl_i.v_tex - 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, // coord0.xyz);. f - 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, 0x0a, // loat3 tmpvar_4;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, // tmpvar_4 = (0. - 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // 166667 * tmpvar_ - 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, // 2);. float3 tmp - 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // var_5;. tmpvar_ - 0x35, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, // 5 = (_mtl_i.v_te - 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x74, 0x6d, // xcoord0.xyz - tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, // pvar_4);. float - 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // 3 tmpvar_6;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, // pvar_6 = (_mtl_i - 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, // .v_texcoord0.xyz - 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, // + tmpvar_4);. - 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, 0x0a, // half4 tmpvar_7;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, // tmpvar_7 = hal - 0x66, 0x34, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, // f4(s_texColor.sa - 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, // mple(_mtlsmp_s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // exColor, (float3 - 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, // )(tmpvar_5)));. - 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, // half tmpvar_8;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x68, // tmpvar_8 = ((h - 0x61, 0x6c, 0x66, 0x29, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, 0x79, 0x78, // alf)tmpvar_7.zyx - 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, // w[tmpvar_1]);. - 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, 0x0a, // half4 tmpvar_9;. - 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x68, 0x61, 0x6c, // tmpvar_9 = hal - 0x66, 0x34, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, 0x61, // f4(s_texColor.sa - 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, 0x74, // mple(_mtlsmp_s_t - 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, // exColor, (float3 - 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, // )(tmpvar_6)));. - 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x3b, // half tmpvar_10; - 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x28, // . tmpvar_10 = ( - 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, 0x7a, // (half)tmpvar_9.z - 0x79, 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x29, 0x3b, 0x0a, // yxw[tmpvar_1]);. - 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, // half tmpvar_11 - 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, 0x20, // ;. tmpvar_11 = - 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x30, 0x2e, 0x35, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, // ((half)0.5 * (tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // pvar_8 + tmpvar_ - 0x31, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, 0x6d, // 10));. float tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // pvar_12;. tmpva - 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, 0x73, // r_12 = (8.0 * (s - 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, // qrt(. dot (tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, // pvar_2, tmpvar_2 - 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, // ). ) + sqrt(. - 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x2c, // dot (tmpvar_3, - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, 0x29, // tmpvar_3). ))) - 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ;. half3 tmpvar - 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, // _13;. tmpvar_13 - 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, 0x20, // .x = tmpvar_8;. - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x74, // tmpvar_13.y = t - 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // mpvar_11;. tmpv - 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ar_13.z = tmpvar - 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, 0x67, // _10;. float edg - 0x65, 0x30, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, // e0_14;. edge0_1 - 0x34, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // 4 = (0.5 - tmpva - 0x72, 0x5f, 0x31, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, // r_12);. float e - 0x64, 0x67, 0x65, 0x31, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x31, // dge1_15;. edge1 - 0x5f, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, // _15 = (0.5 + tmp - 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, // var_12);. half3 - 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, // tmpvar_16;. tm - 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20, // pvar_16 = clamp - 0x28, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, // (((half3)((float - 0x33, 0x29, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, // 3)((half3)((floa - 0x74, 0x33, 0x29, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2d, 0x20, 0x65, // t3)tmpvar_13 - e - 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x34, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x65, 0x64, 0x67, // dge0_14)) / (edg - 0x65, 0x31, 0x5f, 0x31, 0x35, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x34, // e1_15 - edge0_14 - 0x29, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x30, 0x2e, 0x30, 0x2c, 0x20, // ))), (half)0.0, - 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, // (half)1.0);. _m - 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, // tl_o.gl_FragColo - 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x29, // r.xyz = ((half3) - 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // ((float3)(tmpvar - 0x5f, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, // _16 * (tmpvar_16 - 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x33, // * . ((half)3 - 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x32, 0x2e, 0x30, 0x20, // .0 - ((half)2.0 - 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x29, 0x29, 0x0a, 0x20, 0x20, // * tmpvar_16)). - 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, // )) * _mtl_i.v_co - 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, 0x6c, // lor0.w));. _mtl - 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, // _o.gl_FragColor. - 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, // w = ((half)((flo - 0x61, 0x74, 0x29, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, 0x5f, // at)tmpvar_11 * _ - 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, // mtl_i.v_color0.w - 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, 0x74, // ));. return _mt - 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // l_o;.}... + 0x66, 0x64, 0x79, 0x28, 0x2d, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, // fdy(-_mtl_i.v_te + 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x29, 0x3b, 0x0a, 0x20, 0x20, // xcoord0.xyz);. + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x3b, // float3 tmpvar_4; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x30, // . tmpvar_4 = (0 + 0x2e, 0x31, 0x36, 0x36, 0x36, 0x36, 0x37, 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // .166667 * tmpvar + 0x5f, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x74, 0x6d, // _2);. float3 tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // pvar_5;. tmpvar + 0x5f, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x74, // _5 = (_mtl_i.v_t + 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x2d, 0x20, 0x74, // excoord0.xyz - t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, // mpvar_4);. floa + 0x74, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, // t3 tmpvar_6;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x20, 0x3d, 0x20, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, // mpvar_6 = (_mtl_ + 0x69, 0x2e, 0x76, 0x5f, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x2e, 0x78, 0x79, // i.v_texcoord0.xy + 0x7a, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x34, 0x29, 0x3b, 0x0a, 0x20, // z + tmpvar_4);. + 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x3b, // half4 tmpvar_7; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x20, 0x3d, 0x20, 0x68, 0x61, // . tmpvar_7 = ha + 0x6c, 0x66, 0x34, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, // lf4(s_texColor.s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, // ample(_mtlsmp_s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, // texColor, (float + 0x33, 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x35, 0x29, 0x29, 0x29, 0x3b, 0x0a, // 3)(tmpvar_5)));. + 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, // half tmpvar_8; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x3d, 0x20, 0x28, 0x28, // . tmpvar_8 = (( + 0x68, 0x61, 0x6c, 0x66, 0x29, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x37, 0x2e, 0x7a, 0x79, // half)tmpvar_7.zy + 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, // xw[tmpvar_1]);. + 0x20, 0x68, 0x61, 0x6c, 0x66, 0x34, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x3b, // half4 tmpvar_9; + 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x20, 0x3d, 0x20, 0x68, 0x61, // . tmpvar_9 = ha + 0x6c, 0x66, 0x34, 0x28, 0x73, 0x5f, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x73, // lf4(s_texColor.s + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x28, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x5f, 0x73, 0x5f, // ample(_mtlsmp_s_ + 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, // texColor, (float + 0x33, 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x36, 0x29, 0x29, 0x29, 0x3b, 0x0a, // 3)(tmpvar_6)));. + 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, // half tmpvar_10 + 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x30, 0x20, 0x3d, 0x20, // ;. tmpvar_10 = + 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x39, 0x2e, // ((half)tmpvar_9. + 0x7a, 0x79, 0x78, 0x77, 0x5b, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x5d, 0x29, 0x3b, // zyxw[tmpvar_1]); + 0x0a, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // . half tmpvar_1 + 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x3d, // 1;. tmpvar_11 = + 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x30, 0x2e, 0x35, 0x20, 0x2a, 0x20, 0x28, 0x74, // ((half)0.5 * (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x20, 0x2b, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, // mpvar_8 + tmpvar + 0x5f, 0x31, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x74, // _10));. float t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, // mpvar_12;. tmpv + 0x61, 0x72, 0x5f, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x38, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x28, // ar_12 = (8.0 * ( + 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, // sqrt(. dot (t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x32, 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, // mpvar_2, tmpvar_ + 0x32, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x73, 0x71, 0x72, 0x74, 0x28, 0x0a, 0x20, // 2). ) + sqrt(. + 0x20, 0x20, 0x20, 0x64, 0x6f, 0x74, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, // dot (tmpvar_3 + 0x2c, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x33, 0x29, 0x0a, 0x20, 0x20, 0x29, 0x29, // , tmpvar_3). )) + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // );. half3 tmpva + 0x72, 0x5f, 0x31, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_13;. tmpvar_1 + 0x33, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x38, 0x3b, 0x0a, // 3.x = tmpvar_8;. + 0x20, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x79, 0x20, 0x3d, 0x20, // tmpvar_13.y = + 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x74, 0x6d, 0x70, // tmpvar_11;. tmp + 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, // var_13.z = tmpva + 0x72, 0x5f, 0x31, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x64, // r_10;. float ed + 0x67, 0x65, 0x30, 0x5f, 0x31, 0x34, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, // ge0_14;. edge0_ + 0x31, 0x34, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2d, 0x20, 0x74, 0x6d, 0x70, 0x76, // 14 = (0.5 - tmpv + 0x61, 0x72, 0x5f, 0x31, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, // ar_12);. float + 0x65, 0x64, 0x67, 0x65, 0x31, 0x5f, 0x31, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x65, 0x64, 0x67, 0x65, // edge1_15;. edge + 0x31, 0x5f, 0x31, 0x35, 0x20, 0x3d, 0x20, 0x28, 0x30, 0x2e, 0x35, 0x20, 0x2b, 0x20, 0x74, 0x6d, // 1_15 = (0.5 + tm + 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x68, 0x61, 0x6c, 0x66, // pvar_12);. half + 0x33, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x3b, 0x0a, 0x20, 0x20, 0x74, // 3 tmpvar_16;. t + 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, // mpvar_16 = clamp + 0x20, 0x28, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, // (((half3)((floa + 0x74, 0x33, 0x29, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x33, 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, // t3)((half3)((flo + 0x61, 0x74, 0x33, 0x29, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x33, 0x20, 0x2d, 0x20, // at3)tmpvar_13 - + 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, 0x34, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x65, 0x64, // edge0_14)) / (ed + 0x67, 0x65, 0x31, 0x5f, 0x31, 0x35, 0x20, 0x2d, 0x20, 0x65, 0x64, 0x67, 0x65, 0x30, 0x5f, 0x31, // ge1_15 - edge0_1 + 0x34, 0x29, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x30, 0x2e, 0x30, 0x2c, // 4))), (half)0.0, + 0x20, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x31, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, // (half)1.0);. _ + 0x6d, 0x74, 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, // mtl_o.gl_FragCol + 0x6f, 0x72, 0x2e, 0x78, 0x79, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x33, // or.xyz = ((half3 + 0x29, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, // )((float3)(tmpva + 0x72, 0x5f, 0x31, 0x36, 0x20, 0x2a, 0x20, 0x28, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, // r_16 * (tmpvar_1 + 0x36, 0x20, 0x2a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, // 6 * . ((half) + 0x33, 0x2e, 0x30, 0x20, 0x2d, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x32, 0x2e, 0x30, // 3.0 - ((half)2.0 + 0x20, 0x2a, 0x20, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x36, 0x29, 0x29, 0x0a, 0x20, // * tmpvar_16)). + 0x20, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, // )) * _mtl_i.v_c + 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x5f, 0x6d, 0x74, // olor0.w));. _mt + 0x6c, 0x5f, 0x6f, 0x2e, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, // l_o.gl_FragColor + 0x2e, 0x77, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x68, 0x61, 0x6c, 0x66, 0x29, 0x28, 0x28, 0x66, 0x6c, // .w = ((half)((fl + 0x6f, 0x61, 0x74, 0x29, 0x74, 0x6d, 0x70, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x31, 0x20, 0x2a, 0x20, // oat)tmpvar_11 * + 0x5f, 0x6d, 0x74, 0x6c, 0x5f, 0x69, 0x2e, 0x76, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x30, 0x2e, // _mtl_i.v_color0. + 0x77, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6d, // w));. return _m + 0x74, 0x6c, 0x5f, 0x6f, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x00, // tl_o;.}... }; diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg.cpp b/3rdparty/bgfx/examples/common/nanovg/nanovg.cpp index 8dbac8a294e..c7433cdc45d 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg.cpp +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg.cpp @@ -339,7 +339,7 @@ void nvgBeginFrame(NVGcontext* ctx, int windowWidth, int windowHeight, float dev nvg__setDevicePixelRatio(ctx, devicePixelRatio); - ctx->params.renderViewport(ctx->params.userPtr, windowWidth, windowHeight); + ctx->params.renderViewport(ctx->params.userPtr, windowWidth, windowHeight, devicePixelRatio); ctx->drawCallCount = 0; ctx->fillTriCount = 0; diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg.h b/3rdparty/bgfx/examples/common/nanovg/nanovg.h index 692d1bd2be8..984c1935e3c 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg.h +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg.h @@ -19,6 +19,8 @@ #ifndef NANOVG_H #define NANOVG_H +#include "nanovg_bgfx.h" + #ifdef __cplusplus extern "C" { #endif @@ -588,7 +590,7 @@ struct NVGparams { int (*renderDeleteTexture)(void* uptr, int image); int (*renderUpdateTexture)(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data); int (*renderGetTextureSize)(void* uptr, int image, int* w, int* h); - void (*renderViewport)(void* uptr, int width, int height); + void (*renderViewport)(void* uptr, int width, int height, float devicePixelRatio); void (*renderCancel)(void* uptr); void (*renderFlush)(void* uptr); void (*renderFill)(void* uptr, NVGpaint* paint, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths); @@ -598,12 +600,6 @@ struct NVGparams { }; typedef struct NVGparams NVGparams; -namespace bx { struct AllocatorI; } - -NVGcontext* nvgCreate(int edgeaa, unsigned char _viewId, bx::AllocatorI* _allocator = NULL); -void nvgViewId(struct NVGcontext* ctx, unsigned char _viewId); -void nvgDelete(struct NVGcontext* ctx); - // Constructor and destructor, called by the render back-end. NVGcontext* nvgCreateInternal(NVGparams* params); void nvgDeleteInternal(NVGcontext* ctx); diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp index e5795ad2131..41095d853bb 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp @@ -545,12 +545,12 @@ namespace gl->th = handle; } - static void nvgRenderViewport(void* _userPtr, int width, int height) + static void nvgRenderViewport(void* _userPtr, int width, int height, float devicePixelRatio) { struct GLNVGcontext* gl = (struct GLNVGcontext*)_userPtr; gl->view[0] = (float)width; gl->view[1] = (float)height; - bgfx::setViewRect(gl->m_viewId, 0, 0, width, height); + bgfx::setViewRect(gl->m_viewId, 0, 0, width * devicePixelRatio, height * devicePixelRatio); } static void fan(uint32_t _start, uint32_t _count) @@ -1088,6 +1088,10 @@ error: return NULL; } +NVGcontext* nvgCreate(int edgeaa, unsigned char _viewId) { + return nvgCreate(edgeaa, _viewId, NULL); +} + void nvgViewId(struct NVGcontext* ctx, unsigned char _viewId) { struct NVGparams* params = nvgInternalParams(ctx); diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h new file mode 100644 index 00000000000..d24ee4fa72f --- /dev/null +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h @@ -0,0 +1,18 @@ +/* + * Copyright 2011-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause + */ + +#ifndef NANOVG_BGFX_H_HEADER_GUARD +#define NANOVG_BGFX_H_HEADER_GUARD + +namespace bx { struct AllocatorI; } + +struct NVGcontext; + +NVGcontext* nvgCreate(int edgeaa, unsigned char _viewId, bx::AllocatorI* _allocator); +NVGcontext* nvgCreate(int edgeaa, unsigned char _viewId); +void nvgViewId(struct NVGcontext* ctx, unsigned char _viewId); +void nvgDelete(struct NVGcontext* ctx); + +#endif // NANOVG_BGFX_H_HEADER_GUARD diff --git a/3rdparty/bgfx/examples/runtime/meshes/bunny.bin b/3rdparty/bgfx/examples/runtime/meshes/bunny.bin index adcca877ef859183144595b2bb69167547d04861..794ec22c7fef9104aeaf52fdd1055d979131ef73 100644 GIT binary patch literal 2588410 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⍦ysmHwxAq z8Y<4^>Q>F!@>nJEzn#I?y=+GAY=Az! za3C9Y7U+B(9xwVjHH+MTv)BfhH9L^OCsgSS^O{OGw|V=2Tp#Wa9A3*a89aAXAL4ya zy1B@Wg}N;653?$VpT$K(5P%3|`C4iTD@)TR)h?K`r)6+wOE2;!S^B>y@DV!K z2OzpWmBTD@&WAJj)wyekT`k$aE_zm;-t}SDu29Ee7P^DYr8CgJB{6KOf`v$v^e34?uK%Du-F*-0o!X-f>}MU<>K+aNN7j^#O>k zPvtO+-0;E-{wdF0j7?KqA7;_vVOxbCI!2trWEpx-oNYnfdR&Q0}oSU>c2Du-F*>VC}N zC+x42Qd^|M^9IMLx;f0En^QT=BFFy8;8nNXC8IoKb_L8crgM0ZMTghva|VBMB7@xf zApPXJ|73B0m{mE58X@a9|B4i}lMXKg&ZW-v0f??o=M7rH#`I^sWy;bbTs^S>#Ip$>3fM3rO8-(#iN( z>zyFBDY`zD!z^-!FB!aHZzFm>Njf}V@b{{(!z}tbm4m1ea%(?i@Fw8!oI|8bTLagI z>gzCzzE0&Zi`O^^IlL*Z;T9 z&0!YZ+<>Z2cn2S2ns!HexTvl9x~w=3$f_JfjsC}dG&P}4{iP2JU8eVXSO)sK23s=t zoJ+N6H8WYpVz}Rb$9@xn^QU5A95)N zGkD)h4e8&9WOnT8pE?hR^+ON$qJ0K08P03Pk6JT zZRphw@^>_Gm)`$jx#;y&4ztKz*_FZjpKDK(U``&`WHdD~TkrKS3tmsPJGdOJpj?`sT^jJJ5}ll$1$?`FXi)X!I@8buLmG{J(a^Oa=S`A;Vq_^ z)Bk;MTnO)es++^(MK?DG?oGMREauxB zE~>-BGSK0v9A=Rl3hgqtRDZf;m|T0$GdWl1@Gy%GPvtO+T-m!Be7WBs+U{eZ_?ulq@jhtb02ej@9C?xW7bVHQ1{%3&5c*Han1C9JRU?Cn~S-E!%z z-q%4EJ)Fv67P*hX8N$s)#4wTFaUIs-P<qPTVFtBzu@TqMa+s@K&Eozrt8x%ELT>cJbpCV8Ec&L^Xi>(d2ai~rN4NRkH|Eej zBL|EB@*AJsVP}HPX+d;3niFj*-rtJXJ1~=<<}~DBIohRGrf^2T{9M@cvArm7RGJ2N zhHX&DFaLS0yGIY&xe;;jKJVOw{)>Od2E#$S$yEeiKzmSuXt{O}Fwi-*$9 z6>kk>9-qIFZ_W1`er}tp;cx# zsMufT+%9a7i3ttedzv(*A>v)=v0ZCcJ9qW@A+nit zPF2}`7sx(I8yfUFYAp(Au01pcU7qifu=Z zL*L6zFSN1)H&DkPT$G!T`i@1IL=&$|)o7EyzX>k*$T!xbUNqT0peBsp|02%$Mi`Tn zUl>OA46RAW(XS%A=}<0vcF~6fSD#CL!`6#zAgs|cJ!}=xsyonupM6Bu7y3o&`rSaC zvER*}QyMY7G>Cd8%6#B)c$q2KkQ%kdZhl|Vy3Dh$hS^N(i|op{`xf!f zI2~p^P{Ztt=~vnEhN%`CD`@oG%03#lOQz#>wx;rIvi5^LeRj}S9EaPT=gjK4HEH|6 zo(6nbFX}w+)(gF(g)BPSfR=L9~M(^v}U8%=KJmpGK~wG^K@u9*8o+Z#`vgcEa4=wOi1V z5w}JCwq1Y8j%__o>UC*BOD(%2vJt@Tjyp~+j_gm*C&=gTCRmf&H~b_y;$NL!OU@Ge z+XKI?Vi+&Zs@J6Fy}`3WT_O(WuwB6^q^NOCI_z?m*kAb3uWb9A1X64KY`Wl`pU8T{ zy>s{a6tcreICKHdnq{Sds+7M_ZN81zz)5yzGb8LJ>e4~57F@xLd5;=*78hN zDkOuO1|?Eg<89(z5(od0R9}Z#^mS?$>-XO*wkc)@m2}bS!5o~cCUqD7DnBMv@8KYf z92Nx z6`iTY!}j##3Rs&13jT4(k6kX^l`bFOhNf(m>viPC`LckUx#X{U%?%^8N8)(T7+SM{ znK{J9>Zir!clSiOQRVDdscX4pXY=L;`&M6s!}~Vcjy16jwP-Hbxsh=Kqsj7ufw`v|2i0xpZ0sHGi{MI zKwK|nyrWrBR=qSb)t8c#An`1#k^pmmp0AL0v~2|K8&y|aFB5-m);T=fA3D4p&#I)c z)Npz-rIWZ`#(j%qbH?@~+Zub*4#lTMJ3AKpvs#Tuk*=$~>Epo52CSbGY&-J%8M!iV zF}2U`A=>mvjtg7);Wat#??&%8wiRu9EZd1~`NufTZ_yLtW;s`Uv#Hf<4SNxp&TrkR zMchlv-^b|FnXF1cI&XTT8F9&!--*3b;JdTx+@M_aX5CBK7~I|FQ?uVO;{4j>O<|-$ zTf@;B3+UbLOGRB~=g(wE{FWOYm0d`8#I6-}nVC0DR|d8LmSI^Yod;d)MCy8ni8c)b z_pftvP%ip4mBTD@L;p(WxxXo?Tw40IJ)86N9uBhT;ZzQ@$R!!4^M;c~k}6~6w{2XP zQFU(E&gk5%i!budaW>SehH<&}$CO~?i(J12>AW`gC!3Z?ueWc~H@(9H5FMV%VHUX+PU*Z~j}WpnP4>;(3)}F&)Da+pQ#+Q4*f0qgK?Y$M;*BAx%^ z@Bl=Ir*fD@u5JHxUI=|bN_k4J7wx8ZeON9!Je9*Na%+aA^BOY}$(i{w8|hi3cX$Az z!&5m?E^ybp)46f?mO6I6aelJ+xdU~ z53}g?R1UMqIk=^B1NgdMPo%H&gZ`bWo5L)+IhDgQkQ)ef?&)})q%M-q&Hq1c4zuXy zR1UMqtz4YW6Sm(aRz5PjX4QWj9%S)9m&#!lx%t!6IZMqTRqDtrgKaur2U+xW8SB%z zT|p+Xa*};}f|vZ#WpRI)RXK;>X zF^8<^D*Z;NO`hKC0f@ghmBTD@>&~Y0-gOH|LM7={qO5cEUJpR@dMbxm9Q8The*zl~QzPwsb);Fwdgu_3&Jx*HbynBA0tQo!7T7 zN7qhI64zhMDp;RH^?v}O*Hbx>1#Zo;bUqXM#(Qp*<;HKz)pD=gi zE$Y2e)^E{_LR}X3hgp@w`XSe+@FI^}Zc4-Bq>Hq%)B8Fs1AU#!;r@`TT_>Hpz&otd z@)U7wQ`Y{+>p>RX+}C39W1F@Y z`o1Yn5bKAoPvtO+T+956{8DmDO18>zz0+Zy7@g|_5M7_jVHUZnGt;@(m^L)JK>j}L z_x#kmJ^<16sT^jJ+ubvr&%M!}nsk&7ejfan*SS6b(eVNN2Q z{{s;HpUPntIfuA(J`wudJ$oa)o-4GU&i?_3{!isZ7PwqLcrL6PM9Vk_iEGjwj!ozP z07U<%a+pOf)CHb{KZnvqG4kDN1-K>E|KahX|5G{4A~$Oq+;=yRq%KXQ*Ykz7c~ysp zS#)?R2T>#Bf`_N`1&zki)T=Ph4s7&=btzPbhgo!ZDkrkQ4YNt-*1lG>N6{jYT?c*h zREH!}=Ok#l&N#Ba5jK@7Uc$l1JH2*BB$${ z2ivf3-tW*}w8pmrl6ghCzF%wRvmsh9TBe|YB+rmu@AqnVc<(W%`|FgZpJ&z+?-0cS z4mwYWbwN)Uf4V1a7XtGEtofG%4%)b_N7ZTfq~ zI+pL0q-E6FO*eNqt%)y zMV;NWd1crJ;o_~n%wc?}7SX;E89vrjlri)w%owkQYVF7WHhhXU6WQ^X%~*YtDD8b( zIWoqshRBZir#<7Bn$y`=`q4#?lSNy7I5CkOxZaG$o#;o;jJqU`?fr2p)^nE`Ju`j~ zEoYe|+U3=GYn>;=V?$4E{IzBys|Wq6>MnJn z6U~^o4%R-*U=JR}5*%|DT+3TryEtE!&-j((8F;g*;rU|Qs&&6v8CMU|{Ypt%@*!-4 zHo$pP#!XsD0^NR-gX5)NTMyj)B|hZXb}uq8RJxXB!7zt`Iwlh;jeWsvFIbaxXNS?c zNpYf##mAs8-HBjw+^QzsSUE@3Z{yB<7JM?8ynkGW{?#2^BxJWo<+E9#{$%&FI`lx_ zY*ClZ;PA9l!DQpC`t;l!*`IJrL;;(>-Jhh})u+e2z->Z!b4)&~?%Ii-wB1D}8}}Dw zM8UJ-ea8;4#^_#BsW~`qDC3`v&sfCpwzPfF7Bc07mB^mj^o2#g3?NmHb)c@R&x&lw z&;2ZC&L-0IYJ2+f@AD!XmK(=XO3fqd9sU>|I7ts29a6wNKMd4PR$%l?ivaP?{^pWB zYf@pDR{JTV7sh)D&+zV|BfH@`SZn!+(O%_7iN2w)uQ;;7(Do-zwV*#gzZT_s!R$2MK=)d|tvA{E$pO}nlKyJ#>+5>Yifsy>bzo>Fak1!6 zhrg2jb0V)~f?G-;CmznAp#_1W+;#km&YOwr0KA#%`mkJdefS&<@=c_c&3B1w{Q8>L zdiMnljqdAsVGcKa8%MvU2MF%@eH^XQ5ZnWB_Z%LxJ3$wDug^|oRT>zj{h4M*t^J>i^VZ)pn>lvssV!Z#iPo+u`xss^UCGv&mZjGZ^fK7? zJSOTK29E6Ju9CFd@}`FB-42T~VrvX#A7e|>O360#{5A)1jxL|M#m0G*rY}y}(Bp-+ zqKqpSuCcEHC15QQ5Aez>#kFQz=*C8cR3Ix{JZV>cz8BVSW|0Sb)UU|U-`Sbs{9br$ zR_{-;pMSqI^eW{A8B^VlX?ZN7xl9*n8SvK4k3X_UUXUM<)VHL zg?8-WiVHeMZcX3) zk>BYK?}fEej2*Q=j|sGTrk6O5t+$`)+#DV+x;f(^22y_0QhIdoV*{Q`+;+0!5VE;o zDXsE6(|~Q|R2-mlc$h_p_i1M+IsIW7bq|>&+F)g|J-bfB$oYV2!i*URGtOtIq3Tx#;y;RSD3ZmDoWaR^Mm9 za{qb0fqB&l(x~|knsWJ!sPpw#>)C8~f35X|a0>rfM4eyW0xl?-FSBS)#{MP$$J*Y> zVDEn>afg6T>4_jhGs_c>Lq{n%|`ou~W_qP|a zDu;DOuG5qxZWilE%GTH>u9tXMSR+z#f>=LveJY1p+4pU}l>s=p! z==xL+v&dy#P2%I4tsyIR%6@%^Y`^JUAAsokR1UMq6+pR@SNM~2C#C<}Z}Uy>`T#`N zr*fD@uFJ0^ZeKZsJiaLJ?Mair=v^Ox==xL+v&h94C-D-FVPyVM`Ob9I_KV*2VY!f1 zIm{v#my^V6rN@w>1nK_{JAc=^J^<16sT^jJn|v>cCzjYxuFT&pf75Q?^{x*LUbbTs^ zS>(FG@2%sI>%?@i%!V&1(z!l7UUYpbhgsy>zf0mf{O*!jm82uv0%JH-*N0hjeJY1p z!u0O2trMf=MqU%#R%pzA@H<_nqWfJX_%m%O0dp*pe*HbynB6p`- zGPi7+MTVxzY{UW>yRLXb%%cBOIm{wAr$;g$x-5qnj!5?qH#1l7{{Te)r*fD@&T&LC z-~1?_6mFBw(5B<>>t%faw2JPGo_L+LX*) zQ%lhir)Bn}+gH8+!z}nemBTD@KEcVnmQ^{5zX#Z4bYgY3-v0rJ{!isFi`*BQ#M#}7 zbbU4H*AfGB^$rg}ba*O^Hr`0}vga%HjTyGkKiE{e4a8g#Jfl z7TQmBcvwGlcq%8dz*+ew@w+V>(jhx!)&bV*(78UyqOS|xoy4~sh4m|zrHHnl6$b0x zC|TSeW>pT44LNIvBp%(fIm`nteeBddxqANxAo@R*!z^;C@O(RWswM4qTehjq{%?B! z2O#=CmBTD@;R#7RW_TM~VSyaO>u^x-39((!|EU~ik(<&tnO}LC|Vv{{s;HpUPntxuAN<-0W31`r?F~-y6M|&i?_3 z{!isFi`<`P$^3z{Ilb^sejBqplco260HXg>Im{x5_ZOV2?u4Cuo;yQbbp8)O^nWUc zS>!yelXaH_+@>k1v-()=X8snl3HWAO@6KU`Zv&BE@CFspJ{26Fg6 zHZa(V<~4B>Sub#Ns_PSFfa_B^%p!O6TM|F^mo*KXBpsgjf7~2q(aotG)&;rZ%p`t3 z!G;<_XN!BuYUmTAb9j(Nho^FwMNV~dSQm72RgYNF>|#q&w@NKRUJM|Oq zeg)z7I$wuvg}zSpdU(9(_0%kuf!W9K+ilaeIqe=K_m>~z!1g@tO1r|?+#~a(>-)KH zF1v2gjn=x*lFo>it}kz&i_QsR8R!Jn{b3onKfBJuwV$_w>FXaeM4ivnSi$lVEVMOj z6Ri;2QM{|&Y_^M4_Zy*2J{3%tO&%cL)l#d6Gtx9%OYJq9q%7kb~$h^~l{Yv1OEj%Ur6ccYV!m!d;> zy2uuJ&tkTd5km!lgr*=MoH zXD0LY@F%CC5v$zhnI~MBJM#Xl)wNWoDP9W)#oMb-+ zZw4E2zG1ab7Pcw&$x4U5dA0YnqA&Yj6I>v;phks5={=9b*lD zyX51z-(s7)eX*{uAMOwP`lObiewB9oROC1ZBcD+YrGmxcrtq8Ja+Hcw@5A z^rqO~?v5GE9Xw{4F3|UIPOjJ%2;YR&^)Rq5xE_W&4i~rKINWc`rh=oj1XcHMEAlp0c_7QcC z^lO_NMm5JM%qw6<^ zoIgARdag<#`I+|g{gZ#cJx+FpwxZ+5UzgV(jK@y(@PNL9_B6Dk ze9o+fafUjN31Re@{o;)1*tX5+r~EWgzvMli*~j_C#Jx!~`sK?R(a!tf`{h5iipi@k zP3iM7vJdXQnD4M&bP`W>OQJpEq=Qf2{8sM-p$v3_y8d-=yx6}^b&+@+=pxnq;W@(n zP1;zXc}=jRKL=!rx=dLPa}eM3J$>lPEiqCC+cAO*-pt zGn<m|f>h%U1^6R^Jrc~cCnDy&f zFYR(8fBL54SFu0ieUtQa+QG5moOXR`lpuVeC(T`FC$4ea*0huZv2$>uA78B$=VR5Y z8?5b+d8GPFds^8b`&2Hy|Ad|CH4nzkInkjvR*G}J9?s>-VTXs-l#z9A0}DRmr=9+|oxU@wF7}t58mM!4 zc#hEFT^rbg_?2Et0}p=}ztvfVA#6d(e#F&&DP7UESR99QQ3%X4VV0IuV>w+{Aph5u zjSglVP0Z3NUt{#r7y0`r6CT7`b}&nuc!SXjPq&D2OKn@r)(rkDZAzsj^!8N`QNJ=V z>)G38Ez)}Xdr^<$9^yKva9{%qncpHU#LtVi@SG>I<@X1&rt!X-Lva{=+V`LV>-_3^ z0E?Y}SDQX{7k&J?qlVYjg^VN2bi-l(Yg8i=y-zxsUboNd`r+a468qtexL-4E&75Ew zKjM{mcGq0fn{7P74P!>0Cx=bni~0?+{meca?>D@$y-eC)dMoN@IU|d~d#d4Bi?gKZ zqBo*`{cJx%|G#OP-Kh|olba>3-DT|?v1f-SYKvNLp`Du)iEG!*q9zL(6Ui+TD7oe- z|J(Y<=CO`{NAd=@N01lQp{?LJc82`N^}$B;b!rwl%zp8VFMsB)M^&b2+X^N~&eKmJ#nnWcAv0HPCAIm{w=yHpgJZ7IegGNK>*PSsvKsKa|w#%O|Qq2t%v3Hths*HJ3#=^ z391}sk*hT}lCLb2NbU#9cfTaZZ+a&PAUZ*n!z^-3PDb*l9>>Vd2htNBm;-B=EACKS z8{h<04ztJ&-4@9ko!3Ziclo}$XMVok2?B^tP~|X-+&?=bxoPQ(#O|@o#xBm&J3#=^ z391}sky~#U$)|O=PCnI@{RH=U4Wwf{=l)Ue1ThOvP~|X--21{vPJ5Q4FmI2zPx7T-^iB{!bb=~}S>y(+jO4d3 zSEMNk2gUt)zZ=|lRsRPddc78#Bl#3qgQ8%kEW;c66RKI*oe^eL4$DC9A9y$2_?HQt z6DP;q+6@1q_j&-L*Hby%A99;)B6;}_wP@9CvM=2AtKR1UMqwW$%wD|To|%hZ+Gr9QBpjpFbyiw>{!f=FKPTobA} z9uaNtys=o9#r*PSsvKsK%QKJUTOPEh zHN53DKKbY;y%PiwouJBL7P+p`k-YSR&NTgp{7p|g{!#A)0YoRLa+pPK$y&S)y3w@n z@|)81lOOd?5I}T-Du-F*0+S-Sjk`Hr+*v-OW}W_^cY*+-b5l9YBDec_ByUq-L4UT8 zefMXd_^fw=0HPCAIm{wgH6oJF_UJ>&H2Gg(M)Fs^69f>Qpvqwux!Jv=xMS`9^kT96 z?_&q^-07SkmJ3c$!CvKsz@YM%~N! zi|qWHFZE6kKy-pChgsyBrNMJ%&q#Wpk9_xY|Bu7N>lq!M%0bi!xjr$Gd`Hc(H0s(4 z@mpO4?^`<82U&D|`+Xz%;q_MZTPt@_zeV8i)GY1~vnq%6L++G&Bp+VanzrugEVAyf z?xxNO0*Fpfi_UK(Eq8<4LNjfZpjJSjiPuOYt&KnQ^+1Q9p-;d)Dp+X)BU^K zi#d9V=Xx{NDpC8Meu#SX>zs!Bdo|UZJ$o~jTAc1edIkRw{_klUSDh2YGSCV7&mTv_ z$9E;0c?;qHp0%CNI@Fy(gPnE}-`gSL9pabwCT25n2A%7%i`>|-T)g*Sf4Cd-hERuM zc;_maBg(kf%!Q?~k@UKuISDMAE#3!jH*sKnMh~U4LTiwRVeLd2cg*JM#`;24jBu>4 zn5N-M$lihsxYu65P>Nm1u{Y%9!bxMc7c5?EUH>-#d=inR`!Kp&hLL*}`>6n#^$ zt<3h0r>|aEl09o)i1)$w#FmY%98EN*CgjkgJL0^pZvB+ay*AsBwd5RqU1O$(b-8pn zgVozP)Ubco8QOb;wT5l=oc+VrjhdnT^axYc=V zpZiG?cw-}}xb}s3XF4(c6Z^-p4?Q$<0qGGpOJpxB_`vw0J~U0- z)(^*Dde0h6@B1GnyGk2GHU!4As~!%I7d_mzE9XdUzgE=v$5m06U>I*7o2ik`rQ1^P z9hXI2R>tP*ILsnvk#UZ&wr#0{DR8jSe^-HS9SPiq>qz{Bbr7D!#E=71VSFuY#JS)+ zJw}n(g=RGEM3$)EGH^UOC#^{pS2J`OVt=b(yrkMU56i{AdFq&3+#im)HJz}MV1I#m z^Q4Dc0N=Z_N3A3uU&NBO$6)S22s4yd}n8CK;zOW58E`&Kqf}`_!uZ=G(7W>L~ zre!78>ehY5EUx>y<7HXRE8wZcf)MEI0vo+btk;!`9F}Y5>_J-pP9V?yWEt+TR(xwW zAF`~pF-a(QP8_dyn`bQi@;h?VVJsb7B)_MG?f=1AT(u^lF$VhWuza4cg6#7&Ytp7m zUz*Yo#t}dvYqu7&ZSy@ysVP&Rv!z4lkyUT1(P3qN2+nVFF`MU~NkXg) zw6Tf&mb&f1LpH72W%6(UteyU^^IiMoK6|}3g^aR}H@qHlLbTPUWw362%M)aL>>)#~ zjmO3Qg5W=T%VB#+qjfRh4|2q|SWkF|P_Gwg1H4{7!u)z3t=rOz-Q_jpk(8@*H-H(T zyV?KDi+r5#Oy7@MD#~3AO^qol6aCvj|>Jb&q3GlbDKd(Vj!?hD7u;r^bu z-)FVgMsUq3g_eIM{rHKfPdX0I5pou_61k(#QEC*MDcpnon@gY-2z*ID5jmcdGGXUj^37*20HYw>CCW)1h}Rwtc(Z?w)Z=|Z?g<;^=Z zacz_e)%EqmZP?eZo-wp}0irhZA(`BUOp)-knSTB*M9&0_5h;aaN23}=gWnx_3Y z)r0;Oa9iBhDn(9Us~^`%voje&JI1UMTzz82ehjal7I$PgU2%G~;99jG&pJ1(mv(N) zaN1zNeR2P5-r0&RIc2W-7dg?dR`o@jUO#n!jbGAhKc5k5Tts2#yWE3#t7Cv8}M5;G^U^bt zwCSwEd2CE{W73^^!F?=B)Ok*kJB;6IL(D&U(bH2Gi#ppEyX)q@!~NmhcWRw+8`gR1 z)4tl^vkU3L7j?vOWbZtr^L5Cfue0jhk$g?}q{OVO;AZ59u^xUFgu8gr9UCf&oK~{kJ@W4L1<}rRd$_W@-VM`C7k8z1y|)N|T4C25mX-Ke3);JrHoa0uTnC5W zAAx6lrq<0XfzGUzAhv~mKg6;YKhuVlNT9VHrZ(ay~*O*&6HERJ{FrDyEK z?p361#8TR|dTr4zOA4bHt_x=Gy_Bwe57!2qU$4Sw7JYsncRswGhGzT{znPROE-YjC zT3-8f82x>(lqff)$^th3wlDX;KuPg$>Fbuj_yC>5gZ-g%!{6KRz$s)7i=PdljS&|6HZ_B4i7+dcq)fkXi<(c!7w|FU6OzI>*SMs{3~?}#T|zvvwvfavg44ztKjEaS)h(l3zAiP8xkchA;4 zJOI(*sT^jJ!|TPl%ylxkx*VH!Wbrq>!vhca*C`{>J; zjL0YT>Pc6ydtScY*8zyWPUSF*T+usUekAq}d0SpOyhPXk_&Na5*Qp$4k;CWZ3a3)k zsFchmEdHVQbpWETQ#s5cx9+zuzgn{#O=>OsK^=7dq4#wFqOVgq%pzx71ozIwitz18 zX1CZD=zSf4=<8Gtv&iM-`0|>b#?*P6^f_~fX6xJ>J_FFrsT^jJn{~^V#|$xnF=DbW zo!uz7c2!>oAbL2JgQyX5){lL;*RNVMJm8494%qBsorlA6(Zi`6W|71FO%FGv?HftI z7Pu6?@2kEJvgqN`ANuk)Z5q<7Yw|g`7S^9pv$#LZsvI60a&zDM^8AZUU<{?qdcv4= zo!0{p-JHr{7P*B_e0hUu&FS|EGCONyq2A#Ehz?KXFpJzeM?bzHuO;2D$@hRsJHP84 z9)QB(DI8{zYZ&LtEu7lW+QX#RL+7S*cmSfqQ#s5cH(|RkPkh~;w#}A~cEa%wdWQ$# ze>uz|cV(0x|FyO=wX>Jkz0Juiy~6_#9iGZz7P-SOeYqhU){MO>?_s!2=kNeTho^G? z%XaJM#~Cw+aU${?(9|>-kE6IgyoS)>sT^jJ%kAvP>;1BzZrSqrHtFOCy~6_#9iGZz z7P+Zo{CIItA6oXld?rsl3jGch*N5ez!&5m?E^vb;`|-o3{ps@JE#lee0DTN~4i7+d zcq)fkol0HVWFIm{wgrJEmjs6UL_b>1Me(05Dc@Bl=I zr*a|-T$>SoobMY+XTMu3vd*v;gwEjshz?KXFpFGqLqC40BCKIqVx`DB!5S2*!^5^h zho^FwMJ{fpA8*X9XvtQKMb_oYYn`vdEc!Z?!z^-DEBf(%^{nac`7R>s0b|Z|UJtY2 z>r@W2$l-J0)L|RiXVfflZwi2QBy_$GK=gHmRgw*C*=EBt2fg&v8C*?^OH-6k&vZV+Xw37hh^Y$5whH%2@H>3F|h?Kf$yA z#);UNQ(Gq!`qEaqwBM^2v-+nx@Mo_h=)w`5G_2o_+Jw!vsL0(aMbV`{Ei|l4cpVFN zqg!R(AuWQIsn=Hg=Z~so$;KYHCgu7JrZ;}c`^Fj=-#u#TN)q~{8m-q=`j_=EfA&3h z53>4cHM;MRbR&M?GSXoFu%K7#$fFPT;yCvB7O=`@gqANAL_#~w5yuf4ozGkXd(#P( zgUHw3cH%hJ?a$L?v3~!};&EWMbz?%CRNP9UO3o1b^93K#Z$oc-)OafiDFNFc>;-)^ zW793^f=fQ+?c(X8E=Rn+vqJ;=!MY8Bq<-Wykv*{CC)*O$hlX}oM_#XjYXh>$YreCt zRijA_)`3jh@la%gy1a(Dv%*NcvlBJHyJ|0YZ8S;o%@lR213@c;@4*3&{(Rt+CN4Pei&Y^)Ycki)aQsHF<+ND@#SHaqa z30wV1{)-CKxIkV*-mvY@Hh)sysw~YrAjj}7121*f*Mp2(a)D$eNN&@xZ#w6OZI8}v za@#$mR=u`#_*m%)gWg_Z&0EbQd~8`7F-z{xb=@!B*jLQr*jMvA*5q{GQFP%bIp4Jl zeA|imc~{&2bUWQJtcvjC0hLCx4-al=9rlIMS|zIsKYp<02$-)xS-%2~7uT<_GPz6) zC;QMw|E|04@$9Z{ZC)%F*XFgka$GpF-rZpQ0%RvYzsjOsYvg!?F4WWJyf|-;@Xf~Q z{&DiTS{E8!TlNo|4QqXQjiX)zhoU9x7MeNTX=5W^eE8x&y9hefqzw|pw7Z=U@%QB>7^kTUU3pDu5%0KpA4pLmoW{wt>tF0XTcY>r0>CW*W@)C zw$%}nY3%%U2VSO2D(&*?oA4VOwa=_yNgqCH;&EEjvYg0TzdFyV_3`7DEmEoTtvpdb zmxqs7AD0GcLw2mAxwYk5J=Ig^uqJovr&Zd%j&3Rqo*&9EIX0D*aH)}I-)a+l?`|N< zsJe6jdsn|!+T=Ey=%J&T!Y$Qb)P?ywUDL+LZJ^y7_Ymbqm~~+N>fh4xdim3{CLKhb z{RUQLbLOXLNvq=wD_hhN=hrN(y>1-|JYHN!B4l45`UB=$>e#-8ybf?ZkzRf1#?aHG z)6pj4e9X$cqVrtXe(1SA-+f{j?|+fzSwx98z4&1*J0E)2P}}DsZMII%8~W&xdTrB!FhDYaqC%Yg_9)7nX~j z>w4M0VeUx}I?>Za)Xz3Al3kk7jRZ~bq|0A}_kn|(l^4zGEWf0kE!s(^c#RkPyMH^L zof}j)EpC7jZFpd__}){}Z4t9?wVX6r4r6nNnTh>*|LdIOL%PP zjMOZiOUy?6aNyQy4y1X1xxZL=$5Ho(?T7nQIm{xrImVG6u<;-t`v2>%oO1QP2|)Bs zDu>y4;EwNe;=iI+6YCe!UnS1U(RnGXGkPhN!>r(1Iq@q6e#EncbWkbahjhLPK=e%y z6%Mn=MVUMC^x>OG{lVMBwVUJ$>(3}&3d=>`q;i-=?spp}e&2sP*`6!2*q21-n*c=L zq;i-=uF5tvN-Zue=zDeaUdjhxtxlVlfxLC4zxAa%IP3M~cMBk)x z|I3oHPB1Sqe2eKS$1I}@()lI;(Ko4_$O7ln!-?0+J4$-jlh0{x|4Hwg0L1;N9A=R- zggNqwR3qtYq`%_MdM}0Tj9HZvS>Q@Oa^mf_T_Dre$oHAl1=)Jv1R(k*mBTD@OMW== zQrE7Lx$e?^r9l5Roo@mVeUr*z7P*bHocOfrcZrrSvxgT+-}yf;g>^>Xq;i-=&gHTr zPa2#-vY$wA77t!U=bHdT-=uPwMXvlLxUTkRlJ~3SyWej20=;hn5Pg%%VHUZP_Z|7} z3m-_a`5y7x-^_mL-4cN4mV7Ha@mm#g{=bY+_hMZZc4vfHmBTWSOFQAnnO#22uPGhW zCg@+M^GyIogKttf%p!O7q$6(?_J<6aEgjUR1;u*b1R(k*l@nRujublbOVdixHz_i^ z0pn(Ek=u05kx#E!js{+p{nu977U_Kxfasf44ztKrF6qQiB~+xBOUV8? z^G87+AjM1Jb%4G}{b5$+uztv8{Bq=z0!(R9Dd}Wz ztgq^puncrdDu-F*&fjw6joUY*C}6@TLKW>lFDHg zxmE+5c;tkQaH>am+RytoRQCE>5LY_I7ppa0ubGj%3&5c`=d_0 z=-@~?vE@4PTXg|XqjO7`1-GPfm_=?vloQ|b_gLESy>v#7S6}Jf5`gHIR1UMq9k}hp ztDLc-VOu>!xlZ7vbZ!YibW19SS>$dToOncAYwC1NIwR~ergKXGqFYiq%p!;XG3)QJ zp&P?(#XT(W!DGEg0uVjYhFxQ|xO=OqX`>q?rn4n#KyawjZx@3X-`;oYq z&8j#-8+mID9q(Gjfamu|g12sen8p36-{_IUZ}hEFgUNpTD)e#u577n;#)w6R`I8q9 zs?l}pzl;Cq>vzL^rDb~2f1Vgq$C@U+aeu#kSF?MideIWkjOqMszeIno-|M|u|MTW_ zn41ap+f+^T=R$5f8%5q!s7n)Io^Q;q-ciI(LEoN;)%EG<{oh0xEb#}7ZEi-lwzxyw zwoKEIyRoGaYrdih%xid?)Sf55V`pq`4SmYZ=!!0nNK*T0;yvKjrp7F?*-+YUh8fx6 z>mc6q?)*K0wfk!%z16Za$t`vej_g6l(X4H|Vf4F|8L6|QuXvZd*K!8?Z9ImKsM(kJ zdN_&f^FBk^#uZ~}-rJ8rAA7+-LBma^8 zOA6;Yu%;Wk)8Dq`=vlvHku7wxV}1vQjYm2{~SP14yDv2D-L zPi(vKb+T>jJ~Fzi^n`mxe`Svkq?0!l_mRr(FGO3#O~_{Hcejw_J|X1b#2k_J8JMl} zSJ-~&uheq!II!GR?kVK&Yg33_yQgA*KGO@?ejW^S*f$}j3Ae@mmYCgRQ6-~^gI|AY zoGbqy>|F}$B~*(ho%+?MSuj5ama#WBhrOv1O`4@Oq6wAWiR(G>=zC^VBAmQ<)QDE8 z^FfrcH|aAA2UqpE)iiQ^9`xOU%0$@a>D&_558YDfi7SbZQ6d=-DX$kF=)2!)P8_)z z^^^2@{za6#jTN(jefE&fi9botJea!;!l8?b*y=GWNtSg@+M+aEyRg3v=%uEtBws?q zNar%&MRqoL(Mbo7lQRBwsM8(kR5wHaSj&(UVzz!YDV*_AaG|b6EXXy1ygBAU-X_Sl z4+4j>Cu5VLakYyy$YrI5ZLst65!PUakHN6&0v!^ySi^E-UtVC&H;$A0FU+aOOn4^4 z#_134>E`>#EYA0@&YOoE&YPF}LL=rm=5)f*W1=q3;5-@?!nS?}I_V(v%YZOCsPe&` zw2S#$>6IsyMY&5mHe_vAbi4=5(rG2D#Jqy}17sE{$PpTEEeTxo?Ah>m`K$>t{NS z&H43KGjR;1fm=$aVY@WyH<;DEQH%W3-iz8FIW79^%qm*K0`9a(^X=mgbJ}rHZkef! z%{*;J=9XVd16s7Tz^r|-2fO;c8o5*7iw-gm75Czq;BHixi*-hqyDfeTxt8Qa@7`M` z>b&-!=WI&o1w-ySM>;Kfyx2D4^$8ZTDAVxZoD((4n+bS)-mIM9P+*4dbC4=2r+d-|;7Or=u zN2_{@Y{|`@%yCbvG~*f$v_pm*D_A1HlU*y{IBme+{xoiI8PTRyf`+sC9xt^&hY!)w zUH6Ie7Wpk+HwPHj59a`j+p(COPMK?n{9+;6ueI4)cEWBU+3>*IFeq_>0j~|q>VB+U zIY$^5zShuo;8an@)H2IhJr~oo3yuA$)rer>bE+mzW8F(HAX}^Q*MV&o=9%ROk z7Z(o7RTY#s}A$;a!9+nI*Gn`1pTCedwf2Xb!vG_ds#7%w%9yU>@T3=7&hIu zFYmO~fvirG{W0S_^ezam4Rk^Ib^3Cf_mj!Gk&+7!DAHxI49q$f^yT)IJjneXvJZX2 zyj;CU0uVit%3&5c=No-_$hg&{#&+qY;_bfcJraQEkyH+|$YoyY$44IbBeB8KEgiP| zruRqyqDN9W%py0-*pgSQx``}3y;)pWiH_g(9tlA7NGgX} z%%U?=Im{-{$zf}6_2s6M638o92NX7mZ90$iZ&v00mz}@Vl1HC8N(vn0x8oyr*?NzJ zS#UfmhgsyzZ7sQXWmwzjqV!V9jyZad1R#1Ol@sLxx4o4mPn>Xp9B3xrKN6gC^&Sbc z;E_}gv&eNFX30D3yGBwbOD`1%ZLjl40HQ}yIm{yWr+hzNSpF_C?kv4j^t=MSM*r(zS@NpO{*dRL<$LW+*Z;UB0MRY^Dja5! zyZhCWKeH}Hzm=8$>n1t<)Vn3jf?HBK%pzx>+E?^Fn$tB-+>1v*UqqcB0ucR>%0bi! zxkM{VxaU-)4;SI;%l|$O- z)|gV`D4F$#^*MEJ2|#p9Du-F*-aqWiwT=yGNSt&s>tKI6w*(-%C6&W0a(-|7@}D=F z&}AXg`?$jYQ`HaQv7sMQIXn*Jvd{J9gI$}`H9L-pc5wvnqq-o>q6=E^x-b9hPfPmb zr>x)n=mK39_lH@P!}=ljF}^Rqw5$#7bVv44@<{lhcS~3XxFwatEOLB;C7;uv0}b$! zbIZBmcoM}yVg1l8sT^jJtKG$t*A3}RUwR!B_iUF_U-WJXKy*tghgsyBSFq$sRlCzN zrm~Nc)A6r*w*(-%C6&W0afI86=$2Ftv&e;Qw&cs27--^K zdEd2%xxI952|#p9DkrkQ#niCmyMp`B;tTRQ<8a+pQ#LcAq^dCZEoz3V0GeCLJUEdhvbN#!uR2)OP|EP0t)*3@$G zJds^?|EbSM`jcu|4H~(M=7yFsEhJd%an_= z(~k8jS1yJo4ILu>+itCEuJ=u_L-b7zrZ=WN8tf%T7v^eEgwfM!omg*|rnKzicv8W1 zuGruGNp0EKuTANpsJ*0*lXNW)Y}&AiHwVzbLvbX`a*()hY&!jsjk`5~E;+G_RQ)ni z{2vcJ_LUV3?MY8HZAd$=8Yui#QMeBqXWf%_YXSGV1(n77R#Es`)?bG=N>z1=s^Udj>3bpBm*;S>h@?Q&cfSJ>WVKA0^ z+aK{A`&Y;sR;7+P%*AL*8+lBvp<%B)-iJqoqpI$?o z54W z=%~YS@PA{F$j*Z`G6t{fO>f=Z1^rz{iR@gsAE+E=kyGD)v90j^_iM>5l(#0psd&7Ul(;Y_Ly z09OTNq&k0P{YRvbH(!m(3g@$8+rj2n+0E0zq~ocQbkC1GvA+O#{>Fv-ljG+~Qq4*B zQCbbp^YdF^Of!tT>-SEMv0JgHfHm^nr?p-2%y6K59g*$xz=Cy**{OL?e`0uhqp~Q& z@@@~deMg+OA@{7o%5=Zjg#~O+(Q>Nophaa)YFNKwJ5M&t+k;eEUZ1vFl`XRV zd-9nxnMXb>t52Vm%n?~!CsT7u)mGPzr5ie(7TGVSHnM+)t|Vzg{K?Y7_abXO{4L&KXm;Gv3}T}u*NbUlHpRHrnUYmxR71> ztkkDjq+|9qa=NTs%XI0eAFS=s48R>Ny!*5K-F zlyv~F?YDvSZa7KQdCag{EC>2fsbN zHA}P5w$SvPQoQ9^H8!sgvD^ei#gWqhO;ytPfGD zLTfE`Vkj-Wv6iUIqAvB>($0;wu&iy=;c^X8m({J!Sk$DJ+N<4L>5>N(G|c)oZ^cFo z?aLbvJxXI6{ubBYbGJM2yX?cAEmLXF>T)a;kIK^ZdBQCAc~Y}jKg_C*4BG`AS$DI# z+`r2S@J;1KUE&XYVtIk}xc1{DeX^>SsEfmko6PycVJ)*^63spT@A|*~8{xlClIGVa ziSn+nUI*;(mv123)9D-e`$JR1mGLFS@n#L0$jVhHAg!;=FSl)uhvRfq7HfhTSmO4_ZvS z)OjdekoAvnHl?y=aEfrFJ6mN77c?$s7n>P#-ww?)s5p@Y0 z=uS5~wHD{i=Idd`7d|yqjB=rm%!Y{bJK}vZ``P!Wq0Yd0^sLJW!HxfLjLo=QhMf91 zpWeFPS6ru7Sx4CY^J8g?^64aZbbWE&5?))f7N5q^{^4$l#KI9>fQwJUON?|C z?yyX_D?7HMep>#RA=L4?jcBXpt(LR&m>b&X2fOIG_Cv+_xOF#?H7&PCyVYg~UHyE5 zIF6_vyP5g%#%ZsIH=|G5EE3P!lFm!m&2~-F-ktx8zPveKlu^Qa0UMC*O78UZppK7v ziMI0ip2Do>d6HI8jVk+s}^(>*W{5I)uG?@ zQ7tC=5S_8HOB!ZZO)bOt`MNxG{SvbA-oItI=ILD;aOl!h4mKIZ0@vVJUB0h5II^SC z!|k{Kp?7Kj$JKeq_4xh&KjLj=&y1|h>`lGSleaB1M99n@8IcA~LnxY(N-49_5Q*yb zx?W_Hy+CG^LKbq`T4E zSXakAl?8v7=Y1VsT&!Yl)MoN3b>t;o-^s?h>hE>zzgzOZ@@Onmu{0DCOH=B|OS(0U zjCF&$U1mc-=4;_gaW1ifxrw;Q(v&*#l1@|4SQp}u#VYp8>lXJd`=e%QC=|?1p(8Kp z>^?Tr!G{MdqpSR#=Ve!>W@#uSmZsE^mvoP2HPhKldBFhp^#XbQb%6W zwemC8eO;K#94E?*%zhcp?N%^1>MyZ0rH;I$Tb0~GS8Yo^yBjKVE~`ZaYL+IvY8`n= z=Qy^d?(VlAOlm66&+fZ0N6o`fNIXobL#qMlv=*&&`J+nMf)=sje${cs6EzP*FYz#? zj=ZF6mepEUb=7~&!A16VUjIVP!_Z4SOsOL;>8h+V(T!Mc2yZ%`5OLeBdZ^}M=p`Pe z)RC8T3%9q>J!)GG)=W$g-VQ4st9TfVGx0E`j=VzGv6*h)r9%}o zrYqb%7~V-T58I6UGOD;43W=L3b>t---LvyrXyENS`CjLMdmO5`848J;DRtx}UFCDe zx@ISb!rjjDy?q06E)_Q;FLE=bj=ZD`_}5s++Khnj74ox;)_$qD848J;DRsh&x^ypN z-O|+2V7F1`VUCz{Ud7E&NZd@RBQNQmZ!p%q?_dc(n)!-zZ8P#K75hRVv9G-zc+3w^ z#QY%gckL!*X-Y3vXFy)1j$)85EYw)%($fl_-;mkY2FzovVq_>JMyAw}mvkPhjCCDj zro)O0F5(>D`0$mQk)eJM)ujnSU1mU4$OTr zPsDJ`e$4G|y0eb``a{A?`JQ9H3-^$z;mlGTdc)v(DPpV~kQF#zbz>9Fdc&eLTqlh6 zt;BC8Wxi_~7s_|tX8%C=w_Pi6I3wrOru`OwMu>x~YA89lVT%@2*VmR@cPghgE%h;NN2!!Gh^Zzf5{HwQwk z(egj=hXb^H*n(a#<5Pcle^1WaU3kiamtX1)YgYAvo5je|Fm6$@8|K-W1=endSSS5R z@jdh1e-xkMVFRm&9Ab8PtHpezeDA@0==fPsV`nUz&|{SNo+C%TRcNiJvEcn$|?JDkkv>%+XHG@t)MvHHak{D0kX=y(=JShiv&&ILX;t}Hb+TFl)ata+C57Jc+tj5v?ebW3a zdL+EZ!;84z+M3KM@2+Nj@5kbNiQ8GsEe_Uab(ZC8X4*d#^~GTx5x?A)@O1GYwm5f* z@E)F7zz142hg$y*W^X#J5#Fn#o^n^$Tz0-%Us!)0Sro=SboLAHJtv!OcOC#ab+n?s zaNOgt+HD&)eVHBXJtTj-ti`#APL3%oLn{z!##;XH(vb`l2pa!M3IHd*ZgUzxazw zHmp^CJvcbzxA5-ruHfUgO=2x=Yr|A$EW--jw^i_UdnU0>Z*Abr)NoPec>XJYiSz%S zeXIxBTYihSc;UK0^5(lXf|-?M?=FA*=cR~2=L^LskNKcE60;PlJyEd3{;M38}ti$O*gOohz+4?**oHJ;gQsGbMFdnV%?>^QzwTv<>-T*3 ztNd?aYh6%o1nix7NnESiUblIr?4~+5%{kCksU}f?_;ZA41*gA(mCQh^#Kg&+5k!6*Hpxh#4JRAFnZpUk@)z48`%7{QW35uGE+{+P?|+ zR%|ZH=KP9LaT;nLahef*>$3VSH-K;Z0kZB}3V+nD0n;B?2i4gq5!d#Mni)}li5V44 ztHz*W4QL)s5xSZA>AXXJbKKK$1C*~pu7bk(-_EER6ncq4mDaDOPj$b-I!(SLo(pDe zH}EO}RrP+c7n$eSb>iOHzxjGTE3%rt{Nfc>GulJ^6X|Tafsfl~re~iwL7k2=& z6@Un7mgM7ZSD6AZZ&@$3+=oK{HBi+W8nNv$6pr2v&Aj9fniX%Xv^-uKD@&z zoQE@W8+iT<68-S1*oApr67k&F2K=Xy(D_uj@~>S}SW4S%@VcUtm}a`3jc2nrw(@(^Ze-zI=3JF5o+UxuZy!Y8UOW!syQ*E1*60&q z+O_u*9iyDPd-?mhIodOm99gRq^1O9F{QgifEz%Lw`ka%a?Vi7k8CH{ZzIYE)dT9*E z`*m!N_D^jOwxGYSxL?sc6cv}E`jAU0b>t=8@@Y9*{|Vl#qk+t-XwNkjmqHiy$V<8j^>efnjY8Rh5}8#+FUP#y3VuanKwL_x zBQNPJ{=C+98Xv_@Ma%EI;j8|rxfBYCODT2aC0(O-Ioi8n$Jy0FnR5j#ELC$U6cU$G z>c~sF8!d9QQqv^%?{N8_b->(GHJ3smaVe#ayri3Km7}%Wl*)Yi$-HS7vJn-RLLqS} zrH;I$``0x`yDLSiy$V<9G%xWWf)W?q!IR&8yI)NBcb z#Fmsgv>K3ZM4xxsxS!8i%7#P2I~{ZTtJo5Hi7nmC_@w=}Z7y?tAoC%M>A5N|)kj{X zj@n1Mw&r)FI#JP3{aSm$hOK*d;F+1%rIWtVaJsXpV8bpgd*d94SNs+HPg3? zdx?9KL457WJD6X~39jdxiD!3wkv)%H_K+1ebAqVSmOAQhQsEk&b>|V=)p0X~j+!c- z=O+tR@*G`Ved_NO&}2e25o3ab5r5Raw!VvIDYST0L&TV{-iY6y`c6BbRVlj}ku3Vr zU}?IFU(py4zv|uTqqh3SpO{xsW>Cg+FRB4=d{{_mO8+A|TdZ=Dcv6F;BC{iq&D zy^Rv#zkMe~+{|||s8LCz>xFhg<0`m6vCLoU zIH#$&8MTGDnR0zMd1-yOY7IUX(i(i{*z@dWoh|sDeoj0qBLDdC#r-cczkaT8w6R`1 zQ;wDR^1$G$EVhR${Ile!czzr&*{Ny^#h|wQ_xYtZHL4o4@JN-%)bqTG%~AV^%_(){ zZGgHvP2O6v$l49=V>1&7qgroKi<#($#>0*22XiJ)EaIbio;cdkK-740HLSlVN9eGJNuQNVt z_YH+r)#YcN1Md5!Vtpti)~D2wmvlSq-)LX=9|78-@-u!tz9*_!9}0=}DRtx}-KFYp zwB^S~gZ88RPO}!*?5S8EdH+X8UefIvmZPmOvV=#D^84R9{61H)J`@t`Q|ib|I{U{t z+MnSQq4zzR>#h4Au1Dt(aXqC@cv08teU5fiXDjfU?kS#mG`~*8|4>N$PpKm>>8Q*o zaXKulyG3{%k=LpC9}0>8DRtx}-BHY+9@N4H*d2S}-Td;2n*X7Y_@7coUeZm{td~5z z{o$3P{LWt-bc`QuY%i_z^@pzZS7na0>o|Ax+#rqi4TRF@2I4+musKDY69(&}oG{8c zHWY*A*u-uh0BgY%{x%vdzN7ve+|Gw2OoEM$wyeUNZ+n=SVEWz(t9B zFu!tFh&y8e=Wb&DX}q?wuT0_#mvn;qQ-%VpIVj!*KIo?NUg4b~4a-_3c#9bCF52+h z_G6?@&p7V;Hz|X>?{2K%Nwp?PRbRS6{j2F26eI8IY8AsH9WlIKJ#66V$XHepA+x@( zdxr8Vxi;Xp=Ok;Z87X4?+^^P=mvoQ)XF}2Flgv3r_I`|Hyyt|r`ZqOwa!cH2cCjS|MV5_aOUfq@cqxzrThI(!Q+AQ|NZIq zHTcRd=cT;CCjswSdg{ke`-ZCZYSb25ucn$~gM~E5=G3{@y0KCmvpKv*yqh^#)#S&% zzSgBSIK}G6If(a{O_OW#=Jq#rj*U;TM@d+QF;Y3c5N(ihE~l;&(o>TO3=cwSw%C_^yoJ=tSJ#Py1HeW6)>TVr-l!GnsvjSGC{F z2HdC&m7kV~^WGKbzbL)b5AvRC702wmPl5zVet)LD0hMi`7}OS<^Iuruk)iPN;9=30 zBaa^Q#+dtk=hzY8Hvrp*y8YL1?rO3Rvz+mR1sy9DabrV^_{uaN7FPWQ>p%RDDAOc1ur)jFLJRr_V9hO-t!4H1V zo5wFBi>y+40hD{oa}qr9{o>D1 zv)aMAynHcMo|ixIw6`One$D~5py_l`b}+VpM`Ql`F}+8?*KYE06Kli!tzmpYZ5TCN z=9oJ%t}?GZwVCqTJ3NqBcwA2y?RQng-EiW!s*H40rpy&a?W0^_mCmQJgkwFyc&RD> z_)0gQ{?K&vmgl8eWLt8xDf^_=hEFtiJG>NL_GJU^qn)R1JgpI%I5$hQ4<26Ti<|D& zp88pjNfYmj<2LzH4llg?N*hqqkj=4pD0EZOKk$+D8|W6*uEx?Q+!eZ^S0C`ft|t1U zzjwnq6I^SFV^G&)B=0)&ZN`hfX6%aosu-)$Z!-9@d~dDAvsUbNlmCnR=n}th;(dl= zlnGm?za#3Kc;^wHIb)A>IwTytEOJHPUO({RS8|N?v6II_r>I?mJGSe-oEK-+)L(CP zo6R29Q0N+J+_?QHTXtu>15~(Ki8inMbdle$v>d;q9H2#4YY}5Z{v~c>6)F9+E7s)y zY9iVp5uz0qdBg9@Sd1#zYTtPIf(vxRe14hb1{#1 zuWj(=tD6{S-@iL>-nuu_I&Ow0&j*XRTfS@gR)b8bZg?WhpY=tY_qn(IIZVGSJvoFM zLI!=6X#8G12;k$dB(pkL->gNGMc?-R-OkT_@YPCxma&=kyG8qEc$KIb9-4{a<*mIe zwfb<=qJ7Cc;hj_KFi(Aftn_dt&6*uvqRj((UF0^+Zb*4nFD-_aOcrgnYeh`QJL+`$EMDQAnInsUt7x^!I$VSAXnh5eMXXZqB%unu-&m zkT{`IM_$r3S?#MmHY$qc-jdnjM*OBzaY7UlCsgXlOFHUDXXJnXfA6UkbJaYNu5;pq zN*#Ggw{7PhZR6HS>~6;paV)7!#rjZ4tWT*!tMFE8?5jQLkjjn^!)FB+E}2uTW_?&l ztWT*UFX_H&_h{pDb!^;2{J({TGiMj5SsxY>>r?8;OS(%gzS?PnFSC%h5yCrp?hiHV zLocyDrH;I$3y<~J2D@glM(t#VH*#jan)RWVSf5fyUeXP39<2Rw;Q>pmE5BRxp8j0L z`e>Yq^(l4aC0)?kXzk z?gZ>{@e$rFzfy7Un%(UFo7K>M$tH2Xa>w}x8!PR=HT}3xa1A$cJUm}N;H_@@uvz0) zz`*0~;-0f3`w`z#HGo+Zt%9E!PQttW>2pvKPWs&z??VYi>(xvU&BO!`jk?FC8alzQVefH_JptN9XotKJ!>>B!&e{<}t&rO(tb7KCA z`5={HS10N)MkiMTUBYjEi0T?l%k%&9uE7v{Od9$w)G8Cnfie7wXrJjrBlb6w%( z!bs7N=s(+4Opsy_6U^^?mAS8T#hjGWgf6bwgZoy!%>Jah!l@ojJ(5kH^eq^gX4361dB7T2I)g)v9byepVv#fdug!hU*2^YvCMHkx%_{3Tk8hc- ziSca(i#mJ|V>}d?!Y zKT_Td){L(!`cc_)C0|nCTYI&jF}U41D`J=(daCAxSRZl1FC{%SJpw3GCiM9+L`<%}>T}QKc%?D=D_l;;v|519md$vcgq=5m=uT5c~; z@kDAf@kFH#iwsD&{OTU1)z zalm}~N_L1|VuDH?c}eH9+gJM?*S?;LkeT$M_@62!NO6e?Ds|)~oz~x18}hyrG{}^> zXwun_Dkex?VuDH?c}bUbXOA|=&J2t5b!aspUHg@Lv{M=k0HeG(;a!~i zUBwA025~~Aj=ZGv8{n(e?;i{n4UP-%YGimSo`^!?iAo)LN%y9cuQsZg24?J)*Z!}< zHH9jkh(h9tN*#GgH?O9j_HE2iXaxWFZw#5BiYKB_@I-}9TJW;75FX=`e^wUo6X9;sQ$p3nm z-Of>QM;d41iAo)LNp~UEPpeO#2#r#9iE&|I{hPBp; z^WN#%bH02=Zx*~Y5%UQKN+>fZc8}#x>vdxu-Y3DYe~?7pH>dR6-MZA5i zeR~%EWOJtfwz!`6NW?f;Z3)MpgKR=!sfDB4eevEDVQj8qjN~Q8I7mumGb^u#=mw5r zT!M1$s`E>sj`B;H{JE_gyJRp-f3;7H{qn=rIS)(MRl=Nw!6WvGadrr(%uhwlmwYlk zp~>rdqAf+S%XrRjJ8AGaFSu@4U%c0qMl9#)6BkJjGrS;v+FjA#(#RFOsZlDfX*~pE z8_Dl=1#wY)q1#!hZ{s6S(l10lmKhN|_hgF1YQ({lqwNG!C||jgKenbdkMZ!T$*A#_1@fB3#O1L1My&ur>xITu{X=9&CPDc)CZ z>R4R*chQ!enCrgslVG;{xsG+}{eNEEGcn~|vJ~4i5mt7V-(xGBy;b@7@vs?Ce*V7~ z{F%Yj3bxd&Se)a*n=p^Vg%h13nq+1Lon{UXw@Sy{^I8D86;A z7c!F^1=2(RzSLT-Iv6g2v1$g+k_7IQi8nQY=Q@uMI+#E?1XrdiN=b*GgRe;qRn z+~e~!^BvPIXk4x|ap5a=OkyUPBVguK{O5&bJhnuYe~sEg`PY1LKY}ME^WpMZne{p1 zzXXd{mo#rL#6x3q`P#Sb+lGJoa!F%|`K3&M;JJb3sjMY$ZTC#$d?g;r+V7Pp#@t@* zdBK0tNNiI6-YP}CQ3 z`UfxHmCKxNOr$o8`i`CZ%#HnWS>;idU>_yVDUZzfqNvZXr3;V^7mBk^6a+iI=$X0ZgTt-DJUV-C*EQ{ z!fW{Cg!CmJI-dzcnGdqkPZ#vtc2B^JM@O7}kOhZLW#?Uzz<9RUSx+OL-tm1`dUa z2n}1~Q(45gFrhUsdipO6nPbVepQ$8bT(WA-s~bqt^roj^>&1Fvtn#&oF;{G+WF2}M zth-_v*7xS>abC|MMRV-TIyhi2e_KuboXB_VJS{c)5)1VLx{9&?GvA9_bvz^8zZ`?} zMLUc7N^G|Cl^&<1hYwf(vilHpHtHzi?&#Ek&+C{e@zIB1eYrem z=WKfoH}gEBNy&^Gv$Qgc&Nb#)AQZ*&*q;@qw)FF28=xzgu2JRIpP#${U@ z%sp}DvUEFkAN1^VPk8T{+VXFZDSfTKA5M8b65bcRY`C41Ub@Hj!}q|u!uzKGJbvWA z_Zf4|>a(nB4;h^=3sZ2Kyj~+1^=cUNoL*9SRh*@pO9-BNC zUb}PORP~`u)Td;x6oc5SvW#?8X5iP^+$3`lGn*ob`fPuk>k8}ugQjT@oF7DYK&C_}0h`o|oDQ9<{ z#Ebj$*m`07W8->s=g<6)f)^|81o!^XCcMf(>0SgZiBJQjEdy&=u&ItJC$f_sE@6^4W-m2Iu zjWe;={k@uNyQHkb{Q_~mC>HkJ@t%hk7H8b)btgf zhOnTf;(6J4>k$5YNE^LXC14h!-olD2*v`QRRO%($Rml)Wrt6 zk~IYy(-gdqW8u`)d~S9jS9)#{4?ngCh+`D=GllOi$dmSOkB4>xFWdH*FB&Gccm8({Y7U{PO{;5EFgeK&pbYkTOHj%8>z^jX1YnwaWi`gy`d zvsj_48tus4f;#AR8{DDYg}p*oH{F%98ZV`WW(m;gd4w3hCA3g-7LYx+r`%Q;t2wrLn&;Acpn6=K!4_O%!A0@$o8evg$DVx^*KM zPqP%`yba5q-apLVd|3}uqGyS5cKduurKA3m&izs(YqD$utmrXAc(;DZRL}WDAhaEmG#kfo<2v_ZsPBCbo z^y?cRNH@D3fXY!##CxJsBMrZh@Id}# zPo8i?x?DK|+P!)%uHQRv{JC9Fc}7s2F-(GU;`sK9&fzXaKQrDAYz0;e&x*Fp=lEYz z$$YUb#B!Bh>f8T%sc+=9vHF$)Z`#0!CNlGl^v2wuN)C)>;=4*6c}bV@?q`P4EK|7L z`iy8xO4>UW-=%ROzN^%cmvmd^{>*6oxD&Lp!EaqG42-~>14<5zg~WH2I`WbZ?@Jji zx0*rT0NG3ZQ1V@hOMEwV!q1Gcb$deW)01NSrU(62d8t0~Ds^ZzAl>M=?-~7~`haF@ zlJL$wUZ7&W6oZ(rQb%6WEokvG<4=bHu#d@W!J2NlriJX zQ22MRoZohign7jk44L{%Y*?uyFX^t${hkriVgxwZ$lutum)@%wGI@y&D|O^09X^vY z?q9-uhq!M&78%c!7)Mj^3brH;I$+wN52f`JgL|)3W*IXb>t=8 zOpBt7@T7^5lI1PpuEsopDmIKlV#7)uc}Zvb^H)Z-_Eu1L+jik~z`Y<;Y#4>ahLt+< zk}h~jLB{^*>EP06tMG1p{8G(^QAli9sUt7x%FBy0E)2ARijixDcQfXFQ?X$b5*t?P z$V^b7u=i!-))wP=fd2q*J`eeX5z|9zDxBH-|dv$ z4r&iL!_EaQld#C(+49c3U$^}zK< zbD(MZAr^5?Uc*rkIFaYqwS`f)53&0FWWHM%G(|Oslw!~v(vRJ7KilihtViA{9mV)C zSHmCT-V%n%t5~;f^1RZIvxlj22a=a^2P)YsdHo?!)~@*!vAS72Sy>2PpMi(yq6SPZ{~KU zF39!fz$({GVyu=t>%s%ZxUg0;XF*RZF2-uX!;bvHQF~ldj{D}uZWUv-;%*!MBfFz6 zu5dK?z4j4a*R(pkMbTv4(|Tjz*;o7@kB#1bvL5%THTm? z>nUK+QuZ!?)q~r<9>`8?ngT|jWbf(^1Nq4A-C51zi7@Mlzwpj_V#fPysKgq&S%XnE zcM;b~TaQ<1^;NUo*%~xI+(g{1nGN}!hTk<+ciF&~Wv;@z@n&sD@ zzy@yrCh=}P*06C?*7t`1iFP`t8g1Hz!va|P)VYS+v&WB5rsTLxrUr{w1)iM_7pbBCPDLVY&xT|KxA%Lc?z3vn5miEKV8J| z$9+(*2kuc-V(-OP=sSRQ!8=jk4&2M&PVpi(^tTBFe*PwOyKvrr z9_H6e@&CcbddYJ`x8r^>$~E6KF0|&`&1o~M80Eu;TjvR{opljU%e*K(uHbO-Y%g)# z0)wmY<<~DtKCj(j?t~r^dBc6H@S;PKblboUE+u0b7KVgW<;EK?O9|fIFvY8@@J2XP z<3d5Lm z$cMcIb2VnD~>&jc{YlOozeBZpk8U*kR1=KYlajtr!N! z=A9Db?2q{qe}}uVHPHYD75L78{f&&myjD1$)uizxHhDdcAC61(zn}P)kX$x+iw$_S z#GI3KEHRggN#Bob!&n>W-p*U-4j{i;ej=CkXl;x6RJ}xf!I+bG|DhD=NV8+mt=oAq zR=-d9^5$y>L1xoYY;DbzqQ2BwU-b#kiMW<(JZMO%R-_og%zT z|5=Fdd?PpvbDZ;EZp>aVeegi<$&+UI$(5#MRnl%3db4QD3H{Lc%^ z5_&gdUH00*yxa11>3+Q#Pi}Hnde?A2RQt4Bc*_v_}8 zY0^`pePH!tw}@Lja~8L`g?rSuC8pd)hXCHcE9kxJbRHJnAnab zuSx;kx-j9rpLR>N_cDz$?Y%suVF&2#;=~3$TO!6FW7RkQGr|-)^YtufFqWY(9`nmj z!yE<$n;L=1+9FZr?_bU*|6Ro5A~bO0@M$roF1Ux=fkUUI>Di%hF+=_j8->repV3;W z&B9QqJ93wZ5%TN_H`&pfu?{Y{f4n@8c4^rjo;7M9^RD6ozR3mRduGv}ARfN9r+Jz| z6?UNcQxRkAr57rWN&O&>X?HR=Li1v-ScbA`j;HPc&&lkWB*Pt&*@d4B{Y5{;@Tvu%P20D9d19^{HSGXW`?8|iwtb8<*1n|3W?Dw zb;66f!sh1YUah;a{BJjecgEX`sxs11nSsT>Qq<~Du*O`N6l4DIM%+y^0Qbw<4?ek# z#W7!M(Uc!B)=2g3L!ehdZE?(3nKw}}TB?s2t!bC#+MxdiGq-lB;&@E_aF!3qA7EaY z4`;nUi|zNIBh-U|oyLBF2q3QR*^`L1n#9 zWeI+|+V`f=-Fh9NUiXeVTKDeLER}V=z7@L6yDRu<@LyMM)+m`dnr(x-T~CW|Q-9RG z>2OWTYnlWH1D=Zd9zPG^PtV?z22?r;tKU2mV{q?PD6hM%s@|ekBs_GTF1{rf;odd3 z;|%o%K9Mlv&B+Q8aa%duQE^rp1LCaJ&b&6q zyv;0kj{IF=yzz$Gi#qZuIjis@XZ@8@J|uioC`()_{~sjXmd#DfE9KyNl{WJ8y!Gn4 zD$Xjr$XN$~3G2A~BrNt#5dE;}(UEsL--fxrNd%*l$3;JubnL<_YTv-z$Nm7;JH;3z z)?UP$^t&Y;zvB;=ZsWZZ56F=kcHE=zuUaC*YZK*!uwig$^ldR?+1UDB+yvJ_A{1Kxq-bk6N55niT z9C1G5D~O7-Qu~OrT3DXcl{a4wT>^WGwuI%M=l;L-I`71#aO|hK=tuaw>pafvpl)pO zQrMK+hf&-kxmWnYrRkDuoiONC=e8J^FThQgtBRGHb95OsUq(7&lmZXKEZ5|)&UZ`Ocrr>eY(VVybfloY}dm` z&v_#5PSj1Z4PYVW8^F9`w(wHf`jXu&X4*RVbr-*nFz&W@nE&cR0JA@^785F+puy9}bZeC|X8jIS!1xjAu5aYM6EKsE*FX?Q?r?8O9 zTj5c_Md9@?58$q6yXa#r7ecm+yxywHhHzfmyQ{u*{6d&BEnKv((&pWKY(^J-#r?Us zJ_E}zaFxaW+@)tneY2Cx;I#7&EyZZMX&~Qzx|9BE+A?@r`-RBgUe{?PpK0DvzrFn` zn31(pOWsDF7Q8IpTbkt5i2ZpW&+X}de>gV`*&&_2(~y1lH4 zng^2|p{NMgiC|#c(p~(rLB3{asUzm>lGl*W`?FicfvJ7Of%|5k!1p>QTr1sI^kWy! zIaV@cp+kl|@XaxHEesj*oL-_W?gc4o=8HmNz7NJ-XS2GyLb*>HG4>~ly|~GhODwj@ z7T9Vpuh%$MvR%cMsm;WdS69^4C#Jn+Uz)gy=R&LAzTA6eJ^i_)w=8$PR?I(b**AzM zl-AZ4S-xZwN9aZVu)3rC`1F-s^xSAUoZRz&$1QjtH$Br?ud7%Fy`7JVzSY=&RK@?O zZ^ZxpuF8_0nMS~k7Uy-;ma8AVx$V?zQg_D#(C%oOj*iiVFD|_Lb$9L4dTZh0fi_~k zlvBlKe(pACGhf(Kj&pG=9V#~RETeFiVTA0u?s{>KyWw2yiNp4>5t;T-?bI4Eer`GU zRr%#92IZGmvSDf;vElw-!`P{3>)`l@h4R?rHB;~OL1xi&9r)VF?{MzOl~ueL&BTlI z?;mH6HertBbP#RvKqjr^*%X&}w#}-WZ0;`?_*LVX82c0GO)tE|s?~CVZ~qnuUYzjT zL(P!UOAJ}*#Ucap9{$imf2>9*&|DnqN8bmd_D;M6QLZx_h_tczdFdBHV%Lwzenu&4f(&zZ`XMKeD^?b z81{(mEUYEkSL_nU{i6p$-vKX~?M1wP(fix+1V8-#snqacDl}?aL$K?M*(o^x;J(y< zWGV!N;@ULSU3!tq?@YWceS8`YR}M86y5kKdsB%S6n<-aBtuNP^w}T4|Ho79l^jL`> zpVlIag^qIp>ss;R8jSzFlWWpCnqU9e1}t8tiZR`rSg2;)7?&7ruY>VJo=j;4hR$h1 zH{sMrl^10OGt>UZB9(OevZtf?b5!g*)JR!BVq(2;O))`5qD~4u9{t=kl3|S zM_$r3*=b_F?&@eL!ns*kWH9|^wwhg|kl3|SM_$rp?>8}DG~5!-{1+hi_wEZdyG9|g zYo(67vr$*-W@a9GU?OC`klDkc`!Ch(8imBJl{)g0j>^`VSi!}*ULvkN?*E};*C-@* zt<;g1be?8y%nzNK4k0F6#JRf>8M2B$qmcMB|IyYwv9k?47`INuSeliq@?v!cz!H`RL%#ijS0YWKHG zFMqXV*HYwnpGK#r@}gfJQk;8Rw$VX;_i30gMg2a6W_lk|&flfB(EMFK=C$-G*$<3c zIE(fzt}#pf&X2+^_|8A5Bv;z~%NJP6Jkh@S)$O=60dr%%?g7!oxTg>5ijq9|@r@bG z_jUlQxjjc5xAb{m`0GArnb)-dc6a_;M)#b{Q*-#9TBBK5`=0RFCsxGWechN_nOU&F z4n5)QzF09Xp2&Cq?gSQQ+ZWolmwD6v$ZGsaqszPv~9)xh;C5V+wdgWFGT2 z=!?1Pv_f|*J)ft)82 zUtl@U8GBRLJ2Z~{x7l8dy|Yyf9^yZVne`n8wRg$vYg_PN?)l@ISRX%V*;UbB->6c) z^7}>Bzf)frSaC_jaKV18I67JLrO9z{tLZ3FTbz5C@Y(~8vQy`pLdN}1!h0~`7ymgf zjtxE16soSs7vmC@`i;ND{nr}wYynNXe-!m4Bx7!+ATNf0ZrHc1a^a2ITdLa2ijEuY zWyP0_fxXdj%<|I+QC~PdEB4eGgn3QJg1KLq=-d3vW;|?8H@4-&82G*?RJ70LQVYIq zdpCBm^LVJzDp;a(XvVeH+-{Q>YrYDP<$vf(=Y{_p6ONtG z)i@RpYyNByF~)5%;;)a#>1ymsgm3d5M2z7+^>_ysqDwd)5B;lc7BMC}*5r#0oRu0h z+y@zEF2Y;B4CiqhoRj+3+6NKo?n3u>r6d0rbL<}39R|F6o~ZAg`7B-#pp`DX35RM! z-w9p*@Hzaa4lJGzyZ~P2qeXp-zu|tk9Rkg-G`;{EGDZupRY55KIDVGJs_N&VN5uf) zO}d!F9~Ay%&*O%|MveR&JbCjOcWPaX`&kTyFw;mz$1*wPBk%j?r^vD3cl7|HF$l+J z_cs?)7}2jQ`_omvE*GvS<-KtavWm1pETr`^p@g1? z@?CTG=W9mi(AZlKxy6z;+TbluG*5QQ_qvf+p7PXscIjoNPc&8g$oD#{^gPu)oBBcb zY~zZl7A{5gSzGfbqQ21?IV!$OV?}(o?jkFT`f*iQ&0a5s4zAx*d8t0~cFdV!;WD8$ zdvxc4&{<#2QE^+Uj~J~|M_$tLMUyO|UUg$#K4l57-TNzQMoV5~v`QU$Nypkuw%G7& z5POw%UU=6QCabwE3W?h)b>t;ouH#gT2HC^ernU0Bng3rwz7D*?Xjl8`1hjC^YQ-j zHDZdzE%sd#HaAzC2U9P+RULD2Jn)!*cDO5@t$7k$zhy}n*5LB{NY(cdwS~Tql(`A0 zjB*n!9(bB9f4>#;el!u^c|m_SbFJnai`uajo+nNg&(P3voCDME99)V)b8waOcd1Ow-!%@Fp0A65+O5LHH_q8#?%Zc; zC4GuxBm@`s5@pNEH>epcnu*c=$V^2(yA|GlpDVtZ!pgVvldZCJ%N*~rF{Qi27}(m> z;!&|@bzgSeWly5LC5k(2YIDBL>#Q#AziX`fydC1cVL84TFP_;B44pc{zS-l1_mxjK z-n32|crmFXH1VD$ysx~?c*{?%q5p#}V0;tHu)-JK$Tk;s(GQ=t7(#B$7GqFtqYd{= z>!LTfz6^HvoF&Gu>NZ<$SSv?Y;*-XFUO9;vnjwzYuu4=C0t0&938I$y;so6MEyfc=NlWzy03t=AFBk>dkkD!0;+sF;-2kc=B6` zKGKKaVCZ`3t+?md*;ePL!@Q(__Xb0stbB3Lv9qbk+it?LLg$3`}}?-RNXDl%iwSB;od~iEYQ#y zQj)qc?1lj^Jk3io4`BW(XZ(@aMVz~Cg{SzFvIsWKZ!;V^Fi70Pw&DNo{Cl`A4cXU< z7ej^41G!`W&`>ty)FwFViqAnD7?1obeDC>VEWN=NeCIb5x*cWVxc=w_i#_BDEw@$^ zI`2Ob-0W~NJ9A+RvNSmdaX?uJw?7civ~9LRT&TPzX-|1DXPEbQTi-3<_`67qpD)%I zGh`5Cg=etv8|_3td~hC0y_p&ashrN1ax)Qk;nT-_=Xec_$kwy-&MigU`5!LfmY((X zT{ z`g@x8VBi-c7^9)X3ceuLL_eZ$dszCzQE;j1xQ@>yDnh!}$&(H1I#NsH+_z-__kO!y zTHex`t^bSs3JV*IjNspGLZpvPoY}Ss*23F#cnr?>`A2WlBoew_mGh4;D%;E*I#t*6 z+L2Ihbx@pF3(H*jy7yJ|y?7-2*Dgkk%i?kuUT5qcDP{_;ulSoG+C2ZoeSUfR9;qZY z3TD_=6WnJF<~mg}Mrt21M&-Fd?W1!etomVQ*=jRP=w%_F2VX9z&JFU?xuH4_u#nCJ z>xGdlvt%P|zdu^`e!QkS56DaBLEi2dW?kq4#uW|4aq}sSR?m;c#?bs&B||1JF=XXA zL~W*X=#*V58{KLP9Ix_Dj7vb-e%@qzeZ5~RcX&|vOk8ihj(6b0cQ@1<&E!y}?K5$` zb&Ku7s|{_WZ`Q#bift~7>!{0dGrs;!XZ-}NJ(ORWA?_Ph{pRyP=&WyZ+8&-vnJ!pq zb-x*W?t#wwp?z1u%OWemN~?QY^9LU88E<3O!f?Z6aXePzJ=-bhwfWCqYvIfeT{^Xy z${fd};abKR7}GRET+^TR`}lpIbZJ}D7;yc0Mj~B)W(aq0o+_0$JqC-uV;L6yIvuEH z|EMF*ui}`fbH_5(u|(ZAJeEpkDXw2+mj1dc%s;~wqI>E@e~*^BsOPC-eKb!sBKjIL z0_4xHIttz4(#4NhLX=*CckdVHY?Ylr7HFO}Te?sHY`s(x@v~A9ya#an}zw z_-mhocn@0xW0!0c_a=^cKa`xB#)UYwDvt=3Q67wVap-6t*59j;PDIY5E9SY z-rNMuh7A|>d40O9K5pnG)~x)$Kx0M!7nEM=8+n!g4M<1-4eYXR365F)Mt5<4N%-xh zX42>-Cav^RKget7Tq-TL55oL}aiYx|vLEv4o*q)zm!9mSm&_TAqOAG#1UG5BQ%`0y zUgiw7!l$d*16D}vLHS>t+DHGun?&E0qVTxI{7n_d?eg3IVaVtuhHUbtPzo|W2%D?F z)sS~%g$Lht`;TP!ITA)belGfEPw!I4i>0T9k`#!`4T$a5S_oidN_w&!@dhOTa$t$(p8+Dq$s$iRSH=p7E0VG=kr04lPvoG=mcB-NfElKD+*P-n9eKW#Zxy=wwR5a zIzQr+(9H`eQF*C-CRljG0Jym%QFv`n zeOL2m6cT?{>c~sFPn*YEWZfAI2@_5Tuk|^cL#5!<6qoq3Qb%6Wl}1}xTp6H&0j=eE z(o-|?)chHR#GjQq@{-OiYobNF3qv7tn9PFaockaCj6&kiN*#GgXL`@l;*-q?NH}y* zw0Sl%WEFp=xX7QCI`WdP)8TOzD_)Li!P4UP6iXNq zyjOU~-+HX(&nP7RtkjX0boq5BSfpwv0_G|c-ih}fsQEJri9aiK}uU$;Vp=s!CNNJg2P!7 zb94(7-cPC4{P3pP;L%vm=2VisU(VR@!`7zyh;6&T?}VIdvg(4}Jh!r`UZ1f8+&1gP zJ+YGGW|fZmLAv0`H0JVjH1zbA8C2wfVm`?{g}vS}8nzvY68GJc`+xE4*ODcts_{^N zjl8D1e5J2yoi&XCt+Q4#C>m2@Q0JXZq356G%rtbdxKFN{@tg1Y+7{M+>B5?Z%m0`c zt-!rP>qfD`A;e(je%oK(aB&j5wqOK!Uze}*WBY#d&UQ&``K6(7fA>+L3y3e` zwQ)XSRh*YQ>-RfR=7HyxDvv9+kMg*#o0%?I)ro>OKh}!l`|V6Lzx^g%O4LR{r|eDQ z_dYotj?cVlsK`y+w;V@oL=>dPt8BbQq9Id?07lv`B9$|{_=Sk z%icEvwx5*WX%22H-JpvsCv(#w$OWyYF~IPq(Z+gAKLqrZiZ_FT)#G0jI$U1+v&K@i*>vh&ECcoivDhMs^HF3 z-Pn%RE#O(FAEF<=IQRU|=_K}c3jQx|o-WGfK7EMm#?simnX_41lWcK}{vTKG9oO^s z{*PxAQudx@?`)#SxiYgi2@$eKGD3sXkP-={tszAyl2PjMRQBF`XDbrXKz`SC9`Dch z_jtViJ-7S)T-UkId93^6I@j4b@hAV%c^~r)dBQR(6pFTu8_W3oqP~!Sr5gO$zCpY< zm2Jg6aT$HV`9d{lcW;-N%d)M$d~+jn=wMzIYCXp`beeFD(`_tb3bDq**`8tzJ$8Mp z)qHVmr1=hdKcaut+d42U*F%iW58sQ8-z4GrxFg{5N=5fRzWqBNR+?&&d^`&}&rt3; z9uJ=LicPXDhMQ%B)wNL~R!a+xYxHOGh4g2&4K%AqHZ+x;0bK_`cJJB8npYav(^Skzz$Gf(IOI6KTztxKcZtjNPyf5m?FV9zH+3`xw#Hs;b z_{0yUFekDR+dpBh;Lf-C#fQXflRGpChn~^ZM4aDV_2=_3_T!&h!uh5N0vEm=Yk$_S zCAaL93Sou?ndI}Z&x!cYtG>+Iq=Liaa$>yfQwaY$qn-SEa0)!z^D2|ZJNQ!^pSm^O zVynA8v(9@d`Wt=r1&RlF4j!}cAJ<+nZ;dux(`va0BrR8+t4qF6uI`*g z6?MUl_kioY=Hj}v|Gko%EsK`hx7-7;+#Z)zFuS((M{8mwX{D zcav=@GmtmH=5D^?eh`E<)b$x?yi}hdzi%eHRt0khH*FH%>`|rbx#dflRkw44?mHB{ zB&u|^M!O~(q+Q>iW~6I6`9AApY$3*BIDQLnlx3)!-17$eY>RDZq~-um-fepK%y}>N zL)X)5W#TRxXT+VxRms%L*$-3uJBvA5KE5h{^{{eg#j<$FSiMRnuEX$Zyl~40+`oDh zBIOH$>x+7m)rHTp&i*L$jX5K@>xvTjnPcx{{}xAK&uv+7{fqYV%NJ_vdb#GZ$c?9! zyt!^$wYhX?gL3JjUv8F9^^1k@50!-$wB*4Pjb2BwBE4>>(^YxV@?Egq+E!P-%Th41c`o8-ymGM+PvBo<_^0%ICbc?&Jg7^(D z6x^;+JPK>S_G-HdoW}VI8^+s5a?7IDI{kPDFgcEGINlmthj9E}XR&#U;D?E_4{{Uc z$Ex*Mnj_L<)p{q5m-J3`t}gXQxw>l2jc}y7X|#20B>hyKM@u-$qgBVA>{9GMtUSi7 zcDh292Fmrj{dcG)2E?TpXvT((G`7O-ZFEzN17WD;J27wNd^Yj>mD=bWM()J(kFX7m zlyljjd3IBO^z2qYN>b029K}~t}2I_xD=NaSQotN>;S_fUm&07J3WAVQ!Iv8E*!i_$jmxmgqf&8qos9$pL@@Zc3Fk7zp{v<3K-&o{^ zKFd1AO)D&7^A|0F+&AuGY#wiJa4#c!w&~LXcyUO1cU*nvr6ymL=92P7)tVr+ktV2~ zBZ?KxQQMevOuyI}wZmd@UB>?kvhZ-mOOG0{T=ym|wEBuD+Nf$KDNjK>zU?*YCZcWZILU5YzFpG!QF{$#WRli z%V*tuV084yOp4X>T^+eswRDSWUCm%{uj69`XjE{vowoVC%eOuq!iKLqC$ydqY8cB`0CQk?&fK z5rL#Js&T|6+`r^>i-8lxIVT*8fyNw@HnEg|i#VNe2~Vd#u1lre;1yz@SQOj&$x*ev9ib9 zRgK1oK++i1IN}oSs{JVoz1LO{TM!|*GqARyMq@-EX^d(daS3-m=cGl~IV15r$Y8-8 zed&o-V?-cnjA|Tl33oH`qwBd@=*9og4*s#I*-njS+#QF{*LICEUO-CoQ%Pvx7s8 z>;-qqlbc$Nk?f+zsKybOa1H-mkoC9hfsoRM;(q#~$86z2zDxN9 zhirM$@@S}fvVo4)+PA^$xbK&*7A*@Cpv6ihuhgYqU0zbVt~BWVelXA9D4q)|`!wKx z99l~!JQJWSf1SAJtnJxQqbH&(djHiE$v>ed4(OnpGi(l2?7v%#t(-IGi~4uaJxZGg z0bOwaAOg#6*~r;?3m`@e(s{ulxtA6-AGP|grto-XRkmX04DpOwZuN~{wMxXZS1sZD?0C_( zJ+f4@C!KtzJ?VZqL2PC5IhJEmAaD^YN_kV$9#CnvA#{9VA#8jLIK`ii?+Mof454Xq zSAqK(aG3AQ!29L}V;Fn1pNQYLkmJ1C58PXCP{d}uSM;VNCprzRVZ#sWDfDXX zE?4h3ioLU|C)z6d%;tJmHp-2jj%2M{DBt1+KDK<_phWg_!At4+opjM(fa_mgI69Ht z%=jbKw$BjU0G!LCd(+t3VYX0zZh&apgLUJLC%dyBS6ah0Lq$L3w{rL}JgY1{qc!~c zqUfitw_kIQHL0xqwdrhrXXSsl_pDOXV^i7i@1t1!-6tXjd&U;vnc4PiLs@;;w)=kSy?0TuJS9%ji3BthI`a|0dpQCu9=_7PJHf$E?~dP92$N^%@otXxBLDR zJ~eR`+?c$VJ*rtr$o{oXfDTg?T_C-dJ->0WmxX@GX{Z_BSKwaFxXkTV`CC*gIt^~?2gul+UXINL z?e`Hj()W>iuQ}mpues(w3AWLH5_KLo;V6$g>9h?SkUki0w>m1uyD6~<&n>7fPkE>h zt3#Fi;wAI+`MO#9^1dJXaMmh9_+m5HkPjH5FMF7mhvu=NVvWxmQ%&|EnVx>A=TUFpw(Q)n*gdDw_1{Yp*nI z)E~9o$kCT@{~rsQ^HA7b`s}_&+oZW9eNv4hF5!BYGmy#^bz=GnitfnqyIZ4AB9Qb+ zHIBH1yBeb}wdrZjDzwTLc0DlHRHIKKkn~A4j<|%IW@aFjVlEtD9WQLsv(7oM(J{$q z(kIn8;u21ySz;sUj%q!TaHJ<1Py8)i!}rshb(Hth;M4;CeO;*pE6w0hnDS43J?6&0 zYh%b_=5+(VlA~fi)}(*a?AfFKXwTl}S(C-u z@GXtu0dkuB*eL>XDk}e|{80PS+wPNjVAFEQ+xtU&Uq*dB$@9x^%IvXXDKt#3BJA$_ zdQ4l#741?T*K)s(vfqa`0KAD6-y}Q!Zsh@S8En(FMes3-3%jv*AM@YuW#(qH81s?b zM1OG)?rXI}?2oj=tcz#Zna{3ZexjN9&Wl3rP_0iQOpo-*6k`+JfNHg%<^?!*1Z2Nb^KoY7E-UZ`Lx>-5hzJ={1@s>{gkym7l(oF7lB&Z8Q+? zNZ(Eb@xs?>a`)y*Fw3Zl_~tA~4Z$3nEIAz2@O$@4#dZGnN)V5qE6a}m4&%FMiA?J% z_e=nPQqhNhkiQCO4G0bnWY{dM>xQa0)sk z7zpTd;`Lw;|5_t^Ve5QQSX+xUpo*!!iYwZsS zjiQ3bJl^YAGu?*7HV~AyUaVaMkLjBHN#btA{KW;t0QVl%l>(Y@!m9@tI3O`{wOa}T}y!4sFr}bZUBZrd&seo^tx-eZpp*bLZQZus^a?Ck7sN~{<&n7v4rG8mQ61IsBMq|BU&I<6!Hf1v16OvuhJRIW9YWGoHg?_S{~qE1!<0 z{ObMc8OwFCa9@9hSXbMyR{Mm4hjPWs$Du=ieGvoQ`~AG$*!%M3PsibtYh@k9J}c)C zZ*2cv?t=fjADy@)t|O;14_<0iEDx(21&yDa5!cab%-2)r@DZ1C_?{%4VxZj_=jvdC+(%&tvKb6W!NczHsR8G7-~qKI{0MZ6-R8$$s$h*)kE+ za@)Llzny+8h}%QXI)8x+#Q#?6_i^fv-pAFsjpPgEHfnTbY$RRzRzViC!n(<$nkerF zF?e>XW*>6or9Q%%JV2MGM%3bxhK{0z5p#ZhX}im@5XZf%Wc50W02Hp&KBjqR((1* zv26!tb;Bk3%vNzu@$qc6d^?%=lenCNc>o*Aa@kLH8=Q{#wB zxUARuQu~3uVas7f16_`1$Y``u1d>*&#u1lrgUTC7Ru|17!}+kVyYxhXRx3pyX{Bl$ zaS69*xxTc1x&$rWC>rQutYfIrN{NeFsTxOI!qGQG=R1}#d9jiQFfRjZ&#E+4S}&xP zs&T|6+{6L;66Iv&HjEWM&&||os>CI&RE;Ap;U2Hmm&WB-!O(Vl1b0qGu2w5WAZev) z9B~PE)~cfP(_G2J%R*FECGH!yTkhdY1N9-wG(yTMhxc71-)VP%|9Gb_y+1S;##EUqaFgDi(dw*- zBb`;9Q;BBvD5o;?VL7(`>Om-|6)02N?AD!l*;ivWe)K`;c4wDN{w-?Kle^_sUScH_|rrZ7MH3MprE!o}+P~pjxxvu`&^}km%h*(q#&33gCohOdgh%e4!WVaJyAGe_^OyF+ z;jAUX#=I|Sd{dRV^3_alXz}lmc&_H14&#Qyrppy>ctI0Gop`Q(JR8abU!1f!mKp=~ zt=@@yXO_i%{&abHsYjm}=ymIlxOZlCJjdIPt0=8D-V3$wz7zM(tkJKy>9poLpXyT~ zwVzUlrSq_x{C8k;-59q?&~$Bzh<)ciIzHnRa9z_M#hLo6-=(9} ztG^T7T4N6KBsS_dN`0m6lU z&WC>S#2=TK@A?TasJx1;7~TXR@{qZ$ka<$bb@uj1#ht$Y8fP@}b?;r;bk&ixXT@te~O-orWJ%iJ@c z_^Lg#<>cd$FnK{Q@k~yNDd4>WX3E`MqTuq58{+%zz`pOi_WX1xX)(5`x(ogsjaPpf*2PPY&1AmIlVJ&}6h6E>nF^-_4Klrg50c==KCTlRL zKyag+O8KdEq-TF(+x5!Ce0X8(mtE-vtxZdqSp((T`mt*aZ~Zxl-5Yk7UAF!%`ipZa z;U<-%S?!LySp1-T!3`aj&)fL9NYUG3AuM;Wh(U0*k-W6MzvS!?3l0AU>`3#&XFfHU_%gFcaMUl~-u~VbHp# ze;9jqCu6!p0N+oaUuh8_2@Rrl@S;7sLR)a%+iUeaYB z`@7H{W=z3<@92!{`Om!OpNq2Lf=Gy-puA^)mK?Naksy#XfQ?yQq^|s%^uY10@OcZ? zCCN!19dXdKR40 z>Yd0Xy>rQk?o!*B!K|=Uc~7*$=f0Xt{SjAY@lF zT~v)DF5zlF>?Uo0J)7wTD0UkzyUfp}*hu5M&Sl=F>B8sc3vciPXNF4)!d9>*EtPwA z!*y5qy0pqt+kJNI(B*?-O*UM6h0ia%D<|5^P*}f(_%1vC{x~mecuQtMnUJ@{RD74o zPjs69Gc-2(KU4gN%ZGiYu_pib&&GW&HwoP!->fr@#TzOAZ1gwIx^IF5BuA1oX8GFOP*2_iw%DXMo?0cvFXx}>|nCQL? z4TaTrPK$B$c(;icoHEh1^r#CzJ*tc6c{xXCzBmTY`Po<({CuyA=R!HxHF&Ohe>fZc zmfi8KC~#%I?zoq%KisbLhPA3PQ1tiLe=|>Rn|^w_Q4846KTeTFYmvSTQ1etId4sc zwF@hXIX67KgJ-^~pnKbyYF-eRYF=pa4zZE)4rj2LaCh-3X5=(TXf4Ij3wT(N zE!?v@#lF<|C(gY88EwnGE8yA2Q*`Wa)F83O3y#g_fg>yE{`8K(9P2S+Z1aBY#dG`g zb(>tmp?UOlF*ds&2YB@j<#kp^!eMdjEHO5_!u|ZsWCL9SuG5AUMhdRo&wbo0tctGk z!EpGVGE{J-%dRdn*u(Ij>df zD`zk2#+GeUzAyWK_TYW8J>;NB#`^d#6k{{F6~bq4^OU`F7@IO@rWjj;Oa6S=eq&v^ z(a+eMYjNb~`A$ynifvE?7Ws-j{ zwsz!C&jhi$lkB0_fUP3V!S|nFE@urXB0dYII*yPjRwqxs(eB5=M%s^~&RHb8l(VST z|EP`hKaEC}uC5r{9$XumeawiXeaz}Qsnj3sN#DQX9=qJs8Lq!G z5Nn*;8ho9R*>6`8R1fFE=P}MzxvPDT%-lnVU{oJ>nZ|23yRxY9Tjal(Vf{vtFVMj0 z5^pklhdjb=#A(jNq;b%hm@ctxp;OJlF#J2d z3t;1y%)=f06JGbPyBvQH>zWoR|KF};-sP7sc9CLYIznO%MJJ@QtN%uKks^AV;l5NwC)^nP zN2B#otVrvd-Q!i}_9j`ZN>47vyK00n@04*hGp=_QOW_z(^x1ZJEp4qFY@}K_vk!C; zdg9Uly(c=M?x?m)F(A8Y9Q8-I4%@p(cP96SWdX{2;#$-RHM%1LNq1D^h)cL`&RwLB z&&*-S|MqgPIrc-VJ0g&DM>USPgu5EiMY=srg6kCzifdshe&=a)M+B1YsKybOa9zy1 zNL1(3Zo0CUdto}Buc6W>DW;@5s&T|6+^wNqq`akr!3NL0!zMj@)EG6oBLYcxRO5(C zxaj&_r13wkux_EUcVrG~hZ@}xfuuXCal|EDi@sf?OY29%kpoKoD?9nKR(C`o>5gg~ zaS1nhUuWqY>WQ0s1Ph<1;aMpf-4TJLJF0QSB^7PWBsw-LZG>YIR2hlJ2O+5tnfH+&f9eTkYUWhVtKK!jo%S-4TJLJF0QS zCEUgDU8I0Bb8+v@OksC&&RMPQh(OXE)i~l3uG5^U(&ttS;M_Ik`D^|86t7>atCaq8 zK3uImOx$-T=N{L#5f|GuS|r&(E%M;bR^Zt5Dm#)mQ%0EHoj_BKc1U(fJ4C%h9=LWd zH2LZ&aIdqIcuHn(aJ*a>cAZsnDvN_=^0@Q8u+CLoDBnTRJPJZb^T*eELF(j&u;sdv zQ&|{g%@;x&-TsUIV43w!d>fSa4C1c~TI-(r2Edolcj6gP&fN!}Z%5@RR$JkA<$B`Y zbUVBS4>CR`FYD(I{Q~NWd-1ECUAZ*8pVU*1fpu;M!oLfh&S^y+c*j}AE#(j6Y%3aF5!10QOh~J9~N&Iy9&CO?dAm~@xT`Jw1=E-U`>xUK70+a+~iPNyG&>xWv9&&GA^b$)&5*d28rH0&RO zIw97Eobh%7OuY~OooInI8taR(<)%&N-PW04Z7zV;tiFiL zhs?=*qKhfc55TAD#v(4Ck5A%%&UJ(3OS{9>A|vr^{CU)!H_Gk?YZrHiJHN4JE7~Yb z@#G5zEoYP7PXN6G`-IOcP|Fya@_{XCW(0>9-&SI9p9CWHwEsPZx^^-#|yY~LJl)_m;i-+ za6WJ@_h1dbijFg-^y0m6wfYPZtL+W?@^8KVu;M0zp+Umx8$GNeaC2+_8n)v3S)8OB{(t_ z^$7GOG`xiS2e#G)U-pMSJxawIujm}Eso6^7rJAkvbT({#Kr;qqSA>5{TR-4I_gcf( z)NU}LV<$0=cl#~5?AaE6rF4VB38pgH_;_$AU%LJ|ORwDtY9^dj#t~e?8%}X&buY%S z<;x32tQ>JoMooUesy#J?am$|y8#?c=e2Ucr)^lVvm}dV}aL>BsVolH6%;$k2)NO+K zglOcd+k3w5WQttRECBv?t|@%^6wsd!Zjdal!9Z_A;mhm2y)hp>hpoRd27b3x{zt{1 z%H^HhKAuke9tm^X8VPPfrOo{L^qT!M&G+Dc&gz1DxQZL^(_nFW^|n}x&{g^FK42Ki z9k>k}IzW#ti8wEOj!yi+qu$JAK_~WOew1<@Ep_^f`A7|PJ_~|@&f+GYO_KX_mSiip zeH;M(frrIAdSopt?j0~uuAaXGtlQ#!2;;ZAF5}MQN6N>a?Et;^>Eiu4q2^fbfLj?u zc_^Hj`B?b;rtd6n;guy@4-AFwS6?XO?PbTUuZ6JT58C55tg@#%_``WV=1T-CSlAK% zCEXM;4bMBxZ=DEZiG>~E@e$PU&~Q-xDek}1T3S1%Hrtf1=!w2p-|@+Nt)#NCJ>r&ZvX*Y|=)`=M5r9nQS*!k8tss5kanoX5tndhc3Vq3+D&2) z8Y*1VHTSd{BLYcdRO5(CxMOy6q}I7BSk!&0ctJkZz2)em%;Z`7y(%@|deSYx$@xI`+fb6>7e2 zF4o$f(iObK>l~~1%muo)s43Q3ObPDq?sfs^)&<&T4;5=|Z}Ae1c8D(HKI;I@-d7s0 zG46f!c$>+#RdIt#8}13cWKZcT{vm$!>9U~?u($s(Vb}4`LfrFM!@}&Z14Nqj7Iqhv zF6KL`jQXpLb;*u3>`B2Pgw@XDwT>D#O9siZws61dKT}1%cgV0eAG@#;;-|Y>(aXhK;IvV zE>JD%2p|2dneK^2065&AC$0tK_yo;tk%>zB`(!E)#z~8NIKl>R6Q2vk^&(GfG`C&uu`S_~vx@>muq3>DP4x+#(>JwM+55tc`nH>%y)FL6?I{%~6AW zo|-zO6lbbKs_u{cqyGARUYId#$qIPYX`lE;T#p*^QiHyy@7-Ae3F|NZ&xX53V8BwAM=EdBHtvDOS%C24D1B93wg)v+QQ z6swxcUdj!oMS=MjtR+DGmAUW)>A9Q(QSjjKOtD@z;x(hm$wD0EWKDV4R5ziT7fesJ z6zkOVBxv#{sXxk})SM-bjdVu%gkc7{-qZHL%5mAk#w_$jbIuCl=$sY(MxCV0a^BK_ z0;OgvFSh}6aH~n>J-sB?dpdE=@N%4IFDfT>t-VRQIRAt2#S3xjb9u-YI+sV@cTS$t zDG53aekj()i#tKQ*|`f?BOnPj>QFyG;FJ5I+`TfMyPn_#Q|9^#ZOM4sNbP=h#L<3s z^_l2sLXXZwpK#BHO`Ns_QXadD`}i8vV<%y~b+_CFQ2oJXaUCta^Ma3>bdqhK>J;Y>G7cosKbkb^g z=pSi#Ym2XDZhvu!y{+yo=4ggh9ZmgWiVM{*w(ZkYH@Bb<#NNCpG?^;<<%%2aYRklQ2Z-$9Wc=J(Dm~qxTc=2(Si2dQm*Lj1gciGI$ z`7m{gvxvdTn|Js@{Rb?#&s_NKhI5IA6R$tzr@2nvc0U>{qG!nD%X?h{*W~|UBjx|a zy2YWsxB{x@FA_G~u}-DtTqEStxkl>Rm1KizS8C=BaWrp7>t?VaG3%j!?-s(BFs!q! z*6*F7`5DUIW;g#b4UV{kD+{-lW)ANSd;fR#{0_`D(CA?ZBt1-x zqgWB{afr24`>r{pnkR{vdLRC!)x(fWdRWmBYsqwm1STPh9_D=Hr-n=Y5m${P{|J|M z&|30-YYAWM_lvPP{8u+aAn9gm9B~QfH{M!uTr(K=hsFu+LOg3hqnja+bTc)MxP<#P z*jn0NY6UJ2mHo+drjJH9Lm=s9Y8-J1H`dfzD&v@6m#^$kp8sFn41uJZsd2<5oc(%h zY1p4JnBN{Ee4c;)y;e6vAn9gmoZuqPp&HJm=LEH$x!lW@;R92{-2W z6sdEiDVSrUJ$YSx3>se)&z* z=w@VtbhF$^>oX1Jg;{LPtS|0Yp5-=j!#X=MBgRHr?5J8z+^?Lcft_PlH^Sp96gM^RF`X;uaU9xe0l{c$cem4BsqUcCo*WYq0 zYj@`1Xb*B{+^>r`j{9)Cuk>bToa~__8ucrT!M6L)G<%F`O^UO+)q9o^NPCtw+93i- zJEZ)Mi$Ci_#B)Ul*@6FnUVLn+3mdc(94l-PYsg^bbZ+pgm9DjZAXdWNAl8t+!(4v7 zMJt`DK_E0NH(5OM43^I1A67hPBW6zk&oeuP&*7=xGgVS*SrxyfG5GPf?yT?%}`r3R`zpdFojBa`%9+;ha#c zIWvcB(3v@uQ~Aa}pB=26FK{8ahuq%6FmrX)C~)~@Aycfv>s#F$<@?CQ zB|XQi;R1Peus@7m>H;_G z&SRF|N^Z|`Jd0`I+B7zLb2AnZcUg=r)$A^hj7Vd%<2$pa(-jRWgFWHfdoO3NB4XGx zcU&)Mc&S|p{y)0G4q+XP<+?!8wnNV2>(`BC+uUs7W8Gi{mzB#GemEz4R0x3Sx0cAn zJymB0zjH84?pr4Sj7#UpO863f_y>RbXQLF@wKnq{{ao}H za^;Oyzd|nQS1tSk*^GZ3Aa24v!HxKsrP0^OF6nFP{wRLb-{;C)>RH`{8SQ+aj3eiU zR!c)N>0xRdad#l@S{p9qE$qbZ>aGcH0P10C?Tf}n+LszfT*6hT%B7`W`?Al;I>B|h z_fo5oA(u3=A>TGiWg$aZ_L7NKf4NJRKK5+lIwk+lblxrQ=;SBeo9D>tn4TBw%5=#c zZEhLbrQ9-&euXwjziQj4_G}0^@82fI5%TCEFNn#IP3D9`^&yz^i8g{CKjbwhRMM?F z)eriNUn0iQI^;fI`_n*op&Ntvjf(`g+16XUwqX_B*u(uG>M*_^Ah%W6UCq8(YNLI# z>V2Qsq(}Qc)wy&Odm67sAHqh`hs;J_X04eERI;leo|pTIS88+>vO&5^<%6wtUs2C# z*EvJnclD#)G#U@tC5`7~NLAg=)%UTMYq-Ew9lw*eIbT)RZqR-9w$^5Gf37^mPjkLA z`A6qFtM>#`e>AqYo3^q$ua`l~`A#AR9{8PCzGJ@p>DwMUJ6ObT4dw)n>-AmU9KQ!F zMw*EDE&mh9yKm2v%}?!tpIuuCuG630+;m17yESkFeDn$s{)PVW=3Sb}Y+8gHRCfy& z{zaE=;q9Hzu>5Uq0NY%|^CPy@lOJk+m354DhJ-79GRf!tMay~Y(A#Wc1=Iir*opWZ zE?msz*t4?kL0%pfwx6K*`e@jW%wbFwj-me1WZS@i>hzz0M{Myg}=Vx*^fo?CY+U zeTmzr0p2@nR??mDxWL+uJ16!-bTnPXaj%7L*Et4X=3fwciE+wezG{AB-NteKVdu5Q z;$7Z2Wf5nlcjazIN$_v?5i#f4Z*d>4`rHgOLg!}OtM*VXx|9SVbyEZ`{Zj(3tS8Hp z>!-kmvo%C6?5B*q98+fHHhM=Px>t3fm*l3!@dNwPRR)os) zNACgmwcSOmLh%f|h8BVH*sGCrEr|6T^($JlUTD0uUOqlQ#opgo2LZ8N#JyzKk0bo+ z^yAF^$XbZH-cQ7N$Jf)^wToO@yA`dEvboiqU~0fn!S%tjP0EIt=$bY1f|kWE#XDTx z)6;p_EfZb%BoDYht$|oCHR8r-^grxQkMzHxx1X|Q<=4Sb2ov{+V?S2%w54`Xdob1| z`j9GOU*_n-ZI;;KKBFL3>{~&Mw``3kuWVok-A(;jNH(_N;Qq|x{A5@|o&CEC(DJFd zz?EC=#*Jn)(#>2@2};9j2%PZrqWu%^z+A{_pX>MX`K zz93q2o;CSQ=UHp^Sz{yZv)+5@j{IZINhnxYUCd?nvr|0d{e9WF=}Ew|SHxUqzev^8 z;iLJWI(&nl)|7Wo3j({h=S8g2syXv^k(cDFp1Yx0qX#nCy=FR{vx@jkejN-;*F6zy z=y6AUKZR`hOU)2S@wzYW#ZSB1@b5uf+Hko$w0)ey$VSYe0Nf1!fo!&rFi#|upZCdB>(1T{znf(An9Rh9B~QPy&{)FYm5cU%uvCdckY8$4?`g7 zVQL(435RvuB*&c-prU`E;Lf^~qt(NRi+Y$EM_j@U>&7MjikQ=JX}jP~yO^WZ!w^V% zm>Nf1!aZohr8qwuxO_x;hLZNB(Zdi(ZE75Gsm;@OqXdm@Vc}FSVRzzfd>2*eX0(P# z4^!iaOSoF2xn#f24kEj_2=4fYH#E8#aY+wTqx*3v5H!I%aFP8?} zGuQ83#r?05=T&~Yg`d37dkX8_B1HVxF!i~|O$Ry zoM+u2r{4u;xbXk9su^0X3UQ=Wsc~eZXx^wu4^nl{}Ql@M29KE!m(v+S*nxGOsKSlWva47IQQzvO4a`e4aVG*9mFi zN1eFG4oq&$!`FDTvFmK1WptRh|9M{g#P`f}$J%JN(0MnuVTbE4e&pQ@%IluZNrlg> zSoCN9^f+(Sqnxgn?Qw9O^H=mY;B_kR>sdjU9+wL8h%&JbI^0j-=XQIuEc2)A?CC!u zR)?1S#Is!7nO~!OtpEN$!bXhkPws$c6VEpbXZnqniubFJoBHtcSFNG@#W1#f;g(Dq z+f(0me7vU(EbAA`>_03MbNOkDId5m>&N7Y;hDm*rg^iujCHw+vEj~~DnOsNFOKjy& z{BC9!u*urYS{W(dYPQF}Xl&5Dk&UcL)=+vchW(l1C+t4)Xu~%Jq3S{_eb{ha-}HwF&s?-p&bX}Nr8NDfeWY_GJwTlc2j{UL&$0^q|Lft=c&Q$q z=TdhTe(4%J-L6!bk8$7lbX*7ZF(0dRR+(rEbNtO$e-2}J&eaFKMqfl*Flw)DeY!*6 zP1o5eC*?XSc9_Oj?CuVGr(R$#-ip3kJbxB9tdYsOexC!EEtLCY9BOzia%9$b^DJ=x zv{m#Mi}h%&KP9oAwGT-J9TbgX$A-WB@|0v2HZxnQROz%B#}41W8oM+$vfC(jgmhqU z7WCh0Bh%Pk^1FQDHGApv+OzPsHtIvzcjgtdzl?U2WnXt>lLac4I`eK)H<>@dy~{e|uO#k1oo%WYP4 zl-NKeUoXPyE5A@&L*8=5KpJ=_LD=xDdW_56gW1P=U0}{L)IqSn?S;u24T`Qo(xATQ z?~;c3)IvK--dr3$dlKyerF6MD^P6~IaKm0**Jw+`C2dK~B^&?cVv`}8Zgp;u)bH{XHaYvO@UPvpdsGpEN$^ayx*_Ha|O?Q!28!-N9eo2UW~&H|Glp) z-pck*a)j@<7Km|>PIG8#hOB2E4rZ~Pg@0d9M(_$Pb@ETo2ry4GlgS2sm#O#D(Hzl! zI(3~p!cm<&wGKz)6?tT8T?!jX8&T^o)F0_D>iwbAAMFp-6`o*&Ebt7E9*JUXyZ>zE zZ69aLANn?i#W7oj&*Oa!dBbLBJRrrJ-ney?nX0WL5HkoY9-Ko!G zhm^@4P4OGYOUZj!^5dvR2O*zH2WgwtT(@mj6KLXgO}uaD@3!X`mYL{Iero_Bo3Rc1 ztFUc}CP#_dC`YNpy<`9X%b}wFD2GbD|B~7$|4M!4DRJrCQcYYCNO752t*WkbXe8Dc zy({M2wsbQeIi-qj<=IG>S@=`LWmc&#?q9vhs@`7@mp^qB&%8rF9eC0yBV9??NNDsT zPrMJ!D8c^=rG~nPBO}2yxsq51Q;Pz$`6_6a@>NWm?vd>-MnY%1^5Xi4DcQyw+>Dmr z9Eb!fo9bd+MV0K}6TXDYk7q_gttYiaf3d|oG+;d{ik2)Ih$}KuFY2In*Gxofg^DM90{9olB zEU`m69BZ2;=Dcw8Sl(uTL!E)l;O4J|V&1A9TZI1z0wp%{Bh!U^5o4P$CYLYy9w^;7 zpU=L7@(*p=s4qPE2*-LT`OMKeUyN7w7j^^dS@144btQlOy>Q)Wvaq|oQ7>*CTwAJ> z5(7704iR7Z>*sZ*DA2$lRDF1e< zC4C-<|5(s&r?zo?b1avtbt_}8g9}BhhAzwJ)$a#NO{bQzU2lE~+}Ool*S0iKC%v)g$O^qX82&dNn$S&!Bn)8makWq_G03m?NR2c(SfNy(t($sn+26B`?Ff3j*IW#(mAU%njnphG{FZ4?V!r?2*#Wh z{jbbr6QA?2jeKEgI1GOw@ik7>bjP=a;yI(Ul)21J=B@?$tm(>*VD~|JN3za8%w4+tkfxmO0GqSU3EY%# ziF{VoQfZS*dnm1nx%=p#ZNXtp%{}skYVN7?^=KTFuXontEL+rfJ*+BhAh>&f#Pf`g zRds*Phe5>niNe3h`H8$j<*K^e#$j;urSe@iJ}-$!mu_a)Z?urc+8h?oH@aWBR`q0$ z4W~&{_a7H=Zr3S}&-|{-nDj3mk{+&>$?obQ)paAHb~L`*2I=*v_9&Ov_3VCxP%*< z94NJLkieiw(f?NAep8Jmh+NY3K3oWt&V91P8c_$tI9B4GA2pZyBd!`pJ`?W8jzFoW z=U`}U5-+&RaG#P!Cqy9WglZgd2{$S(P%_dV25-*C3NGy})#!u>B%M%=BQD{B@c9wx zITAWdQud6JCaBQ~5lC%noZw4a(=aS3;SeW2tS zGXaXX>=xWv7v5@hLIjddsKybOa6>!;r3$U4K-lyh|BtKD2@yy-p&Ivp+_~X_k}kvs zLSmIY?sivSYjr{dl1`|`5tneTk%1D``;WTpt=PT!ADs|^q!X%f!Y<3Q*V>}qk5Z~_epG|_sROk4Rybd4uOBy6>cTFg<3A+h^x{1us_oJUg!0O z9~G*?dy`Az-Qu^ye7^5#cUYNykHtBZ7i0UiW+MM(*#jJ+uCv{{6y2g^=`0P7{3Bf5 z1C}sv%Td-(0ujG8m}_;R9>a4g64}e{R^nc_{L*{AY}-0E#%>B2U5gd>oYh!IUCpKb zhSd}U=^jeqRo2xci!{`Hqsktr7gRQgpM?37D(f++Di(pgMeM zhwnb<%b25|c%ZKz8}`x;o|t2P9k%Vf`HEZL?g-y+>|l4tP8I$g3@_x7qdGyC?Lln% zr^&*L*ve{d5SmU%ZVZ*@>^9e2YvF=BHvA#vh`&!7V-uzwR?g)lE5vv^@1Pnnkg+Yz6fnr>=JQ_DBZzt{eNtod0bCT*#9GBU$T?sw(ncEaAraj zp=2u*DT+k0mN2%+R;iSPqNotE)AxKW+4tff<{c!hU8ih~7`TZ~Ry| zf?Z29g?*vvlNGv;}@^jxF#-7xn^;q^t6`3 z89#1`m($tIjCdu_uNjG3`+$$%-Z!^o#t7|0P8eFeRe2P=mwNZIGF` z<^pe@%f5Vx9ikW6p{PSI>IMx=P&#$8BI9an@3sSM-^z>;yvP_u9ePn``#wRbc4-1B zET^@(tKAcsMS>Suq{tZ2+YT7xi4Cf9{D>RmQNPFAZ0h_L_8&Z{c-wjt+dfbR-i~fB zr24oQ>JvF8>X2jpdR9?49QH2sZZMl4^Q8l8Nx81ji@C09tSGM^&}|oe=r@i(Yh6kf zveBb9kvEs;({~5$d0Uo4zCI~GKg7Ts_6}<+=|kQD3-Uh0zj3C(T%k(EM*43*cG9%e z7yRAZ8CaFLjuhkKI?}hRZjlQId}yG-9R94`Uoc%-TM8lg+ERxR$4PkE<@8bTC0<|9 z?_f5upt(NwcLO?S1k76kUD-7r>>p~azI=R;?y9_m^Mf(3uCc-iR1J+wqA}5-oFCX_ zoM)|04OP?Pljy>$dw5*S56R3fvc2Bth7+CiNqfI4JI9A*UudtlHJb+ihWz;$lv%oj z&5CWWx9>BJo=IKFk4Kqh3)%O<4s`GJ%jEMol7h$R(py_rC9+;h$KsvT?cs0U<`cDISZYP*l&yDn(xJ!y@HX!= zPG;f3#VNfPM$vV%D)VC*Tgg?*-G*a|x!ZQeTq9MfAN~Eh4d-0=jVhr&^ zrCUQoxvt#C8LY>RmU;)%H8kM@l!3Woyq7$m3(9alS1s>dYR8_t=!*55xi_YGJ=1q; zuRmrnpH^+DMG9vgMj=iN_D@uHwM!>$nrJN2#_20d^Gr~Z z*JhKQ?!Xlo!40(15f&-j?z4Us-mcPAPx6K7G>%-dRC6I_VSJ zVHm5VpR7mKdY}0DGVFM!w00B66xVJV@4c#qo{ypty|lf0evF(e@inN<0Qs7@P7}*; zou-(p4$E+ztM}|zq`k73-ij#8@5Lv-drR}&P>1u}#JQJPhSxcPeZf{bEuc0=TeH=3yy>s@I5>K58De|?X+F0Q4%AK^yJx|#9*PJVk` z;(9nP$n_dFJ4wclT}X9*hH>2%=$o{U1n7`y<#$a`So^ND&!%J^V-x&)r@a%D#%FrK zSRLi#ya?XcBxVFbkQwLH@cV?p+*R zEVC~VBEJ%K=tW(wS%Q)@O`%q)+PnNp$oVbuD?DG2Ux_;OqHgJo1f|OdbK1RfB9FTU z%0yO$USw6G4!x*r(=$OCvciJC>7nH}TLk<{Vp9eO)li<_DwGc6Dz(-L(&F6i!_k5^*N#?yd1Te;Wu+IyL4 zfe@LNs6#L6Hq}Z{OyeAALh)wqoq6j&OzU5-s6#L60__qMziKcqC{J5U;SOaI(*hwf zEm4PF)GcY9p!|S6G4Cg>;&CTGdMq<7j0;Rl)S(x3X=M_W%;v6;S4jJ>>zr|2W?CRb zrX}joi@KGer&TYb2$~gtK!qZM{L!#3->w>+GW8DW&~Fbfd$gzp+iG8#K6!PEJdA{W zTR?buZhhE4pfdF}dq}z;+ppred&{p8+k2;~I`(}8tTSxHy&E8B>+*~$YM3j`T|HWb z>!KR>VQo#F=!!0hWcMNM-LWv-k$qh3NPm<|Bq6EVyJLRDIG6|JNF7a&lBq{4@OQ_8 zh>6nLO>7IU-F(^kjM^YKj%GDz&gT#mO;{#P>T|8PQP>VD1|f7Q4@6D}7C=ZQl&C#!dT%{kF)Go$l9@dbNYxpRw9E><_O|(i{i$ z;v5Iji)HA=wOaAsEvWwNM}7}m2D!#_$M_SEYL^v@^V&L~U0aITb?;SVwZE#&_;r!% z_5~EN#zSLtvyXa^N7+O8n67X$WaB(ybf&SsWXm1xTi3_696Ov_U*BM=5xuaWGQqyp zqfu;Bl}7qXC6#H$=*s+lYHStFj@mTPcd$32-G&?R7_|q%e2c+xBoSSPFfzuf1N z&w5$J!FzlKdSZ4y_r@*!#rk%RCflRS($>LH2Azv?h51tA+D$0KwVNWR!M1D#PV;xt zN-}dnAsM>`-d{i$u&bEaO*>5P4xdF5JHkIhDBI}O!bq@Es1(mP^kl)O)xFZcr*S>$ZL2j?NYu=Hn zWjfJv2edH_+XgHsF^kOdXh-*0X!B%(!%El_cqS)zvY?im;n@Q*B4NGS<1O!q_eFEs z?E5}G2HRlW(^klN_SdO5oi*|pFI%*vl+79e9JAvy~U`ObacuM{_br!dp=9*+*}_%z9rr4tgV4DoIQ{E zEN-qhywisEYk7lzGnMt3!>lfw(uNB@l7Gp z&id(p-D!`&-~64wjE}$M#eSeSqGt~}V|`m3D}KEd>~v)BVUNr?{%xrZ1=b9@g6;Nf zEcC-HFO`fQ{_otpsjvrfVh%a%*hsOT+fzkdcK?~I!=WrP#kq{qvY z)l~ydFu`#hKVPOzs3PSN!DESeM8x@jSRc;+lhzJHA+8;M33~@uo%Dc2JpazGqd6YG znQ`|x5;yAsF?0RFkDD*>XKBtDcyZ2{xL-8J^@07Ohoz(_mlJD|pjA(JeMwhdv$da6 zlnWc1k^@uj^ZNF_x+Ae5^dbuqy-;NEUoR9Hpm*qTo#OPOBe`IImDd;aN`?W`>crG*}M_+ojS7E5CT-4i>V_$Fcxc#kP${Y#2$dSy3rYVi;x|6V>5Bd0wnDCi(UYe%#wRV8L zpke$#H+D#tATz+ZLeplJ(}y?SMg1N&&w zrC+(#my%CmydRYgY+}P|x72@au$=bG0Tu~yjp71WhAn(|*I7=aThUxkUAJ$eNb?xw;v0 zp4s<%qqupeaG8F3`RbSd2y(wz4L^MajsNF;fOed%SBR=gjZ3lrF- z_D1@w`0cd0AKXKseG_v}vC?Ig^|O`j)X`=E_u6KkWW6&h>0_)TXz%{3xYsuGEc0@@ zMan>oN@G{>cY*yy3)xA_8fx7#d89K9;(gm>Zv@{=<<)*UpNalqAn)56C=>IHVO-2J zChixAWtg{2+%pmThI=N`{clyDX1nR~@eTQTuo~8-iuvYnOflbF^^s@z{t!iPZt#2J zwvw$@meJh;->8Q!lh zs6C6qsD+1)$9URdic}xA1?vlo)F~%NrW2<^?K^qO^g@Z#U_X%4d@>GGCR9!*5p&?3 z2Fw-{vL!Fphu(-dof5k#o9w;umFuRD&zG1C)`v_+)S(x3(N}azo02c&puIMSYW9fl z5|cqMG8s{aUer0J>y+xV3SrO6LLPUieUZduxEGj=s6#L6#+}zG2?3>~`9OGAfx?yZ zN+l+PUSu+&4!x+G5u;PO-z`gjuGhSqR+Y-^2E52xM()-r{TwRLvxORy34niwq8IB! zuc*VepiX_QQ?A{sL>Ji=^6O~Lo?@BZU<_b4q7J>N3klRI(W9zSi+$R=-a`0h7a0%s z4S9~JLoe!(p>)*Oq-{L4XXAgl4|ZoZ3%kbDtL4AfTS^xD+dNHKez_?<5w9^uyIaqtHIx_w*HDUUEwMgaYZ+1W zfEZi*(gl^)^~bWLd|yV|JSX!GFQHevrtqAo$A2u6*5RTK*Wq3`^g#XmC6YeqV$AQ) zt7}-u`{6=d+z*#tH=|XL7}3QA+JBAG4gReEJTuyzR-uowA&&@DSh{JQ#Hz3iS=HgN z^Q6I%CGaZW~!8(#tbqNhG+k@*Oz9qBs$8>z3^zbIh{G6N{_($SH zI4;PC-WEPlb74=dj0Q1WH)41u>zu4pHrn;3?UrfGXbI%!lGqJ+k==+fuq_zl7RIHKrmXc zOLN-JGC{jXz}g3i-GCR_ji^KKO3)ongZuar3%ae+e(uFN8$4g9969VjBady-yf^>DctD7ZN7QjI==K_^N@hhzILi{6g~)RbUezhKCa!eg z?j`)(n4Eqc_Jn(^jvN(8qiyG^U^VcsFp0e$pQhGq5lCNJ&r-3zjTI-boheUMTe~gv zK$wGy*W0p+HQDn#uJa0;e zMSmkvqyGI4T|J1kH10)b9smwJ^xyB$rB;#-$KVU-j?6cuG5R9X*tIN=@qM)wd#US5 zWAcm0Yx{rM&4!VXZ|NG@*2 zXUb_!7xJ4eQ}jeN&Q?z6oZ`BTPK$XeEp zCO?7M+4k0$Ojul@%xNG9a+;ZtcdJgNQWCrzzG0!h-LR&xgWXDkIn$f;JH*?!1=zLM zVt*2|Cz4D*py?LFxA>@ILBuz`DP5kSy<>(P%x6ziy3o&Q<4N_O+8nvrfxo5sAlNsY z4J~Xcp&}U|Vp0333`;U{@MH7uXGyVc!bcXDR&*J!sXiDZG8Q=@;0Xjqgav zIE6Md*6#P=PoA=>u%^)RmN_k?@!T5*`(s;9n5jPAzk!})_xS(m-VVIayj8ZmffjDN3GE6^ML(G-=B3L_D$E2+Dv-~iEt=j8?JSu zy3&Ir#ZjAccO&Ejv)$O8&Ygag)ayQg$GsPj&MJR5rNaj$lFgL|@ECaBhn>sfYd4Qv z*YfU%0@FWS;i-D5OAxgx^5^5Sx||Dp-lspk>;Ikv#s%^*EnUBeDL?wrhKF*A_pdt3Jc*Dxl!D=^;-2LCv` zgRDPWpI%#5g!Garc!PLu!$~|2*Ql_^atM&w;?mb7Fg*Q-++4qf6I$sCXW1 zsNa{ZH@>YbT^C3H37*0G5m?(?stur754{ zh7q%`H+T%YzON+~gfWl>i8`zgbrR!&LS#G=GXgI%qiO5zE9(Llkyzdqfez;*UFi`<`lc+PN$qXSWZuN%<2!hTwZE>gj2z~Bm9n_Erqb$l_cSMZXzg{=9+9-geG zKig#i4NikH5YqXd*uh}+E0p$w>dn%B3-wIb_N`d;Zc zx?sTa%gOxQ2<~CR)|_dtH@NOjH+7xJnQ!?Oj_j{*d;P+GvuXG^d(MX{Y;lDD*k9BD z^WD_tcoJ_jZ1uqo)h(kB>JdqUEwy>l&Yw?7IlypScn+|07t|XKBj|~SfxI6(@4R7l z%WsgfXP45dnO*s}ODwEo>65;XT#JNUQj@#!zODLkT*~i*^@ zWgW@xoXL-+rSoU@qRwIERO^f6pZVH++riGc?BSDRN~@~ph;HnA9%GPW4vX0xpk^fY zP~O+n{->-Pn8%i$+pL~)x4XgOmo+f zC(p8ZTs!CQ>}ce?#1@~HL9o%{kVgUpl;3@ylRXbL zX5{8pEU_i5580BaLoezUn5QZA=A@HOwKP8DJfleBNa#h5B%iU2RO4!hT8;M*=T?ui~?3^WB zsKdUY&SQ9*a&$}``WBwQsB_#|AoC^=B5x9P=tW(`oHXTWT7BBNlJ=izQv83|5(tqk zi8}P6PGmtCcLJ~=kwM|{z&S-yZgmi1ZuQoSpOPxhK6GQxZ#>Uf@=qUjdi)FJQBHH( z>)w0b5BrCYWwr!fWJ_~@WGajGP3ewz8o!!#`<=W8Bj|7s#*MvAX~DxT^l@Wt?OcA+ zdKMKA`w~s*K|7Ap%6=xVllGLte&C)`!JWF%PVh}v%hQrSD}E;X%S;P|$h2NQIYYXg zUPQOoBK-am`dP>5JTEmSdIQaC>%#wk6s;J~4BjtLouW3-@Y1#XJ^R}VOExHXo?5zc z6HQ;bg3nv}K5Hc84!o}%EYpRKdv%PDfh*)aLIygwb65HzAerCS=EHx^iDynJ&W*az zxB@7HarT4UF=83^1Iz5J(v+m(y=hHFTh|r{-zghz9#tNm*)!nGyGRvvYYoHMd+T_m za_uVvQf`Ov`?F8I%j}uY4&`)G#DKXjJ5-Fp47aoNwEN1N*Jd=d_95PuO^5Pjjs!a7 zNMc+lGQhZ^7vrM0T%R<)$Dyym0bbu6_y;bsC5($~Nz|bibz57cDeDW(VZNxwo17zx zB({WJWJ~wH-B*rmwxBsR46`QJMr~R znM;8Xxs<3wFY2Ux>rjUI*2O(-p@{Ek`|)s~8sqK{??Yesb)FX4g7viO4r@eu&;{EY z@q0wUfhBBNg>E!0y%!CN(b!V{;U#S7lsYNfhK)V>kS_kjlf@eN@)EBn*cJu{T4lPHgIzWx-p;6ZPidnJQZgMANC zS2S-j0>XIW(s=HN2&LyTsmp#j5p=Bgv=h({pKBn|H&t zA6GM)bRXQ9e*6c@z`GCD{(CyqqnS6FlioLG@wm4K-(#j1>r;n|jYyyU(|DWD4S&Zf zxHO;!P5&X=BVD=o+^}@ktRRw{pID9d$k3Qp0Nis#u7~Fuay{|5;TYg?+ZK^Uk{_AT z)PJ;R%05_I)oe{RVeR|Sg9aL#OStxibqO4zTJ&(I?*DY>?R%bdi=`w{HDlu}8n+An ze?Wa{$I@8kotEm8OCGdOd}rRikKyN8d|$}X?N*2S{QyP=x@` z_qrVY#$3K$BX2u*qBquE)9Q;Vmgbvbn{mEb`Ij4sXPI;*^Onln60r^TK=$w_+bWbQ z?2O92VIC#ySC=?qe=waCF4D%{Z|fgc?&=36GTe~N4Akb>Bqo1ixDLW7uOG( z;3X21fxyU6Y(i5Nue*Ec@A`dtKdv_1&VD^Vru1~%OZ}=2Rk3~ht4xvV!~SA@OV?*A zJ`d=e2 zy6Kt9aJbLKPe|k5nL}Z{u269hRYP()~>3 z(LamHwwxzC#=L38663-4A>*09D_z}jAc*!c*vOCDbR!qG!0)B{cVZCrS`wh5ZeBT8 zsXmN>^~E2|R9tVaB9Z3LcnmMs682%}eWfDIza7v`V|}*Mzcc@T(v-)41IU;xjq8nu zTyW)r&MIAQt|NILwZ8S4_Fk%w_XFzNb~95M+hhY7SnGv0R%7#}`mlXipBNXt7+3US z*-Y?S#AYg+BZA4GyRUhD6Gnbw&STS*6JEiD*e`Dstzwe$RF89>pwa2Yj!N-cOXX={yE?&5_E`i)F@LQk7dn z4if8|&=x2(oA{0mI&wp~`y`eO@Ynj$b;cVh26{0@-2<7*r87yS_D+o>c{{>h6*tqA zYsZs_S#@X&RA@c7}O|-JXr@7qE4z0yjY)DhHa zI0M!%2uurOAkz|c=tW)OwM-=_HkCYx(HPV!k3SNtLNBr^QHNgCEenCT7jKe&zMuH< zSTpO7#GBBIyh+rd7j<)WnaU1>2c$;iXYO4xy+mS5=tZ_9>d=ciygnY=KZm)#+IyJu zYbs6#L6lAmTO4MNjN=537`IZQ8**b;h?Er~kxqVCk`OeO77Hd)(Bd-k}` zD3;g~dXX)OI`pD$LujV*Fz*Y|ZP3`rDi{NaL4g-J((9m1WmS_xQt^ZK4=BVFatR1t ztPj1S4y*>Ki-LRcOUqL7GFn@!72{Vdb14uamlAd8MV(QVET!+>vhd9g?_5w8zV5fo zmY@*XlBmPBpzh4(Oyxwc3iR3#%^L`7>qWMN zu9;qkmYuF~DVIo@RbfAnL5Vu_qV6xWFZNx1%A7SW<(l|YW>6qR1|{myi@H{)GL=y- zjp;pS?R{-_N}kN1K!^-V)S(x3A|HYx1LQ*@tHL%Ts}gnSMVXw`S)a>{*KF|DDoDUnZd8%6fSds|*7%`5xT5p(}4 zI0pL)wzIY|sib_7FP)NB#OFL=*~NWVi020%y4$-d_wN50E$6xdGv>PLfAJ{kv2Z^9 zbABAx`9oRS!QZNPz#+Od=Lmn_==AU)ThgvrU3)i)=A1gk$I9&O0akD1U)65KA$n{1 z2^IU%`ffbr;=e_<4_`{hS2@Vrcd%eRd%EKuSvbL$Ufr3@=LjDv@aO00uk$_V4hQYq z#UFAUwGYo!YFPEAm#-e?*JZ$g0+}~K4CGA@(@b<<-=qvEDsIGMM3q|x-}Z{md}jOr z8tlf$Ah_%bmivB$?m$-T0H3BNJnl9q6Jy}`VT`rMGnLf)@EsL$h{v4<%t&Nf*f(Ta zM`vd$Qx_<7R*JSJZp_wv$&2-&SJdILMBTitnTmD!fmC^LfS*@(;WGQe7|6av9ePps z^;IV4TzyQn^>h>VewR2GdXaO9I`pD$gFzPOT%XqL=W!<={wnh@5F!r~b?8N%RpTt> zZ-_Ph-8+_hogpu=#KS;{JWSM~7j0~LEJ&(>5%W*+;e0UA~(aaLLMgS(2KfPc^{Nr z#~kRvj3Dh8=|0Fj41~zTL>+qVK=;@T?unxv>BptodODl4upV3BW*8TFn5aW9>g?e; zxc~Z8y30wMlQsVK3z>(35P6uWLoe#^d3hN)S3s`zPjmdsTQUy=A@VR$$GxDF*cTKc z`}!RZ{fKv?Mi0FBwJ;iTES$~nLBpPOp;ZrRtm@~{c@l%d`jA0Q@EJs3A1+JIw>Iaz z>3S0<*2_iVYx3I-t;f04`TEYxsRQgk$X=53M>SSe=r)NN`ShZfroAM^6}7oh`7_5t zP90NvX{RA=$23+|G;bnX>C}@R{>Omsw9@7`6|HoTbl4Wuot$-;^z3qrytURi!*=&# z)~jk)ni{s3#3l~oeY?FqoweKEiSEtZOCB3&_rDy!D{R_hQ)*SRj%+LE&d&p!=PP~h zLk#@hpF6xeZFP^qH{vXQ@0=Y|#FBtBIKE?~!95S|ofBEiR&Z zGmq-gq<(u?XEbS}#?!m`J9*sgz>D8@Oe7x%jHiKrqPT7sT!Zb}#gXWJP3h;=+V@BDsZ3ZyzLEHv zS<$pP2f266rc$;Y)&ZG?KPRTIw0FI^EB>(73oq)<_K2dB%XU+ty9S$DbY$Hu59^K= z?Vw*TbmaH@kj6dP1jobVwFx0j8*AT<305Cj`MFET9{3lyJ6QXl#{wWmr#WQDm9o^q zwur~Y7-GI4JZ_jTNLq&mg}4rF_=zmy`K}cW8=A`d78+W@Du%oxE}vS_!a!h9po`g2 z$m|VrN#e=IO4TyWRjltrpPB5NWez#<+dz3xRF}6op`tfaR!*iD-TjHl?O=_)PMpRz zt#zbN_G~5-A8Bhc3!EKUYD-7@F3F!<-SM0M^Ut@R#>(#4NX9#dkget5xIv8NL%y<| z#?i$0T20!#{deA$AoxGivU41nrq-l==4iUGW8WnfiDQZ^QeuoyAu`58-Qq~2p0|ic zRj3byOW+$@Z`qy3de0|0L$r5+`SAYt@m4Ro;d)zI;Y=0&ukF{~HLT+cQ)<3;J~^~z z4nP0qflk_25Gurd1&u1+At~G1(Tk?nd5k>=pnU>A#W6*GD$e)8GMw*IJE~Z5u{0!a zY##9#$e=Q27b{;k)FfM%+~@TrUVkldB=jOj61`Al@Lw;E3wjG$mnaXvHX)Cc8@#@_ zn{Onxg!Lg?5_RZBonhM&#WSlTi65^qBj?4%5?ewqvL#W6Uep+ojxBXFx()-46l9zm!d#y%fN^A+e$d*JMdQmsit3;_63-jNy)411V z%nyk-p%;0Rs6#L6KK&|IJO{XwEBhXC?_!4{i8rAadDE%^CCZVei%E@d8awoHE|I)g zA9_U{SPf9;wxdMJE?7luLNt!#Hn~t@K|BVWr=kw)L*3S_Vr5IS4dmey?fuyS@{Qp4 z>i;q$>>F?&F+UA@F+a`zL%{=**X*T9QI0CMB?#_AS4XrMFox`*Yrc))*K}yp?h*^a zwjc|#y>f)KG4rDnyHw%l>86q>X$>XThifRK=BB7u-iA=`KI{3t?(@LeEN|dxb=<2k zdh+ZV9^==f`7Ge5fxg51L-d#bS*~k#Jyw1PhWhXwSbA56Ao#9q-?u&4V0eT&dLH6l zzZUIT;^Q9VnE6rKt}V=O0&i;P0qn4EH*zud2yOW82#>qLtR5?43VX4)-9#G|YkB>S zPcmk<20GR3-e!7rcqi^nv+Bl3Zm|-*FNqkn`@s9V0=}Ik1_eQo56$r}QAV!XPYRoB z|Kq1DEtb647W8J@lql1ioFw%hX7T!>Cgw|JsKYY6j$+5@$hU7fT(@)Pe^?L*kp+o5 z^rG%+rxIo0^i-1T{gHcj&4K^KBI5xevKvu{UepCRmMD`ThyNwFT<#5XEtc2~o(ITo zL>+ojxBgqP;`JqsIK0-LwO+PAC3b^eWH+J?y{MZ%qeNM}@;NzuRJ*rN9+oj_o`)y;(9xq{BuY1PG49e@fY+W ze-U-)MV)J_62;@k7vk@wF`0SZed=e2yCX}K#+?hvVJD48_$(}ynGD25 zCgTP7Y_EZ(WYRH>dCZ47y`mTEL$9abv=`iCXV#%vo*K{b z2nS9hFdmG7>_*g~7j+RcOBAEr`t;aRZM~Ws%&m~v4G59lh&uG5Zeo`bW$&cMkgxAw zCIf3*Bz6NrWH+J?y|Y2LMJZ9P-)u^Wp?3W)zV%*aHy}iIBkItLI+H0SN@=?mbj@__ zKIHrC8QT_?shl=%LCt4rY<WYu|NfX(UU&_BpT#Kf$exXC?fC57@WlHWj2w`x)xhJcC z+MIR*hWfKnfBt@TrTzl8W`{XV{F0!U>e6GQwYQrTR#z0-QF(rJh+ub_JyuNUFXGO;NKkNqk@qgG2lp$BC(XK>U zo^D1PY&*=`=eYS7`={AMwXzyc=MFE!*UG4M+*s{Zx7A4lx6_S%p$xn)J9;v8Hrx+< z6bj!Q+&eX}SYj=xL)IedpvVAqcwV)uHjoahnZ&(#-b+jdgvew>9ePn0(xgNwv&VwY zP&H07ZU0Z1$$$`VDdmDD7KYQO7^pe57f|zRFAngvew>9ruC`>ua5CO-I51 zY^cs)2FwqWm<$M!$%s1iqVD1dcpi1Mp|QQS^>5RFjYv!egvew>9ghpTv-!nJvd)fH zwvN)q`9hY=WI%{aM%1BqD(K4hC;=8eo_6UI!M&4o|6wv9L?$EZ(2Kez*NPR7Gza?j zM+o=Yocka%84x0q5q0QAU3z%2vU;{7z1ZzvPNT}~2G0#-GNKN>cA$F;_d3g4Q)wNt zk;iqs19`Ruc7tAIGNKN>s2k-{qO>t{rCDXxaIgLIyE2mjAu<_JhhEe*?OCEUKjlW( zSTE+@u`h4ROa{HcWJDc$Q5U?tL^<8ugL-tFp?Tk3lFGOa$|QCJg~)D1CWAU;GSf{g z>A=&*A`VV7_TGLuNNnAF>kH{A`C7#MznOL#&Zh2$FnvYdeRYb zhP25Ijpr0EaF%q~X4Dy;=t(aC%2nj;<^oX1uS-SciMP{6)|$ubgN-u!tk^(Vqxb&EVDFD zvt{ug76`}msAnqo34{JK+jXI*?HoE2L58k&G<)^UP%b%$$?`)%ckCgDf z#Z;WmZj5=Xn!nmcpIR2G=uNIZo#mV~pw_|W^l=j{pZ-qBF}=d(H(B#Tp}UR&M}omR zb}oZ8G&7{fe9Y;VW|6#X-wv3|dB}iXtZP9lW=8O~>^$*>#a}j{U*20%lRWME-2wNK zxu?p}jCU6Fs~0y=!?LWaa?@O(i| zlK|@skKNXha}55uf^OroQkFDiFfDg@3u(N|i66@Yn+jOoQFD5>AdGk>I&ocCd;yy? zVlef78wT&$leup9?n2gU=wRCXQxutDI)RT%$dMn?9+4OW_lW!q%qSq@IY}|p+Pq># zDJxU7n+(kF2CGVfikl2l9kjz7HPJA2|$tXz5VQ8{u5=AnQtVdqb&J{%XUFTl@;wCqxo zw9mf7V;}EaZbTh=QP*O2MKZ_V znj9FUjj8$MEQ#Hq7uk)dLoe#OeS`j%nMhWv4|&|-E?*>egI;7eq7J>NYf`=<@i^^H zQWieu-U%>gOkzCXMNT8?cz;1xsnm!}wqH#4IX~szNsd2do&#RwIe`t`Rg2U>+NftJ ze^=Hu8Np1<=c?!L1k!ECA#XBNc&0;dMv@%Ww$Fm-me51|8L-pXQer&V4`e(i>Xs<0 z()Yo0Utnc%Lqs+oTUy13SK)e32R?(|VdBuiVmsh>} zMADvXT5|8IcCFapCI!0Lx!Y+|Q((EE3vAwnS;be=ml+9p=`OAufc>pHVm&+btC~LF z`Xw1g+mg$+OU<|{+nQT@}bG_Y)x{yoxHji7zZy~!^{q(sG zH`Xed$@lsA`ITA5`q{5YnX}Gcd9vX#AHS7Q=6<_IN`RBUa?kP?AHNl4R!Mn}Fb3v5 zT5H|{a+EQuOAX@Jpkeq*HmiF@@=dp&&@Gw#USb{gjqQABL{6PfBC|uaxjj?Y{)gQ_ zKakysUMMm^Z;t~;M7e*0EXmXO(8}4chk{Tawgu}Gb?8N1bgB{QZ=xfELNyi?=vE@L zAP^!85_RZBUFKaQQpG8iL>|@FoGo`Lky#K3kp+o5^rG(C-3r9_?M-qY<_%-}Jb@ER zEC__ifd=e2;0H#;@@6`*EUU2s7Y~>(C2}9|BF_^TW<20U#v|&`i@GnDjYt`NS!y1ud8e)^ zk$4WqMV>S9j1ie{Re_f8UC7S^x3#||FV=@%Q3qB7)TLcBBHbQBUgs)WjD>4u#=~O( z;~9`*MADsLkCCm~oFZTNHzs;926{yu#z5T;82hpBf&0ABxX;Qhr7|-DA#xv4hhEg- zdH>w24&CvO=3Tz^KYR#;$cIE7dQpdCdbX%OHJYl;v_mGB5))e7vw{t4!x*5;9x{9ylqNvLH;2qGH_3OCG#N=A|DcU=tbSC zcSdAfw-z+}HN1yGnGei=5m^w%MaJ`>a~0C4VLLi;i1xo?X3iy;_h3x^2DhdrCtq>z z>{qZS>-V~3a#mZq3EyeJJ0txzJC@dJz};uj^h|FH726kCm$K&05d+#)-$NsFMyVJ# zqER1qXU;G>^S3eSUH02KEPK?_lj+$gdRu8lwp94~FAJKsgaSs)&mDT`)m9GIbfAO4rKC^^=idFeM zsN|n3jL>mD)cHysEk^!ow&Sl6*|t=n(=Te=$2atk#F4OX$dR_)ZKU^} z9Zt`0?bsjVwm#L5o#|6we|;fvq}T1wV1G>?TeGDv;TceCAkFTqv7p7$A>4fh`f320Q)(F@%~Oen=3OT5F#@Yb?8N1MuHLfW1lzi2wVkw84>0-0OVrmCTGlh|EaTp%-<1;k;U5?MkZ}`fG8YJ(QUd2$30yIvy8v zc&-gN??z)iwY6!JAa8}lj6jIYNYtShb!B(eA-l_a(hb4WdE6P<7umBMBU04UgQ~MV z_&ss*yQ^$O&SZ$+stM^X@jeI^*B@KAsNjOx~NSY zLa5V=9lXsKYWuKt^?R!4n}<-7$Ykw%rlu#Or7ct+8cN-j6dhjsXR0rezRw}70e+v4 zp@ZrC=X;6$d|N)In_>N%=RtG2_Rd~nFm^N_)0O(q5(~mMBMZ8aVM;^Kk0+K#=5g%3J9PTRZ;j`Q@~Lg;j|oA$@J=!*<&Iy4`W`oo5_JzFxGWM}lH_jGafm zv7aLoiK&+>ZC7;zKjz+7ve{86GymmAzx%A^F??YCC9W6xSF>5A-`CX$&oFxN#Z47;`noPGGv}7taYPusd;T78^Ql_XnB9rX z>Yapbv}=$1Dvsa%R*n)MLhpb15RMD-p{reglQE%|^z5oI-o8jE6LbEc7jyndya@`i zzOTK0lOhuf+Mp$HDX4HKtRIYSoJfqqhtuPSWBC{y4f(-NH%TOOJKNAh>K?A!AM=Bi z?eLqdUu{meM{10FPfR{*^kz5tsc%Os412)#cKEa;PrplRI@}9 zeZ_&k+6L?k+7b?P2ir7(HHG~gX=Y{!_XfhhtoqUIsbP*c8DGPlmpSh$l=3TMn=!xg z^XoO$g@y_ARF#qZ{JXp8opi3@7~r|Kcfeq}?{p%mv($>mT?cD(yBsj5jdh76W+jwC zeZFvfm%@58x}TA<-?jU}l!MIc&i0TBN#r4&Xk5Cb`q#G9aj$eV5-G9cCL?kNkK0k;6%p@0IZKI{k9SC~|bn4PIX zb{1%Bx?--UOS}oa$eTnRdQq2J#hAEmYeFi&(B=iL-||P|P3T45Bbt0KMUSmO)?q4L{gkI!Lq7J>NdpzHm+@3I# zJX)f0!lCYY5^v)D1>Pj;(2Keb&5X&?3yaB`f7gQzam3CLr+l>WS2ou3Dxzjm|oBhRT0dxGhhEN6ai`beiU>oRB5+EyWS*ZmnP zwx!VCll?f@NuOVP8lC^>H-A4Z=i<*yj&;&ks5yzh39CmPuhH% zxAX3^VLJ^{yo^$4My$r0p87v$uGvoqEXa$ed44NY2w~vUuO4eO_oi-f-DL9U@B-eJ z*(0j4Sw$yxPpy*4o~R|fEi)}^viIk!kp2gDlJ$^_m5+<>H~tQi=ewP_0z<+26xVF# z-N=}AO{0A7BnO@ z59X;F6T7@5(ji0Z+wj2e5?jJ!^nchAlp$Ms^9SxFKTeQ)Up3A(VQCTb`B)3`iRsAk ziP?Ot#<~2I*%Ek>Es0)i-+#S0_UNr=YD{uBrjmT)TwdR>iJxTN1ZLz-q7J>N)6Iju z5u4m1(dnPLccfje%$vZAyh+rd7j;)kYLP=d9smdZ%Dt|3KP29SV{)_0S7N+g^NyPj^KwNl1zzM$q7J>NTi)21 zlyxp73w9J~$K1O>;!PMAd6TH)UeN9OT#KCYEhY17X#bR^EH9RL6MB(1i8|h9&|!YO zz1JX*^(8H?TY$`#(2Hzo0rc&PZ3W0fpv`Oc-27YeVtwcpbzn6>T@;+-EuU1P{S=K~ z`2hEkSQQA7Rf#(EqONTnV{+ZT8XebDV{?Hpr&nT7AVdZw>aZ=SYXIZo{i-H?Ql$M; ziV7;085DStL5Vu_qAmrl!LBeL$#AOX4d3uvW>DZo29?~wm>7PlPlxQ#7}UC`63L78 zp;y#l-%vN&*q97m(iryX($N z3+rr5mL0XGT{iFMaou5mFo^|$5Lu9@LoezYR5T{zhuYA~6ZUfNbTwCIK_EmHBwNV+UM-(2BNLYa)#?eVnOHy79{G>i@J1(`*S3$F?p}8%W{GBTM`QbA+jJ*hhEf; zhq#?@JJ9=!!+D$C&g97~2!zOjL>+ojhs?MCct`p-T$^j)elbU8K_EmHB+ojr@*&H zrzdVSMbXw}xxBh3vmlHMEJ)O$7j+`Lfg%HBH@{|@kl6!0XqP7Q`8DJI{<@^&UeHO* z2nvxIi982&$aAX2+t5LIJxEv$jqyC~V$TLA+S1uZrtqJ=0p}%8J2=VQ2h7NLK0oXU zto;JHvp!je?fdF8lm&!Ce(CXgay1GV4;21fFpAx%-;;*MT_LHh|D6})HI{7*=tVnM zxkDOtKc>U${QH~{664`sU_5a(A&+%YE$Z)GR^?^EquB(=pPf+4m|i-iai8zO)@;5@ zKN=9(fV9}JeQvv-;9aFB*`+V}|nkcuL1>>_xrH zq_RF#`P%ywKfYVNf3sG{FB9vaqsoVNr@43Q!auBQo%3Xeazt7F2g;x^K`=jOf5>r? zT&)xBoO6xq7O9`vrrmAG?@M#2Q~p$5-^}b(cKli!Qn|Ya-FtKq*G-4x*1x15nN~1| z&R;cy*Eb7vQz9Gbr`#jdvusserxW_#1&i;_I zL9wQF4eOAz=SK1M&Nvq~{@_sh3Ub!?zB|L8DR-OrFwfG)`W1zhX&aMB-nTjf7O?Fp z4fVrZjp)5oYx%RR!o)SqGUFO~6xxmkKZJEa(7>I?ze;P}uy455ZEMRoQuc`h9XWkF z*M(n$b(Q@S$)JIbbjVNOG$33L++xE0j`aJTVDiAmo|hc}ZZX296Lng>g^V+H;NFef zOQf9X7#DL#iwp(hB15t5JD84Ha+>^;W6JAWmiAWOdmg;F_q8>x7^1N~Srn%5T>UXiuFo=Z9{??~%e$8c|WNI8k!U|eK3B2UD)$P+7fj3e_O zO{E8%fbl@#np+>(+1e%q=NPM_()jtD5cQL_ztxzGE-XXlmAS{;vhP%`#A(oroJQ1P zT+}Uk)tESJtU+?7X$&PA=9P+^2EE8>L>+ojXE)S@m@R8UmMI#$*$DrWMNWfWKwOCS-Z3HRL^e%DrxOKP66sUgR{Q4!x+`GRcITtvQLSnAqAum#A62Iz@D+dZOABxCn(2JaAMh_FRGHf*&nwQRx?`Z3fY;i$d68UKbX;!HH zUmZN+9qa65LiAQk$mC{_j|aTN$9|L<50oL}nHiK!GXDC~NYa?=HWlq>3r?LQso~4u z|L0MDo$n~w$n5+~$k!elNzC*QJnp1nuvTll2^q0*E3xed90b}tdh{peUdfnDnY@)u zo)1g`3bD+#PfZeSyN)ECe#^b)gI}`fSG7pDCmV=Cy7oVL#1QyrQ>QZUh%IE)awr4u z0P9y$3>+)0@8}#8vgb8`>Oo~tX z(c~Fx_3J!f1C;FxbHc6H$nUEUI4k3M8<<&WIUn{y{P+Q zZ$i#}Pbc}h0v>n%6qp+&vLNsx;}Lb}MV(zu6SBfIhuj%k#J#TWGULIx$aq8@db!RV z+HCWcRP*}9y_4n^NsI@*$asbeI`pD$WH%Esbx|Q{+@+X%ogpW*$auIH7>}q!FY01C znGl<;rKF6F=5<^1TVg!C&C81=9ePpsqc0raw6gTocCF2xFmG65LC|L8Id4ap5YKTi z_vpOFeHOsCr0B)^&@1Y|YJfU?9^HFfiI!idaUZ|P|L`FYA|DcU=tbSY;U*-)wi+GO zLSuNVVu~fkgMCBBBkHg%sOve*glxT2lNt@t*dYT>BQhTJBICjP?v_b)XmDkX-K>Q5 zZ=x6LL$9dA_MxsdoNLH^b{lHmRq%Z-F(VKn_YrmIMcu1`Cd6+=V;U8py-zMn_z&X& zAu^t-(7yZGO=(*1JbwT4f_D|si|s?NsKXej`{-ywuJ?ttWDT@=hmOx4$Seqi$bv*2 zdQsOUs5$BXrY(KZ;02HC^!6sR(6=GB`&!cq|K=#0^6D;oFryRf*V&HlZvoFsFuT6H zAu}VW51En3oA@~iyh$B#TqLbH4U`CFG>k$?>GMe#Ea_a7;BLn`+@Z0z z@NTDLtaG@uH|@*ht$d+hil#$G5L?)xrHD(}WGlX9dPlh7qGFyyByGtGx$^obrc|FC zN6(jVsnp)KV_A>s(mEp>JQG2#8BttFGm_(oOSmUEHyaf`o;|gfG$X6yKa|=M0!dqv zDM;PPz&(d0h)u<0Cv?T#(3TKL+L9bc zT*A@VxM|TM_Gr=p;q!VtgIJ+0A&|5sIgYr5TV>G^2Bw*_k$(FH*D^IvsVyOpv?V!? zxP+s=Zpfk)%tW_=|c)_34x?7$#oy%lI~-Ay%@fp8pB>4m-NI_csJYZ>|(Ii8_x=CgT!~~ zi)%US>kebvty3W7yR@gP%5otetu|q=w~vEk|4HkD-ogLqNN9v~q>CqeCE8E&WivMa z{eS7Sg=c5>O58fd7w-jqEOLVy_B#~154Gbf>OLIr1aWd{%^F(N)R50#17`7#+lMok zW35@~X-Nwz^*7=jZDZ7r?Wco&ju_y;AS6b8xO^d;Jv3hQllynn9eM#Q7-3#dv`?9JlVvUQoV;MuM~NDeiS6U+7-9nF*IPSN^%c-iCG;{m`%N2e|R} zXh=WRhgo#ReKE-OO?#ubgO<2-2krS0H#IF%4zh3NH$*$0^e|WG0>mX<;8%->c;59e zmiaDO#QxB=PkiF&X-q$2Eqt9J#s2jY9p1I4G21Z168_sPX>NIoMsr{PX)MHHAq+N_ zG`BYa%utK0-THtk8Xa?{eTy!TRjW;e4=O zfMsZe{&iF(nZhYA4=_?mdBE|>pA_qs$Uj=QbZoIRL|HFl0}lm?7;MKiN_|#Fz@y{e zV9eW3qRb!n{wvl6A(_?%-JKf=fs1db>eag@eD=Y8`IYk`;nm=`s?3`4f_q>m?%)3} z0xDL&RlQEbGW5^e{ug)InP$*9^%R>oZncJdaqr!WPwe`}pyz~>Yygg&gxl9y2k$j9 zWI6)|!@B=&2^}+aq%L>wHkrjfn+gFsnL-zRJYg{3U}?nun?DVvR;Q>b&gm0}^7E%B zvE4sZ@F*V3u<+5C;fm)$cIkPHcE+1bk9K61c>Wb}KcAV&8wCz!d*V8>%zWt?eL6jz zzbhNS=GRm)1GkCdd6dTQ;?52GvxQz`n9)MK=K{$kiJWV7(gw||_o^$J$09DLk5%xj zcG|G@SPeKe0^ePWvuxJ;%+`sU2;Yp1j{1!Rw}sUGvS)`)rM$;W-$Kx zT~S{!YWi|Lhq$EY$Z^CKI4^A&KD86H&Pfqmx7E_T`2XoX$R$0;MusCU;lB85gKhdi zxV2Aehh_g)3O$GHlAa^S5tndpytUzOcNMfNkTjn4`b7#oM{rTkk>iLr2*C;QZw;xs`am1n+X20y0@NaBRw893$w8%zBb8V>93x;dUB)bb-zAH2y zialvOavX69=VYOcns*o!CP_NTLR>?ib3_}=%_5=nt<<*JK6n?lOm8CpNN~rKg z5^_o7k>iL9FCZly}cwhwF1>8V}hejYp0X?M2)ZEA0P{X2K0uN%vW6 z@k62U5SKI_IgYr5yXK$`_9Z#6xJQ? z$~7M1lEx#)5tncmcWXoVso&6lgv8y7`|TB45OPW5G1;LFYhTu6o9F)!W1bD>p>i(O zM_f4$sak{!;@HMIgYr5+kpP*ylBAE+@*C;*7#3Jq46M) zG#*=gZq>N9$Mv(c_iMF3p3f!Yl7GaND%Vas#H2J$ZQ|pRUy}m5J*~( z97kNj&2ZNSI%~*pv-GYl+5cUs@gR^io(N}cD6MS6y#DSl+wA{S!6pBQE60%y!a42I zhFAyOU*;-lJdS5871|BOkF*;(j_M=aA`fk-S<#t&S}gT-4!G7{q46MBXgogJPgL8EG=5q1x~%awxkQ zby>V?j_9*OYe67sEpee8!0YK?_VZ_~n1`(>Oy>5zwQ;S%VD_abPH>l(URKmc?WOw0 zI^sNM-bi*lQqpO5;d?6Aedu|R?jyHL{*m1g0r;MN)MX6^OZt$t`)@^kgroZ8II>H) z!zZ+%rJIWN*e&TaTfLMz4cR4~Mvfyc;kpEC3!O$iN78B5ANZ-%a}Y>+jvPl^!u<@x zxmoCVwxXuAE@<@;?89Wb57{L>M~)*d;Z7%LL*0RsSirh-BBrZDzbW+`vWt3-94EMl zdsU_llhsDddSAHUuEjHxpB|S%uBQD|QV613u&%CJ9g1ZKDKZTxyK+<#MIN}m6 z+E*LzrJTi}Fj#Oc5=xYM4gyKfk>iL+jvPnaWr*8) zRT~QKnzE8~Y46ucTmz)ga}Y>+jvPl^!m)6CzOxpwuIAF-ug!Spy+Y4HAn7@B9B~O( z>wq>4dS}j#n|X`&ZozxR6nYK@M~)*d z;cW3+=%2NkO<%rC*j@Q5O{wP~kn|imj<|%AuLr>*Em{wv&~u23dQO?k2F+p@fA-%z zY2VYbxs7;j)e6njJ^pN9{W=;^pK%kuIB2=1;mLz+(u|)Xm)tb5nPMFZ;bi|g21XxHCn*>m^vT@wTS_Oh{)+(cYzAN1kxzH~`^GT(#sncybI_N-McdN=9;3tWhZCzdn1N0zfoOT-5@Fd zEjcrdyRusBxNo}Zc@0S?%ri;iI!-m%y2}?;CI*Lu-PdE{czVlPEM@p*mG?hB!fu`_ zg3s>Uj?p=dEfZ!6pZDTjy7GIpDSmX1_Bb0iSkiDXJbNtNy}YUCbA_frK9i>KYuXFY z{5ydCclV~SaqQ4{ZW-qRf%UUs#D6$P!U_}D;Q4y~9#9|uDOLWxFV(>X?|lf21{f0w z%}S)TJty7p+<;Bk@8KECJsaY@9l1yM{ZQb@Kf)>2_Fy5c?P>Be3p+dO>p<& zc`~DSMnhHZYF7BlRcbG;^RQVT3k#mFVO@so6tVJsmL=ARJWBYfYPBLkaJ@&rSFRgD z8?rJ6S{RcojO756AoE2H{U))2*GD3zVJFM^ouxY9H>U=CGMDx#g>LdTCK07xZi0;-5y4IK0paq{VQ|KyWgLD-+j<|%2 zNzsAjhMizUS&Fc`+vJ->cE<ng-0T}6%~F5#*$RvpK#h0mtA1{@2QEcmL>RftQviX2B= z!qqI-f#m+%AtES8a95gqRp=_jC0#|1BQD`|j_5#n>MpRv^L)wfTwG_Q&|k2Sv=KRu zxP;5RpaWZvdccWlT!%v3@rC?MybiSZb2g18AQr^966W$vn*Gtd_X&G`H zaS69QRR{MJ2E(ae5_hp1p5-XlJdjITM%%+WV6!O<2DkexzPBY_N-ot$Tse+nK)7{L zI`GFf5;EsWF)+veRIYYueXr~TT`>Nr@ zPf2Sb4NtC7kPXr(9je@wOQOI$`CEQtjZYGiG@M^#}@qDM)mMb(05f{`bB8U=Alqmbi-&xrHAtOH#?=D_+|Ql7jC&w7??6vQQsLXIOY;ie_)!q^$6mU9wEmOmvH`fbs!+KCY!iG z(pq+*MxoFxkW0FS94EL~_TY{VL@uh!th-CGa>jr83f%&^q+6I`TzbE0!2I>3wJzHb zC+AXq#FgWasztbE*uNZH(S&*YJ)>t6Y9n$jgW5(~h8#y+!VS2l1F^-;Szv&4_Kt;z zQX3&IX&!PMaS3OWqyrY){$T?jNbld8gVhR+g1Dqn>`&GKH?6j;pr@plYz+CX;8NR& zE60%y!fizV7VPT44jwBL{lWIA3Z>?OK+-(qIN}n{9b@nFxid?dA@w;t@smQMApc0C zFnpl{WmCGdCl4hp!|`FBf=m7pSB@hage%R`0k7CzEG0Ql__sClg;MiCAZZ?Q9B~Qv zaE=*kZh8Q!JjaVXpv-n6KkK`Y-SR#F{Vh9)|5jhEjroTnGv=_s3tlwAG9-UpHJfkC z>clpC8L@PoR{~d%ue^Ml5=3yuiInUdT_(He)uMkHDX8l8sU~L!}L>4{Zcu z{!v%Q3#<=FIZ5eiBZYtDGx;a4kIJaN+4y~w-WbZRR4u~UW#~XonJ#m} z`?aXPtvi1!wGk{NZ6qJ(H2(Wk?06kXSFyx12jpC;kGOIi)knC|Xrpbu`K_F=;avX69x41$FIz^6Wnj}eAS$?!isi7c{G!!|GxP()s>A(cTNvxsEc@aO$ zhzg~KfiLiL)Bn?H5BQD`?;`42@d=4{#d3Tf=3Ia((k>iLG63~f!yx+84zacvFZRUk!UV zZuhNg;+;dS*}ta_i#)m3%AI^#MvufwJrDLq&q;9GE>ZFC&3Yxyz_KNuFrP+l(*<*Q z%*mdK!+v=(`(sXm+j^^kLPJ5A7HKHBXNPsT+5^{CNV-b-Q4=0FQirv_*@NBklysHy zBQyC{^+8ygq|5YdFNi$!@P%@|3(qAk>t_iq*X4_6v=95HOUrCw)|K(>LV2XXdE?zW zFMFSW>rj_` zhKSW_%;V*`J#i_wm*a>_xE)&hz@JYApXe;XT{`8nBDW_l<@RzMaS3NpTOZCmH-m<1 z=?-c0`Ck>eJ#i_wm*a>_xKGH9a99hk4@v7IRxGJh%oa%wvZZ- zD|}u)U76bxmvVbKj<|%gZ=??mM!SG#`Fn}0Dpch5#HHL`juTwOb!e&&os&J_uAcO- z+-6$2QUf3^Y5;N^aS3<#z8+}j_`;dP()`p0&lXl_1<0k`UXBx7#BKVl2c@$DVRMS4 z!>wOit;p@kXUgs6IN}n{v`P;QT!P{K%rep5l{k@ng{O(9`S>{l! z%=gJZ%=hIu;u5Y?9{Q|NL%VRvuDMx-BHyRDkS-v{5tne*b@U|6?lV z_VRpRaIs8|BQD`y*Vl)mRhjVl{9mr~S4F;0T+#*PIKf3+V45BjmFK{gHx&YZAT|kZ#T*Mv6m{x@RhIWOLU2j|)FV_W#OS*s@ zM_j^H<9o2}c}?+}^mRJ~-_7heer6^9Wn~Un}QQeZ-aH$Unk){M3Wonr&Ij z5GmicJ*CX|DF&49%W;B>xPkcX_rd)s70skQ(AzG3Rq6r=Bwav`BQD{F;&bEWotcrT zv}a}8^?_7@5^x%1HzqYfZu)!uGP(! z*5=t|WGVA~Y6sOq54L|_T?{}hpBITzryBQ*=fj^ zk>OqW;N5D?pMy2nze)QAcg@yXe9DrmnhPgtFrSIug1g182LC+!s^&~tHM|ViFSu(h zYxC+$!_}9TU1G;doCSBhXLG*ZbCG(r`6cFj$Wd^|`!webEA?=X*idF4BWVf_Pv0o? z1M-FR1I4-w^qJOWOlzqR#l|Dq@Gnws?}TSV$~6k&lFlH>q1Rut!uG3WO6>uGq&>)S#3dZfrLN93W-b4b&S7!FGKKblK++!MIN}nH#{G<} zS#0P%NmHQu6xss5X`Hf~s`%Epr|!bp`~I&Y(Dd1MSlJ8wyPU zail5y(|sXp6CVOWS39byz2&~sd06fOHrF`>dM6r+e(kgO1U_xG8S}jm4oP{EE?RzY z2482}UQ;xnH*1l6Oher5q4jve`JS3*y?V2TA;(1jVjWVK?{aUi>6F@!MVcKIeUt5x z+I(Yq=fsx*huP>|QohfMxA3&QE{V>)4zn7Tb40#BJZ}~Ld+(OG#3_I|%-<;T{azUx z6uG_d8FTy2mV?+#MT=%iwLOTCXWr-w)m6K z?9+5n77+Vcads+k>FiWFj@m&u#d)fTqcc%oVtqQtF2Z_K5cPTDS_AnRA5UZZsz%Mp)ig{DAuNmFRp-w>K#>Ij~#ZVT>a-9iPI;zC?Gj(j29>g9%z z{dEu|ZA=$7toy!F=m%tj^aDAL>LVOp0tG+wRAAwY^AarFs8Z?lVejw3GNE>1Uu z7lWojV!AZXSv5(i9}t)H138Ykgv*|22)A^EKyXn%kmHC;xXwcj;hT9NG*~a`0@k<=MXnzZm-GWUPH+)N@2-be zFxd9_B7C;Ov$y410dYwy_&nMW&sYtE=X0e0dFwI9k#ng&;>vMI)gm0d&vil~VIY(A zh}E9eO6`Gcp!Oig5tnegXBfhB*8M2gEQJ8YX=XFwq72XY+wLO8#XhA=5t4W>6G zt!35x3Wa_^Z6p0ajuTwOS$8&sGlsXIaS!Pq>C&+u6#4;iNk5R|h)X!jK89eCnhL)x zr5u~?y^-qlVejw3GNESnfY*w1uGxF_YXGq+SI^aJ9OejvvYmvH;)7(#>gS)hlx zGs3iHxK=3i1Hnc8K;6y|7WB`BUQEid=j^FeaH&4x%5hX5;pQ6{!q-tnc!z-0woUk7 zO`$0ukaU4Ud?$a-DTPxJ-$h^Nj`#M-xnzU5ava$pTr?Ph>-I|2v?c!n9B^&COpl;; zkj@~-5tndA`i9WL>o@c*lI)(szFna+5Epd@IgYr5)9YynCvMebx`(So{K5}>Q)mTb zm$U*oj@m&u>O0G()MdwUe}<^f{kuXJATH?wUlwD3ig)XD>?NIV5$K9{6Un$#-zntE zaa14ShGEVbva|_{y^8+>u*`keZ-rJsHb^U=IJf=OoK23GG=M#blXJ-iapgFwk8lGi z_V)j<-5VsXD{3Bc{eWzcejvvYmvAG-WB*sbEi1h#?U8T@`JvPb5J;MW97nzoZl|6h zEOPI_h8s!!(DsX8m0AIENh_#C|1!RHW~(axY6Z9sK+dK5h%3jDf7=k(2FIhD3%fIq zJ<{1gRuA%&ngZECO+k($F5v>E8iLQ2UTnXK^dHCOE3bV+aBn!a zQp{N?el%yz!!zCvnGIsqHqt!yW5g7`-g_Y1f^*~DGym?T4WG$f3=PE^g5`~)h0hMp zUnw*IiUDZ=UDoP@uJ&MN^%3VtSZGxl!6TL)SG|b!Q;pdzjqwp~_}`$dr^*B(hB$NX(wpr-#v);)C6nDzYnVQ{Picb#&X3$mOUvM^KL0|H{(BlMZS+*%GrP7x0;v~Zw~rlgYp5X`IVVT*e=bC7=1%lxD?8K|-%-BbaDL~2F=#9- z@!T0M+OaA739p@N%JzFjK{u6@+m{7Q<=Y=FV71RjfknNJB2WH$$b^s2p3g>YiUliw zX)V+Hi1EDTnt7~&Ni_VpY9nwjFAT+;-H0vky%64dW{UnQW5y6gUq}8?U)S7p2Aj}e z2b9m2&T+_HGE&iB5svz+y=nc}my#iDMC{)_EE4xfO#3(S{)sOzz3i&E2dl+cXTEFj zKZ(!GKEjDNp4aGEwi&&b&s{ZvJzlJWIYyE%kH-yDoL4~cqw@-ac11#+Y3aD$1;;Hc zJhBnL{Wgy^jT(8g0S;Wm^iVx>{=3ON&5#e?jLqGnA?}4H%N4mKaVeK<+(QN5>OWKI zHhw6clFg@H$ zfj0KzxvPrYl>Ec|QjVio5l(-rG2D*pgzJg#3hvt8FO+#Gaw!j$)}cTfJJ;8K0WmE(}AMK~{fZjYP!!AT!!UAXJa zZ;ITMY*210#}SusRu0CnVqPFD@|1E;Hw*mdCC@_mgagp z@xEwzE=hJNmz3j(OSrk*7`jJJ~GfwWF~CEk@R&o7Bf z`K263T*5{9;=88z6udKkif`Y1^AAOSNnFY=>ZZ{%dbdWGu&^W$U~7! zxn$aGV_f%;3-{Xm6z}Q0eU%C>)kj=84yjs%`?Am&uFfxl<{zYd(A2L|nVTYza#J~u zxP&t^H-^OJrI7Vj$_F>#yCKg*scn>p%5lUc+%bF}r#4i=`;ijY6W4|+@>K*(5zo9Zp$_Eeo|4`oPrWNw@HG`=!V)iA(vV97kNj)y4jx@!bZj^6$EEcRV|03YK+T)P$Mr zkn+KuxF=4Ln__*Go62!mq(wMIeu;&YUlOhe^UL`)q_*wFwZDh)n|{}zEsK04<&C@W zo(p-7NIp}Jm|$xRLAa)TM!3{(aQr7M&;1BTx!*I4y?gC0>`7-yGjh~?;@goMwxv5u zjFH^kaPdH2) zG(qH6<=#{IkHvW!2eU)Wz0Nlc;VkQ{=HE(QX_h}b#A@&VqoMjd>MZ509A9djA0A>S zqpHQ6E4cnjzED37O5$S;Hhv2g^PwFzTzTu+(V)F0$>2-<3&MtD4M%R-^eX7=OfiUG zl_us=b~U!~CoCz!`&$r8n)62B;=3jAoAs9__&y3^6QX|!+?ke__|f4l5`UEB!QP9F zg^kwwHvHe8EfY(BegNCR#)8{y(nkLCP0K`=^bg=YXr$mao?*d1-^c%}8AI5C*NsKn ziZ9IMeH!&=mQx0?4T+6KJBm+FQJ%4d?WHreCJk$vSUTesWQ~;Uwi#`!@P*<+zV!dz zJTc}}9uyrLA?&tRt>b4VEr#CLhqGD^(tlV7)E-i=n!;7Hkt}T9CDDi3*!<=lFU^D+ zA;VeCiCBge+8wXv`EJHACIs(G&5`mqdt6H*&+`aJdEQYEV=&UvW5e1?xGkH0DY*13 ziL1y5kxMz<+TF&``NnuQ-{hk3g@;!O4IpjwBxb(#f+%yrf24~1jr_xRm$ZWaiz6F^ zQ{-xhqg<`X8Nb#0M(ofS=^ySc^(SRshB(U0W_x3QU|`H@M@l)J{r~1_gu{F*!OvLi zXTN^&xbSZ$?we5LU}P6_D>;t*Bb*}NLLB8=^u2jGEMkSN{Y8IIcN^2#W0PmfVoap` zZQFI+N9At}`*Y1%tEGMdM>&%s2gCX(2TOJ|hBNjn*a|=CAL*8dxypPCam1zeQXbXp zxpW7`Iy_rWk%J-b|I4GWjPj_%E=KV0KmFKTJX1zI--3I5(Ex&Nv34i(?v z+WQ)79P>UJB=!jwvD#kCpAX(!uI_J*cu+)knEdpE6TcR~?IIEKB)O z>B$-RUFx!dhwCv<%{cK5R=X|ZtFC`ntqp0W`eW)LzO608-*L^V?<$wo<5YR!yEW*t z*5)zAJg!5&YJ2J!)fJ9;1;qf%Y-aamV_fr8ug%IteV2#y_Cq`PDwjmqG2^kpz3?W&7rPpEd?lVOr+Lu@`=J!Uy_i0TFVyYL z?yumG{bIR@Rk(8{H~lf1ISpyVZk?B6@XK*6ztu&Tx!=RPOjrCTZ2WfE#D9jz0dMgS zyJ;`&`3bsM#y4_Pm@rlgERRb6-%do7EAk_X3*|?a%Vt8@?dPgv}y`|sXB7Dn;wZ=I5N`@reF2i4GKJmcgI_E29>h`J6P{%X5q+kEMO`U(nK$;mBF7=S zl;do{a{`-IEri;td{N&#voDH#hH#Y6JPb31W{dF*#BeDmF<*ykyyQ6!;wX1n8es}A z;;h5WHtbL3d5UN+<|+Buj`^KkpcQ{FzL@~iZwfBG_r$G|onuI4bdI4S$3eT4 zr!>@7SC{iXX~61#$mho`PkRf1JX$ z)jl5v*Z%(VviaY<0&$cZY(HlTQFkICsJS%XSdZrwDDnlwQNFMkW00GF1=bZwbN;n> zC#yU+pjc6Ea6iZt{{60o5ov$x!#nWgc>v)k4|sgp6i)291#dm1xuX@syNTqv0o8|d ze!{u^NrgQxr8&RV%nHT)p6a9deOD(_@a_5(I{Ez)&vN~`pNhFW;b<;jb0l}N0S+nL(IP3MGcOtc;dbtNzZym#; z=Q)91w-w^Myv9qp`T22dkBbw`d9zsflDMse&vc8|%M-Dny5|; z_Z0Q5)5%esZB1>Xv#smbouPgm*pa2BgbSR-!P@+GysdiW{*KJCZMg7xlW#4qiqX>? zxf967nROOri~noQyN(^AiClbyH6GJLv}5UnR@}DF6irsU9W2A59Z*cmgG2ezY9r0K z7zfs=TPqQ(;tS{bkcP7~b2A)pZBQ5S+&)~4RK$Q{MKQQrQ=`eB6vW!BC>Q>f7_P*7 z;jd|8OM+O&>QBO#&qhmm=DShMe6AMj|L<|}%qs%t;=i_$tXWzuykF;-h)bo%TweI{ zoc_DmW9)l;M^WF!#vA#omT~d9KF3&`ZZA<^M3cq5ZxlBuxOAKyTiQ>wEfnw6yWBTJ z6=-*f`HkKsxG`7rd1}L3DqY7*tU)pt+}N0WK1lbWs^~}*dtI_aaHEoP_}FXu%&Yen zNUE`3#3jtGiYEr@vo_C`fop)Jh{2T&WjtD6i%snKMdjrnoul-?DW6w%uF1|c{i1rN zeN4pfg-s@(_52U~4yX&yQ%(r(y#x9D>x@RsW2hf=vy#?8K3e&f{~FkUEgkL$Qw*iK z_ceQ4nYYwqk`F=$LB=+ z;%C3-kAt!k{5(#w#4jhrJSR-^o?nP>s=j4&nw^^^>ATK_cle752I>=*r`cB548h%B zn8NpccnX(R)rQ74(t1{p;2->))+4BSq!z5G9WC1C<6q5R#XW{6HpQx>E?0zq9@sba z9$b?d>n8w=jTiBIw)`a@v{{SUk57QZ12lr0W%`JBP5T3rOk$w>nFPUoy74tHo_Q6| zB(BFUl}qDbjLjGRY3x<_mDrHgEBz$6mv@)*qw6li^-B$zK?Q167?-nn5AI^(%J36OS6`X`d=na_jzNK`XZjY%=lNEbVZyk2 zti0f_f7ajl=H^$dHM-=JKKegR(D}j&-e_9pp2$V@kuDaM)!Dd-ziSF(gIQ z7d8C@-#zRzwEbuYTV~x6^~Egy#HS7Y0K1ayU|VZxetK-lH$KWE5f0g`VzoZI2ySRf z4u8MDuj<5&M7C;=i3VNP%3F4q@84WU^)W}y4hBuvklh^9J3OTHBJhb?EQm|*Q25FU zMGUCD6oYR^oMA&SV_LtZ_vP4$O8)NgPH-G;z-nluZ!jp}J8#k{3ql_MfSMC?g)brD z7^{+JU=sZU^0Op;{MgxYesE$2IDIRJ)M%VzqLGlJ-*{2nI~e)E0}8xT1@{onhnhsZ zgL7wn!PH&)uMvWKgO=N8Lr(`^*w^Es;D&FiRJ@baUV10_#E#71bTSmaz;_Z0Gqz+Y z-ZjFV#dpoR?mo@NWnrqfp*IB14Yj2q4|}uTgSA=JdJEx8L3koRV$hfE=%|frO{KB% z!#O) zWTq8f;@vm(VIyt&veDBQ2)pmk#q)nddb5Au4#0B)r1hQe&tBuLM`^Pkr2|+*|0Tk1 z!MOx}rs+^st@`0i^Jbui?4Ef2h!+JlR2^;{&J0@h(@+ek%rI`a%5`ig8*{q7hGKu@ zeKMYb^E@HGVljLFXO6JDDenRQ*twm0$@Yb8afW2W`So-DaN}s!c2P@q?yj`X^0&J? zADu9o?MP|L`aH!ltnatyUf$R?4)^Q@z}SQWQD5@p*Id&g2F^4(jCy;Kh;y`YA^&gG zW$2mi1CRYNhd^%3 zAQppW&jo1h^+4FTw=|a<4*m!^cA@Yw<-XuPSeDJ-ceo3K3TiPh$P?TfJBxW}>I3Lf zQHx!#Bjs1f+7J@OV%qN%ak+5oEkEN_B*yNL zBd+54#>D61S?JlSSI44Q*P~7v;zlNC^ZRZsnEyRHaP4(W*u6HZfOj-($tLT#!kMK~ zTr`Uc`Gk7S*{^?HVNrI7u&XgEAuo?;vf zdh&`#MwzQ?;5pH4rnreQG-h2Hw|z8|op-qc{W|v+c9YbZ{7{iG+t@e`><{;m-h-R3 zc~rPD+q(J+L?0L+>_%&HxMAsWb>WXNmUHN{u&a*B=cWH#Qtz)0WAF3d3A;(b@A=E( zFtv5(P&V|!3u)}W|C*OM=7WVz46f^VD(q?&7x4vO3PI0123W)sVfW^;0zUcZJ6P|N z045)w3A;Beis_Seu>2;u*zTe^%nK9fUI~s8St|Y^UmE zEqx0I+TGzkSL?yKobD>yK-4S|ceLM2UOvBEb;#d9<(P|Wz_BoR&KLgK^Ea&i)R&E_ zz9wwMU3$k?{{9X_-{TmyQktJeo-gLt8vVpO-TI&whh@l(3d8w$cH6|V=ilMbp%&u# z)}L#|L&vsDyk)J$J}i79?ogV%iF|G?cIp&eD z`yk;lKcD#;o{a6nrr2SBiay^zm&Hx-Ub|JNx-;e_^|1+wS@`|l0>{uIm6=_v;CkZu zNbSxiYqV#1vW*o3G{lV>-+|B2QfqV{d$HS7unY^+Cg~`0afE46E-tT+xKv;Bu6dfU zurStirG@5gPzhAWmW99^4jbehGAmh2S1T)@8Ay`To`Y&nY= zoNy8C2v2;+r&iZwW{r$l`t{u+erHm0xovDi_Q7`u-e(}KDZ0MAh&P5q^cURt*@b+)Zhz)b`vT0ryIR<-vI*sx2K`vM=><5VYbCf} ztYUca5Bz@3L&4sDi{O^7zk+v5e1r`{mO#b8WWfz(?-cV>5kH)t7Q8D2x2@}8Va+>& z8#t|u2iEV;YP1c7mA6+3?zc_h3SWpzzPvj;n7QkAWzqZe1g<0~j%Vf#WKXQRvnl5P z3I9rtU**GB4Z{7bU2v`G1YzS-Ks>kl+<=W(I*Q%8Fa0C9a^p4XG>uuyHKW+BssO=F zOnSjB)9bT=F?y{1UMxey(U;%zEw@gq1KvciA&sjDEt4*=aR>3e$3mLt)Ht1_+VkQZ+tBWW*a-uz_V{J~LmTG$0Py!l7r zOTI}W-(E9Eee+NO%y8c)?3&MMtQ-T-28{vx?uMvC4@R*YuO12;xn{R{`nO2+6#po8 zrCcrQd$aNp-#kZ`?bwKVgqx*^LG`{>y!%F7T#s6tb@?_<;C}31!F7%eWVbfyGW#Ra z9-Xh3JbBp0fy`~bF6(m)`*Cb<#RV_!5;TbI$Q{8}Je2zOuaSQIKdX+3Hybu$Q#9_O*!18l$E>Y__w;KGu(UTjYuutoyGeZ+>Z=N`I!WDmy4&_(yrl ztmWfWFPizN##Bl=`cYoZM_X=EwfweTweMWMuo1lN2e0$*KPTV9oWbVSd+3l7HUC{9xm$jO84F%l^|O?w%6fWyo}vTW|p8 zew`?_&8?9CeqzK-B9Fjc!>NKBkN2B~g=Rp5%`tHL z{)w2Pe{TDxu}<4UpzV_J!fxytyyNCSJloqW1g3DOz#YZ2i{$O4Z|e@WcS)n^EaJ)$sO~AnAldf=-`F$*MmS)fcq>cP z_s}9+*)}9o+af+af$p0_!Hm5Y?TwxDK@lr@Uno{>?J{8SkOKH#F6FS{m>aBG^&E7T zg@Rvrrm&H`_?^Noamnt{J>k5A9voDOplMmCx>^(~ z+Tr2%Q-LF22sg9kbY|LSH&`{8D7a5HXDgmBJvVy3<~63W>}I=hzl-$DQ>=>=T&j<_ z>-^GSeCq{oW~qHD=`gzRu@CVZ|_Chf_MMmYxh2YZ)wHgkLz~G#(q5i!20$A zmhHS0Jf_c8VRc&HX71({FBUM}#Y-V-?m(&EnBl_vG+oH*ciRNN2h3Fw_uFhYZdE@) zHRrXOtqqp6;ViEV{vsn@Rh68`?zfcYyE)EJc&F|cRO4?Zvedvm8sg^ec*GN%_^4J@ zU1J8rq`m9UU0(6sBTuNBR$gO`VqG-Uwr6`@^TBO=ROjEQS!!Qr!F{vsDeu;;AKU&u z0Cv4L7x8<)CWT)(-j6l-eH<>nT`t=DWz|II3CK^_C~%*a#PD3*YpUQO;cSrg7!AecNcICBw;@6`ydr`v`#M$lcl^aO-fv^5 z%2X$uT}(6({vF9lRoX=|*)3_-hqcr4g{ikz2^;w_xG{JkrZt};DU%~kigYvCs1vh!fUCvt!XRZ2Oh3rW>A_fl+XY-{Shq6r< z;~_SEq=-S@u7^B$U@O+NRXf&s(|LhQI9$xN&b4I6c64Mzway7#%87hFHLN+iYSocN zYDWqiDMt!0Z}bO)s=cah-_(NZ@Ai{>XZgd^6=ziUT1#`$!?-4Y_)%Y|yXv%R|HeeY zJ;JLM;~+gt8V75Z-+}Gt%~_WMc%Iwj`}q(e+`~HTLXU1lIEhP7JcQ%Y#*v?wCT#0&N;0i?pC~0uj}%M>ROk2 zus;t@if6gzL_Ka@GhQ8>(1X=FbV@_->AItJxO?5ZaJN=B=(|{o!Ifc8`PKb5!S+yB zn3{*}#R`*#rt)=gMKi8`Ap0jZO4#_ZcspP4JVvv%c_6b1Ju7VdSnR-WKMT|JbbbSM zuk97Mg_B$Ix^X8p-Ojy%50^azZt3I}JV<>~_rGq$%KB@ATeq6R#*+b;6n2SAc2_qxX7wJ8hrW@mC7fQ-^{F8I3z9+~X<1&MN4L5<4^E*pzV=4S##&lM<LOWR3okd+}k@EIZ6o2t66uq)bz zcI!tyh7hM8@UHheQQsjvcOkd)eK=O}KxcN5s?KX-fA8X297Tp$e zpKAN1_&i3j&F7o4ep_)rHsXHSujQ3nMzPZ^8Zpy#(jM)f8`g0x{BITeBwJPg{BFU$ z+Ic*$ey_{cc;%>EOI8bRV!Qc#(4C>|p{GVwCj`r|LUmhH?v&-H+B)zmo3ey!$mhFW z1^ncKQ>p<2uCl_lyM%wK2l99s_f>Uh5zjOUTtnO^dvkd0&5POX1UH~N`iT2&{#yQW z+ah+gh7%-~#fY4Yej!gF`)il-VU-$?HI9RAUnVAxN1kTO0+kw<#J`ei$Lmk_4b3hY}WEX5tl`mTkt})k2<2SifMQ77wuSot|3o2utRM#Ld6VM z1c-JlQMcw14Ru*&_;+Y&u6TWU-XLi$0o6QcB=KQbD-{ZY(IrOOJlcSENp3gTFgLmuZILxjkK##T#ALVq5;bqO#a=Sd?W= zxWV7``wc}+VpYC{K~jCj_xa;1KcIirc~#$osEcBKZ)c|P*9T{^4o=J9Q)*AaeKq|y zAN<{z6<%KkH5~^E?yIT)(?=ke`Utbbli150BS9DM^`htd#Nd{qkDzu?A2B9t0wt8Kz! zuDd~Uzd@qDLd%=H>dZ{`yUY!So|XE)e9L=E8%QP_axT?J+=C7#>{GNCJn1IQEeh7$ z=4~owGK&vhFxpvH_?Nr!q0$D`hc@I~;U99J*i2>ZvzI|df0gj>(bT8h+Gh$&pRpY8 zmKZPUyE83|f7w16*YwSXi?3DUdE6e8&evp{umJS|xOIN0;O1<3%vW}r#a=u+0Ii($ z1UGAYhSEPYO#U@DxB!FNPiMuag9YyV;c|YWLj=_GpTeRePYD|r{mK<%1%^P2#tOO5 z)DH5wz^VzWZ&d(87f5r9o2v`?uktj2kSQM9*K7_JijSyT-SZdFUO?7T9ig! zLaMNlY>>_?u12cjzg=Uwo%U$RM!MG`x^>cC;gBoTuogJ;UPAerLwyi1O{tobKs z)5k~Hu$gh2B&?R%fu(5h+Jzis&2|IY)1y-)V zEMicwT#vgno5KRCU7)h=aWP&Nm>VeOe-vk$|M@sQgaw8Sjyc>CaiMp2ceCgs z&dt^(XgXrqaJNp0^el^_Bl(8p#}KEB&U_<$zP_bcF@{omX$*C0ZJuD)DxB#|{a4sM_57LQpC+}Jw7#_` z;}fpd31_FvTZm^K{1oqek@q=>qvtkx$_==ab{xJi=^UGk1?hZd>tvYHC=|StB(31y z>OAGxjYeqfmiJd=m-?$or|WBS0_{}QouwS?;Nc(K`B4{*(RqK>EIjv|a2Nc``Mx`C zG@&*VRD;f985Txv{L0J9O<3&9-U1#AMfFm#f&lDx@v%RmCeIgc8 zpD5=Nj<^#Zn6Q~{A@JE+8n>SNW^t$2Guacr5NI_C`*s9AKJ->$1F6D>oJ(cIZL`9J zg-i&CrNeZDFON^W;;NN1acm5SkLNHC#rkfA<|=Fumux7;Uo52YcRDv@(?9iwUivua zNA82+HxxDm7j2lQ&SHVZk+@EMfUtWvDvJ*eoxwgmhy-ghY#VYDF6Z$l`qNl5yUj2+ zW2}f@`uyjLxeCIxXs+^bjuG>Gz8M~ULoE#p?<~mSA-yItC(GX8bh4A+J{XSw?PYTd z;?mqg!NoG-D#kae563sTFT^EZI@MOI&;R?vAb-d%VPhZmvC-Y{sW%nBG?;4XA=+k# z>(;0APE+sf^334p=$*npUV|(1H>{8Hx2g^4>bLDqvH~kp4HjvwMXmHqv_}1WbTD&< znHp-_R=t05@7!tiYrL22Z2eGy+l)E!xI?GaX?J?Cg$qt=$iGdP|N0hrtJh;$QVNz~ zq1DmaiZO+3(3m3Ef{066kbG<;9F2_|ZZ=|ITLQD3uZgxj*qX2CuZa7<{S|Skzq-=w zE+qUPw!S(ltEPJ!6T4gNLVZ-QLGIahcPDmZVxr=ph=>9zDqsr&qKJVgbq^rjjdX*G zAc)xU{ASO2zO~MI*Z1$N>zci1PRzb0_FSAxE(Rq?&wOecP04Nxh4J2`&Q2H6f3Hte zQ0-T(VR584sTle|-~!L^dn0{YgHM?!(H+3cxRDssGWx^0Cpavq59>Q#72J{&akS;j zp3opz6RLHt3U1la7&`e+cj&aLJ`CY=NyvR`8cm%xtcE4|?&R#EvHgi?WtLxVD&T`PYAQ#Dc+4Sww-Cskz}5`d=2s47bE&KW?mM(l^IX;POKpx z#!1gDVZr~5N8Bzx-**|uj4;>OQ; zwG{PT=Q%FlAOCKUyT%1hci`tHxG(p!lBm|vyJF6=*%foaE#4ca7~in}aC}qv!VA$C zdgqe5%lA>x%=VVxZg|*~-<#&D{#r2#A}8Jyb~iuaYg96QiFQ$6%J=GW6B@Wz_eg3_ z7-2aH%46yZZu!e4bbVMaSa)d>wEkDxr%>**lx~j-VdwKtf#IB?!tM>5`t;9T#?BX> zg4$7o1=sOneL6qFnB|UdO>R6IEpRiP+t8v&W7Z_Q2U!w0T;L|!x21n9wlm))JxQSK2`)9+p0>w--ET4+QRO$=GUk}uA?en*9rV|q<(qc)RgwP^HjC{fiqOFKEiJD z2!9$jZY1bG8vqN}8;Nha)_uL=8{}p+@Ee>`T}2YBj;W5#zAyZX91}yc#(gG<$8A)p zQ(Xw+A`KGgg{(?)$@GTm;HrlNeGXjymS*oPR2vTaLuS=+6#h*medvJpaq7+&|BweZ zw?x0pn9@!8opUaJ=Zd*6ZUg7O?hg1^yc_-Ikal*go75UUqCy|u2HX^@N z(mtNVmH+cib25I@nrocYPop04_}N(aGH!Zb`ZB{>y_GtXZr%5bzUoINDcXT{u^mrd z#Ht>BaD|=g4~e#!ch#kag9}xGj;^p`v{au($FV#gcO+ZBVh_BXFTJ~Fr|ZzfV<0%D9tv);M-V>)Gmz|P z=Lf;vo{F}8c=UpHozVfFT&X0VYCMF`35WTQ4>IH zo)3qa&87EmU0?^gwPh&jv1J5|O5tUkyFI8KEnhj9InKIHdTf{abfQru^?@uhK zl>Rv%-Jj5FYxP0pqY3++r;9nzzvs`=I-T_)b$V0q+cw<*pXJ|kRy3$m4@xIDg{v9T zyy)NamI@7v{-K7I&jBD8=K%Ue>+|y)HDuoMBGKNzCl688XMO1W_ygJh!&Z#@nA5Yk zQ!ug6YfZ8P{lt6ldTbKi-6@SE%rqg@M$+D%=#5;vtV$xk&zX>Q4O7H3Pu`ZR{LZ;y z{LbxM3)R^>>cZ(!w?!Y!TGp0U>%^&#)4I^)pS$9nT)(rS@;}76_#YbGeI%^EpiPc@ zZxp_~($Aus#*c=tC$!1F?uNpy|CluT@Ay&Bb;uZ!b5mNUdpfUNQHK43WgE=Kz^!d# z_@2Veg6lW6kQ!;GkZ#10jCV~FHXhHfpy!^Yl8C8y$qwBNf%BPHMmzOOB;!ZiB~$KZ ziFfVE%y)`@!G6YmIh&tLdY|Juxj0DF=d52slX@4E3*YAwTPtb3=f=n)x+ zm#eDxiv2^_4%|N!nv_Po49&?*lSF|FGOnN{=1FA1TywH(x%AAV&B~PT0Vm^oAm?Iz z$o=V)PF5RhLe;<0TK*HRS8shuB5l`ef=@%~-|1&rO)X-QiO0Y7ppjm_=$HG>we+#; z2v~HvJ!xjVQ263MFoM42Yn2VMJCW`ME5tMM9hyK-jnRRo16vX{Z;9Y~4Tzz&d)~5! ze&+CI=OEEntFJYp`!7_moiEK{L)HM%SBCbQ{M_eT7V2OD%cFQ1cY58$hRQv?ydAiw zSFsO;<8U8}{GG%;#dnhBsTnNM1)~^gE^XHFX0&lv#+KI|1-t&96?SJ`Z9%{P_F;88 zi~{{eR>JOrt4$Sg6V``uQ-i$iEOOE?LSK#&xVbjXsGEU_+VdvQ%RB0(XxobCZIm$~ zCu2-#>DLh=Pc$WwS67PubLD4C3ud*4W}0oty)&Cc|3ywsSL_KyySOKC?}x8s&n#_l zyd5O^)Y+w$_Tu-}{+PvcqW(@4+~>xh>Ch!fq_F>aQiS<}c)tXksG>PF=h(cyLBzDP zk?`+~PB)s_#EPvP5=rhv9~FIIHMS$o{b0_v42>l7Jb4-CTJV#nw-aMnAE!>Ln?`*E zcLHrq*X#{vJ94_Jpj2CM=bvgqPj!o6c3Mvj-Uaj*-1*Q=@z3GaY2ZI6<5oI3eSa|2 zU*at4yJ%mZR_#wBk-*2JJx-#&bGPdA`-(D%fAugp_J;qPINA1YL%MNtk=nRLL)bC& zj^J)QQJ-eJ#Hl}YYY5X8OaHLV$LcBnYn+S!HF?{xPqA$~ewwq^j}pkOAynA7GPyN9 z*QW;r#A$-HgS6IBb~uJM-`fqw=4e7}!Y$Fyg@^e%iE%fmFsctV$-Io)C_WWW?}zEJ zyoXo8a#%f4pXuOU^y>6-wtwysh?yhp6?))aO=lOrXD{BGz~grOAI6<|>c-Ef$j5G8 zh+{X@sb%Z;m_p|2T!KEoa^z=>A6BucM@?boONr}$yFyWhI4qObhhpZ8YzDRc^QQKzh|?hbW+OofdOyluSjo&Qq$$g>B$ z)R_iJ7p1d@?*mp-zkgnmPH|RbWI&;4+mnqobl2Zua3yCHXdJAk!umdYou%!=hC%1j zQIKl(j|%Ji>~)UzQgMyAcR1gJ!OM8zm#3C=ZQm=Zk~_{2cuUfLiBl5j(|6ZYQ%<>n zpIIB>OUUCwI_HbIz`b;8F4~baKb8Kv_p-d)%rEBU~Dgzc056yP;Yu zXrn{FNr+z^a;)_UVK;NIA#Hc0CEQNALVjx730&6JL5g=5+l%k6{M*NV!Eb-piVjc~ z-II)tmd4PyNr`m*uTkKaJ%#xB?-uWY%i3DnW%pQk-Ek_}+hnKc=a(y$;{w))nyvIx@_ebv&Hm>dZ zMW>vOB~zPbkPTUHg)g@@f2SIIlE}n98Dv`nY3zjw7|d^2ncW??m6<+Vhhd z1dM@k`+gABKxqy9yUj{^&3-JX_tlV3=KM@1@0edFH`1zoj0|klon$?h=HSCd$I{#r zj4bLkl+?3}5%qb~qfLGd5eYH21D$ae1cZi?+44pKV>uybcPE*=@`O|ET zA}@rn%kx4EFlr0oyXwPLZ)twl^I|RCSlx=>M^hi(oZ)dc@4#1As_8b9)?iVu4tNcC zCVcU`QAyw3sSg)g8Ilj~()?AZDus4?*MMteBl2vQyWskd&!Ofib-{YQAvtWp%Xo!} zljGFc0!GpS4V&y&Vqw+EjTaT7jEjGNx`xTSS>Z{qj0 zR6LLS8+eZH@-SlfPXKxMQ+giH4%E_%KllxJZ32jGi1a)j@%xk4Ma226c#m+`_@t!#K;>gC3kS+apCoSuw z{1@}K;lFtO-UiU(>;zckWiQ(1;rxkq)~g3zJP*B1kL#ijTyK1#*+2DQEB!#)ock|F z#mODCzm`7q^Qs}44Wt|uzfWwZbe%qwUHw2_=XMtF%O7e)TRq#y=pa|JSnrHz$0UPH z+VAoNYzs>@FOYLuW93Xz=3)@mlv^JbwBhT~>b_ ztjMh)lSf~a;&C3MZ`Z3PPnXnHt(>mGue`Ch`leN|hvKZ?1&n)zF(^@dMm z^^&g!QE$_Pe|I#uD8^*u;+QP|2C)pk!A!3=q{_gN%s4H@bx)UlRK&&jzF=IOzPwG~ zfj*ZZYoF9FEzV4%v{mastL~TK>0ADeb6lH?6KU3?2vXX_jWjzbJ>Q2*t7+f0QRLzb zPtx-vU;p5^+x(vSo+rk@sj_0ycB=Fp{n)#Prgx4YcOI=FnvK#$pT^G3;CGcpl7iVr zq^@YvNqg(kIEK7cG=HEA&f{S|_+qi_0PR~tz3+WgjMMmxaGaLo&=_Yk8=FC| za;dL;?pDyW_-Zzxxfz&rjRohzP4 z!Rlz9FY>B^-T)s^yDel`U-sq{y6m{KD&R;M-1~e=;IjNel>1*e4)?z}{B9cf;I9f+ z^^tT%uR96!hgs9W7Y8Q5w&(Li|8=#Fp%wR<2db)7@ND=@;a|`DG1P2A8@6G~El9jM zO8B>p@2_iS+=gXNxC5t3RKo6>sqN^Sc8!?f)?1+2bd2zCpFw*XsNIV^80iD1%kB$q z=Cf$}WMUU$KF|lQ_m=)^Y0na90CXqDGhagOT8TdmfRaJM}q?|&+MetP-~buP0bw_ymhoXXd5c^|lZd`^o% zO{Pw%Anw5x;{AJJTSMzVeW$yH0~&t6c=n z>-=X${KBi#!1$%+WfQ3089<)>@)X<<>vH;Ze;m@Wf8>0s)E=q zd@pR+*z#Ovx5G*F!q4Q=2B~ch*M9O`L&2n}VFj6QBem_}g>Tf1WCk%}|#IU^&60(%% zS9u|xU!5^COZAVxCxlLr=55{h+{4&Yi`lr)KvmXbZ&BY3=dTJIqCRdz;WIBppSRW1 zG4R{$0(;AgMZerEiKIC<^7YU0b(h@AEYU9xr4iKQVMhbk>(1a`9U{gf|LYah+foY# zHdsSWZ#yCSDr;5*9bVQ2{7$VQtD2q`?R_&nil0~O3mvlBhEV$`2V(8+BonU)cAn{g51UF@BEFC|0Ecs{JOSpH- zU-VVYmibh#gSD1G;(}*5^tHT^6^L(&(iJuck0(xi_k9Xf%1vA1|`K4JZ6 z%8zD&*FM-mb~}4vV?ufu_50Bz(D<_*oSx0&PTt@t8R7KL=|+J!U9UooHeV;^h4TwS zXx}Dlm}$X7gNnf2!tNlw3H0E&oortB4yqoRTqkqxhR1x}uY5VgJX(qcUb<8$;s~^Xam2xTrR?)N6ByE1iZ@<7{Gi~X4de#ie#-{5H3R)+ z(izkMC!XIz7OP-=7=y@h$VJ@O_;)OyuNk&`BK5Pc^9NGxrEvGhEw_&QU>z230RE`)Tf*(SJeF7=~<=~LLyB{!f=hL+&2n%rKQ&xqT_ zd`60Y32z7fOC~#agj3^m$W_z*;(bY&lBoC}U?1TBU}4f&IOo_Iwwm()0WbV>`7GUU z6;DpjZvl^>h#)TABuBAN3!f$K)4H;wimfs{4Fk^ce*`ak`rsptJQ_$U+Iy0}C#17@ zAqV(-P#8ign|qQ0--^XEda~gY?cY6!1U2^Nxm@`;&AFc2J}bsmw2R}aeC$F0aO{~f zB#sTYv4!uh?!vz`_f$GfKZgB0aS1MI-xoIGJu+$I2Z_w({w08M4}^^%-yFKSK`;1q zxjn32a!qjGT1QgT2R*^yM<*~{$iFRaqu4%%&TY{HtQvNPeoq|*x4K z&0$TxCS1vWDcbh#Yy{O>+Y~-5Z3<)W_=&caUW(#*La(5}xT5hFETbeI}{8XUOksv+FEaZQEKt>GGDTB6QktGllSQ+^K{`f`8ESL(CM zkJRa~1RnKw5We6!o1*e+vT4;q=(^cjlzBccr#^8NWcu8NeDAQ0;NJ86MD;Jn7)+h? z5=;wLioQxPEut;jT8lE@u8T!qr5wqlubr(8maTpPjzf7FHyn4igx{Ci0KPs~k-S6F znsxBxzVxY$COFwo;CVUh1vh$bKU%+sCZzQnLHx`v3vT$xQS_R_Tk^?)F2kjd(}XWS*B+ovr}?nYT`!{@QQyyX`xKfJpBrjUxxU1HL4D~kayZY~ zGXQqXk;cKVx7N@G9lglsOUq$m`88qJ&4=eO2!6xtLYKnqkpFa^eh$66D~|2NVZY*y;lUVb zedg7RQbm1e;{~s8qkRFp|JMY19+Na;fJd2POc6LfrYP+4LbNOAA`ZFjiwar(1yk7T zm?Hdp{h&lS9&sR!M{*peY9Q|U^kTN7qZ#~lOcLCXdu7V;h;wl~(t;A!zxWgcjhEK4 z*uD1(F4l)!IS&0pTqlQ8*2LEwj%~b1%f~kk#PRJ|n}6VolPmewTUwv_e87ty%etpF{Ax$CG**lEbQ?d1p>1ZZZruI~ zY3E=l-cy4q{ph?E*6I#c7s$A7%f)-YU{-rNR%ZgtzEG;l?b}d%`(f=*(fkJ!;FQN( z)w;ueVq6ICaE#vnITcD%>X8=e2IAX~*E&i!CGc_0`Z5&MWQbU*%E*`2ZL^Eb-*W{{ z?W-2t_xr*WF);QY#=wgBnHOUGERVghUoiIGnCMFeCNv{mT$y-oj|V2waM#w*e{>%> z-Bua{BHRk;dDphE&!7*VgXVgRbE6*Q(YrrdK~Km2K>E3fcQ@=|p+bM4FQ`8hx$k%( z=Dw5vClQDL$)Tmqz;S9*Xs;#xPm9jSQ=R5bAtRs#9Lw?*HVQ5!Qq2#*mX~gU{NQ22 zmq!Vid=J$OHlX8H2wATuaA^-y6&eg}pax4i7|ibh{7hDBa1F)_A71{d*u#uC+{0XR z+(MNX5eR&b8ADvjrYJslcv`i9pI^N+#Y8;cyxqyvZs_iEaxM90fa9z^U`TJL-jyTyILWVjC?zEX*>E%Xo>O!yP z5WU+~aLHmVc$-CbQL$QitIHwhcZ#&o19S+ykQ zs|uVxNpXaKYBWu${Y0`Jj)#M)djx%X8k0#I*}i1aogJY5qf^3{KRZn60}UTGs_8Yj ze#{$Aq4v|C&Q%|yP2%emiI?&oVKO#O5HeN|WgP~pom$0js;Ubs5p^f6Us zK$yU-ywRAJU4Cd_b9kC+{UT`%!*qHLUDbb*fw5CJ)su;QUX*v>;m%Ps>awpv;QHRG ziXYNk>8UQU^uo3eY*()BX9r(rJBCdpL$1CO{xyH#N^K6^WcG_Dk{MLXO1aBM8N9!Gh*O6hu|OqS2frp8JA;^kVY@CEx1eUWpq|B!p>WI7wJzZXva%97ggw2+4V&0{A@ONcSW@cGfpa=ur*jJ-Ft;JRCyqkZA| zUctrskekJGrXM{ri{FKPOK{z7ztNnVr&!xb7r^YPbp9xPcVGJA-3eBte*vD2a1q~8 z?(To+xLv)VVb){PxU-~9)0h842jupK=A*rdkKHzgHZr$s)B8nzpsuzjS#^ZR8@w=c z#ZX$96wYdr9Dv^!Dsb7u)=>Rkq3ls3elPd%5`oJbv68+!+YMA7canZj%|v^1W`)w& zYJL~w3?uTntA+46YkIhH9**0n|0|la7I@cH}V46Xe!0tX)DtdzF^zXmyC@~;QQD<wo%VS*YE6o*Sbbe6y`2eXFJU`v{&VMzNQZ z<8UwMvIcFS#r9g#*!8(+N0`O`ynnnxeE-f&>H#sC0Q+KlGfveg44%((8}@?T^9(@C zzL$6p-utiMxgz38kYQ_b*G0;;>uOj_7gnb5yPjH;M*7?aC*R)lljfgGB5yT%k#X*? zgxvs=MJGL+4@R0J$ncU*VlFackRhK#SpX|DMvz^9^ToK8HE0t(aV3~VHoOAaxz56u zlztl(_eq4lGjlUfdcod$|hS{M9Xao~$^v?XK4FW99>fzAW3z@6(jWL%a~< zA@>fxWYx7d#5K7}ye}_#9^7tr{2pSS&#W2Y>m-~Te6)g=Pw*up&*TxChSj1SKKxwU z&3S6V0uo90aA}Pt@L;8)KJ*XktLN=Q;vOfGgtn56XS;bWU>O%}Aouj|0HTu`MK%ok zZ_Q?((iaXBzSO^@Cc)?Pi0MMfzo3(qiax;lun(-)6sc9M+Jl3oo9LHK$LiCZ*752Q zUE0Hjxl+FvS=3eb6(?g~&2j$3?$}y@`wr~|G;qiAv}eZ zeOL+&a9)c09HyVB(9_s|-ds;F*iz4+c-I-#8keS`9p?NVorn!x{ohk_)s&6R#q&K` z=Oo?fcY9pjnlq})COw3IX8cYIxee?;w6RY=iA}k=5;iZ+6n4X>Whym0w~Lxxjzccu zYP=Je*#twrrpecs(dV_LiuekB#`sD;2Y_6xPtFy-aIU>p0<$Py53kQia|QVQDq=HU zAI4^K9C8u&-YkL5JF*$}|B-ybSWg~Hp)VLq$?HQd)|Xq6z!IBp2j6|tbBnPnQPd}F z@cQI9Y%k)vMJKXq7b7@9vP2(5yW}h5Ar8cNNRGq$5ZB{WGMhVz$3yJD^?+xY%6JHU z=JAjmC%7EfVs0vHP+$zWj*Y%VzQ|O@L%a~Kp7&bn?r4Elt>le{q6Crue6 zpoh!B5q>eY{vLJ$ihi{j}k9Txt*nmk&ufqk{pLz#QkiP!}gV)g2G18f}3_T zQxOj#7vmv04!MYP{G7x3d6~oZ$VkD(vzv;ziE}Y-lH-tzxO;Q*SO-fBSdbkqxDoe@ zlyMX1V%(&CJ)eawwuGNe!^D3#@Ik49i}fK_j^k7f#JS!GV5b8eVNXqp_#eC@>uAm! zyifQBl$WQAZ@*&7da6oxV6jc-6RTdnLX$MU<3w+Ev}eO3*N_+bzCx2Uv~i-a)PYsj ztRW^^4Mi-~z~&al-emE9Pttss6pzR4ETVx9l_aR|3RryJQuyrgg5N2BsGKzOTmtWE zFNlAg^OI_tZqprxg_@9=FU$q5U}hlIY}^ed?>a_?8=n*Xl07|488`99VchikYe(pK zO9xu-w-MYZ?@T&et0S2FJA&^y;ronuAB1~l(}J(<;7{!c_z=P8V|ii7i(FbSK3Q$b zb2Do-au?%j@tSb@*ePGVF4hCmdfAJ%6>N%A_=okOe-FAh0JjfI;9>P)VfT4-7XN40 zg_fyHz<%)wVfWQ*J})oJqltDgkEZ^+{;(yhHy95+D7b~L5j=OGHmr;64OiD23GTal zfiz5y<8=B%ugHDE=Un#~8nQK;wF%&RMCvvW`%5gF&8FKRnZaWR;AcGo(S}!>m9)>9 zhG1v45GtEeVZ$RlU*R*h1AWeERZLQojmWwykpgEk=QF)@vxLO1IYu-qq;J7??GHNr zbslN)#)R1I=HC`4+Z%qTOLVWQZ{|LP6@Th5UY$nx%~G0^eoZ|t!~=eJs>jeq?!h!= z?n+*WxhoxS0Q21NO!fEr3t`vwPOUK z$q{?Lmd|m|w$#wkk6)1Kx_m9gvqH4(k@+`8%!+Npm{qHBJFtIHMw+gb_Lqbiy`!s| zwSn;SmE@PlbJ32FBOeqoCfdNUXFyO-a;nf1nmv_bi!J>J(&b|Z5`Jd^KbQGf^wsg+ z18LReNapQ66#~7bJHx2mAKK(j96K<1CRE>-)^VQc@^hcp6Is6_)8NG+Db7A?_>_JLOY_!=bV=B2% z=j+lRO&7joJ&#iC5kX&YA4*qNNz_&WwvA^Jo2KutMEB#LNx7tUIX0QjwktUPQpeM?x&7UQ-uumfne(k4Es6iZV^4* zAz9?Va*MSV??IenAzf7&ta{1M;*~$OV(4G|)j~x)j=o?#?sm0Eo#EGs=jfK^RCim| zr7b$dt4%^XfyEOy!QFknF154P3|uuSin!!%6Jy!nK1Ot{Vf{ec5j=ltl%E*O#&+Gn zb0#$mY^*i$+>bq^=N@W2IEOvhH4h^DOY<9#+I!OheEx4+qeWoTfPV|zmoROA zYB@8Tjni5HzpnCm8eaIgYal)OGl6}4zm&hv(wtG8KF?1mi{%lAvAn!K>=&$0&P5x@ zZE-e^Mc-cuuM(xXDqI7X$LLre#^`b!auIjPErzw6ZV0ojr7<~m^&3Tuj$Dk<iRM;TLdyBJf;al$UgtuKsa4z5O!RhBMsAMm^o^4ObmF{YN| z1efCm+Q+jellQ`zHK~G|@FZOkQ=`w(Jf@c8gwGr|4-(n+Bx8teEXB%k-f4=M8o3x# z%W=p>T>o9kEQH6|eX{sF#0z76Qxq|^u!}LZ42N9AwL6^3bU&KFk1tZZo9LaQh^di_ zF|{0rT*UPllFo+On8MPHQNr$oaOd6ET@ebY<7zf-0Zu_ikKR? z7*oq}$VJ?y0~suyuR+f1F2%b!Hh@a6e#?NvbauK(3Q#LbQWXbO$c`dk6PKC-i zn{zSFc5upJNxiHfesPfaPX<0JQE;(7GM2qh9?*Mz2 zI>-`AzBOcsOSSDymyat~udW|%(0HyiewfxVr{vmS^33 zkb!-XzW6tp)!j`8@19L^)H-ncgTKI8{&3>^foG7>%XA^Sy)@7N=DYR+6V0e7=+WS7eq*M|bN5Y-SmG*G8HH%{`e;@BYz- z=No%Kk1cz|Gpck5P{iZ-9$-8^)OrB89qa*X8yyw6w|9dTT(p7QcRItMOyx?N_MI+p zDVOr-Vm)0bo#INm67wm<7{+ z%XnE!O&-H>9Jle|YzWmot^@O))`R??^98rkJdhf&ZZLJgFLJ?LihW8gVw86>a4z1- zFx;jaB>&L>-@kl*oLBhPGK#J%*{tqW@(|wYH)kBCq4q4H?Noc!V_thex6)P&?MB*_ z(O;gHB9pL^hi z0sBAF*V$fV(+Ymy*0LyJ_eF3|>V3|OoZsD;}B- zuGkleKI6Vfx#mQ>s5v$J=tD-;4>EaAl9)69bHPfnPa1K!Px|aUedwP5l|1bkr$Ybm z47vOaG~)2AN8g$_(x{Fj8MvCyzwknj`IU5)Lzt@e><%!zyI4H8IVFDd@Ld~qR2_GS zy!un<42yFB#Bg9hm&tF6s*nPo(es>w)|H6)>oH zkH7_mq*Kd)I&d3SK>FfC0v8gLPOTz!K>gQ)1grspi?-u>OEy1={ett8@;&8PhI`6C zHf{nt+MglYu6YPqho`2@t+STEC?a7KX5b%`;(u^JP(XZQ~DGyzi1a+tm}6#s3w$taNFhGPgf>26Own z)xWPk&)>B&yDvhQ6|av}=r{Bk^;`2j*VM22xF*>HgVXsIs@37$ z#5;7R&I!eQCq6fv@033etPh`u{9Yc!;k`U^4U1){VHI|H8QPWWD69{4l%gHH5Ze)Q zE1O*0?oIlxmCoKoZ2q4->fA^?&!gVfuPw~G6hb0ex`@7iZ26VGwrC4=c0`l}ef-=3;#_UN(~n0slI{N%t8UKW@er@jik*9r+H#W? zJf16Qmpzy2(Ms)jb#Egr822wP)V^%QzWaJioG&`V@JY8HacRcW3kdVm-0U!1`j z44=pE&*SkB=lXW?RFokX%NESbXViNx9G)Z1Pdc@EN$*?cFq7SL;P#6k!F}BNA?+R> z%QTag!mQ{x(Y92*K!r|08>my{I9{ZIxOIBbY=renh__A>+^nggN&jZo$fErJmtH)H8A%auL^-MzAq?>!GomG#(Wnh*#4k#p@d`~MxLlLSah$4wxE6Dw z*mS-g(5{iR*Dw1%KVvM{E@+o)5;+dJi0hjkE%r>5CUYIn3)3GbDKrV%MeQQTAs2DC zuf~c!6T$kD)=2SAP-qh5q9&2!kc+syNAYYP-#_UvSJE0uzVQl8f?U)javX9IxAIM* z*hgX7O?v;*Ud1Rh335@B$Z^O;TyR)2+jP|wJi3L6_GWv;C^QLjQIp7V$VHs@pA>eu zof$k?C&m2vcj6S91i7e5(f~VwSddOze`@2>B!#$xpv`&s7d5F3?Jv6#>PJbwpu z_`#S--W}*|&F8aug_V=G@q8_=YHc$;*!{zSp^c4Co6~~^u4<#cD)2vXjUn#9_4>5k zp&`&iJ&NDeBb}wK@LtCA3Jrw@A*1*_7eBYdfgfM2R@?!F_2C^*iaSbqA>L7{m<#7z zoD2VTrAOf06N~v>Fw&gwkTHR@*UBD&mMxb9Undd$H)MJO?cJqUU`>I zuAJvbyExA;zq1qDfp>Psr1u6No?%bF&t=h9MKnR7dk}}Z=guQtSa-MyT)R3|;3{l` z=!#J~@Xe+P_%7jkf#a$#_|c%XI&is{CLDMvX^5&bYP$2&K)BwoJv_d5Kya(A{pd@l zfiUz!C!SN$-g6BcEjT{9Wl?8 zg*~!>Nw(U8TN>;_=iE8LYR2<9g}OsTUll~TP^}3jEZ@xn4vp+CxW(Zvw1nwG{OfeG zcEA+Dtv>2Uvx9Wuh)*sl`)|(o%A! zuuW8+;o$v;XE<(8>IUyyc7}p8w*)uSF^w*qF%Y_b?Fy3??-SflcHRnIi)}+)EB6JT z5&AO1T^Cy0mXPd%$)atQ=0Wsd6<=oyDz`_J}*igWsKa`;l=U$$qoVtyRCI6pr6Sx-3jMFm@Q7YJ_7GoClT z(=cEiUXW?^rVIbx9}1^c#X3+`=tnk@@uKYA!T-VW3K92x(J=V8kv~cJXNJI4>(7V5sOGQ9n9;KYx6(+hw96|*yK*ktK<>TGx-cRqlC064Bz&pf z=c}~KacEazgOkyQyd7BIC*BTueOQL|Dc&`#kH2e*_HrP$SN`q_E`N6w>uQ{f>uU15 zR`I>UyH;VT4m_#MCDl&+edaivx6nz|gM)|Kz=BhM{dtkb-?OH4`-KkbYe$`-(@{sE z8(o4+6>EIR#Wg;^xqX<|3r9%q+MOZy!066&)02+Ob&?}Ed1*1UYci}mEsNIzk3Cwj zeDO`ue{b%kQTKD*A!LIVSZ|Y8@ZaL&19)T(klGi=)Im!`FMaX|v1v@S;vN zF*=+e{#Sp`T%h%z=tI|x8nXEO18LsO(p<5ghjwv2FKg^VcpbEeL~QIJwQYQe@*WuO z4Bi8CWSTy|t2dh@=%fi7zszsZfQ$Oz*u02b_`>Hrc!hsVE-C86vNycGZ4(zkTkQ>G z%N#9XBWHf3@_rW%OyT#t$Z^O;+%2AGd%4YCVq?%#a0}N)EAN8fK)efL(}C|KrIz3I z(L!2N3Qmkt?osDB+@oITpa+*yTfq7~MPkk7ueq^8M`6F9j&cbqQcrE#6MnRHVd#s| ztp6y}NQ3}n3 z&kZ$`9LK2|i0f7o#`<12f_RMt@qa12%XOn%TX8OGCOHndh|60N!Tt>23w3g&HPYNi z{9X^aw&GmWOmZA@5qC->iv8f{#wJ-y`y<|X#VRxt`iz=MjzccuLI%dL)=LkA(P}qe3$ zDdEpeu9=XFnn{jBF5YkzMtVdOql8;e2#X@Q|c(rMI9x_As2B4r{A#Ek=B6c zIyg)t=y@Tn&dFwjgRG&+8D1YR^!6=Q)Q4QGFX&1p8+XAL9>q&~2G59l81G#8J&PBV(EzUoyzGarA+DpP1;&wi5MmKJ}t-ky?UiI`)C_~(OetzG| z?uOdzL%C}1rywzQuMg`?mu@g*)j{UacWQ#z*IfH(8(m=08*JWwCQRp&^eoRMD(9)mN8A(hUjcr5xzqpdPY@2(kSVzM+R7_zQRIZw#BI8S)$z(Dxcvp&!F zZzjfo5=)+^y#8P)Xj32B^)wN7-&sV^8W;#8E@(p3J1Y9L#448N7Y>3{Q%%^XFRc}o zor|VB*dPe~&;%@J91+~I^U>6_(?DqOy$L@*`2V{e6o2(|M}bjwmLS4 z?j5}{Z-iG&;>f52b#|fV$ z-o+%>u$(G1>;g6xnipjg*J=&H{dUxy-n7z&X$I}Vt=v?URa!BHu0^}3Yvuin^;PnI z_RG+LPS6@wjF>2%QPovnTE}u2+*#QgK98L(`n1Zsg+qIsW=Etq#8zZ_rXH*5f%%hPmkTHK89QqWMV? zC;qiESDy3d_2D^xd3|W(FRw53gFYPN`O*$){l~R9OW&D~h3f;F!tPN!)f}er`|wt} z;^$a6soNC79`pN-dEp<^9rQ?LcQ_P08Ge40<_~hcL+DqBp5R(N8C+YcM8D*}Vsy&a zZg5{~I;7sgC>&aIT}K8c`r|Mr2ygU7)0 zTCPnwF85KCLf4AE;<|SJd0l9-t%lf)ljZ=bj{4IQ)LVPZ`Fir{4`j_4$!;YL zQuu;Cqb~}(ybSHi=K!Sof)w>37wZcP(}mHievp%Mq<84!K{b7|ooi>SA4Gey)V5DY ze3k9xWNfdTi}fLQ#UEX$>8AnZhSIwD$D@pnvC@HsQ#BwnR_f=f69GyaoQyW)Tu~qA zD%Q`@XWlQ0`Zy5lV_)>3pUHbt-}8g`27evDshl_CT%0#k;CLD0qpX6n@ zfAT_Y7Kz?Q4WcGQXvfnT5-?)0Vy`G{8*$uOe-v=!1xiJ$P>-B zf*Uo+k3LDB02>>%B0qL?6h6Q1=SSVjCqhQ^rX=ZoW6=j8J)hBOPr}*ckfqQiBvksg z^q(v3a>Hm>jzeE^IqvwtP*#3uCA>c_t&Nq;@=VO zD=hh3kW7Q&yMfwDjzccuSXMBbP`eEr{iL;+@++?u`UttGkK{N`)j(Wr@N4$e+6W>} zN!sP@?GS}NLN4kfIS#pqi|!c8^HcAIJY#7c2lvUy^$~JWAIWjZMO^X)uGL-|gT|%* z_I>extXv-<7xj@Ghg|#@KTL~YK@$#x=M-rjCo>>ep^uP@`bdsLF5+A#N3(a?CUC$( z(k?kZ!3uqZT+~N$oUqGrN4v)|js2#eQSzUL@Ca4tBhg;2kK{PfUXJT=I*!$AWCmwL zq>wkK{PvGspedoXD=s zwuJSe{6EACi|t|+`UttGkK{PyB2K3^k&W(Y1!MlpJ&}DSO`(sFi~2~8LoVW$7bOYJ z}r{H3J$d%(bRReKtn|xAz_2OqF+SxF~ZS6ORI=-pHb4osfPi?L+#I5i54?U86 zoz%PHsv2T1?Zvrr;tw6CUpFv{@6*b@|6FieJ$IrrTGk6Z*~T5-oP8{~P2FzMxoLF* zf5p1Pz{c(jeQxD-Pq9xQ?czTDUEK$Ri?arV?=cbWC^rqG>P>3B^)H~RORb23F`w#p>pkihho8e*uis*Quw?0L`lP2hDli{&5#JjOJU7LRGyH|a& z-2^h>`U3H83{G95uz_~bhC)m7GSrd}cuprRzW->}>J%TR;e z^3jI!#MV4N=}E!;aPBpA<97@^3uy;lRWn7~sxJ5|-XZb6@OMbQmy=f~_HxSCC9w?G zCFL3nxs_al#cb*c!!<6D1`DmEzF!tXog=%0MUM+)zl)7{U-FhmEBBgmF77pzbFm%8 zoIA9BFWAu9j_e$AL2!%KMJwy$K&(%W6Fzes<@-$Q46`GtCoT$Z{`z=&V_a|WZ1I3Z zWZ6po@%zxiF7$*y!yk}`Ew2b%?twJ=WPDGEGq{I2>_z|OZ|8eN_V$9Cov!ow4Qq+J zIfh!M^#G4C*U6krX>O!obG*_n_YdvLxuR{H+aa$PZ0dfGc&15b=Zd$+DEt#R?w`UJ z-Z=C{VV48ZuDm|M<@Jr-+#7oT@g(+3E()IuPbAU~_jYOi^oO6-|G>k+l7D3$0gC$2Kdf(NRUeqPoNH0zP2ycE^axRuVSQLO zukHZ2YdH`ew%jDzTk63SHbi~gM$n7CaO~$l@Yh#b>qV}-?EhCEa(4(LWq7Cm9cfFQauIhak+B?~^?><4 zu^rWWl$sOUi&|2SLoVXN+!@<4dox7b{EvIaPpKt25VfQnC%7E9wqGEt&ff-pKP0{N z@gkq!kn2VcL_H|Sp?`==$qr;sOpIWAk+kRT!}UOg9z>r}56W@KMI8GX#16OJ3;k4~ z;y+pH6spjJ$VELU#~~MSj$2-{JCBVarK7axuJBo)LJuMr^`IPwT*Uc43}tp>4?}3I zw9b?pz!Z8Axu^%_IOHO(q)h}{nP$TCWB#|^;}fXRgTgM?gK`{l^El3}UKAU-#T4{c zNqUQ?N>=DW(O#|xhY^5GAd#ymt;z=t1P79+cydi@20~F>GMMDcE80 zLiBURHKx#m$VELU#~~MS{Zz5c_?|grn0X2AhYSCs8#5KDT%UT_R*PGE0>ts!8|6TwY( z{U6=Pxv2f*IOHO3P@N=}blDa>wI2&^3_m}p(1@Ii8nJ0A&!@lJkxbuRDR9qMe57OV zM~OAL93L0)-^jg_sK^hDK4X61GkkqvZPTCR(xm@#M4hvscZ2o8=&A-3kF5XS`hq3x zct;mARvx6Y(K_01EdPvwUI}t;_z1N1uVR__QV;;+M z+`FTZbXcJ_&kO#BtgSK?|LoEev9$7rzv_^SGryB-2*W-|8E~H}?s(;ec*m>aE?8b6 z-US;%H>*Ng`$4yZ2P7`dr^cH$tJpVxSg`#7L%SJ=vS^zfQ^ncgB`&+f*pqrJkN)1% zPxbP&8~m+0BDjY~cBWs_$Ez;CeE>)6nhEZ{QC;W`m-(uS4sKx9Z`-DdY-p2vAeq! zJ3kiBjvd&YD0X)v>WYYB0y zd(QKmoqK0@Y42gf`YZ8_eH+#wql(yf{Bws9@9eq~_V%!0cD}l!sUN?#t>IaJRzUn$ zE9R10e>8D_tXi+~LE}e0e%jB6MkTIzFL!t0H^n7MeP=sz>CX0sOK6`F98@oP>?Y)sLa1Z8x z;+F@$VFQL{u}J+~fpcB>fe)|j3m%<2f-7qJ6knOGmJeOuAN=cegj3rm3GN45KR%H6 z1@|*}?)R7(g8TlKFaO(gAl?Dh7JjD5Yf7IkdUJoHfsop&6;$>Ffh)K2;`WbENNtlV zHHYH7gpaFSk{%wv0F7#{5dRyW zZ$0GmNAHnNUpfa%8_L`-&USp+!3KB+-7J__{h;VuxE5ns*$4~=&4NcYcZt5m1;q0n z^Xg-L=Uh0u8QU8iPT?G*~|k_sJnQ$s@STU_4h)*hA{EwTMRfZpY?;P}y8*h_wt%+J+q28q~qt0yFWDo% z%D$03>YI`)+K{V^Pqblt_Dj0J{w;~j)mYBEi#LaH1CLJ7<#ZzJ5hmx|nVXV$^5jl1 z!Yqo---W*q^!s+}ORibd6f(m{LDmpilX>wV8}F=Z4pjn2!QTO=M9lOJU6zPvsSIMU z#m++h9o>1umASZx1#|H`|2o6a^-=7}R9QpG-50NlkH(bZQ^kU96pJ$NCVLr_cPs1> zm+Vc!`#&zOPGfV8E{bt3+WCS%*XayiJdGWFg#R0e%h>ZuJqFlFW1!>`j<|>7xmOC`-49B))vDY=P2zzf1r>T7)nS3a@WRJM2z0KH0dz)4E5J>iv`v{0j z`v}frZOY_5Wz1%^e0I^h{h_==R&Qv$>oe1a$@MDl4uo>Uxq9H@T*j&;$n`3v`@+=u zFWRI0H)1XBBe?pRmGqEv;?hIUx$o>6aH;z&d{SuTyHSTiSqispY3}d7cmv)#a?DzH_sLChR>N#DjabMr~F=GlMa0^9a87P`K?}T ze6`Nx(qnxi7v&EegQN9x=efs{Kdal|Fusxw+CMRx@>-YK7TP`>n$I(J4O<<3eRaS0b; z5FkZ4uYz~GLqyD9=Mb=%13g6(_vZxibPOcUIzvOSpQ6 z0;FLH8=>@Fuy_wXo%2=YzvP$lUnLHyI)wYwTq{l3x)p|J1qtqZ8-G>)OI*r-l{n%O zuE{s8)VGs}+6=-27GfFL5dVRpN+C zxU4(D(#ReM;55iaJm#3fvlreV^YAY*VlFR$li`vj=+U*b~!tHcQ| z;`Vh8m+q}R3i=!595K&5K$ZUzm-1gFj<|&L%*49fuN>Mo!ruZmmfrPK<-f$G{8x!1 zF5$Yrdm-sWn1atfIai~)Ic5G!T#^4OaKt5C(%eYt)-^NOp8Z6AzPN^=%zueX`L7a3 zTw3ec=oTsU*=`Q?=gZtO%OF+$OI*r-l{n%OZcK|Psry(9Xwq2bzO($FJQ=x^|0;3B zC0xPUD7?etG&Gnh=a(g?!&Uh&`KA0`i(k#_H|ucvb#OT*`lyIN}mcdB+XHL=LOUld+NVWL@vC+Q6f>Fyu@l ziMY2~>GP#}`Pzp**TC7JtwdbgHpBVm^jInVoHhK?^Ac?ib(Z5@h|i_%j+a5t#z*`= zhqqnDgWNHX-*yH5E4?QEbMD4u@+{{BY4mU#7`N<}=*PpzOzz%dhh(0guUWfH&Oh#G zOSpUHM(Nv;ADS3jS$nXL!W!Hiy}=pJX1(kv=Lk$leU zUQqrmfqhuCzM1#(s(*ASgiy1YFo1- zarnQ1+}8(R^L?&+B(GQBHG17;&B*Bmo;8Vc=Kx*K!ZW9daf#Se$W4-_;`+=f)_Sk} zt<~=Pz~^0=3Ij5aF}Esn1kQic2VO-wA^qz%7gqg|=eB3UOZeI@C#Cis7Q(P(d2ai_ z>9gwlOV2VIzrStf&4z{4OZA8rO$%$OoV>WzC3Sbi)JBgSBqLX-ZO2dHdfsT+; zW4U+_ta^6m^-4bZn~rdR2P0;R=XSv*C!uepX}t{#*7BP=D+Yf zelO8hX>N}9ZI4EM@fRDOJ5`_Fp~{n-d;S^)2G?}Jc$=3vW3ck{DIT|A8k~K#i^YGN zBKrGcDb@if#(>6@#^8MeXHCJXNY?*Fp}>tZD&-gbw3<0H!hp55?a~Uft1y01Rf+nsdSP8|d89Yq|I`3xKal5jC05V5cUdo(xwZim z<;vPkp+yw0y7m)Gwp|VeS5AnS-Tm{qW7&JQtfmnRZ74stJ5gD92k1N2?fP;ky>e1K z52wIly#J^RJ|i6%R3_&EZ_HBpRJ%@Ko1p`i$#Nc$k7wH`>!0a)Q2nzqK8l&*s~>{r zwpsOn>mKs>|xC%^tUbG3Gs>&Qy6`9Pj>0m5bBZQ!cK|?a2q__R9Fk2gTh9XPEn+dRkzlGzWnhAX|tX1`^qsz)i?4% zeN)CvZ4|T82lbbHDEmP;>W9)VwUOW9e`~XrX<9t1-BH9s-=kr*@ZO(vExb&-C1Odx zk)n!^xD=m~OKrpranQv(g94%Xjyu9${@qYK2eJxl5)cT@bmiQD_U0;m5SM&(u}YFW zw_FBkeWVzx8#OoZ+J7P?+if-w@+Mlu64-nV*AHw47JV5^9wFyZNe^GCGyocV(g2ix z$p`suI=NDF_f9ahu*9)P+&d>9{&-L`yenWhY`b`t5iZmX&&eN(_iGvs2fd}1jK(zb zX}T(BCobje%KV(T37DTN<0CG`r#x#{_`tJvm43+{`BiEFgd+_=d3GJq_^6HI z>zUae3S%0;?{4;@9|ebFcwka{sKuJV%m((NA2}8YIEQNocCQ=2+I?7Ognsi);#4@Y zN4Tjs+e6;{=D06ao(p7Ne94a#wZ(h#n#0kDj)MEv<|TJO)djxZY5>u8avooLAWYnG zxT0wjSgvzP_$@se#;@1u3*HD+lWXzk&9teyDIc(5#<-d11x>7E0$E;=vjrF_?Y;BL-) zv~2_IA!ov6f%6)ht>RKF#GTS+I$W)^V$Gsa2gbJ0Bky=c$y8YI&5GU7nJ30Y%Ri{* z8`L+NZz%WeP+KVO+fnA?)JC~@;9AVjuk?q~G5Gt%#?6?sztqNQe_iVj!xv!Aj*Xjb zYw&3<(=`uYI)VG!zanNj*F`gRlxC>p00)oM6u9udL451Dhit}_Giug5=UIZ4O-?W>0Mq0Z{`FDzh5@0bq4Ai=?6+2 zaS6BZny>UwZyjv=D|5ddc2nyI2qgVLi6buIik|yQhl4i4#p80F@24|9Dh+`Ak_Mo} zAytQP-B$ZamzHjY`*HHx@rR26Dh+_RqyZ>##3fv>-u}|huR9?2k({5uv;QBh0J)?A zC~?Fk+|9cI(q+p%;B-h{cP@D1uhIa>FKGZu9B~QvQY%TnI~@RS;3|Vr2!C^Gyo-zxP)u3375hpQ_wSfDEj-s=6|#TWnfu|?|7ZosB@IA{ z6MhkwtBH_cv<058B6Htc1gbOu@=F?k5=UIZ-7<=hq8p#a^@Rr_W;%04sR0m|Gyo-z zxP*&Oi;!v+oq?V$WNyj%FqH;CT+#rPIN}n{^y~|1rjHejm~mhDEw~<`(g27{^Cl&Z zxP()#cOy)P*1IS53YWfEoQDyC@)-fNPq-@XkN>#jBAhyPTlje8@QNRI50?hyT!Cym zdHu~fG>@l`{>&0g&S{b-$?NAY^y7KsD&N`dc^5RxN66eveGmS&+c)Mu>;~RhcSrok zzMd7WUfaf4Xl+}$zDoU|^;Msx_x0n>x&fY7E>S-M?iXXea9Q7H?^9^5Gf$#^JilDb z-~0jnfD3Lg`k{gN&V)D?^4>e{YnBXj2KPXH!M%|a!<(AgXr@(r1nxOg1^0I9D_&x2 zt?}>U44OV81@}r$EU!2;71GboXYOw`;(sz?%uBw(WHMX`oX-;0Oc4DDotVz|T{OUR zeAciJMiT_?#f&#RvC~v&eRdZMA2w6qw1y?B^Z69yp zI1N~IQJD0B*n85NIZ)LwViK1@_OVfFbQ4A}ox0OBfP8RVcElJ~t2it4n zoft^d9K<+t`|5mZKM#%HaRx7&$vMd-M_t~}+Cek$^GFCx!Q22lY>GJLSW$d5RyEi4 z2E!kbEcKME`@Ay=Q)xjoR-^@8OX~$qnn$rPBU$$;Opnzz9Hw`SsZHvoG|a6Qyo^dl-Hy3kHo5TaU@eNuG9di zAEW{NvuO=qv3_+z%bW7}J$}Vw_qL_`yx{USTQSZ_E-9+~oW_Onb7d?PAH|Y!B0&?o z=spBT3>4!W=%2xJNBV0V2026jePhJ?d?P!SA2JNoRGE&o8k72narS!gTD7K5@zI+4 z^AQc%4b0CwFSZi){DLw#PO8~s%+GzEToCpGy|Os3Ta|6zDnR>Ge4S+45cC42Pl z){D$xfvexMDw*>8{Pg%2?tUkO8I5|+j-C9!_u2HT$_H`D$H?BgEPjd?c(j+bg6FPy z#`(s-n!c00;K&$^1qUI-1>Z@`}~09F0BU4y5I4@|=U=NU5zDtK3uZ++ZS} zM`;-f*ZQG;fWUW`g82JeMsW9}6U%k;5Wma6mb>^gHzVlQ`zCXWa+9?$lY{*2hXT!) z5X@l@%l6({rSPxo@vxTXfpn&h82b#YHC6g0ALMt#s^ReQaVL1y)>Hf+{JwdT58pW) zKHwQnnvbYyVa&hn%=i`K|Dc(s8x#-5``NMam%TX$of6IJ3@xnRbXD{t^(xk6o%k;9 zeQm~2qd@NK>#tPt5trhdbora6yLBk6cDf_D<@cOlD9)m*F?#<@4&N93D0cPYx31P<%@+p2jl~Z{%(EJVy2&*nZ`YH*b>68o6ms&6zFiZN|0K z)|d83J?6M-ei@_Yi{vd1y8PCmP15D2v6_8*rwbqJ@73m^ecQo;X-(ksVkhAv`%EIw z3vV50u}K%Y-gzRvDRpL=@@L13lVZ7xg90^!KXrbMis?xl$LPm`N8md4(W}l+U#mOG!;>&AvhToT(qfRSpn?+WbcX#LvN4hqF1QS^+ zz?%{HUuggw``!U!BS$mhe!Swt7ugJgDM9U^(rBRYQGUToy+)5XTBBFx`$(pI-=^Ml zfSk+h*;P3g53+dA^QR`U4SlkhL60IaRz6!l@vYWLY(n!w7M)Tg{65C})K}e$W$r%; zSa+Ke;n&vW51(*4hc(7~@lM7j2yWixXx?vmCTrWLIfM^R5!}r4FZssHnJfzb|BQEI z8^%KQ7D^2OL)IY;;B(YOJjcrp_Ih>~&wTN;rg+EUM5+IR8_*=JokZMa6Poj}dVZ4T zx(`&(>n6^NEb#K=y}Ui8Q_X$AIJ>7fFY<%i10JdGC%x$E2Q3Em3M6ikuPg7>H&Xhz zZzk+oa#zF`)!{Zz%8Qr2T{nQTW;aAX{8~QX6K{q~p~q%IB$MZf(H)(5YDS_oaP>4e z_})?U!>_45uWb=5HL}5apV|)uH?98zRc?=Nbtt!2`Nc-^tMox*Kt7cAh)ecrhiIj4 zM;5}J{KvvazWzP64+N4AC62g+W1an_jh&W4>OFVCEt}!2&i4^W`MwfIT*9Sp^p!d# z7{Z!yvVQPsiHkblMz7j`V!aeNcEk!=r2;Wx9+>d7d>UA|-klFtT!AytQP9XI(%i}QCt`As>WF1Zz`%GrraIlB@^T*4VV z^OdIU*#oKR@|>{1MXSo$iAy=V5=UIZCHVSFbL$@fGe0*GbGElum9rCIpo#_><%GrraIlB@^T*4h| z8X|T3$RVw-oFnEu4prss#HE~Fi6buIc3Xx@@d2i=OGp0wzPtWExjk|zXIJ8gOE`x& zp;C`?W?;PIju@*?r~W6mM=s^;gSv)EJB`dC%=V6W|301cQ*p^2ag{iv>JaXOQJA!3 zm<8N!E&KRj_CI+%0x3UN;>aH1=I;%|JJwIb%Gxrw%q&EepVPQdey+q3mvGY~!leCK zXJA7jYTVdZayDF*pA(nzb0v5_DRv+n_!F79lWY&=jU`Xz1@&D}VUdqj*yxF;~ z4M2bJ2hrwo{WG6;DMjO(>4JBbtdYpx?c~?|h;_K8kM;?$!`mh5$GzxGRnAE`$~ix~ z7O<3q*BI_?5buW1o=@C!ODQ}5=o&k8C`$Cr1<&#SG_#OxF}=-NJ&P57!#5Z4+Gk_g z1|u`J_`)lJi$9gi&mNCut*#og+dHuh9lzX`$#=J!0{!<+WU&{A2_G?=KfpO*FvpIdFI||X~wtlkorT` zMm9PA;A4FogHPcTHmIlk-HJY1$PMo{gk5=0*w=otz7}a&$e(#M#2ViR%)&s{pA$`T zRN6X?3u)`hwGL{dwGP#s1{-Nk^Y36sXcE`}{zP0C{U|&b#b4K~3b{4UvV%wEJz^;v z)486$4(xAxmi?Hc6=RjYEtMbl_{X}{ImrxLqehEk^=1v;B~+~ntjjsf8kox8ne@d8 zcsE-W!25HVZ%ZG+O*2a2E3Z_t*!;un;StnXk(;qBUOlE5AB|~P*NJes@o>~V{u8)Z zh~Z=2OoDmF|FO>P`-^c-(7fPLTRf%8`nLgcPf66@Z%#Myd^m6ETI1WW?TM*G?@+mm z6Cc~C9yHlB98UbO72LpJtcm$o2Zm!U?1L;hXO|x1y`W010J)?Uw8`uRH3o;WSqEhO zp!oO;etKzdFwhNUZOiuxdmj&LReA*ZB|W14{4TK4Ll>sLk+p(clX$gOfI!j;lsMuN zu9-)BNL*YOYCXIqeB|$nR;{%Wj@H`lv}y+%*42fL)$uHs#~ugO+fJcU+QPm6K(3e4h>C3RVi`);^L#atqL?hzSW5AU{{xx$Q1P0f(U z{`7m^_*^8*U1Y}g#k>|i;wZ(vamzcH=h>_AV!ePLG2 z!#CA~qublTlq?Uyjj$=?2_|)Ly`dG}nT_un`i(oCr;3karudXv2K9}!3>6pKhKZ@(?ac@B~z?`2_qNgeRqhG*lZc#FP8UM^5^$sTdr)vOEM`gDb$QhB}+ z{45LW8EQkz{#{|U0gemWi*ZX+*&{C5^BPbKicNb!RUdgS8t?IvzwTZKt{v|I8YB7t zD$paFJI~aGv*~(pVj$M=p}lylHBiPZ>|xBxSg4I+QTmX%FL}N}ZMd1K2cL@`iDxOf z=kmv=Ye9p-{h*h>tgZV$Ddb0Y)&%3B{ouQ+i||V|Xv)5k59*sTW@@9Dl|JZskPl@) z2uJ-;`lUAVoAq25&*T^g@u%eZkpHthzTCA2#G4O<9Vc*pg$5(sGF0&qm*P`$g+1gx zO{)okABTW`raX@b4oc&xZ>z)Wk|AK$2Q_`P7w(tJM@Q%|vj%<;b5+(_lJ2Lev=PFQ zHlmD$d{8V(?Tgw-`%-EdB4*Swl)44sNVib>rLiKvN)3;2q~R%b5NabGB+Pgbw9b9N zO7%|*4dw0WJ}PaFaHP!{ov#mboW`*Hsh7kv_g+}aC+9cByH3V1|ArUDJMKHXke94! z0Pl9qVxL{)Z{y=B#eBk!&e9{e0^OmD@R7ix_|pM;QpASKVB$4Xtbs@N^yDXP+DNy? zT)}gc@GL#-NZg3$s(Jy6h3W;q{HzBj69%z`C*=R)z?CJucZY`XFMbf~i(7W4Ae&T466TZY^49}8h3|+>+(Jjc@FohA?~{~=hBQJusf?iIDD6D)xNr(Q0*f? zm=5hDQ0)&OAGkl@RLcN~y_*EVdDdbKjy?UtcMlGhB6TL<`rs82^B&I%o>TT8e6Cg( z3Ol_J&*S%w_5Azp;c&NcU0AYJ*0la?-^x2*{0}Nu=|ae9Y{LM5ZCTH&dA^YLEi!;h z7iAw#^UBqC=^~Eq(j7f#6qtDGLXXoIg!WZ=dM_`iI|>F)t_$YH7esAdrTH%2(lks; zpEnb>|B-9e!n=E`d{BSMhZ09)MYvJAffDX~f~9>N#XFhW&sn7bP|TzOC~?Fk+_!7~ zQrWD9a6R$9;O6Q-QfmbWB&|S+BQD|QNBT%B8ZL$JHCzO@#Ne@7D?lJ=1xg%o3AdvG z=ERaAWI4%o3T2Bt)LH=oNh?s|h)X!@^PbYu)vKVZ)=l{RxY|>#6(Eqb0ws>PgfsE+ zkQP@(4dA8xt@yapPpuUokhB6NPH+*oY=Vd6Wxo*)tbZ!}mK_OJYXt}-tw4z*F5!%K zcu4ccZH3ok5e4n_K?<;ZtpX;B1`!Mv6!qq%E7k}dsuFCg`OZmPMM_j_K zOqQfS`5YS7m-E%vPoq@%K5?mUN*r+s_x(|jwCt%V++QMVbNPn{HWRGwI&IC)L z{Vm{BtN-(HJV2H2lMl-G({2SzZq-kNL0#F$2d-6dg%9K^apZ$=z5KBs>1Uw$mpn%= zwFpz`0_1~q0VR&OgbU~tB89nG!R{S$?p$CMt;+3*OS!!gN3jsDs(*-7$Lu^T^sy7; zmvt#otpOlctkElQ#3h``u~6v-uG?>NzA3n=*HcxwJ^7{FUWp?v;q35#_g)WcxHA5R z;6^y+sx<)Qk_PbRN7KOP`tR7KtNVne&{c0A_jGO%X!yK>&5l?jwEvdFk8w|{rh%gl zykpBpjuzT~_nt>owYq3dhiY|4UhTq8#y%#h7E`9gdf{io%r^Hp?A`Ko8=c$l8o zlRdzEm12$=_MFe;6Jh3uo~--m9>PcL&=9VV_sV!peb2s4#9SP?S%+Wpr_(z^j$t92 zo^wrbQxCpT?K7ml(LTelXJyijg{SdMx2_VkE!(ZjO>@emAH&WKHh#mN_glnkC|^X0?rvs@W-! z)i#H!c1uKj)lP5ZJN)iyUvB9M8D>tx-VUs}s~&MzYf!fjEbb)N^zOV;o%{8>sI9Em z2d>?e*Yb_8RKq*=0+qEF*MM~{zeypE2Duk8dk9`mkIU`4$O);PD07{3?iSX;?mCvm{-D5qh z8f*5XZ4=xj{qbJpxJT@TS3S+=$jySgtWPR`cKsgvHf}85i?mK~7mv#2OK-Q=>SsQL zvLP)6_gO%m+6VTReC#~bSKFwDGh8;WBe-{B->NhodX}W|>{{%n4ZqtT@0PeNa9gj{ z;Ne3yO5%39e?ZfkL^70g#9v+HJ%qIiq&;37z_PARN4r(kv3BGb1#6o z0qnTDte3nyjweb~CNf>`#-PVC#dC|d%;gX564~PR&0%`TTSoDPT`E!4;G#Jls=*B` z?+m>cwFB3ha=wsrBZiM2(Fp>Uw}U4A<$NK_E>^w22gwDvzeiPbjBQkNeDpyl(Er&A zj?T3au~1F#&0jB=)c*_{{Wndt#h%OK&RbtFv(Fb<&X_bYE|Dfh+|f3SIe)vz8U(%( zF~2xotXk)!XGH6q#^;|&wVOYI#ceu?wXwg()_j-CGwE1MH<;b7lUN)3Yi7+os@8=a zDK%J!yQhVZ*Ha_-J>S}pnOCOC@HZDe-e~+do@SxBW&9K#)?XpsA+3EWAASF|emy)Z z(enCY@&1KgFXoYp-|PEWqmQ-=#Jl15sF)x4+>F(}=LUECTMDjEM4IZ(HHw+;TpN*b zUt?i*7oJXTC2&zU^Z3ecmo@qJP7r9^Ls z-UYgS+8}U_DXDzWiqVizR>58`GZ3`~mB)>F`q|OY`o%leTH`I(IGi}bS2X^kXiJ})fxoh27QjLt`&^W?Rd_RgJ zw((stbEPvmrqHj{T6{m=Yq#>BX456TWv1}fI971qg&t7ZBOhe1&*s_EjC51zv}U^) zgR-FQc)s2%$tcDae)Xv(-WTfz20SJqL7M7&4I0JO74OS~M)SDi3L|NQH{PWty%1yi z%l;UDVS7UQZ|P~sWpX{k>l591#!XYH>G-p7+)d8QUTyEjd%rj)Jy~-aZf84+yzC9{ z#m`vcx$kx3Serr5#Q#Rc_UU*A&VMjyLL9TPyCrh$k9#KIZ*>@0w~1mw)t?A%`JSmf z$7ZiIV$eBoJbG1d-%cORU*h=|hO^GW4zrVjn?2Tm@A$F=)(^PBYP8uZ+KNvO=MQq1 z!ouT@tY_dvVejLGNqp3p#n86@T$VVt!yU zZ*v>|rui@5dGFq{$%{(F`wSbJ^Uc4u`qs3^wS%-G@ve>C*Myrss0Qhyhr{$c@_JNw zd^oQ>S_AB+4u`Iv(U zs`MdhBYjBegSg~Fue6>tDE1))cbF&o5n%RFr6UoSbR=ag)JC!BF0Te*bs3C$D$gyP zZ+^jZVk%hJwJeqw{E87S`cMJ4U+{q~aLQs~#jnNx(2M;={MyU+Z1deTX3!1WFc!Zx zW&G!$-hn@-uZHFG$2hZ|*4SEN5)UE^TdGegF3hvoU3#ec|2i`NMWvRkP=)re9 z{7nTLx$+BJelAt`2s10?bsRr1>xExf^Ihq}2i;+=)Q3brP#R)Yh2lwkWXTc`N`H(RS!b;s2=3gwgxbIWLGx) z;TaKM;(}D(`CvUrU)Ysp{W&McvLZ))FBy{QUNX(pHn1$ABjmM|pKrp0*QzrMaj0}k z4~D5UcxoeU{d=`@QgB$7=JrqdyUMj6)#v^qE+5bRRo>~1O*(X^ceQsx(s=!uFr+nV zGT0cdNmA<@*hu<@l1n(^p2`T2{x+TqK3#8${wDWxRoNpSWKW4BF5wQ=@s-m0Ercqw zWW6M7w3}KRK_F=(N*r+sS8&)%YF@Ymd@JSJ-@J*QYHb98q>U(X#3fwY$sSVEYld)h zpuE4LV0M678$lpxBT5``30L9uR64(K6&T)?wdMlDP_;IKK+;B(IKf3+{d{++X2n{# z6E5pCd0V2@+6V$k8&TqjOSpdH+@*RKHp1moa*astp#-%yLR{2FlsMuN?)ox!>D6#N zlW4ch&9=hxa}*j1{RT-JQR0Y8xalpQN^RckfSi@6nPb}IN}m+ zr;WFie$g1_n92G$owK9VH^?t>l{n%OE@G{(G+@wCxRL81VorLNq|!HtOZtWqM_j_S z)AN_MXK<*$Th;~Q@xEiFzCm2lHnmvAmol4SSl z4D?@oUHre49t%_JB?u(FM2RCV;VR1|$^4NO)c+^IdOwP6(6& zkDrHlf0_IG%xkqaf?U!(lsMuNP6`f`mM^>rHCoHu_zO8I&4c`s=Apz9mvB}qgCy^6 z*5EnZRy>dASBuoz2y#gqX>`y>+W+SoR9p63!X}*4Y~iM7Jf;5CZbIYv*oKWim+$4r zYX^urin+(+oW$Sy13$VuK-%2W2IlKvj)UB1_ui}hVk7w->pvQ-dhTYyRkn%m)`P=8 z__c|B!RCuTSUAY@jS4RdJ{!+T=wLAh4n<>42ip4>V9qbr?h9@H>ccb7qZ*2(!poB1 zJOf%A6WovO-AJPT=FJV}T~7|y-ZJ!nIs@y8e&j6C2kOA6qAW26_D{-r{q}E|W5O?1m1?#zW=H1=)qX#UnfCil*_o%!jT#2Sf7yzd zx4YHlKl{dOhhzV~3nj@ZV(xgR=ml?gEh1n<|ND3!RaL>g zk{`t<>v#ujKYbSx3)93rjF(_-Xfs{yz{bvaR!IXfR!#|T)OkDxLwWp$iu&65Bkx1x z{z}2UnuX`cwVDsOzlU|4EYH0Q_YdP${pNw;?@P?&rH8;3*!;(JMl6Iw?k||pB5ScG z5}G}m4;sG+_r`~^gpa>PZXca8gXN#`EB?@JDYuEC(g$Hn;h zMJMxScz)&%gZA)ccC?5&Ahaj<&|d^j#dDbN0(sq~eC9gd&~pKN`ZJET8uP=S#<@g) zn|cheZ!`wB8yf|5zvu+9Ztfyxw}an1!86Drs4 zpRHk}8fSWLG|tK~rT3J^baEBPk#ny*!D9;pn-k#u?jaoCgLp@!#p@ z05fKU2(I7MT$MfIl0BtPLv5tfDBnqHqj$3T`MOXx^g1&h;V#BBYF{C5vY|Gt9(0|( z|AOoL2=qVniLWi~AF$8W0h~8^3%}Y~d8$~*9>p@^b`{ugI9b!lP@bD*EW&f%J^wM6 zswtYUlQFMAV9N4To);X>e8W@OPp4w>d~a|5!6%-GVUy~nvDN8vjj-LiADqrNJ`{)b zzkYI!u+5%7{MzRj)=&2ms}+?ZzZ<(h;M$#iz^2Df;9kl=@r*(o3i;pzj{{ntcLRs% zL&SR@cP5uFw<-%rvT_4>)K~mw63lY(j-?hbupfijJC6%{uU%vK&0(#;peKX=8e=go zZ`>kzUPyCjaB3_Z-6?B9)TX>20*63{?uST;>jj28pRl3RkBI)3>$3>G$My=gd2?eCyKAun*ha z9^(8Sx!HFk`R#ulpmV3LVB>|_5;nelsMeb(KGK_%_6SGz*6wK!Wm~J`8LM_8zC7ID z^U9?yEZ<)p>|JqQLiSFisOxjkAl2uD2eyU9`MThkBID>D3FR6%`K2{*Z`+0t$XBp0 zv+z5E_MVQ*Rpmm2qg<%Z+s07GaRu}GEZ6qQuD!UgcC z4DZQXA+OsPEgi#$++6@OQ?{{7@ms|2w`A#fKHSO>YGF-a_UCFE^6_n+3GbD-0)ivW z+2TAr8xmvrx$Go&4z3rNHYtO3-giUbnvAvN4g4Dh4vxxWaSvU^ccy3eb9{ZXM;aTG zaGbx$8kBnho)P*sK(i#{Ih5D8lE_~6<1pSJ-JiY5`pIl6O2spJaQZtxk@=gsj!)6F zdnxZDh~JdW3thgmW}QRR40#?KU{K#m4aCC0w`rAC?qeu4z6}p0kFZC{f{r zJ;d3a_|B@N*F+6Pj^)MWLKRowkXwBFH+vjXlijg$68(sv*|N8G%7-&iY~W-N9Y zuJK_kp*M_v9T?b!)v1tU z_CNDclJLeh5W5Zo)D#u4-H0Od`f#1AK6ps_t;4Ky;IjsQiQ`8fqZ$(+;`mkZ%nt><=Z~>%faPRZW%YkGBEF~>W6epM?EX-Y zDA%EUb>+Ngz!%oubvaxq4)1^e9I2vR%_i|6qaYXX($9+6)<_o)5oY*wZ9 zb&Ye7Tx;-T<7Zw`JBQWZ?X7wLO0ENVu;m*+9{q-G-|D4F9OEJ0Q~Mo1RXQP!AL)d@ zJ1>P*|E*%Xou&w_^vk?0{C(dFHnHClu6{zZh z$R5=NP5G6F`#YUR5Drlx81U5f0HE|r#q_ewl%#w?mxiT=J^n4+rlB^=fHPU_JPG+0l# zdyAZdkyfSLTT0`cfO|`~G_C=iyt=WT&8;Mg#lO3TSF2M4hR?w){iaTmoHT;YHD`_CNwSje{0|$0{V{J;>S5SOI+qehT*9q4_ms7-eW*WUW7xB| zDxHh`lFp^X5tndF275~(nH-{UuesoQWvFy6;*!p##0f6q_TWA=<42}&HDA^|B7D-+ zdKhv^=ThQ`OSn4b{?cA!GqCfQ=cgIYF)E#l{F2V4#1WTpW3~lI(NoPK`h={5lwAl^ zXnQmZ0+q*dkE+DTErtTbPKXv8;V(Zhzk+5uZ>e8f4;xP-A1;TAYIeT3&zw=Z_k&kAvYwKYI+A3x9Hu62_2M^-$9 z(-FhO_vl_Co*fw6Uo((@(!AQ0FTNG0@jIjZPLp5yP8)c*NEdF+guKc#;=Q-M@SCR? z)`k;J9oYN=`Alf<6BWF{ZLDwYifw!3`C8bqcYNW5+TdSypPjUobNgp!KJ)vLwIF$7 z6zgzWu5FB5mB(AIt_|7K5?S0ZoR^^ApyfqedR-ItOo?I*K6{GzUKyqG?;Wbby#^JU zlpb=;7~Q3z|D_6?3arVDciRbW+{Ik}&E`}ZP7}Mi}&MVzV7V#0K3mxIDV;% z7?(YX*}ULmWqyO;S$AOj!1)4a zUvDAb-Yl3^y=~0Q@XiT}`O(2|yvg0?tkqLvX4?YiG}sunrxZ1?5;$GzE&PT!74n(BNm8%L3!voH zXn~vV)tXx#jg@|VS_}~lMhV;~>1J)wq&q2>A@4IaleDW(f4g#m3i6|_n*Lseys#9*))@zq|}5-@rEo@N6v|#jmC2; zde(y1#ao$K1?HR>V8Hmd_&cfrv+r+Z?%QyG1vdJR$>46gYeC%=0jx2;&oGdccDm0pmlldx5)b6?5&iwyTHMEd!9dofLf00n>aU1P^;gO|E$Ro= zY3ZMeVx30?uz`O0!iSGZIS)G!#ll;Mvaw$H+ee(YNd*rpd(NC{hO$B3P!GdKzoVa2 zV?{U`tFm8uSmSn|nV9Sr_C9U%;x9~kLHdRJtolDWPbu0O&fB-^1s6`R`346sx zK|Fr_f&jNA9?-eNNQq*8vmu$cT<;Lzv&aJuG#MnGQSORJJkz)n+-cnvPVYG@d}Kci z=fQa$;oiy~v}a1hoa+*T=iGIGu){rI{sYvdFu;t*QL1}y$OqkfqtwHwAEbxX-`O5U zWavUnysSax97s@WONb+FNvU&@J<_?9@sT}>PpKmjj&!6`nN47Y!8SJMi~QXWG05aq zeH+2@rQ6s6KV0)ivY$boYQGxUqy1{pn`VKx*BDlI*HUPp8Dl5#$_8^_2Ht~ec@Xs` z#AS_{s?xd0FX>#%UWQ3s*WZLiORI{Sm{M5JYd;T{_SL)zwHDTp&lecCi*IikB0c+H z2e0F*1yU^UC#>UBr`3>l55EpW&ALkD!?ag7?i5!~nxAhAvHRMHXLP!IPhQRF51U{) z3LKN~iD%^hGMWc<)`6QAqabjttZ#&*;a!M(f3TN$?8?LjvR)UQ5Xq~J#r+W<8nb&Q z7NT#_J!W#(xQWpASQEDA^+xf1i|f9Cx9U~{o)|>2_1}Djj~v4&UU9t|cr3>6#}-Mv z2eh7YHMc5k8WqY+hX;r;&0G|vTCbpSq4f&atCdpGe>M>H`?j#RDKDCLFRT*yZGsK_ zw7Vtjt;&t!>&{e%MJ$xX^zae5^p#1fSZG`*mH{mxz zWtPEBCYfql;`z2+4Gs%jyeXayq~KC4#8u+xSrTqYs}q`z{d~YV(^zn0EDQLtH`bax z*k-Vj3m=hIg?!Vf8=6TgJm9>u>?7cA2|s9iMPoV93+m?`6}XUVCHzktOU(zwb&1$7 z`XM=%sC-Z?4VjJ~$?#C+7^z&Bsy^0$nAIUTEE?A{jg^i?DRk<6iu}E`)bDfPu ze7BR*dHw9inwQwNe&ccx%bmn@mG&j#;yb=ogU;2@GQ*Z$!d@tzf2!OoO|-r$xNt<7ajtU;%{Rw_xPM1KX7Q($R{Jq*dDhbil&Xbh-cN~LLGBWYTyT3F;#E$rVf-jeH8 z)Hmy16!BfT_Dgj(8rh?>(Udr9BizpcpR{F;xW?>bF8+(Xu7Bj^8+@ccBWA+r?YQ29 zK<_=}DlLe{fV3c`J;IT_uq$3t{MR`!qQA8mgIE@$vPXW&o)Sk~!Yx1WOsY&>06$;J z8dU6%V71C(IKf3+Ql+cZBxnizt0{luBZft(^(F+8-lW74mvG@T9!p(z7{aJh z`CAb@K3%OhA&~SYC62g+dt~@Xy02LUg@y7QGh|MVT5m!i=}k%;aS3B7^HiFVc%M-->d_kO(z+al=~;5!Ch6WvF4-fl5{GVe2&Y^2RC3ATFmk+H z7v$rUtJ0Rp2Wd-69B~Qf!91lN&ZaP_)JBX;KybQBA0jU4LrNUQLb$JQyrrT&W)Ra& z)^}sQl2!T;aY-Li;)qMQX9sq!ek3Ivx4qp`9 z*XvT$+7bduTTf#<$+Ba6$LtX>&K31X9hv<2bK4i4aTRJwt8rIE~eYjuztm2|M z9pWl+HDZrL~w-r*zxI51UVi3mdzz|BAB3n%B!NoB7Lcu3CeuZs7G< zD{z_X;<PPN^ zFy1C(VF1Uo0~fyPAyGeamxS}r1t$ZNaqf6(TOaZL&6^jj`i2sYzM;#;Hii5*x=_Ae zUNdw)`klW`Xau?my5Kw4RlK{trsaIir$*qhv^u1o#5N>*U;e~nmj^MgO*(MfQmzN_ zHTlE~OTt*uE*&UpBj??oCo6c5&`4%-R0kqE%DMBy>tA?LTf8Twuo^J^JmDk6w2ZfC z(G40EX~5NOj2M?}k09Q&X;-K{b1YQ7Jxbtmy#4v=6P;n}im_0~e7uMy!vpI|x4hJM zd+Y=wQ_@9F7jo_$Z{)f~Kgityc6EF$zP}-3Qu$$jD=BEjD$OmE5aGjg{U1K>khSzL z_KYUwVyN(O@K_}u>1i!B7_>t3+a*N!IK1%>Z`p!U1 zO3;QH3a(K)-V4ymO6uWar7?<@?VUJYsrG^6M?Nm6-;m6sj%mIb$+4{4_nR-fenYaV zb5pahm+W_~)o;FFW01DZ9T#ZnzfC;zk(Mn~+7i77q%GZa#QWJBXuzzujYQAa4FI{M0nA*bWyN@2&E6IAGm4v) zs+yydUz($zn){ngXtk1Eck>iul`;;`a8_z92qdkA^vd#So-A&5z8EW)ZD0AM(&ubN z-vCzp3*Q%v&wcL~zGX@y==oC*@5zo z`_z={_53V8sopgj1A5miO#+$225XJw|K*`q_y6Gw%fqF~);3VFJVK1=i?*xPcWxk; z?%cRi8X`HTU4i2eBgQXHZw;T3knN;EY-NIS=A$NZ0FOHJm zgQHbW@P<=*2eLR^-{fU@L=tPvHO{W)X1;oXI*}XU?0}{E zG^RC<8S*tL%>t9!E`@vbBgFsJz}b3y{{5DLsrL-wnQ?^p%?usikJs^U78q^64DVBl z6Tg{})4Qq8e57YiXFk4f*b7?Y9T(G|uNVEuU;BcGx%YrsnoDd%>Q3=2OO|Q*1q(fR zwEQ;957;4aA69y*H7ztqnpXGy?coRBrCVp(S;2kn9;4E#$S-MC?Yeh_c`b{ggj z*hqEZs+uQkqnf9mP@J_-Pb@?HA>*b5jAqkqfmp&rjOc;t&J z(0cxGcs=fch%YEIkt;PQ(YOE6phVwLgUZFTXy$B8WUpNO1-Ec@m|91|ph-tk;)qMQ z{==(7KkG#H;efo(o^KS+V^z8T{z%?ceJ$rx zvZPY?^U%7ju|)B$tG$%}*#4P$uzqmylUBS}_whb!r=oA{TudMEYb=TQoLxWg%LYH# z%1Qm8Zw1DTT$;18S~;5D|L#DgkGxitq3_LST@KUijCX=REk_8y5v?&_wOb?Aak7Ca zv;T()s{vDF0F_#`y@|8?N+0{UsmWM}K31b_1bhg^!5EQ;XWQqK$CW z_R^`GeZDvlzD|+Hlt&(tp~At#^9Yu3R`U^L zf158+n_XH8&k9S>xVLeJT}9(WEDmqu)fyS%NF%eVuhp>Xk6^%zIRbY(Em?Jz55@8w z&+<|Fpf>WM)Zxf4>2Sw8Rfj)#KTAY~tV_l2$x~^*gd@$j=YXm(Yjgl(V{x3ZF=fqb zzJJJY==ZD>7(bNjJAdD@RNV(o-2cbbc}G>Tb8Q^#{VMieu@~&9Og47CUVHByJJ@>( zh=?d6QbYu#ND&kfK|nb<6h*;;2o{hc(h*b?uwMPLGw-+7%>6g(d9rtM=A1M0o1Nq* zKM#D=vyl+V*DbE`k!wDGx!BMSN57J!>>04$RK9=aRp<2aq(5ZRg=x^SHs>nb>~+6@ z=Dg$YG-rjAZ}VmDopi8}pK)Ca)~*UCF%GxIXRb9bSJhwPc(MLUSx1JsU>#Y5sBYwB zyCC3)^NP>yvuzlCtJj4z_;L+6+7X|}tD8^w`>i&l$H!}MwS~;7@5Q{J#)E#5fi-5r zJb(WFmv=ag}SdF=t$(Z8W$pq9~-7#K=H{s1qR(xVIOr-L2nFX)c>uMCrG`W96bRvJA;YmAOt5VnB^ERx% zH?O;Z&3MM2u~*1v)K}gzr=)l>>lA+iT20>|>I6TBpQevj&Sw35jzh;TizMvt(_Ko( z9%}qf&BM45d6-g%UetM{__1A6SHq^A z{M`<3i=J1gW?H-vnU+$=WkRRt>&v>7t%Gld|GO_1<0sY7op*U`IISnrD) zp|8EnjH0)HP%$l>XJlGRorueI`@^q@{gHJ2WN+k|3Ki2rFET9yjW65u)(kdJml<5nHi+1&6GOlxkDT)!6O^&dvYg~+~?I`pEhOSwM_mcGIs{*C6` zhc`wX_^jer=tX{|<@J+_Qe~KeO=uUt69a@#Q7NUJsWsi?i#*- ziQ>I3_J{9v)0gXLA6{^VX7gRdZ~Mlg`+WV(CpNaRIUMYmEJQvL-3k7-%n_Bc|3`C9)~8x`9j(D68_4?5Qh2AIYDf=d@ZF=U9Y}`GGSRki>R+_`j4=>&a~`>z zv`NfqR%Na+9DK#7`-$@s=68%gpP!z6K{J1&r%~FM zv*Q0~aoxiz27oyu15hy|-iFM`^@#)9V?R!so-W^KA6WQ}_8hi};Wy-N1Qn*^6q_J?iQ-;1Pt65hTg^x6AZ#7MuK zMqQoXlGaDtK-9KmF@FVD;;H$Cu`u#aXJS$rFUE0y&}cfikuj`X-HiB}+z{i4=}pvY zrg#wCt5~_GG3JMR8Y}q~=7RjnlUXyL&YQ&maDz*K7WcihGmyzoX52&4hnOUL^rRW5jqPuN70Pv(usDK5x=y z~&I6?eYdy2Shd9jN7U|i%rV@z8> z-QFjNwU@i_#w;zO`5E%M=#yLIvwA8bPtt;l{;;Tq1V&bz=Wz3^BN7?9_v|8z&2%_}lsvop5gyOxvvoHs_nlyy?_&I`XOx^m#uN z>gfcF>niH*TWX(H0}lQf3I@}H#MojZGgZ6^KacO59f)3{de$=JV65C>DvUU`SOmdDj;IiyXF zB;`&2i2kZPm(vE?WpHM2B*}eRI~wDD@mfUpEM5k>L$#!{rH0{_}TJqO&nDo?} zG#geZ)^Alh%%GQ<*C{)84w_@!&#z4mN zEULYf$!n7vMownv^-s*9D_5H{vuXL#l1X>OIQ;Jx(<7z(SqaUT3~>K(?)B3YQ76|U zZ2H}A67ErhUf+kg^hckw(m^wCX#0nVxEC7Cqh#50>70cx3|}t4Q_5ZYh8`Zb*N3k+9UyW^?RAA#G#&-#j(;Y1$II(Ee;qTS0|R-R$7izl zj9g#$>!=B}8#Vzp&FeyHd|epU^|{Jj}6 zU-ch=G4Ma2$|Hkx8{QI(I=^5=2R^cOXkMzBX2E^zu?OEE7Sj9Sy0wFk1mzOL}xth0!_k+h^W>-S}m z3tga=J->(JIqw?Uo?f<}0?l7_CEK6MwT(~v@%_jY|Ccyk{J&JyEb>OIS-kmmG}NsB zgEZ?jK*G-r`FP~+TG0HqKXJMnA+DjwQx$ao*jf;KI+(-{h#;toI{ittKOyFV`xB~a zl(-ISli4_d*)g=&6X|cmAu2H*uK`@}??} zb|my=FvPVuA?6hKD^<3k4%?Lb@L>$xhwtF2W?Gl;g`{EGO>w{5r-vOqP|`&E_n|zp zd-XjD$JV>2vx;e9f5@~{YcjbGSpzJz9)I~hB4S~wis#@skozcg=tW)GKVEEm z$vRkJ&hIyPW7LW=70*F0@*JfOy{H?d@5$wh`Fk+l7;XAN#dAbl&U2JH^rEgW z-`~@4%2r5QC3~YzeNwR-^dh@CU*gFE3d}%bD07-HkB=&^$c1~AI?M%idM&-he%C+G zT^83y#Fa8N3&I$j1u1ptMP2#|AO764584LF@AD!<3)C!#3y}pWb?8N%ai%Yeymk<* zy2{TGSof-8L0pI|NU1|F>ZWS^S?fth`FR0yE!}^a5zY&;Af*nys2do3l^rRgd`*PR zEN|W|P_rN|L>8pf$#Dzl`qtOj-arco=^)qa1l@nDWXzAuuofw&Va7)r z;e9&mm6`={A+jK)4!x*r*X{B&G z|48Y@{?Mz`VJ@g!Shqj;ndeAHM`nq8sd$5tlwBSOTc%`6d2zAg{w1OBSXDg|da)kq z(2&l|we$jPN^H(B#__)0=(-!N`MHc2!TXkc&v0;1C;H{VHF9zYKhLYxCovAcwN?E2 zJf80(X9VS!7 zKHL!A`^QUZ?N%+|)wG|aXW$LtjX6_BjsEVc-K=K?ugztiSmUfUEz;?#)oX4AlG{0< ztL5lGho^PXPJMY2p6r+Z<7+zD(=(dpycSp&+DFOHLU$ZL(q3DeL&CON;1qscc!SSX zQh0ZnJ=tYR>NI8IIiP=6ds_dGH=Eh@B(XT%Qq29J&f8S%3+EZx*LQ86#%I9)WXnyfj$WCG}%a}aa2hqpahV!@hxSua&ziWTE^HvLJbZ?s@>Id)RR+w$|# zl{4See2905JV)up82|NRF6dQ$9;n05Lu+Bo_XqAzM#h(md(rzNhp0Xy^x|jKqR5&B zJ;{+y|KQJg+-!U2qiWw|)ZxC#dASDp!W>9b>IY_8K8DDS&Yd}pfGEu^EGY!zpd7mOV(KDX~{P3XIzZOqZf29kb{5_9mw zVmb93c7_f7?E>9j4G`n_;(LWAW!o^pVU)K;%)guI*EDte(@6h zwQVN+sXc^fbbgBauvCL^+An4rRP^gfth&|^x|IH*sya6u8`in?wDULe+~y0%t9eZV zZ}fP}_kM48-ssR3ADH4V*YVtQEaB_2=7R2^x#ZW+Mk2pA#*BUlp9RlNC-6Nf8jBdI zhFTibUCSIddBarJO{{y$8?lyJzn%wGm8(hkspi6)Gc%rM7|wyXn7QP^+E&8*$~a#2 z?ifFFe0RLJ!)4~#vJGsuc4e6JSnFnV?}#g`NmXm;IpTu&JcgfXOJ{by%v!~^hnDYT zrZwh73!30P3VN>_NhW?;DdNVC=lh-;kAUhUy~&PFD@5G8BVW+B|6G%nzpX*6*JcUb z^}r9R>k8)uud757AocI7N2ZnV>xwr9-p^GtD6T^Wb?<^c{QK=V>CkYq(7jy8YlQdq zW8pu}lQF~PdzHzipJ?fle(d5jSJHWtd~Y^xYq^R`;dqftyI?3P7^0=v? z&s1Crb;zZ9o#@E9j{(F-9v9b3ddMSc>(&t>mz5LT?-g~KJ73V7aUJ>ZcqOT4=OJ`? zhn~{o8SSBLOF1$A=_O)hZA(=#Et~^nTBa>Kz=Cy^B>Wz~uj7r`2hvnb3u7SD8Xc?$ zPoy*Ct()AR#-vQev`~jk%kf(a&N0rAbhs>XiCkSyHyV8>IailK(}Z+0b_tEN;QucrJJEzgE{W@gP{sq-4kH3axPXcWVYD9*4_k*RaSOl^5fpw?{=C&|jQG{vD(hW6NEXpk`HEh^$Jf!*QTacS~&;e*yB)Qq_q@%?eFno^au+|OgRDLq znN;6}#65EvdfzQcpa-5Vfm+u?$i})I#BW5U^IR1#K`-)>9fd{YrCBiXZTd`nZfxCq zy5w^)8GSCCKwygajP9)|q@R~Jkmz4`Ksvfo`$j@V#bS}mOVbRhw|SCSvp3&Yu4hd<#OsziPLZzjbJv}p$iL5-+tO%WPA|!< z*&VPCHxb@fyWgmEI0vYU3hXbui(}S_xH)T|(#eapMtF{U50}5?Ip8(X^KxfOQ{HKy z;_fDqbKZ&v^xE5z(s(|9O{`Z5Z{Fg2>i+n|V1ExTMYC5nZqO&pNO;S`{AkI9JFNb{ zt`PEPwD4A4b)|EQqF8VvH;C;xMZ~T0^`M&!Uy$pjd!#m9UOGlN12enz+t)#F}oNZ3vwg->OE z8YX3{#)di^+fvu1lFb7xIBs1p^2=X(Pd#2P#PMGFcPJd3-48xI{T~mzwpHcj-RYpW zPUSeM=)RV(F?5367I27~F=A@JyHBN4airn!n$p$=Jl^GuE=SyH;>*p1fDscaP2dw|F&kx@`sHo*okX`TJ#4YVOot+hXNZC|G+z{7&lk zIzgKzwbyRjF%@opwUBU5d-brObN*_pbx54Z-_abGFh-rFR&<(uE$Ci-k>vf5x!LW5 zpXuAbYd~b8C)sBr*LXd&DyE+@->`l$w$R{2q_}p&qw;8>l+Eg#u!Aj)!^P+8pTPIt zc~nHAe$0m(D`Y<88uFR)cZI~K>tskCBG--Fvj0rIkA#s{vnGJe5}8MM@wI)go79nx z=zo%~d&z4H4g^=z7EX;N&F_5anOlK~YvK7r#aVIw9&^r`mXc0RTxbKc0$vGSlFwT@ zbN369cd88(&6D3*<9qBu{sz!MuOCGHl53~GcrBo%b$*aJE9Za#wHDWI7~eluxxNwS z57##;_xr*&tlwzmXGVtWr%O2jay@2%V>LgI^Z>bXKV2GE!v6!f(BGw6^$r|!#&_UL zUWT(>OiQqO#5&E`3L6^A_i$S4auvT4aXG*8{o9T0E;oZ8ALRQmjYp}wMt#cCeLg~-E{I`pEhLxan#W5<19@mpq9cqXQbhjAhDFr`k! z<+_!VyjbDQgD@mPW>xqdRPit_L>{Kpp%--~gM8SA$w%Q!ZFygz+u>?%Cawd{!<0Jo zqOPd5FWb-0cHb~rUSkp#rRHYnMINTqp;zeE`LmMS7SN>nthkd=e2@jC;V2|w#C=&3xX?>0YC@i6ov4^!&Ui@F}ESK08D_R#0C%vy4G@IBL&+>8s6 zhbeU;F4qlqzAD&P(MXwDzP8Lzu`i5^>`SRbFX~n_4`e?YI>GyMoZaxYWT&@k&cz#% zb18LPCUnn-2QlLuXXssVN_aKF1$55D)$D1u9gK24F1P?|y_7!eJ(JCQcMksSx6@!Q zVNJHsR^Gj!RZf36vShyae2aqa(x#<7p?bUlm<*mR`YZI;(x1EZA!@b(TzI!c{N5J^ zGU|}9ku~sghkv)O6Zas2z7?wHZX5?bcdM8TZ$u`uH}Eif_#}Xoq*#i$%X`02aU>iY za-`(UJdMk@$uKY1j$wcM!yEB+!pWMJHK%}%&N=a)a_G)qbnc=9%+PYP)X87waNdW0 zQ2mmFEb8<*>3N>~j1zpmQq7xqhscbSUX1ZyFXn>Yl8Qs@NZ~bUcq6&Lz)O{M?Z@G4 z=Ma0McUfL1JciewUJC5TTzK7d{r2+z!nB>ARbK25z4N~xWi?zMN>=&ueX%>=D?9ko zXU+1V7bOEvEkoTn|2DKNr#6d^J}GTIpb>L0&bKvPcD^S2T6jTn-w-Y4fZXg%4;a}> zx>oVf;P_7AEwoMK_2b*6v8ngK@DAVWfDg_q<2h}9tR6Jly_%o5lP#`|2f2%Aae6)Y zx?mLydhyzR;}01`)%ug8|h9I!NE< z_<_UOogzQ;Zhh(do!!7a(va`3*-z+-!)MV#(iO&^9R-In1`Az&*d%%+qzg3YZv?MS z^%MCO+?hpFXT@u5BX&T-y+V=SwTfkwuNTuaIo#{4Vt zyYgj;YX4%KKit2#{_KIwXPG0ko~$o)DFegl6Q}v$XuX}}v};39m$&L6-8gP8?t4s3 zrgtDXSDCXOs&sg5pw9T~e2DWqO49Y)$==P6sQZ_>u;}b|a@MGe@aC>eqJ7Q$rNst( z?+LAu$oWz(-E0Svs-p6dCB}e;0{2F7(IU_$?mE7M!o7#_td2J_=b-UIR%q3<{9&Kl8 z2yv|^k?jq(i1FTDQl?@-IH$;hq5?aBP4Q5ECXKo9zP^>j8A>~NSUwc6js@pAHSC#s zEgm=HT0A8)!v2sMsaOziL>8oERj5N&rDQzVhKy&-f|hV~kOK+cAm2BInpDv3b(-_D zARTyZhRl|tHZHTT~U1q;;GC8r?~TX zpO+eI!SE1N8DxsMaIuuSG;gHcy?Q@ra)4{J@an~Z|J--dLyL)bT-c+XWaQS4xjtz`9=JG_qkD{$5&wCxD5c`jei-~9H_VN(Xf z%Xvd!_eJ@7t`6GI_Y6KLedgzNbl)QLoG4y9cw~{8G{Q9oa&x6r_XJ>Xf5XRGi@`si8?}>>^-Xuo^%%}U z{PkSwHBe7NMpkfSnfN_@xBQ`sui?BPU)y}Li1ggqmGnIwD1J+#4}7HKii^pdmxGAk zrE4PRd&V#Ld2RWm;>#eir-aWvH?uK(?MTf$a%^ZK%=``ki=(rVw8LDq=j__Li=@Sw$wqq>!oWpNkj|))&wjkzdKm$au15 z&|~3ESiOnC1uDOGVK{LGOf_2~DNJXl{zvYw@h{^HEv z(~Fir$+69q#Ig^Mi#Z?uNDV8iNwx7$veYR}^cP|InT9s`N>UD#lc`?+^X@AXUKg8k za;Amsjon+Oih*;5F@BbSRMRnppN+7BVJ;CjifG$;?L}Lsx11gF#@oTgs=7J!V%;3( z_x~}_i!qcrW1GlX^OJO4!q=*wkaGz;`h}jHwO+dI9SbMISBtp$W{=gJi^s_4oGa_V z4^r1PhwR%ZbI~W;^Juewe-M4gLJ~WMb5R~7-mH|m(`w>-C5H?TO%?OnmC}{Bu?)xix0fFMm}kv44ZkNn4wdhlT&`DA%O;!I z+5HQk*}H?{b8}9~rju^>(l)HW9m>D#7i~2hkJ2gadubg{?SfzV^7pOgMN1mlrI*&o zY8UMEH5ED6aIjR>b76j1&s7ptKt?<{O$yIF7CPrczi3?6cVbmg7an~}7BO!7meJ=s zzmdyQLm*{O#JmK%f2Om)RT9J3bzxb7%#eNkKhx|aZx(*o}MbJ+(y;#A= zvt-nVTEaWNr5BxG>cPC;oF<*-)evzfx4A*@Xh*~5^v}HJ*ipj#ep^}5d+$fXp)6i^ z*x{JqSHG=J(iDf$;PT@;8U5Zt!uk8n&jwVnIc`Qari)ZVXQ3mzY$MSnHS%xNNj#@JnIBmK*N+cAc#d=95RvEp9)q{Ub^Tl;P*snV^ zGSInGT2_zO;TDPfB(FB=eMz_(_azy)V+!<6(IZvvIfC`Q>S0Fb^D{!`)^;F%=5j6? zvk%mIat#=tcafZ5B=fq*hYQp-ZM;9MY3nq!nCzOm7zT8cpZ(k-KhW>y?@15WWl-wO z?>D&4N6XLVO)DdH*bFFlm)Yxu>tAT(lQJ@8#vJ%v!RsTq(2MUw?;kP*j9w3fyT|1B zGgZMhw8eoTfcyBb@t7|@x2j-k`Xz5DcunaCfopji_kO*4iq`GKq9=+%!3tVRdTb*LWJwy5lefn~EAQ}B6PWs#V zuJE2c`7f^xy+fS$n!u1knE|*b6wu?|QRMaNb z!*f(VZJFoB#(rE39!`#;zmPFGD!ztZ3Ty{PLn`y%@|cQp+Bb5VE`m*%RN8+wtsDRt;Y-SW9EY?aP>sIe%njorb5rVsm+Qujzre!hY=tuhviFHi zo{FytFXwAY9ePn$UEhVZ|7-^5TFTty$e5qRuwOn>j^VK*w`3f4LQ(t>$%Hh`dgzLoez&I{32my_RsqUgqN=iEq@rjti03 zDRt;Y-5!Sk76evseYngrZr;yQ^Exg>UZ>QdSLhl9v3y={rhlD^-(8JQiJI4OA@aI3 zg$})_Tk0CbhHy3){Q8*qET0_s4~OGIUZ>Qd7j;?>e|Gqo9W;6(zb~uU7N+KPT!_3*sY5U7 z%)a=snSAf8+!XnD?Xzi^n%8k5@;apsy{Ic#<;S9iJ3zBvGIuQBAEV}V7?<-pr4GHQ z+q2M*{os3D+0>MOpL5SVQ!zKZc9G2~b=<0hx--rFSy`qtNFU|e!Bnqws$z58i)`-O zNMrczE)mnyH5m36JH4~Yi~XTjc|INHhv(C&ev5e{{uW>NodPF+NF@1Af_UakHXcUz z`cH$<4M5B)Z)z~cbK{Zp)s`Pp!kbbleYF=fs~kOz+`k?Z?C_NCFkP&zPLzE5sy59bBBo>GTi)Tvk>Z$#F2`TB9zKJB-3 z;OT8Krx*A=@Uv%^rOqq?_7vGOoYQ|ko2t$N!~XCru+Vk4S?>ye&^Oi>HBUd5AE)m^ z!WgN~-}U--(_${awpi1qH4E6&d%NNB|LTm~Ln>(Bk-5xRy9*BP%o3lu@2zq=@K0A} zHPRRUBzG0pOUAZWv~pxRu^pF0j16+ccpn@prui*ikhq~KN46JX+HURLE9obag9f<|3J5_Yprnz@Pb+kFN%94TqAp{hYqp68w^dN z4~qEEv1te$C`I&~0v3nkwbX0zh z4_aTz_a?X~eL58n+m{{^{S}@_QgK%74>{|gdp1%=P%La+x?A*DwBa5dKPsIZ9-l(C z_LS%E@t%AY`{Gu?zFK{63k54jLeVG-F$Za3PgUFub;!+b^E2=w#*c)F1CEG!eii;m zT|>o%SVPrjUwf#zqL5sS;+%^o_-1_?-*<-Zd%nJqOdBJ=&r98wt*X<)abTU+kOj@5 zV<%VA_o|QZMsDFXkP2>wxga;IVlCkbxRUu^ULu!JvoCbM^&b*Daxvt7kZY*oqWL-B zin=Py1?#GG`2K5~3>Sm& zxWRdmpULT;e9ygwVy$1pzVe!`*RFl2-lm06e{LB05xG~se-0i(U!Ge8Rg*)=!GLYz z8ZY)BG{e3I+~fN))j57kDzP!0?G7Vr-AYU#jY=a2!}yHP|_k?djwX zrBC~b?;u&)mfjto#5A*gA-i^8v7Y3gDQ)S*rpe5$r9Z4q>8(X?^X)*3v+KfxaB%ZxV7IW9fE#ec83+29c0%R<4@ zunk$7suqklVlCJv({eI=qA@vdEMFVZeG=%RjwNK#d>{u3c|8dC-sqjI;%k^6@-?Lw zb?A*;@P)LrizoHp%G@k+QK^cDp$>W2RLg2I!7rK|S)3%s@n~VT%8PT4-hb0)N@H&a z!-G$Y7{%~x?L><_tA?y-J?Z6;){7rF$eBC2!0p5)5+bhlq4*OA>nTTCmrH4BtziEiEP^V&F+>7i>>BU^otIP%4{+kPL(!pFh zZK)&KkG~Dg8>|+&Jhm)Q@hj9Jzfv+h%sGxTyrJKFO12Yj!=%+R&wgxOKqDIbAZstY zCeyCV+~@g@92FzOT#%8u|6NTwM7$Q1IoO>th$(#_+`cQE*?nQ2< zI-{Al;Tg@!vwAQ;JgaACmZMSR?oeo{BiB3LcjRmJBT7lTtx4q3aXCiN^3U|^qmN|P zF8MEo*`4wiIy!b$e>frk#g6CI#YtQuokN)jKcVoesY9 zQr5m<46J=~zHnIT()%hnJB<+6)y14-8aTcN)T-q`oQ>~@@jl&`r(#g(MFu5JEoC8# z`TO%dM;W$_YITIZzgN!w$+3rhcXo;XIt|>f+W#JP@qGV#Wepl{(!m-uC38dFZO+`3 zxnLXSqS`y3H{#y;%KA0z59`;Idxc?}*1TM`=Na~gd!E@mImvcyZ~^^C^~KzOyJAPT zd_2u|r?|qNZo1;SDvduwZ)@B&-woVh$j%YsyKmQdAYFXIR+dx$9#K=wFvy*t(*{P$Sh|#Elu7u4Yi& ziyTSm#hm}^#j&B+ojS9VzRMxtkIb(g%>568;$~z^Eq6MxS+iGz_L96$QOc@Jl^6R% zuTqC`QI~nlkwyJk2UA+Ph->4;nsgO|!to-5QtHr)Iz3AVmJzrS#=6RTE4?&(qhe6# zMFyqRp%-=iwm7f^UgOnS^FQzDH!21tyqrNPb;8Sa!BZUBfKoI5ep_ZduRLC=I1+l1 zBPn$_2dEpf&50pf4|wM+KBJd@X)2B+;&P6p)S(x3wx68Y&o28w8!3MtDZww)yotv} zW~9`i7j<`|T$rx*AT;a9@9TKu!;t^5CEkc^NvT6G>XO&Hvgy;0g0a?4c;iE})oh7- zku528=tbS28E&k71%)fW&dAr~?QAt$;$CD+$7gvk?{Evyw2@h^CN5p&#r|TrSE<8s zpw4rs7n^Fy*;0wjK_Ze~su>g)B7;)u(2KeT)2@j9s_tx&-=9bEb&D#F#D&O_Ot<>6 zo_r7Xde`K8@5n3fRbI>wy-FR%Kpj8JhaKQ+8J!&uiEBLKCK zk9~_h4fl7--t@g0Dz=2z3$i7p4!x-BqVLD*owWsnJ95tNH*3`liVKlJDRt;Y-K(v> ztk!Nj*u3?a$hpESLd~GK5E+zGhhEefWnW>Yv+UtSsLb3d%|g@+iVKlJDRt;Y-IU>1 zSToL+I+@8Vt!mpfHG|?pWKc>SdQscckHae{;Ggm?FdwyJfScx~W1 z&3R|dS)qM0iTLOxKFi(uulc+3{jBf9WPYx>x5#;K*EHIu;c+%;RT>#-?I-fvF!UY0 z61a)YxZRA*jvmc;dOCBxo6uPgcCjquX5>;3|BvU5fBWdsZSU5xs=h;{Yu99Ef)AL`8LCYJt;bE*CEJ;<#~pVa({3z1(b zb?8N1glFD#%;&9Ar+`ISmgVwfpv4O^o9O7}O?HJSX4z zYoD4`aWAqeWnB<&5_Lh!eao;7nT*zT477f+hMxz?YlV2@ZPND!c_-9`e0o=7WceEis-0%qHgYr_nLN@{C=pleBX44uRGpT`;Dez zfCoez0dY+p;CqJneSWD4Gq zyzNiu$q}AXldpH7VT7g7y|B(wc`+_}m8=T;Lsk{nrY*R{kLLUF@b?g0nEoGDg*s$a ze7z0~zcm_Ouh}QAgV$k+baY}naH6kC@Ey5EJ$~U1jU^l?p-KO? zX2W3eAE&$_)CAzb)nOiIbh@|zyG+Z<@d37bl~8-`7r%&`9C=_Dwl>`|4n>$&4H3BRwBQksA82) zBr9j z{d>N67HYC<3e9iXL+fjC4hF>>6~DU;PfVx9)4FS&$DM~go#c1Xb+)eLwRyGSd2Sy# z+)!p2Pr}nw>2_VwamO_=ks514n8>&OyrXQ;fGA9_u`@%4#oD#@O`GQWCz2=`4^ za49ZCE~V7r9H0*7)q!QUm1I_)%&)Q!zfkQVggV?qsASz$qj5JcL)E6*;`?!@r7xY4 zwv$~RJqKpimOl^6#|89}UO6#6WdNJ6@ZWJB_bOj|z0azGjIEkUe$A496B7nMpriP^ zclWO|$*9z5as7oFq^Wrh_ae^;8&gR}1g#(rv*rJVN8_KXyF#0A1FT@6`LZ>b9d{MiTET^ps^?_v51*4&H7C3gYfe=4YdmSJUsF9}a~*m&j(x^P zED43=6BP`{_Avhvt$6X2NftL@WoU`WFDdVWdMzl|;aX7dzC9&8FJ|RYx#sxUk$38~ zmRyHxEwg&nk#)T8v08-=5WOfs{1!iGzgqoSax;FG%JsFF zGuHnpnGwc7X0+I#f_VC;kk~?A`^Fn1mhw7KMSUIWu)gly`JZH7J6*`1`ds{f+_C+n z;z+{FIZ~Y$)ns!^T`0EZ{qe>dXR0{&E+wX0>yQ>pf`#{%_XpbcK{5ILsX6IuDAyf^ z@cmTxZ73iudek9_i#c28-m6zWt7@1r7p!4cu^X;KcB5R+j=A7^_Tj1Fj13BaQ6FUn zUp8Si-E#aEOG~{9o7xT#4F1dP4gB1P2r1Rd7o0wH5_9_6Hl5bcyDsgYM(*UA2cjH{%}my#{sDE__O%ewJKYQS-tHNcjnDNqpvwHiyuPJ}tB(Tl0P2qK1lb)Y`D(SQfzV8=r%Qn+`e(1joTLbrxFvf|9eF!vy@zv6TCXi}P* z8SzHsK99?tS#*~L5LV-~(8bKoqrctGv+o|up`VXj&y_mwg{nXN+^|2T4r8FMoxeT% z#`%zbX9qD3+&e+Vmbei4kWz!f-ufb9>BQ8W1q||Y%4(bMdwP$8WcR^&S%xT{ECaYKwUN6Xklse(%x;D!k zSaj!oke|V?XWsZC;6KcWHzEsC>d=e2yZ}cw{MJFZRYzt#kFRE`SP;fV7Npdn7j<6K zo!P1JM`3rU%y<%SW~f*YdXWVwb?8Oih0ZQ)%O}dupSKY?Cq$^Z4|-X-#TLf&{kE>+Ekcq8&5r4GHQtN*VXn||C9?*FzBUQNOaH6P+$jwdQqqO zbD16b+X{A%mERLb#bl{i5ax_5$S}i;-EU_NlZ*F>YnOSIsJz%8dX+jH2kL49-v^DK zDTdHPDT!?H*sY5U7{ObF#%DB^D<*-|f?fK~(H6P+aeB&80$s57bdVs(2sfNdYShPiBajG7~HA#x<84!x*bSJR92)Nz6q-DQ^c zdD|^DN8&={NJ<@gQO9d(Se;kS(D1p;(mqhFnj>)`awMe=y{H@C&dDh7t|x3;Oc=Jg zH=jUl$LSfZzj_%o3xo0Q zDL%J?OAqMjU#_gap9|D`v{8KKWv63kQGy%uJ8}^s>TMPO3)$Bn(B02`rLdiYB>ygQ z%|w9VTN-L|MXFbOz0`SXuJGR2QAsN%myqyZI#TMlmJD;bT5qRnUsJrsabHuD*e=?n zlO5oZ_N91c(zQB8TkPwiz4@avv^@7x{O9S~S&al31ocPbHaqbwMvUxQt zGOHo!=7fuJT=*-T+U!}v4s94Fed#DaLwL`wP_ZS9i)<;S*p$ti(@WaoCi5o8QAPBx zep}gzXS&k&nA>6;wvE;O;W)6r4<$=jb?7!}%IUj8=i&HW#gQ-ua-_;L%bAPmdFir_ z%#1v}s#RX>54}nqe!i&Nm%fq>of#~pt%($43%FdV=2BdUTuP}!FY1o}T+Lz@CrM-S zZwqgb-zPPf;zHz7N*#Jpr(#gN5gAm2rt4X7Re|&@EKH2oFXFvwUjrNm?rWgBzv7K} ze|0$Q8A-Nk16%iIifbss|2rS-%(;5HZ@G?x%B#MbZ~;vuly+@7jxay^g_D|vcjYm*bRLlbXPoi9mUr& zva3=DruUcc^+G*A()%?!OC2sqVA{e<#I+7>Nb};$jJ(T6f#szuBJQ!^`qbGt$!O6I z0v^ep;yZIVtdaUXG0zX*6PwOyCjEII2-|{237zkAe!sDHA$&e`iRiZIE^;Y6ltkT5 z%?C67U*5W3Uoi)HTOU)8(q|;Sdzf@#r~DZ??fyl_8NVd=YlTbMJHy4;Tz3AX3kIZ+ z4X)25mu!Ab@`+lMhR}iJS}0BvIR2^C9N^C6dyupNN}#B!%9t z?4mW{-_q-FZPGuUuE4FZxW1g)0tKp=L0^_=73xa<{Mi;4|L(@RyDuF z&rCci#_{yrJG!(yR=VBd4wQ!2h;cl1%B5A2H>5j!ZPmMu)?yr~w%PRi$?I%ZkPClj zDA%6`C1$Jm6~;w=)$mhWc-fA?m-#!zoMzm5NZp3FfxmkZ{)~N4jO|TGBK>^WO3LPY z+nheRPsGSy$Ilok?*QR`DWq5CB{44#cNVF57|tp3FeP8ZxX9O(tP0zZRqf1d3G43% z5Zz%iGrz;nH&yMY&-=su^!K*v2u53S$T<@?5jSynp{hO%=Naq6O!WR0>lYGBR;#n}M{z39(p1ilnyOksOS%b47WvL|zXd|D?n7?kM$}95Y-girDLEQ^IVOEg* zo0AZdMZH(mf#oNA!l4uLHTmS`OBI8{IY0*GU)EpiabP`I89Iw=qsD=4ba{4vZS?z% zaI2@Y_#Ll#awDC#u)kKnXd|@qHy6L-HBW7(eSg=50A6$Ea8>4_*%oR1Y`Z#Oz5XXz zdr{^pZ){$vxfG9!TuNCBhU36mu*??=p={V3l6my|U2LnEwvql^v>1jBSWPyK{BalO zuWEsbDlWER+(|v(N==vfL)?~;;+n*J+sxz7q$dmgA@+fRxF)rCGgW(>;~d}~=ZQ5; z*vsGN;74DXk2|*=Njn&uv6!cJ;2h>H*iBU55p;@n8!?-bCtX^2UtE9qj9v1%np~uR zLC!F~#)Mjws?_iyiPSxji3k#J2XLR`;RALh`hO{+dFUKYB=d)&zm(-~XpO(W z5clK$WWeG3@^!kui2mK@6FIh#^RQoXU1{=)ER`4gL$8vr;dqg+DY+Tykeh9rA4uwC z{7bSXeiHL?WnDGxbK`|()|p^_9_M=T85x~xNo&t|sX4Mg1l&z{JrXyMc56#*d&Fu+ z>#l5$lJP^**S>dLL!|8s>sEXv+E_)ZsmY^8XTb_<#95vx0Q2r3<}g zycBZ~>`+xuo&V2&w#KsJIRSwp7#cMFqsRPo#7$k8>ohi`e*) z&hf}4x|)Wp?NOp zH1w17^t9~tJ^xL`sxUwN9z_=9k$WM{iBq3o;SJzz1uNc?Lw9Qv{X*U!PsY{1N|g(G z|C@`*ndhRav*e9fXQ`?|<7TWuQ?AWLFRsm1<-!{=7v(x!jEn1Vm9=l^#oD*g#igX6 zB299dd_#;QW>1-VUbqnFrNqTS!n1#*ext;9!8!MdY8^9<7uPW>YY{O9)*>peHPqp? zrs8W{m&Ey+YHxq8!@d2LY!1hPY)+XA#=u;ZTo2oj>nYb+V;kl-)W0s=C}{>yw|R?k zMB6u`^&Zp%!%97Pf1lrnah>KubGomp0qm=8#_Pj880LK6mY=uN-GOzOI0v@w<9lIp zoiE?(evrWy&8zQGaHMv9(cki1zOTVNU$S=Pc~a|LxwsClPA#R~hqTacb$(B(Ke~$l zt*-q}Qm4OU-v3z4NMb?8N1qwcoMsA?U2ijnKMQ&(lESsE82OH=C5 zi@Mm~rzrEwv$G^Gx` zsPmU>8J+_;EktHj>7HpS9)@#;JWQ$MRvpwWp=Vj2eY@acsmw87U*TspD!CbYIS*6n z(2KfeL3Zq%-aekOt+>`+c)eEfFpP`$3`!k(QJ4MroY*_7$0eDIKJ!mk@i6ov4^!&U zi@KiM&a>QcN8#Mxe9b6td=m0X#lz5xJWQ!WFY0Cwb!4|cQ%DP!IoIRJG!+j+FY+*@ z4!x)wcEXuiM_GXWa`_%JDdw4qhoKjFm{Nyc)R|_xu+~Q{q2ddF@5~$T#iprv7!~Rf59Nbx>PS%h$ey6zp9(d=e7#YSuMyAxE7j>;# zcnC&zzGS<|FUcui&BM45d6-g%xu9<9z{~6(&dA*FZWCU7CQ-64jEn56>Wc^K?P|+w z8caogPj>L%1BDm+L$6YY`Jrx=aai5eW>lh4o$a* zQwMj5{P1iT6%XTHSE<9Xp)T>UJ6rq084iq*KevzjG-__fg~-j6I`pDW#mIOgGBPF8LLD-# zN_IFCHo&L?t|9`av!A^bN1xkd8Tt%BYOv_ut0tWyWss*)gPDXV1G&-dQrDy z@qE_rXR!2Fs>~Ezd7FwYaUrrLr4GHQGt|t5tOMhS$N07yj8Q-q(aeFnHP$cP;N8Oh z40V@U6WTs{kS06d9d=G1EdGDpS`qrI^%POh@48anuO;bJAx+%3N&3Lo2aH&}OL!B{ z7Sh_ACP}^fMZ(7i+k`jycplw9sWqILG6nM9t`VQnn;VI=&Hh$Up_v9le=isFmlb-S z9!}+Z@yAXByFe51-<=uqkiL%oOd|J{6Q8B8gf4#ndwOBv2jaW2ocPzt5W2?)^6A*M zA4n66Lb9=bhKTX>NIo5W^fMXC?>)zU=J&gNY>5YpRQovK9N<09lfQ%UQ?qE(y-gr|#5S^_x4i#a)RcF$uybRGcjsrR zZSoO0$Mf@vozJ&~vrDJI_`=QNbIS})R9!DPUc6qEj0bZ;#uHhyE%@vo3x0pezt3;N z66lJxt>N{tvG7ma9uXt!)_r=%y93k;N+K7lTt$rMoU16g55_?5v+!0s2sxKR+Hd4J z^G5C7a=PVGJ4p6PBAeUDbNX<9v8q4xVt?n$T7p^X4dS-RTg1>D{6LeNw&L%X!-<|& zp8I=;-qX}K%^~+`IMLnWD`Ld)gI$!&2*-xZNZB98!2Zmlo5R4oU=ph@py7CVy?tO(HvQ*k4OrT6CZxuk6xW&`-!J!{)-_<4=QQ}(h2IbH4t)~;Q!mA1 zV7-*yaUGcQYX(G}<@X?5hu(&_^|fW2Ex>s{75C42+P$=VfWFpmLt?k(4@|Q`9|tUmJ$<+KQP^IFsRxFC8*y za|_|0J|2mtvkeA;`3fD#xxZA*K?RMX0 z&7Tj2(>Whg*z%Y!B-==?m7KZqFFO8r3hTko)AX2ll3|Rws~giEX^&a6f-htv;cdKe z!J3BDxqKJ1%dbIdw=-f~rZe+qOI2+$>aaFh`CULAei!b3`bkQIw@T&DW!9YB*^#oC zUu1657O8uTTw|Er$&t2A(1rDWj?%RPnImNmbf=$Y6p}3#o}|sKCt_>~n~P|--??Ps zF;CK9^D{BFxb?-fzIA;m+}9JrTMribc{W-=hZzi!bbY)4+7U4h&nC0!v2;mV`yvqj zUTr0GriN|k;x{d%yJ>;2A?$?EZ6DoAy+0Bk2=0%h++z#JhI?$OYK3?sGM=xjz@zp;yIKcpGvRCA+~G$S71bMZ6I?%|n+jp!zlYt z)biB_;^XK^el(I9V}!+LIwJTZIhA^m+|^GMbLH<;O>NFrlHDIKlK|U|&Ju_1@DV5(tp;z9^`osGG`QW3E*nT6Q$v=Y}iI1`v zBg*_OT`}$*X>8_5mcABa+_7YJ=90C!I1XH!EA0d=e2txu;3rK^2l!!JL6 zerT#?J&oNt9!{ThBclrz@_8|gYoc@Jy&@Mh!W9{d#JaEeeXnH94f{jpHt|*(nR|LK z{Bze@$ZNjjm1>&^co>6#STWU z^x}*=pu;BifAatKM#FL7-e}VLHJm@JUwbiliT2CqesFh{0l%NmYjvUXQlDz2eDedr z#DL$=mq=%tbY@uW*E8}J1;>m0 zWwE)gkg>1@Ir()4kGnpwlk7VJ`@`>u($&_&)65N^p&_!H{8a^Xak7o@U41PS)`&H( z_`5IFp%-;C3oV6b7q-CWwHAC%i`VALxepT}_mS$*i@JU1FAKU;cfj|(;y%ZP8~?+7 zm=L*-REJ*Fnas2h+&}CF-!&pfD%f5k=RQn`+()WIFY0t=nhUmvbf8#Gd=e2miNqsXoVhVFA=%QbH_Y6yJ13PH&Pw5DxvPJwFNu7OCP566uC;V$A1_P z^CG*E>d=ci_otVI$EO+387y)YTxTO?H+apF-AHxlMcwp9OChQ4NoXF<{?o9=JkK&2 zyFo9q8>tSxsO$E{N|<;53>c3x=U(JAQg(x0Y?JEHi*0wDY=rSME`Zx}6Vdzdsf^vA z7uk(e$GuFKe8f%|&(8cy9c?6fBeG@e2EE8`q&n_pI-@cNp@AamoMWq=tWK=)u9)4+wHFk35!f&z&(*iq{jS*=P)nw z9I1|bnaLG%!@onszWd8w!L!|g5Oxcj4%7SHbk}v^cbp|y8M9|j*7(%+nT*|_7un6%=GQsn$u8c<@JtKf4O#lr1|iard1)|9kux6VMaDBi z<+^Yw%Nb&lbokiboDgJQ><_(C9gYokK3Xn=si`o0j|=QO&)QgrUjm%y@g1{;2{ra`t?4%B z8)2PxQM2xogt-2W(C3=Ch9jcWL7Ey~DrkPxg@p1KJm-L`pXpSc?(n&zI*CaUa|u~k zORX-=5jxzNs<^8yu3zw3)I{G-ogiEP~JJO}lS0c7wSfySeh{n6Ri>gW}_{ ze+3-J`jF1D-y_uF?-4DUCpb7cDQ5VJ&qwYzzRF^t7h_0uIDe><@gdfTd}yopLP1^U zfuc{Y_$6_!wufk{QWZ^aOV*+<@PQuC0fg`yKgpyYZ+=R&RkithbOppYt~Md_JQ`4^SqaQ4PV|c7Rkm@9+E`!5;}nCnomS~Q8?G7o7U1pNo;@6Q%z*$C03Kg zbeYGhWjc(3x-!!aU_AOK8Ff>9-g;tNO&__mgL@Nx62CU0x5%W7YIbM`#nGy4FLd$x zR@&##vvKW#JXD1d_r>`uvM8fRliGsLV0Gy5i{--N7F)4>abC3n>yR$Q&`NxtlDq90 z&G@7O!FgTCiE=hCESXHbD!STE1*S}CMSi%lT3yyywmp|#nO8(Ee)&kAgw$}Ix7!zb z&AF0vzt96B4rcSV8s9`#(@{VhX>O4<6Og2e+2N zv3+4A#A!75h6pcc;H4!Hq!vzA>>JCySSv1NP&ik}pu+a8g~3nnlVdR&-1{sblYaMH z4V~DY#LW&2;ohfr^Qg=I>9A=?OUTn`$v>BPMp}{jbT}TY0)soYoZ_c?Y84JSvI17?+A8bQ*^KIEz z@+CN2Q8Uty$H?9HoZ9|nOf@iEai$`G$4EH%ioP}YK<3VIQ`DvU^BD2#t7QxTb3q1R z{~?k5aajqVag}@BZ+)V}BL$LXzY-3FyKt}XEq3nG_W!FX!d$SXXu$DKa8SdFI8F5B zxg@e@VvqbzV9xe~-?rr@@9*(}TKcR|6~1?6d(U2F`LV!HcbCv1nJUoSs3mlpC~}`< zisu0-gCA`Po8BaGUAB3ZY^?{z#kC$))1nk!<8Q%OgBb$$cfB%GR+oV~tjicS?gN?a zT}-~|i@Z4b5Zk{qq&;+)OxSmXJkws2=K0WT9L zo=eoV*R;j!LE7yNf}mB0B?89Cu&beiynAT>WP6;~e_bNroaPu-(LOHErmx!^0x{F) z@%-}7RnV6ST|w1sCflp+0*{N|r!uz5yvR1QD!M@2tJyGP1^d6oI(!zIOgqmjBp((1 zV5DUp_eQh&_B02^H5d1TiOKA{gn99^VDY+z)`Js4;PzrJ&o9&Jr7UOEVa`Rmn(+Ga zcQSnTa^BzjQxSB@XJbXRrw@dAci`j5U0y(g-1QYjv0gCodpACgB#qnDWoZVf{+vTb zb*|-Jk3HY${>Nr1LdnVsrNi@6Y+bPa33CO6m?8lac{hyuW(~ zK2g7S#pEMdN(v%GmiBOF6*a3UCj%{(lFKi}b%8$9t7$8vG7=TOg>O%#vwx&^Ld|qCiO{UEw?<*{C z$HVycBG;=w!qzC>D!FDxcL&GcB!C)sCiR*Qi2NST>(4|J(2AIhPs| z8Lb8n{Y6%l5Wx1Us(V4=@2Ek@^jsdJ#J-rSdkqjmfB8Y7lZ({5;LsUBq!bJy<5og~^mK7irxv&I{HJH{}%)t(siL=ILSlK6SeAn@;ZV zgY88fP5R79;o~h?lP${y`@>wM^<3B=)^kbO66%mGWm)_toA2k6OAo})V6NVC`S}4% zi022~h|dxn>H=VU!*IS%PStE4-Q7G(pi#HsW(nJekM-BVcs^ZRk->Gj>qo`noc1^~ zMOGVyxnOOSN4rL1vF*KL`-%H}Y!U2yHPh7%8Ub zllF%(us`Vykj<6frIJ!B#* zeZL!q)Qaq@WcO1!t71ZARZ<;#QMbRsSQzfA1Ap?wx~i(P*>YCJgvhF-I`pEh&ny#R z>=Zp{wNP9SR%w?b<4u?|@+PT{S(Q+i_{l`DF3<-(5Lr-}tDHCS@iN{d)u9)4$#tfJ z@1bMR`I8yH|MK0-WV{Kz$eW}(^r9|M)m&)D7*zL#BD2iBQ6}R}=tbTn)u9)4;R7v% zp104y%rIjfH#eYI#+%TKyh*C#UZzv3y(|PSya2U*MZTLGk|*O$+{<{ARL8wcmsV{h zu-B6idijDFH#}R$o4A+pCaI2lnXc7S8{rGvtEt1UQ{0;#{#3@B(2KlDszWd8ZgsO4 znqM*o)1zWN|Kqq^8E--_@+PScy{KCd;V7iCb$4kQA`8M8Qr^V9j5kSj=tbR;4Oav; z4Rh!%?BO}*d6mj|6MB(1Npd=e24n405I;_s9Cu4IuEM6bu8`rmjnB)=2LkP-CXvT{@YSp5IP@I?D;MJ#s}ERnGwzlG9#%M^F!}HM-{@*Lst|HZN>Vb0Jl%F z{%~yApHzol)X5kWYeWX+dL4wooevd%u7&Wq@?&e$o?V)*$h{W>w^d#FT#dRug#K`y zuJEsm0$aape6Ge@^`QmV)fDS%qrfT7na|aPD;lzWXD}DscSgEa26Mr+GSX)u)Zw#` z?Ae(K@!46r)(CaD)=0{runifMv*mdxDV!n+{b)g zFVK9dM<(qRf6EHzrO_>n+vNS$BUjgn?@0>gWzdJF-J#Qftz_sL_6~!Y3+JcF&K$>F zs@R$1+mG33<32#=PtWA@f^9QDG>47_YvAhY^E{VF3D0Eg2EE8`?)k2PBF2J(Xit7U z3PYYyucB38s~1N8Z83ny&0y~havu~cH0&Ng<6ZH8$>JG(X~c>og@Nq@=+VlJ$6Y$R zx2!*mf&DoLt%g%M(WKRwE<8qdd^-J@wi5D7qsfqlUOYx*QVIQcN-!DB_LYAVT`Io!YZrKszUw|HcK_JgsJn-^<t?vfta(^W`-SQFNU+Vq*oDZnquQYhNJ_nc|*AzmHhbl%?B2eeo4C$YZp~=8l`Qby?ft z#|}3VVk_=R^yiEj)imq{tvcT)^X%REcw;Qy(7_RXz(?ag8PM!H&pFvb&a^N;WLh#V z#Tt=INoxX8hc$uuWB2l!K-b;J1^mq9n7yEzg19j{vn?2_xD3(u-)YrxsXR>ZuJF{yZCI$B8WH;iFpmZem+-@}3F(T|_<};n74BN2UmedR&2=H!j>8_Nbc1 zJAQW*d7Lw+D05N);3D>!#2z>c0q5@nqYj(hr0nJjw%5D3mhn!&JE}D$l-TxJ z17#KB*lvY3(hRjA^2dDzB+l{R-aG#9=tYy!V5-Epa)6j~lTj=^*mo4%^ihHo{r}~6 zA(^h7-3Fpw`?LM)g86uZEkDxwxK`kw?oUSPGB(T-48HtPwq_J_#xK?$a zTkQ0w@^N4cHV(yzU~*^hQW*JItf{>3^hq`cOs0f$AmxA9hWziO&`%rp+5Rz9WP(Nd zrR@1bp`9}-96AkI$Uh&?w`9`3zW!RpBf?>OJ^Ni?=E@Cew10g0moLh zw?KB5J;uPZ?7O?oRQL}_S9EV*%jfT!%}-fe)L~p%f2ri=5kzafl_Udfrx%lRm zvVG{Uv2#rB!X%INJeQkU&uGM<+lon_Z^O<{i+L`d#ZT#Sza`LY|84T>iGt7l!v~CM zN!FoZTwI4HTg%NFaV@u0hvP-vOTRCq$CWN5bJI;ej>PNrZ2jN|;(D8>5i{fO zk#zqdjDhG6;~rq|-*4b!D?C(6r#ob5 z&t>=ch02Y5Y}ps8WM_|}7tbDj+E7VWZDF;^Eyd4y#Pkx`+BDSR+BDn4ZOQ4n9L3S` zh5U1Q+x#mX`TG}n{4aY)ct+$>p^oq6`>nH_aldu_v46<;CKX7Yp2@w5UbQkWju*Ys z{o8T8xPLnw`b&(=Tf*VSEbdKmtCRJIUhHp9XC-)i>Jzz9k9|pkMIh7>KinXy0%TJD^y9b&G8hzKoEmgd%B@e=EYplE7jpRQ1@uKkx)Hu2Uz|USz00c zZIrPuCPeln)u9)45kD>oTT6F?PoT)s%5>QGy@Zire#pqAI`pFMlJ!#6X z`HOQoa`wf9$iAdH^rCKX{v{!DtR85pn(}#hZj~?NR~Q%hl~l*9N~pWF-%#+#(Fe8F zCfxhXsX)fB(2M*^szWd8t_?C0E+0Pzdbr;(Ybs8d>RB24r>1J9?j|Ie&3|MpWEzv5oxR}vlfGTq3&X2PYJ7vShW z=eajKG+)NAxR>!OsSdrUQvnMhmhB~_|M7(A4f_x0!kihulIpmZ>Bcs<6n+L7f|I() zrLrH%`4z@RekIj$FVmd|YoXmmV`y!2fX96j&)(%rIT!OHzmn?Ei@I86J7LWVQ`j|6 ztkuYl%98ObjEnqAs^f8)E;!d-_&LBFdi~nMy}kzYx5=tbSXM;(MmZ!N&! z_-4`TkuT#{=tX`d)p0M=nf-DUeA%AlV84!gpV>c^u`2W;t7>KBD3ma!HBWm3|IAeF zejkJX6lTm=M{QREJ*FozHX-su$Wrzd}}f z&f02h)8+h%H6p)~>M$4786`Rjd3_wAcEbklt@Tcj@hcn~axSS3y{Jnyx*|Mja)L3+ z|6@y6!)2@ry~wIuE?*G>lAWRZ$5ni6?=D2jyx8Ac=9TJj9H^7>E3RYwYG{DHa3_oH z2X$p0&-txo6zy5#s(sv90SDRMeuTKvE~7<$%_4l?O(UT zJ!bHS>u~(4Zwz{q6!|n*M{21{G=wi~S80b-hH+ro*_X^IiUrpwS{oG1D-Jdjr^cd@}ZhaT)uP z>d=e2>8(}^#-ohEN7pVQE=YT23S7z58lzhJ#v;eX`;s2$nG`wI!FldVZY9ljTm)=*&#tfBh8H%j>9 zaU1sh%I7g&CECzQv5`V#=iA_Elg+Oi?klOjJVMynhc(A@i{d5p%NGbZiep* z*)uGQksMP<3y+r*AG__Wrc%uB`jZz_^~>IvJnIMSOs@`nY}IQMXuXk1Ooe|Stnq8j z$M$k-D!uklM>ynd1@^;3_}(#pjE~VNmivT9*KOdoYbf74=C{5jUA=Oju;0fD>c2Q> zVcb8K7icrTsnDJAr4@$aUeA9l%;{RUxzMG)1$i=axi;!@`<{^9_pC_??|Y&6fY9I7 z29_B-=8Wfu^HuuJXTPB7X$51II&hxz-NTvH6CRG4l5iI^YC7@j_SmtOt~ELw6X+QT zZM&%Pv6USul8qPV8ONJlye17S;7_UNO z^1S6Tu3Nc6U0##LI>ef+Vc*r@lchTOHO+v}eZ}lZdTCI6%siVwNVYz}^P6JZlUljk zkJ!fAplGlGH6OVe z8mCVp$KH#at76P4ny z#f@J6+?#T#fm(TdBu5OA$Umh3F&)d4-sCIZ@Aj}*i)1;ck!D?eVO;rco{RaY0kUUt z^y0I4-O6gxa0$qU$>BV1z?dSs#k7Kq>ITGXY$U(tfs@K;-mQGH$Z;UJMzQ)UW)4j& zrsck(ym9(*|O#pikJu#wcZPfv1v8k?7n*Lg07`b?zZ zfjUBystGK0S0R|o%g3H{+r^#2q6Q-<=-8IWc$w}-hdA#RX2%-CmHa>a`?My-gKit_ z#B0@J-MjD@Idih_*^|$%4&}!^*$H_ z>wRQ_oF3b~hqtZJW&Z`3xA+9(oznjYtPTGk zNY8V{@#1-|Te@FRXx)kjRj>U#mwMeK`m*P7Md{;Mm}GK@_gAwuNw(J?dU3BmnT|E0 zPVMe~em2LIT}QdMVox?*dY&o{TuOvV(YicFm1CAXF3S(&O7mk)Jik7JEQHzm_6kd1 zvF3BLUwazY-$Hnpa8IE&eLn9G*8;rlWh_*F3RL{rv53drabJ~wwW%Uz%T!^|=sbe` zrFhg(t0j)YrCDZB9R7!Y|CJk$q&Y73f@yPeSbygW|NeV!HHvQC)1(+N^d?y8u>P30 zc&I%M?fO$;_`;9v!6~xg`qQbhcWtP{cWvhT7<-7@0E;cp5Z0s=clou9-QYDscGI;N z6;j5pWqZ_$HL0%QZ)9HV553m;R9JRu3-mdEj`vrvtwhFdus>usQXP6xw=(~NV5PYO zl8=bYD1TFtobfOrG9IZ8y{OYRIVV`;?1r7=4SC#BJvj@)xX5^jE2gg(RdKxd=KL0(wq$~XkP~&JHx#Nw+m#PhI<*Ok?PQkx*uDOgqSH8 zVA?Q|zhFI*l+&OWIgM0@Ueu}YGZBt61Z&WeJqNJHtg!#^9P~0yBh{f7b*_8Ngezf& z@OP_N7nB#7DdRLeF5@&(9ePnW)z?C}X=n^<%0>Q?6PG6AH0VW6Bh{f7bz|3B3B~hG z!MBgdQ1W8ZWt@h`Wt>K;<8hhp{1zKtkCgFY4IgiXZ-$K1pcgrfREJ*F{nKD0=rviu zNPCepRJvu#I1TqQP9xQ!7j++I+X>BBJ(6%>xfu6Kj*Q8m7nw}cZaZO?lQr9aSF8(v zb&`GWO1wN5=9TK0RS9*;cWnhVeOnmyY$gA!zCRf*XFN>E8IMGVUesw-*b3gW?P2)! zl{~-qcA+v(gZUw++3RI3JU6fdzpe9ljPF)H6f|tvJ68v|v}qpqesTAa_s6{0pOoET zf5>i@cefX2cXNciY0G$j@BHt|+Au$ClQACFh@58ccLyOM-Wf*TS-`z-&c@QTK90ho zYA0CfA-27D2$SisKh&)(v=uJKIKz{7z;k|cE=I0nLey;=njp}5-f;BS;8@K0(I5ql zWqaV-zBD5x4f_bT-L&{l*GwD-N2({oNs|k_PT@n4Bh~a61IdS{!MW?=bM2=fE1I^x zNju!}0W9ymMqsHZMc%2W;T!$6v#cJ#v;y(DG1|YLK2~`u{JiG~GmT;d%-K?TJN=TK zA^7S$fmyeB{`(fFx}6@;Do{jgyK5i6;LZCpYGy*`HVF!qELZK;>wUP_xS1)P`sIlt z;lNdGy&-qG_p-`Hx@&foqAK&6_Mzo>xYtBwovc5Mi~S{C9UkoC7nwJX@OW@ z^6Tma8ohoyI}7|anZEIV^(E$}GJb&LKz?xbb|;v#r!!gi`XY~8IVXa;=yn9_3oS|8 zC{{1Z=IS{-q62%i0lm;gpnF`bO%8foM$Hmbpm_K)=;&s|y|{UkHl123V1Ihhg*NJ^Dds1}!u_?E=g)dcd-}bziO~LJ zEje+}md~HlB2~IWe*zqS7)c)G|HI?HG|H0Yg4Ydm8MSCRoT(f{?B^=;@fHs`O}Dx9 zfs0GM2s>+wd$D#^%7XCv#xNGN)NM5TF4cy@RB3@x~34vfolp6 zw^f1kpR>W#z>()15W)5d%vFY`TjxWYKeqg{fb0GAAGL&+RkPuhGvflx>>vJ0#;-62 z@++wq+t4fBOA6!SUQ)9CpjaE~LML@69ah}}WS8iDe<^}y@9j!n_P7IYP8{Udt?+&h zz1KsPgmt{b_Hy0BuUlGl0rjyP4%yz16mxSE`8^cYe+K>1I1=tWDNv{`DdG3CFlw4? zzd6hW_nY&Yw^;FETL>I%uE+aJajj*Htd4ZvmCM*`F`pNYl^^8ivokNA&u;alo-|!7 zCf5du-)lG5yr;4GO3<*g9TfSATq?};gZy1S3ykmb)taejB@Gt9$6+KNTY^umtPTa| z0P9fPjlPm*rLD*ncah;ecB-Y_CS?l#*>;eWWyR;px6N+)Gb>dn&$WjmcO7|ukzKaY zoVRBc3q$;%lBZtex>JnFB!>I2Gb7$8l52zcc$Y-f&|TZz zg)_gNE5=`7{Dmd6JpP4@Utxa8ucYh!@ZP}nep04|I%HbiJqN~GgqXpBj~Ds(K}+ME zw2Sh<*jW$FK&=n^jbdIEi;eO1-P#uM9cjpwKe6&Uq{on=K6xHsuSBmGR3LHVZ&^sG(d_jt^uxAca2vSNexO=wd& zl+RzKQJ$>E5a$JJ45e#EF$S&~y(U?Ejcqk-?ez@J3gYy}oY>*ScZJRpNMt}-PD zIwUJ*$HntD51Sv<_QeabcVR#HxK8AlxIVOA&r8w%ejw~L+QV}}h9|3+V*O#g)FMTO zLiu0-TsAP|x-;w?_pX)|3Mcgd0HsR;=6tS?CcPi>L~*Cl4-V`&!S8$H-s5Eq3U$b! zq-*DJ9JqE)<48SmUAT;Fnk5iybJKiIPn0*3L*uuR&tnq#IQ*f8nlJuNdJJ_W?>i)O zUDkz{^1YB)5Znu?OXDvR7M)J^Mu|K-cjq&@H2f>s#?~zF9QTCxm$I=+_CA2eW$y!= z8?F-VZx)J^Ut;*RylVQ3{(Lo3;U5$TvzM&q;|+>=Nui&KV)TMAFgHBS=OvYWjt<5C zBAsTAfztI6+#4NPLHGRmPA1fifT?=~9{2ve*Yuvx4|3N=lhqiC@BN~La$5BLFS%+z z6i%u!9ZM$cRwHdZ{EHa$9|UjSh}ZJg&G$6(o)YP>GDl(1Py8;qXYqx8k7-hz4$M{z z>r%>N++}S~RD2cpUHswS!{>N@XNL@>AMZpcQYQFA!JIRE92fhKri?o)uBrIJgba~O z8Ea_LIquD%`@TM4la|2eIo!R8j+)pE@*ektW|vtmEWZ%Xx77OT9}>Qy4@7iJ=5Yf( z-_x%Ho5PtuJs@F{$Q>iDv%Q}r{h=58o3pS5w98Qi#f4NJBg*hm*2cz+iE;Zo>jyh*CV7?n)-)9$3uP45_JC7kB>RjFOEj5p!+K;9(Pp%-;04xARc zv_1*zW}W2T;u}w8ya~O?o1{AQqHh1!vx1*HTN4*`jC)INXUljKdXYCtb?8N1^r?%& zEA0#Hob*H7TktSf#+%TKyh*A;y~vxSI`pEhqS8q4 z2r-0{mv(Y*esr3QH=!4KlT?RZ)TsB<38SB;!r!McyRU@tm1X%9eNx z#+LfOGZz-lG6kXAYJR^I$HmbXLoJ1Yz0F}&izPfp_01$1TS70gC8-W$pzcbZrEt35 z0@__z#Jvq}@iMlAUSvyB9ePo>xsSEbJK7SiZ4sGF{Z%j!1LQ7j~ z=-qKHkNe&%T+W+VT;xrDXRQUhJ+`20E3%+(7Xs*rAyz`?oi;G;9|fO-uhs$7c;96q z=#mxNCqbKk?>4zbFb>=miX*y$rm?ujIKuS}H9XuElza9BR`1N?#;|uM%dIAkMd zHikW)v$*%|KFMNW8^)OWT?2&pe&Ai;%yp$Vb7lL};Mj0~nzONN{gL7)QA-qmx5_RS z(YvW_;PIAEWL=i{n^$y!?WekN8a&lzd)b7GJO}q-+52@WyiHeykGB7-Q($eWAJc@t zt=-|w@*d*3rNb7}o_|vW<;x!6@}nnTkNte&CMxVt781UDfNn~+Sj_p|oa5BcGE^Ab z!j07!CJUI~_sz%Yr3b;n=nfw288%s9GNoU-r>J}JsMyhOPr#PSJpR0;>~VtaH8eVQ zukJA*&I14M*wXbd?Y>|W*=SUxIFSFC&;3pNZ*<_a4W!?mYQ;En_Fsy1=YsvOkX3vqW*0zt@O{dn zC&9wd9&XV5sTm)~p9>cB^vMvRO;-=-USP(@@!P_Vj-660OxouOnYFq6IVIw?Cw=&} zRCuNE1lvE4_;X6&`x|uH>;fU}wg-FPoe_gM$2VN3BecH}CzD;UEqfo&B{DyQt|w~?K;_jlp0m@; z*L3kp*J%CrKJaq+HlCmPnEtdWKVC?-o(GdW#b?utzTagG3hx(WP_kMQ)`%>~eN9CqlHV37PQt60O>akNb zzmo@PZF$aWtM1afeY?bJ*nTJ3ikKu6p3ynz`t2p{one@ne!DASP zexSEKwBe>%Gcsu5b$)L|446s#eT*lg)Vsr+eeAQy;(FavrFVwJkT0`4gF{fJz(Oe9 z_f(}T%A<)%Q+Ke~nJ!??cLLRD_q|@x;p;-+r22TStJ=!eE!N+S-hDg>R5d4ZUCD_O zx^0*m1kXt)%^!(%57GOZXp2{BFnC)o@m0FTbAG(EjP_9J2qiPpiKi25V=+>;R#Vrp zPJ-ErII_a<5YNwS=uo;s%~n`5A&z|6agfI~AKjnc`(`7wG7Klva<}rhhx(19{bF`R z<9;_aGpBQJ9<8KXb;gppE_dPHA#2|DL&t?a^d3sQzTSnf1tz?|2A6pH`o|E`!}T_7 zzi-a_d!=Q@&UqXe-EUzSe6*j$y;WePX~Fa!HpmOWLU93 z!8y%7RYhk;s6lvbAQ?X_fR8uhLM=PfM;#nmjD+fMUcBweoiaMXt|JUxH3sz68K+@$ z5dZK6y>Xx)?7z_!93Ecdx=Py|y2q*?m`zfLdHt?)UA18*JC7il__RtS;|JIAxRDp$ z(cfQ^Nptr!GN)4=*F~_syn72xB<6B7F}y2&F4Oi@Q=8hU5LQ&h?w4jf#^>Gs%3Z{@1!-*0dFgpscyHi&S%vo|z*~pMWcA^xJnsABk7(=u4vCmz$jukrd2YEG+5N5hp*+F*7d zR9wp#ZboAgr@{PQEy4YxBj*gitu5%pNz-AAg%Uh@&DvOp*rvUx4?6?(8fkZ3+$Rfb zFr*9*<08YWXKNV)=XsICLGC=i#AA*0=YWl{@fyC*D-O|Kzq&#*lXNoRfj6I*2W(x8GzQ*l7~|zj6>zkj z2^QH`xbD8!dl|38{E*k}IIPU~bXpaBmFIWY=e>**Vt>d9rE$@Vaicf2Av+QRq0fwq z0_p;@ifQCH6|(i?U2va&Sire@n8Ws{*q}yKX5NC!4|Z_fiyP@QMZYas`R^@w8n}V$ zazk>domwYysqrrSS}pF$8}YbM76apA3@O*cxXAUSUeuvi%KA`;tZ&E5ABqH%AXotymTtqtW~( zOt0U`^V_$i11+_SjoHRnOZ-$F9%I+$HuRlvJ7%}aP0(Gnhv#>2aR(V=#2CmJrTd3r z8}1)AY3~P;QO4;SI)|-aeR0;GG^U8_lyJSvr}1@UDm!QIt&;d1k-WQ> zKH2`72wQ5XjL6NzY2bxOi5|-r{96TIqVZ5S8ZTCjcJ zdgSzj7FR^>lkUUzc9onJfN}AxfNf`6!B?f8FeX&wTZZf88BD@Qmh4tYNS)Aa|%dnlZJjwH407#C~V zKX_d@jomy_nw%=Z=c4LM*InTFAYn ztkzk|CsBudQpzH+4OyggZ!c`ay}jD6&x>hk?+OM3y78Pny3M5Vsc|uCiPs?OPk#Y* zZat^d+yM__?0m1mpf0_6T+gmE1{>e4ag?u=9i^9FxhEkYkqGH-{uL23i@3|Irh}%c#R?CGdbTpm8jWd*j%7 z6HhKQgSdtfkhmj)&tF_vh5VdW)*+tLI!yRMbY@L~sr&EoYZ=1kc}~GEa_aR&Xm9X< z_ZJpZNjtkXW9zIn;YlcKV_qS=f^M$iUP=Q>7vd5k3< zZ~ghTT=%#?&F}0Seem}rQa{E|z;R4`G*ZS1u|MR5o3d_BPyGz!hSfvv9e8x4EC%i^3fj6`Kvzkh=lq0ykIUF0i-GJgDC)4VpmYOF`yf8A28Y$sSx)*w$D!=pzE4N_ z96a4oEb9+*!TzK=)}0dSoPHh@au`pH+9q;QJkLwU9hnfhqg01p)GeHQNT@rg16jAk zXRGSVnR4#PgvcGGI`pEh#}j>FP-i_b{Bx9#x6U$6&JLLn*`ZX2<3OGBti!@=K_61x zMQ^!Lp^P2koFY5?wdSxucO3(5GjU#?+vmx=*dKbOI?NAsmgYwV+rKB^&|>j=RQP1b zI3dPBPAJu3f2do0#6b9R?F^hzV$a>IvEtTa87D+9azd$&dzo%*pHqVQ=nJrG>pt!+ zzWX1Z$h^o2r8@MY?(>JULYqnoU8{C*@6(7h87IWJ$O)x7^rBA61W|`faNI#EY`<>^ z@60#y`>H55fv&DH6ao$#!>-^}JVr@kl#B_Yw}3H0sSabHZi@anVbo0{_&I1X_m(Gw z(SBnu2@7+L;ac_r{(bN)C0ND|u|H&opViETsa?#$pyprht-lo|Zda2CIx>G{0loMip$O*m1bOzPVJ)!Sm@%uU2^)s8Rgc%Qd-iK3pe|?oGwRi409<5eiI=o;=J!F_*oQ{6F;kLV=tyvJR0kO8;kLT>PJXF#V|_acnrmTU+tC zX*a5naFZQ%+xl#KV zogb$o%sp!Z-HUf|4p%v416}=lqj2hjEd+1h$*)mT*W=W^B#TTtzlAhvW%GH-UQtNH zKBSW?*S3(Au6aCe=89t3-V+!X_nye!S5Jn&QG!RVrTlt?+-{_Qvl~e9@SjA*mGLl^ zbF60rz4*LZ=p7jheJ8!-IlFxIp;rp)gb4j$2vI8Mb7l9JR>{U8vPAHx>poW88-|S~7+= zew#qtOAX+m`Ak0EE3adza+d^B(fuSWT05DydA@r{y~D8pFPLFE6xuEjxpy|(6MAarL6FvB3|Q?y z!edn4PNi`ngW>Ft(eNiiWTh|eCepkW1L49^O>lSD<1s4lB~#-^ypIk z$)Q8CdqRiG5%5o@BiB6%drEDOC@UIY#K0Bzr2@|1iw%!y`l>?hd(UHF(T2Hvyp`KB z=zbQH0%l2HITxps<|PR2m+6$5}?h5&1q;T*vmIQcF~ajc((K{sL3pU)dsd{(_WkvILQB z);em$wosW0c3wsb^tOFqPHQ^!iB;Cqf`EfYoXK)f>I9k#DfRUl*YL%It%2aVTf(wq^aAv1j>(DohpJiof}FYWqb0zA2z zO>Fv!_tgi35bCvOJWPD{m~0u(em|J`-H`}7;pDyOo@_rduf-F2j4aD4nx3#OTEpf6 zd^DKGW28CMQsMJ77;>h8vjJUVpejfdBehW-jxk&bZ7Wdfty2g|iyc-jfV0;kP zIo9#H@_7?Ni`8Zy#PN4fWJH%wq4}-EL zo%lF#jol!V2{9g9LZGc?djaR*<@zM*_G@VD5d%F~uu%L@t$O1gJ^5)^>?jjGR!?}7 z$7tv2FY6DlCHA*^YV(+WW5VI!RMsDBe5Uu5PI);W4$mG&X2f^p_h0U$7+NrAAy~Km zhulcfAgIgLPNCjI=CR+DVdSC@Yh#U>lM?Cc1LuXP?V6fi7gnd{k;Mh{Sou;WbmcfOji{wy( z_%86-o;;eXwFEkzJwnzNvHu`Um%qMHeqXV1;C(f9!bE6mTu$cw)#CH={$d2J7REzX zLLu2UY!3InI~_@HmBo{GTVIpqHm|tuw$)d9uH8f!>rhB;brHQEPlU?)!@0u#yt-@w zt8W*`9f$vM%$56T$;mAc-s~cYeJ?WA&npb*rnj5mD;y?g4vHM}%j#pYcLc0EC45Ja zeW`}OH#om}6rY1p`?7}|_pFRBO`d+65RdX9q8Nu4vK;8s<)5k-)f%<`5 za*g=#81V-h=`W=&Fhehw+;7dEFPScpokuFo1#`w+q#PLM1v&79>8+un2Z7&F;(wnY z_jfWLi#p`7(b>veR~GNWW87oU>^o<_SVtR} zT26xpD-rXkKv0clwLPrE0JgV!(xw)$fBAga$M!eG7+%RWw2MKl0zYpq=C=G^OZ9mv z|KG%f_`gXS1HBldXG>ME`aA+^?ZtN(L4l2Q*_Cz>Qa=L9OmFd=AKY)0aZ&Ul7hS)q z1Dser1_ry{G`( z^N_X>=BWwl``GsjYs6<*X&dUWP3w1Sc==-@98+g8m@q8q8O<5m4w~9c0>^cp+#8l$ zMx*jn!O&(XTXP^XfN-{MQ953Xf#a<@+8%VRh5|IZ%lms6)FA5*<6?iu-?o9tJElN# z2D>L&V^~5toffJBBNS8EdL|FU^lg$BZ!#N1B>In1y83bB??(q4Gy;UR2 z8Dn71P4hdzZ+4dHydxqH3%_4Swfsx8+p}71i)-rzCR0kh#&pB8wDEhq)PAFY-gGPW z-g!VLh%D&`dH(l!jAU>2Us)0tbr`owNfkCSF8bxX$Y~O8)=;0mhKkqA{XsKg0FU8V zlSY-lZ%|BGyLX`e^M{Dp?CQE62-0Z82DM^$ongDDxt5tWGEubVjy_1 z9q+Hmu9R-R+ZsAKcZIEAqWGK^Se45-Fvdj=EX{?-V7ZLRX$5m#yTTmLSnkbrVC+lM zA6^gaPs)(diws%HW3df+?3td*;5%6zb_68y`!CJ8hL*QybqnLw;nA!(g8k(?mCM@D zi*3?eP=~oVrnH299$f+V3C3|GU#XMDKrhBPqKG8>M(TjwUSmEEx2y`bmqjdbKCu^C zyk+YMnAbn$1r@q|B8@c@!QgQyZwrfmF6XvPhul`Pb2Io@rvk#~G~QqO)oNLtH0FnO z($aH5F&8`+)HI`%>>j90ZWjje715g^LEZLI=9_uP%j+`E$zhrtgmkc)0dM+v3i&hFusxf z#xrkYKp1VYX$+XH90n#=rt`S3{X=Ce7vmz!mGM~Ch&(pAx(x)Gv}ETXi}z&V*>c%A z#{6@{&M{6%Xaj9KHG{E_#djUW=SyW?%muyD`XP*q&-Q!2slc|KpNPQ;@xH1&nd`bo4PSq0iuk3ziK`M4-(>6=nz$5k_s|Sex*Rr>j z%e9+A16o%6%qAN^Gnle{YNe_ie7 z1UmSAD;Tn&g8UvQUdtEjQ)tzFWmut;OA7BYFAGw;Gl@pcQi05Mx$JrW5x)-#cNfdz zVlEh0x}FZli|gsepR*EtHoJha`viV1KU)UUw7WLK>+ftI@M`f|zIO?d<&0j;*}YU( zICE$V)HLbvxG8q^at_P_a}G>&1jpVxAaUOTuB$qfDdWI64$grkI?Ne$-}mnm_9X9y z@1AsRQb|BJX@>8!l(QOo+@^s>89NZg`Zg(5a;! zv{|Vu-s5bgzLfc5&d7ZGjnx&x)Ab=beLv5ynr6zp*k2>_N_ChY>h|2!6=rQc24||o z7`0B1<;<4}k@-q>*dOZjKO7Lg{Wt+&vzO=h(l=SgeEEIKn6FfaUetB(s4v7ho?&Mr z?Bw36n<+Bp%e{>GN_FT(-N=sPX|sJznJ%~AWty3OLeQLR$ku%><=3rJ2$jV}9mchtIs-y(*C^P! zeEy7`)YXjo+ROs0`JWUPZ(Mnd)b5w*MI8czw?0=?Ob*~NqB_}7jgxbsaY_r~zd`h7 z^s=DcjOVg7V$Dfdp_pHKPjklR42AYurZ8!Y$ge8ng6Xw0CPI>mIlR9yjgPk}@Scnp zV}8hsH=i(%9$?@F4ck@;FIk0_1#=kL*_Ud>8{2$B` z(CgHFIxTFL!}jcQfS<2!bFX)s?bLNqx&W4raA{@`_Xer%qN@y2g?@ zFNAIHM)2Rfy2r=p^#Ma*nCX02{kMM%j^kD0ak|-H2n;zj5A2Hm<-dck67}eet|$3k zAYaor^KsmXe@R_S_9--r?y_gXze{ctFb*M63MY}_N>Odfo5N*QAJo z;PPNuLAEh#X6qa(;3uaP(O%fH3-%&;y7wg{-=$3v2C8U8f3EH ze&tF}J_i{=#s811FOTc#`Th@)U4_UNh3xyT*Bm=}dt0*a`@Uq!7BOg52-y{(Jw+;_ zZl%(mk|jh@N{h6RHGb#JeSaUn*ZurEkLOut?%aE4o^$3Le$!nW^1Syy^cBMzWjwpfvQeQH}DNh5wZ&_{CH@y zL>BHml{rVrF(Qc*o?*;R2K((`$(Gg26n3AidxLdLQ(5bCmh9@*=R!7f^IJv!Y#JBJ zFIDSTeTWGQV5M(yy@rjU$1C~n-rJ-%mc8-5kehhV8{W9WH`pDN46bx!WvQP^EP&dk$z{fUd*hw;bf!!iMc%MbEn9{Ifr5V-M8Unqw)0x z+%R5Zo3y5ZR>no)vj^U7uF1B?kZ3cQebh#@IYpH5?Hi9uwRPse?E!~{e{}Y~eaPa7 zTYi@yfa^-6&!^FH?v&j;V)xa{aC4BpnB%^UR$#s=Q<$0R!i+YU3E6v&<-G2-i2(V> z*wWy+V(dc>Rq@IqQ#VTx)bcIg|HKr=Yuhn>3)z>5 zon`nBoe59J4q{PDr{&ZqT7-pTsW^I$>Xy0tgX zC^&PHCC+?;mNwMr*|5dAa;%!P@S~#MB8?T*TkJEhDfDga#D2GvIe@ffn7c@gRYKiR?xM4Kts3aVz~2L5-6?zFAK@mX z+DS2o8?nd>@)?j#P9|@Vb3_W?)qpuz-WE8=?C1RZ!}>7qSO{yZ3KBL#oh$gn1sL;W z5yI+Dm-kF}9V_?~&wB9DJ%G8lkoS4?p6_4Q2+nUPU>E+mFMNq#nXg#4)A-T4-A=zY zxOJ`tv*P4$PSWXoWu9onQJ!eUc_@wnorkV>(u+8|_d2xRdqKP(9?>6o`ikBV7}6Hj z;5$h3<*^CAH{)w)ENk$=jF4Vb!9%b{P2B#qRl|)Fs+2u z3mYlymK~7zK%f4gb0Qz}6UuY#lXVooF{@3ax0x1XSPT*W?pDLi`Fo2tk$Wa+L7zHJ z#kWLn_+DPj+C`dVH3aQ~A!4i=&0eXnOY@5CPAHCJOL~Q~k3S1U-)>ucQN$b*j{eDY zr$w`IKOQopwMAn5?(D2m_)L8xpY10#QT-Em9Zt9XApDDUEapY~zni>S>;XsgDusVH zUSV#6jhQC5ZeEAs&t3`t9v&~@POoq;c;J$1=R#lMOXR#l{^Ud%3u|>x^=q%67?Ux>R_w@b2QH`Sm@#K?uT zIV{m!3&8uoF-Mw$&enGDr}DNKzu0qye2TX=+_Pv0fn5WIe~&H|C}L(wAH~e(-fs&1 zweXzEL4Nn6?697Qnm)2Y`V{;m$`U`>`a)~yUD6a>e#*}+ZeKCh9%v1Dvvr}Nn|!83 zu?7uh=z*h|F1T#Mm;}^!+y0BfKk6^}r_N)Nf5c-pT!Z?|8^NZ%r~preLot+wk7?osVm&2ea2Vf)Fn`KGAP`wL%}sl0Mz7ougzvxQwJ6@6;T26= z!;Y_7uzZG(Jbv3g^0LP*A+}5lRGBy@sUN$(@WI&j=b$F6cp&q;_wCCS`pCxr>J$A% zed_*^KJri92I0tt`j}E1jj5S&YY4d85(dV~{v}^}&$V4z!7>AVpnC~~i}!f1xL-y# z=zf{HEaCoFmV74JS?~2=!GU)0tgE~pPw>j+4{_dm;k;@%8SNr42IDu>aiouMNz?RT zU$y~EakwGBAD%gU{*)H5ANl9N5P5x&aN`|s=++c$M>Yb@TJrpRYW0@SP0@x7jDhUF zNS?cQ_Ezzdn5Ho1R#W(S0N0afH|bD;!WXhjzC_>}_;`vI)NLW_dv)Zc!UoBbjVU$S zVAfq1uC_!j9EE-MeB-^)mji8eVFJiDVhRjd}E%!t9s-^~3TDUuUTUwsmU39b@@jy^r^kH;rxvS8Ft&`|Ue&-_GapH|g4- zm97P0W`W{ah8?a@aMxsmxa)7XUZ}1uuMqHF0x$<1gn2GJLalzck^iEsb5;5%zpF%UFr$^7oU z$hV5vU$Q~5zv?(@BV3n})hyDrAGE5xCv1d7yi?v&M;zT#zkqo(H+W>R$(`kO*!`8I z+^VQ|M1!GMz+PvJgfNY>ZHHh^vHxGoncAqP^1{ct4D$oAl|69Zjg9BWlybwtZ&()A z2CJo)DC}OIQOQ3}e#-i`=*Mov$ma_Y?4^QhCRy4C%(+|4+H6W<$w!_FeSV88mFrjp z(mFP?n@s5Un-m&oqud;?4(gp4zuG{IZ&@Ou~mU=5g z9{aULe5eo3$C80iUjxshP&n*Ct|H!++9=+(#~&^5Hv7d+`^cQ{+rv*495UgELmsoJ zE*PvYSM{Co-~M-T3}2L22h5sPsD^#LAZ)x}pTcdR4qQ2vsd`>ZK1-!LSbc4~Mt-fH z33Xfw#D37I&lR3Fs7s{Z=vkO&TT{sP>~@1Y6xW3{(Jfe;Z}NF<;{HPZt6n|O{c6Z! z7vdfVeF@+3nLC8m!5j&OY`HJm#m2C`<-A7{#@bueW1SEE7w2aFoM(Tj110hGSobmb zpGMhCYdptM_Zb_>XLHkf@L_p>cGp<`?}u!t;GOT*gF|&kvHr{Cz6H+u#DgYkiu!M@ zR>>Si)a-noEY$(e&=%}suzde0#=b<+53)=B=#-=d*5OmxGdw@XCXK++c{~YoSaqts zg!Q|G`+aP@KPsE=e}-pIj~BDIlqVV+?~HuI?O)b`8yfxD`gZc3_}+%k3ZF@qd{);- zHb|dpd_y?-X%lnTk-y`yrrF%axIVo6xQSU;;(q~!!^ghi9_#ADm)xnWeyW@BFJx4% z!e_EUK6mUq4Yo|*$i{Aq7wg2l#l!fBo6}(D?#1kjV~|)A=Fd0bce|{RTIno@OBl~e zz7#qo@K~eelCJGy@U&Vf+9W@`tDuG>8-yGBW`(pWXcY`TAj^Jr2;^hbd2a*~@2!p_ zS;EC7uavS)*MX+RQZc5Lhwdu4Yw9m?*XlU(k8r0(t(07TY=rD}%Y0WfJvW~?2$s+630arrd|KbU9r*9TgCQ^07_M1i9yzq}=d;Z#?4P^HP=Cym97=x6_&-sk-AStv(0OWWXMiQ=OuZ!XyE{zM_ z!>y~Q4U?@hSnV*3d%(tc)0aHct|9n!X5en)BIe(Ni=_%4j&Q`ojh%BhqRskfwrKYe ziP|PkX~Xk--;GFq9mYltWRZlJzAzlYq%p##LMz*>r{Z)>}?gU7vk zgH`>bLiSnEV+FTF{UFZB+%1XqnG0-Ieu9vVhfKUHn8J!0Z(?`u%4?7(^RsxUTPUuK5a+5I}_;X$0EG}zu^ZOnVnH!BE+xoh|nO~~QYg$Z$m7}+@ z+5gDr_AeJ?C}RCcAI19Ziwt9`WsF_liQ|Wj^lu!f|A+--rn4-oLg90O`4@iuV>Ih= z^95^uxme)Bc9!#tVC5P7iZ!#hu}6ca3fYLoMSSvSjDech4>WhI5^WTpJ)?OS=)Z3-8}@RI@bAH< zGM?Gn2sS4SgtqSTe>yiHmJc}I2`**~g#L?>!$Z4o10N~YaAcR(aO!iHa5Q(-*Mx+l zHKF>tiTXzCruQzj;9O!qHu4z8F=AuX$|9aIw;Rm)G8W?9C2a9fj0Zv4PdrM2BO8R9kMW{gjeoE+`%Q$t&$}M*>5l!O;krt8 ze55SWZ@5X@ZSl-ZrRQVezy3b&ag0jqrly3v54O_PLR9`PhcFL zg}`|?oy+^o9SFC-;X1uqj*l(3yU#mUVt?K0z~T4E4v6ouwOqhE|q6*^Vc&5L8@~@Xdj4eDE!s=CjWx>2+Vt9UId2) z0{12`oWN-|w1`rMw!x znCn4nnHJdn&J(^QZY$tgd*g5~qXpmU6$)IE`3J?kr{_WQ-sDRyu#2q6EVsJ~*|d}I zF)s2E%SUebY7WYx&kuK(C~Aq5EY%VZyrU0idhTau3r`9g&n6}Ft8sd;u=8f7VRA~y zrcX>)yfZX@^v*;dZw2*F<*=PQcUBZ#w#9@-;6FC_!ZQCG` zK9yHn-g&GfS+AW6eLAj^2sbXMEqCh{CRrSq3MV$Nm#A;1p=}jhDajI7`o6YiWVf>K zEOP82F{XpYXJWqG+K~@qzOd3Mhs2l;Vd=bWkJ^#z^?$I~G;1*rhKzfv%>RrEDgSfT z+{Uo8eUfTY>oo$GG3+5fcIke^uieA(9{4%o^E#h~yu;752-7vgVfNdz!sqqZ>nrm$ zqdv;le5YPB$>B^iTbO!S$huC}=1-0FrM6e1S-Z~GLiQZq59p`UOlqu|$g;ZIivC`m z*@QRi;UN9F*o$5DZYN|1UuefWc6E^UHyX*j>a`KFeNGtgV^6w7I*f9Js*Vxj`&@T1 z=esA5gzlx4tof?{*7Ej8ux@F8|PQtEvRCC_Nq?0tP-*}ikz*+cb9^8bVd>Vv#qi#W=kD*vA*Bm*`H~(oH zdGK39=-Te0*yFS?vEau~wT)c=yCF<*vJw9joiP>)o|T?u67sC-bBKJQIh0VMAF00s z`E2tQLSNmbNBH)cZ6oV^Y6wUAuMqllM?3MMvzy_6YY@a)$b7`3_%v=gNC%cw4urvF zXT&^6d6dX=wVPsnw4ty)4%^6v^hCk$k}t&Xs>dmaHjGp7vC)P2OZ}kgk<5*xMeCNC1#?WLigMF{?8;c4lx2rmrOR~h}HaC7DYSMi6 zaS`*B@_Q@tfTJws0axd#$v@($10FPhlPep6MVTCD`5NmgsOO##b}{$FE#$PEH?)KC zrcuJb2bW6~vZRk>)$^ZH8|6PGZd~hJSD5aHoGP|Gx`lTdM%RYwvt7aS`~%Uq2>%cK zPuT}{czX=ilz%Rs<)eK?e0pUQONNtIH4o!Zp$jwY`l$%*S76)C?2*Ow#bsOX#*(h>tsJhVD2TYpx5O%M= zdCb>udt{QW>jS0zx(d7Q+38AOP?&rPZ1~hZ7u za%7%AbWSnvQ>P*DLs@KUSKPlLE@Wo0A~y^9Ou1RM6%?}P<^jw@J6(*aw5o)Uw#s8m z_XXfS=ZTPwT3w{9@rA-v<4c`?CVj*|XKUxNr%yJqWiAOq-|>H|6#589`YI0Ovvs>d znARwHpCTx&7#r{(zq>6{!IjdOzW!gX6dP%s{gmrK?JGI#@=rPbAZk?+ zFHYCNJ4pp>Y58s8OZ4Uve$}HHymc;MV*}*(=;21ZW1?yXTaM;1gAFpzACCJ4b$w)) z^r`b3)DPk}27S|p>wB|U<$vc#aWiwdOH@c9-w51Y;iD7Pyxw@v8$m{v*U#RUQoG=3HN8 zw{bMwyx}V5?#?@n`PorPCiAv2aC>}JA{+aI8}s$v873Xij)s~kt`hmYKT4Mmd%Z~N z@Ov4Ybj3X);tD+^C4Y*I#GgjITOx%yu7aU|W(i!yu}~#fia6p*)p4j!gK(SJ66tHd zb&xcDwva8|9;M()$rs{E-(@b6x|eK(jR)s4k}cZxNFhsYB&&`ip9#0>^dhO~vN;?Y zJ5R`#*+eS%Q?fz)sXC5i31_^1iBw>+1AZTqxyZ6}VG6F4WQi+P$B{3DbM3uMiq72y zXAa?>7#mAm!xda9$r4wpjw4yZ`94@7jj^jaHT>PxzhXLx21n-orB32oCMDIZV~@scT<|~cOD`y*^0UAm-tr6 zsiIxtRFiuzmg>gZ;@WemSRZ`3<;+*ESSe)$*+X$%xveVj9RF3aT1p7Ehp@KRVvSUF z>m1*qyFrTfKMHeJ%eb#TXLojlkZ3J|~Z_GjKcOnj|#(o=b zJ$fY6pYw*@Xp3zKta04R`;3?mEnLjls$Fx0FO`#y@SX7sAotL6<~VhZ&{sXfj(0q; z0MA{Pv-DM%OCDvbXWH@a_IsF3@BsLJ19>ED+v@V0CyeUA((Iq8?)l5#PA|vrida(` zXNomd)KI`is-ckZ`5E)Mc3#yyBv{O~3tNBj;<{MlrY-UvBPWWsJml-vo$L)|3vaSh znlpsmvON-adX9Iy?-)Xw{R;6sKDpiF{gJme?%Nf9hw^KEA5hM&pF1-?W(L+X9uHf-#XCy|Yqk7xOoSj=y<=MytKB=feZJMtA=F3A#? zoB6sqyh{sVwKjSPpC4M4D)K$hSW&(QMgBx=r2L7-Z`(sbN>ljN`HJxG!@d*+_e!$F zy*Am}9)@LWLCRxSfqS<*osX;O0IhLd)7w~HpB5fSLLR9nyn&_=roTlz^G~O-?v1J+ z=)~o-iu*EuRelKTV;A&+Si`q$%I5h(-{*tj%G~~Fm~#6oaz$Vp<%&?}O36RsN)=~@ z*hpuFY*B3p4*<67t(&lsGVLYL3LOORPt}1Vx&4KI)d&6g@soq_T%#VeY&%elU$xy$ zRSeQM?bI7$&5vxWvC{|592L$;-IUrg?7ufaQ5YB{H34J*M zkNAj>m`~xAA?)b0Q|No=8L!B@K)z7k1$CZ~^bt?^U;^@4g;QDPb$20~JT`-8?5YpX zhs7{s8+o1hXjc*UO018${*zdTqd@|fxI7Q<75!y@&evnlA6*r`B)R1CCAxpv{c9~) zsEs_w6V4RydA>^_ZT5ARrK2^H`u5}Wa(-aTG6-0CnI$HU6Y;<`ht2uL`aPjmYcIAs z9{1;ntKRCvcdQ)&wkI^;xRLzb{o`cIYyBJ!v)XDxr(&72q_$smW26a|yaOJiVjmz8<_4&ds!&t2?xA42+C2-&8 zTkzblq3r&KTVOWnn!wfUJ;D2Wi~!4;A1uDfLGcgxbJUs#&l>?pk88lzdh+-FkCP4m zJ*zzwr;dXfN#?F!g*@VWK6QXy(c|D}*#yzIHz6_Hae6yAJaiJg2{sk;`Bhj9uRh-q zJj=&{XET|1%(*LZD+5E|_s4_VKA9i?5FW@65AOiZ>qmoM;Vd!s*+KC*ukd_k$!M@O zm?GOiUQgW@>M!|Hsbv5=zNuh9%6uXFIv|M;x!n==eO1Al{`jxJvC6(3udqR~WTSP8 z0sJ{X0=l+dBFhG1ZX3H!P>T7|4i1plFQiZ12FX&Jx~ynJS#>Uwo*QwI>faY?qwkCQ zSw8tk=M^8XXo8dW5?11a-(qZxRb}$vVKGulW_Qs3DBowFf3bmLZjda^jV0IGz}>Dk zti(}1-+F5Hgf|aq4Hnqu^ZlF{gQS_+e0^>!IFPrGmD-*WHc}=(!#W%on|)UYy0fia`AqjZ)Z@~~2F0bR^NG|(e4--XFv?QCVf8k`QJcCiWS4wV=PU_FoTYlc z8)~C`H|pnzaV*U5!f-i5@xFe)rvSh=% zaAD)!^l1Lku05#AHnJ|akjF${vj2%y;K*mf1yyu}ZWpZCh@itlwqQmWe}23J^o_M- zlY?cxGk0>N0!OlhGjKPAny;tW{g-y)`F>a!!;@EagaH~(tgacJxgs!cZj88JasKB8 zHffN9u#vYWiTBa$1S@n-vyHuR-Hy2T%aRoOXq-tO*z=@WDKZ>%Hv+t2(%|fM>{6 zktu=AwN5SX*G0`?OLYtOCt>-ps6>De|18Z-I~h#P8$iCt$wnh?@dMA z!yg;Yv-?;?*gwAv@8|ZCsBf2AG2W~3jEJ-K-5|Z|P%(!tw;stoHe|BsW4KQ~n*Z{gAUBI*eLXsoxYEG zO?!ZDxDEu}$29}`^2u3JaF#R%#97X*s|!une_;(g<^O)1Z4rM~+zbY-`ohkhlGo_5 zw#5oQkz^kspZMocQ>b@&G<0e&bBrn1a(IW$jbV=KX!z6cq_F$&3f`}8$mj8~yD*Niu`WDv{KS6w%f7_yDdCY74KNqF7WB7@6n%SP z{hGJ?TpKoE+{0D-2r;G+p2&l!=g>t5DTnUQuv#$xs3vrXNfx-&D>=MXSRHs_uL(;I z$-GqBxm-n#02(XG5ul!%l-ejaX?;~4*i(vk#QMeyec{LP>|{nA2%p~whHi}){)Jjq zD)S4VEaeyIQ1gPt=xBmQ>>D9_&8Lcgdh(o&{E(qqG$K^Ax!_)?a`|)iGX0Zk>Ny;H z?8mY5zqr$vhG2nt?T;q}infP~u%_9H29Wzt21^?(^H))e3Ne>*D(<(u*z`g2JoT9V znQNR(W49~<*!u17glxdF3Vy8nclOG88p|lSC7w~zz*wG95-*+G)(U!`Ju1=j9qp*Y z+iRvudDB}#zlrktYShW*iu+cCqx)92BLk&{odeMzXc+=D`M!Wvo}@|9`(M``KJ59b|_24u6P!cf~*J`0Q5oL3hf0Xr;4S z^f%~fx>6tY4fWl$tq;Y;OW4#h`OGWDt_{DE*9Zm}EW>+>rzNuc+}en{zitE{ugze* z>XbzNeY3F_zqo7^{5epIoz+?|&Xi)>&*Xy}_l4Lq*VzqUQ_&B~o8oQW8yc?iWQDC| zZmIBaBA;f|1$;jb1LJ;8BpR!N=tX>?aaX9mI}9#Ns3UCT#m(n8qkBrre|v(zQ$1lL z@N5-tb>N=lT#fe;4fBP6RWn!cYvbogRdts`z2@>dJ3itmU%Pa^)X8EMWWAUy#vt!Z zvVs$&eh??9E=&C-*~=T}Nt9c}(|C&LN9k6KXHe5eK9fFm9LW-H%!N79jrSX&%igI% zmbexL?}$L+4%KlaOSo>PbFrR?IrMBU%a%LcS8|L9B#u!XN3w)7wwW(oU$_GXSjcPs z&u8u_ctYwg@r3F)>IdP5-CrQ>P1*(D4CS#Z!@Jz-JR!*vPpFO~S;9^3wpfbTYzfoq z$orX+8}}4EA;}U?sE#99!g*LPlQjNVf&RA9;u#eN2PyePlqEiKyGIYGvu_kky(`z@ z{Tyz`FN~M#D%iVY3=86@9;v!MvO)S@-kB@KF0zDmr6YxnvTJwvOqYey+%hW&SUyC& zgT*0!+-7kv(5Rz=5y`TRihK47yJ$j#><+Z+25nl7gP7+suH>ODpKjg*I@phby~(mK zpTlkWg7JOfVatwS`l7Lz?R&vhm5=dT zhr(`-KNWRbXk4gn%faYAs(!p&^?X~tkUfgEYd&3Bs~WVrP*uM$PnJFR1HY$H>>k_1 z3fsID^Vxq%1^19*S<13aY+;DJE}^_-TUtc3+E*=^^%{9Sd)1p2mRg*8e)yo^{i{51A33 z;(5IGPv()`Ix+7-_u#esr!x-WVm zkHPd$d`ERCd+jj;8qCB!6XN{5%lYV)WvuDp0=BNfD>0^NR{8wO>@qg{dJc>I_)_2! zb`|oTG2U#scO5*VsS-H9^l?J`X}q8bwF1RtHq)am{+$OZXCW zyh_1O(%c|^Qk^@bHsTH&eeMH~TYg~6^)P-2`&(gkkLzprN{hW4vp-EH3%e6O&f-yb zJTM1#BWC|hUhn?J4l0X@kK1uwKAb-S05J z&QqaB!WH35pvxEDBrgDYsmYMI{hF{Fg7IsyXRD>g$$@Og!JXm`bl0xClxt;lhStjV zS>;j>M_-mXP$mAW-HmqfWSt=P$8`qQ*p&CqeqQC6qv9re?>qxG=v@`h$j7siYnueH zK5eE#sRwdt*x#EMs+4h-XoGl*O=Eo7zmpu<3ikrx^UVo`Sj*3crNx|N-2;k+zPpq0 zj$&&M_Wgz<%e0sI&g&*06nr*~AMx4EwKG)_ZLYGNvvY;M!J9F+`mH3@;}(E?H{5TntJBZq{%Q}{TAU~5 z%jJB!uQ486bcV7uYla9LsgT0o4<8HL{|sTfr(ldB`jR~AF?Z{-3jQnqZU0 z@8j$Fm}TSPS>P<@+Ee~t#!b%VotKS+Cc`JN^6BGbS&UIq=V(bEakQb43!%Z=Tdc>B z0vEYZ_~7}F_c>+^UONq7Y5l!o z3<|Ge9`Nn{Dh>bb@cMfl(U0k$J^0?hi>iH5Tfs8FnZW&9aue^ht&BL{G2XupR6M>-)mp!lvW2^ZlFH& zuabxIw44?YRXh$x&Dbk&*&%U!%O*Y0DjSD6SIhiu~QrH~xwoL-9eLIAWS3!w< z?h+sGHJ zX$i&kN3rxuYcVdbP4OHey*a$tJPPwdILLjQoTSXdj0!0av#F~__*SiO$h*-|*v+zi z#jS2Rg%`HNfAULxVdL%k4CP&T^o8!iEBIK{M|^D9kk-)J>Jxjk$w&C|Z08%^)>IDy zT|TjjN`K)C<=zR^)q~-e3Rsy6+ferL#$4X8e6_Wa zJo!5wWBNvUzYJyRewn&mY|WOLuR{#;=!bI>^<~>&%}%W8RQpmLwn|ez>pgky7x!G1$ljILX7CRA2sCo; z=x@9?k;IOb7OPSNLxt?I%fI;X+eYwua0Uy)|0DTQxILcV_}d8vtw~}5rm~IqJ0B~) zlVq2^lj>Y9*&r@Ay$xyB{w+RJ4&@YHP8m z8+7n$4XdYH3E8p};asa6^SM804deL{AzO0dp`wjsscoH+G2YW}2|w#w3)y1(7;Z7v z7@p_rz~9~2h7K0lJW}9DmT<23x&g%`9i4wrj6sRRL!~SNNj7D%G3?yc6nb5j^%Ynr zDccZ7ZHC*7@q7wvA>5U5d3KK#HfXHKhB|*rZTZNb9%$Vi>V9vCIoRd@5#`N$R<|?c z#DuV7O_^tXcO;z;TWtu2H3970Y-iE8cUI{N9O)xmT!9gox`(s=PvqyDmT*QJ9%)OW<-y!;NAerw?GsL?dIe7jn^NIO;Q~AENond$1 z9QJg-jQeQuNFhu5NH%h1XYl@8%B}~m7wD*_K3>#X^;5)8$irl%= z0krSPx!|;{=P6>)(1ZrXps919G+&4V^(w6ot+*N7D%>aLMnL>q%%ffpP9HVHJj7hg zHUCFB-0qLOu49^ik}kx;`3H(x;w} zhj5gSCk^W*w&+v~+Mh@ieS7MXt>A5GT!^RbY6l3aG%Yi2iNf33LPkZ*4 z$UpD?ow@$a7^$n76PSPPC6SF=oHz{Z%kb8X|BumbG{Xk0+9M+g0GXL_XKx zdu#D#7gMD+uh&A#er!WoZdHqi8{{yCb%$T{m)G7DUz~a5J#*^c7_^fzg)jGS6f3x9 z@`bo&^;lCHE8<1fxog4^cYVD0DGOSo$r|sHpPQrmPj2=plYRZ7!|IQaW1Zd1e{v1~ zG#0f)hh6oMah^-QDDJb9KDy7YI44HKwBJ&%`${;9pHz>tr2bNzrFu*y;V7oE#Je^$ zy0Zvk&#f2zO^i-gocR-u&ioZI3D`(637B&M>NUI0YNnnRYyRp}bGY%qC2+8hFT=aE zV$J{U++qce#)@#;vxmcytfnx3z(lcb|6_lYkMbN2=eFxY?z)L$Px8m!fnPTo4twkB zK}g(xcY=@F^IW{U;Jrl`j{0L8D*R(_&vS-WOPbrez=8Jb#5`aZ^f-#mt^)_mDI`y5={mOyKZkED|30Hf0WDHpihM~z1<*K zpuIr$&!;WlGqD=)t`CGc-OMB!mw~=U{L{D!$>YILFgt*4*f{c5M_y237+ErFHUv#s zDtzhMdl4^P*Eurb&RjV20(lFR)gQT(2ZR|#zJ53t*P_$KvurnHCEjB;lSXt}2f6FV z2-(6zNea%FY!K(G-ZxaIL48w~B^xAL-*1MrC}krUZXPT2Rapir`C0;=^}A^NCEBy%eP2d`Xr#Uv-?2MVvanOE}_p`~F@gS(O}w-EPA~KR$-}E4fz` zChj#+bCJ~i%R$UF)>Ax>kN5l(TrTM&F1OXaUhwd!5oGGMlF04{A5hd|L6`>BV_7n} zHyr6_44Z;wPPN2stRiPM$x_bh*?QgKSz0gHarqx%x5)cGe?83%VwVnNf5)5<@9L}W z8~NK0W?&LE5YMT;ig?F2JUMr236eEgyDQ>|rl9AIERhXu;({O;nG5Z4>7jmm4hR_D$AEn=wxHjA;`U`S;E9 zB)=5DTxu0+kGa$_t^hmt)!&(iINV{5TlDdsO{y4!d!g<4%f~^iOGiC8Rg^B?j|i_; zyyMCM_WX|?ysmj7-j6VEJw>ilvO&2{1MXurE6knmZ-zO~u<_8x1RgRgfHin@l9lcL zDCU9xq$1wvsV|Gzg0TTxK8djknqS7h)Z|O8(@w*f1$TtqDNWaM{Zo0;psG_aKFeF! zom=06w``jk;W)${?vzavK5sQ?$-i&OjL6Zy4h0tSo^!)kT|OZrMkPzR*tp=V$t#22O0K;xg7cLoB6s;L{jq%H zjzTH+ye-U2G#2`nIoIP?kCjT@&)7mhd<(bHaI#dobsDS0Vd;{v-aQx=*;IdmomT z7z!IyV`;CmTX=G>dsyqDy^zgY^oZjLEDZSQ!a8TlF@aAGW4FWzOPq4;VpvOL&m&DP~TUM(ahhL%pH$aNTC=WbiSqB-&M!{XADr7 z#z6N?bNFy4oGo|6SS!?b|42FC{I?+teKZ2Rb7cNmx|y%Y<3KpdSR3oFO1 z5bs9{*4D8((?)U|br#|ej}h}PZCD)gbx~~Y?iAH8tuWCKM~6SW+~JLM+W9yPa$PLO zd9&6+-XiU}^zYOYaCN%57-!ph3l*|tmt;dH`La$HlS@-zDAgyhlFfs7U9kIhS(e z_qS7D-npBkay%9T=e-<-FCVSq`Iys#z^~p9*1E2|uB);P;m>vs0#>Jzx!vtA>{eRc z<-I}&!=P{9G3R_&@hrdWzs((gUz8eno`?F$>%3lX=foKcAdbL?UJ~L zqls#B;#Ii%PM%lyG4J%Hzd4el?@6d07bs+1vHt3<{8!RgpOav<;HI$ak?@Yk1`dM- z)!FP?qod+^eA_=q!ENHOXb`vQIc@@!M~-JlTB(G-X8;c_AAaoyDtaB{JuYt)Qmmdto;?sF2U@lfv5Cw1y9# z<=DZyw+oc~GxZnw=St`f1D&)W@uR$_%RidJ|DHC6b{DkZnURgKk!zp9XG_MIe?$|; zyJH*55>L}5(HLe&Xuzo;8JBJST!BNFz>Tu&4(;w@POY>DI&=MX^U&2(AWNsit?U1;^>~b z0!OllQ*f%NFbg?Vb-QGP?3(}68aizL!q!B|9Ox6PT>f}UYmBk}#g634``UCnyyrSq z4`x|>VKI&I-ACbMUZCtR>ZATD_*29Yf2wYS?2--jyj$2Lc+rQtjo{11eJo|Kr?8PU z6**NkUkFFOln&B^h#9}wuTd+sSZ#E(|ctGViSP)T%)j#PZ)|eR`xA4`iI>WgUS(v*+=F*BcJ>*yB8^SKE85U?M z^I;!1#42#qH^O}@>IMzs-m< z5zpH9T{jq#|AH<3d_c_c4^}C>)p%pPXZ?cdpOSf`{5`44_Z(&EJvVeR2KSdA*!x@m zahp5i_=tc|DdxTxo_8CGwb{?bhq)cDy}fRKV7LCrJ{McWDrHe$5z5~3*%8q;{0h7q z=OX^Kp`&y8tXhxRrZXB~`B46zUiSIIyT&B4{RcE4(I8*UKi`XA`0lI6BNA)*K*E`y zLiXPMcihXQnElyzm9<@!B>EP&y@g z#P)w`EMX(nSo$Y5lwF#o0p+%(!WZAo)e4@KWQk{0uaAgLqCVo=MB|8F6GI`rX?^j| z4e@dIT-JtG(7&dLUEc@|L0)I9NWv9k4%M-FJaiEI1K|bT$aPDmkHM$whf2)kk zJ@`Z^i#U=UG0zxUnuoLEJO9nABdL7G%WhCnozBXZ{5Ss&q$u^FEa|IV)eXQboE^F? z<4O+2DEo#u>f0JqtUZdg;e8Lt{O&93mwf&;<4E7eyYZin90209E??wV7Iup~SF;Nm z?H@0mZ+*9`+*zkH*kTQzl+W^e`S#E=ZrZdn{BG9>5=!ygj&AhA?2{H0Zrp{%_ri$yM;SBul()G1fDz()4AgV^4|i!PoP%6>A!Vi8W1_ zM-!OU#+@zsS6*{v?0Ls89KhOam^a!hMgF#DZF#BWfzb%@!0Pdnq>t7^>Uq?ujq<2> zfqHNq!kOtenO}=NSb}r12?QFRX5pv&#XNnz{0W~D*AUE`II&$Z=nL9NpZ|&nF3e_? zhMB6OW+4K1dEYN?=Jt-&8t_zAN%>>Zi07W~yw&pBaD2xv7VVrWaEbPX$gOKa-1c8A zZ$^^9Jw5tAdD&5zc;GMn3)!$EUhFfTEs;LDldhhRoBBcdxYhY$Y9qcl$036iYII^F zeeMd`aQ2GpO-p6Fzjb7Nj^7vkxHt3#cXF#@+fG-g{uays)wsjO{N94kxOS;f1%%80 ztysHa-u|PzNzOxmSXCFq`*suaUH>Y4$D;joAb5lv&-xN`9gI8rj_I^%2{x(e!fu{R zGX9V5N?P5|!kn0fnVjrXGfmf0j>$zTz^SyJlir=%)gyx}M?92n~ z2M)qL2dwj`es3Fv>E8CkzD?k{ZwSlLm*+;*nG(g>JK3PK_tUv`!9HRU;2mtCFE%NK zzxuEg_?6pin2lWbwZ_Go`?004(e)nt#xTweg@3wpUeRMI#5vt#jcduZb$(oP;vpNK zNN>�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 z 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

(2~6oXE!t%P0FRvHb4g`~lPK3`|2 z$~fa031vNdG2T}TpZ`wUIcoxV-ux#1DFa`7@{;kz(wMv95bT0?u#h|KT~B`1>a}G4 zYa&=UEC0{|?|d}p!pT267vA^AN_nn67S6v1MrCg!^}Ntwt=!}3I_SIElaYTP)*R$x zLaVXBED1jSFV_9!Jr($a#ZM&txaQz6Ynyn77Ogepcidk~iPu{}Vz)Fg){Wm{%&UyN zB&|Hv9DJ=6&9pMfn0G&ZRr)p=?*=6+ZHq(=q0YfgzEBSCyqv1+xM2%;?5C_>O<8HE z)nMo#X)v{pA};Buh4Y6q-@6zO^ophMWj5x<>Kosjy&PTv=g)7&cb;^xGM~D~g*m*d z1S8s&3S81&3*PuZko5X@by(i@zG&M>JU=-*sG0ty%Xql`Z;SXZ?7;jfb@Q0sE+P<` zbq*4^xp?MDy$($MN9(})ZAoloiy)}vHe1+Oi02OVnO$Je#?5T7%_s3JR~@tFgF=7n zF4PUjeTP%Rzji(9@}>>bb?z<3GyC4hg^d=y>vOgtUDw-mI(ra~8Ul^9?9qTXyU-n8 znVe#l#zEpeh{pY+YHN41$9}%h#Ak`%ZaeMBUv*rj|Kge`8MRgB2jeyv@y$cl>3`K) zDzz!bGOTaZ`f|MZ{z}=nyEPkW?W>AHnBv>OR*fkElr*V ztdH_EboVxe6Yi!E;Jj7TcXp{A-!aYvdaN{q`xz<1?ztFy9@xeR_I|1lRST7SK$)0Z zCnDoBvo5Uy!YX^M^R2OTs% zlMV7YuahU}Pgvo5R3u@M!Nr;z`Bcdh796k2K6HI9=IEE|rf~nj?zoOyg`HSbBGI$F zPzVO0pEZd1=Bz7mkDi&}^CQ^XDPtgO|8SV(#>@%mADhG9J5 z8i#n6pY|^0>w4$Pedor*#&iS0eRFIfm+x8SF1Ql{i&oVYHlp5j<{{QQrS*}gVSI|B zP4_%IqSb?FgY=*}wga`7VmqjHBb5`(FpxM1ue%A#?cY?@n#9q8)}1s(GR zcOH(}-Bvg;$6fW|)ZeoL7lrqz>ZIARJ=^NTv@ckOzD&nE!NHp#ch4UOc$jlQaGMtU z@YDx#PNtzFoT;26a4qioYQ|XdkH%Paz8I>Ha&AWEEZF*Zt16I@${o-pefQK}}{5Wey z!_7wBL_bf#eP?yf9O_fbnWH}YOMOabe@mO^>bp+}hq2Sm1b5%7zI>Ovtgkp@0!(YH z>@)3oJBa&VD%9U~b!Tg0m2-0=@lN%_tp$3YUyWJG=@Fu@`r-ZL>1Idtfm!1)-iz`r z9C(f~S5#%>3zg;WJE#vn6b3{6>k7MB_gZT-6ZuD)NsS{e;V!x#)L-j58v2Jf7X6o8 zR8Omg5J+0ctHL4u-UT7h-l~ z=pO19(mhwE9MoUx83?Hp1`8YU*XwJz)HdR(ab$yVYswzfSGYb9%o0O|jg6>h)Eb9u zkj7Ets6N7#oZheRx6U7K?VlvL8}2vJ=o#XYo>Ak7OSs$1_UQ-r_Jz@BaQ=sdt8O*W z>K-g4-E-^BKE37ozFaS8Y0_96X~@jc=DPeu2{V3|fAA&~Tu8b@5hjeB%NpYG!cKN44n=MjT(DmD6u z?4mwW;{+FR>0!I1hTHpqh3hiWFO<{K?QxENB(Al7lazDe6qiJu6PWs$aspRz?hSD< zM_JVQ^rCc>6*6lQ$mHZ{oTS`WNt`10VPFwzSb>JZ#))EWXuHJXg<$nX+=; zz2K_*a^Z7iVKsi~`(J5AfDhCO$Nw~vSKyh?g`Z5Bdn+FZt{)?CvvI#{iQyk9F{Bp^ zn53-RuEza0*E_b%v!^q3YN!0mrhNA1eLvM>(KnsoMDHuYmuNiiJ$qVprvK{%fmv9F zHs;{Df6bl^`b>K^8r_39(mlGy;f&Rr3@iI6XQG$A(rNBZAk~2GO{nuPP#;kKg;n22 zvVq^n!#(4c!tNT357IL_hTUl06Ncv~=k&*M*r5b z(1t^y*7XUZU#8$(;B}@IT$tVs(vRc39l00wx$ui)H%Pq`CV@{sjHi!=hkqT+r*t-i zUU}8v-&s7Dfo0n<9^Tw0Q{^w8LfH3Tr^Fn%VxJIR`R`OY(R?7Qvgx*%1Dk{o;-z<* zfuZv@X`a~`aW3dU#kqXV`X+Fs#b)Vooz{YT(0n0x>+c57HpNNlDNn@Rhoctrc>CLP zj~u*h0f(hWq8%*{H{?x+CmoqKq9QzO^i25DdUqY}W?-J%cSt2@ZTmp9qwzjB9(te_ z>)_HG%anc7fXnqzbB>l$YBzy0OO(Ak(#~ng6Qz6mnnUGBicVg*$%xnAR-MgXQ3uzD zZixD3VP6ecRiBL+;|N`DJ`}zz$Fn`b&JEa5k6KV6=&tZ(;kDZQlRWdA z)VFDy8P9RHXEplS!iTRf1a2k9J>R;;iLI$^3zz0&8CJL)_a)hemr_dB7M**#qW$KV ziRM;GccduO6kWMH%6dC58_(^x-;$5cOJ+PN2W@Kl z^8+m&$myxunCJCaF&}DM!;jDZi+bzEJ>A1(Sbbx5mtj(;aU$U+A~`^`>+8=qx?P^U#gX zOcd{_Lo>`F)9R5#vF`g#_YrLy@;#LIJ@Qgw>rX*=?oQG7%P=PDrbREL71{YPae$1Y?&e+H*jdp_Uv!{g5%U?_UfvrCa-_#TW zF6tTe)!bi6eE%*#HhWMr`276y?a!dR*`_tqL?N2YS)P_Yo@dS^R3BvBs6V-Un^d8LJt{psIpCY)l?o*P!LjV53 z1gLm+zjz+|-jCpSuiHX?1wUB)Q!mPHU+Bl}9IHWj!eowR1zZADtGj~KF%^lS^;u7xe z?PUGWdLhtfVGCh5^=bpnJdymPd7>IeT*B>(P1aZ68Vsh3ndld~+oG8hl3kn=s&Vu@ z2=}LHvfj@H^DH0kF1U%s&e}O4a%oPe#u1lrmv3yUkaEXkPcSC`s?uzb|Zm zuG~dgf@8ayE82nFbDy^8BS(0{Xai-gw+QnUksm$wQbG7qC@|os;Y8-J1r=G)68O`A|^FQL^{O?!x zMY(djSXfj0f%1J=58=BOpOK4`H-P@B@(;aQKZsvVx+gsuKNiMK#&a3S4SV6i--R3C ze4`(XToEP87T`Z>_S$Xi*{ld?Gv7$mx9ELmzWCmDRwj80+**t4!05{&j5DU5n_-aw z&CL!j)UgQLT5$2-9pzc#UjFT89+(@t4%~~w|1Sa;;NAMg;mw$TTpcKQrTmj)aE#F8 zqaqtPKAV(Z!McCeoS!Q1{Q}I3qPZ7{M(AFk`kWE@M{C^b z99mRHIkXZ?jiow$!yz##S&WGzzYXEdr!|%Wj3>Zg+s$H34E+|wSM@x@Zq;oBA4`>a z)09LbjW1Lm`7$f{oE+RC5j?^d2=102aMv5NzaY$K?XHm$+Fi3KqrR<0ypliD^KgOm~Gfq4>qnS5YH{{ zrNqCt*~fgNWu8wbt*c|e(leqMup0|>tZwcMn7JZa^h@ZEk=)+< z8l&^JGfbkz^T>&};?3Xz`?}s8-g#^mc9&vYu!|X&bWs(?L3OKQ(ca*XKH9ke8lkzs zm_;pEMx-mun{`mMV;aUhQ^#1K_EL<6keku^(i1CnlErCZV|k_Scz1ZDerI;PPQP6F z|3+8t$giA@l6N2J27^8+|J5;gH>2mjC330U4O)Cr*6+upmFI8bqvS)gdqB%;N;@VT zz#KCB>&W+JO_vTXRMuZyvM~2I=3@!1I9YP{IU?HICe4xmN!~Blni&mG?kQ`{+t-=m z9pn9SPQoI1V&^2*DD&WntOcm3)KZt7YS9x&J{FJ8p^lTG^j2&4f`dRdl(Eq8#oK@pjpQJ*qUGR>iAIj zHMN1@4xE8`8U4P>OI`#+@ZpBS?vUB#cyQ+gIXkNvbVyRp%X@FN;C2I&WWU5_VCALE z$4723=JlKsWan-z!QVdqo!%=BfC_eu5xGH^fyb`US25rv{7GIUeaQz zZuy7RY*vc0ZrfsDZQjZEyl#H@5;k-)mLb{0rxtJ7p;SILD-2>fDE%^GsuB0cvLT(r zA!G~o0ooW9Zp8aLl*pwE!=QAG(l2AsmjL5bdB*FCu$?Jqk9sYrz@sfvF`l_4#CBA4 zK&QEuyhqt2`Rb2~(BUSYd%y|HTsKoqf99M^1T>UFw+Uf-VHUtQ} zO}0Am8{yCO`{HiuE`8+;UBR{gd3?syxB6#?uj-z!#=SMHZ$9QIIBtK4*hwb4ORu%&e3EyuT(*HN48%LPWFvT0IgKx5gM7I-wpc#U zvJRZJnJ2g-mKyQTy^7>PUF$$=1LgnGb45k%w}AE0w-D`GBCqQa4*Scs5I%=bGSsvU zVWMqqhZf6M7u0}DTa+_TA$SHz{hbqzzH{|^Pd@+my(b*K_v&wuaP$po`i07{Uo`$< z8Tt1)x{qwJaW@1zpArA9mQQ1On`Wi*k+yxHO;zPx)9tLm@0Tr=x4rKVj#HH}yFItk zaLF!l&)zr88~L~$yeerd`p<1geO|NJFfWWVaQ0NjPPd&dd~ADzywAVd;h8gKy|`6+ zZ4H;|`!5%Z42Y|F@3D~H`+E?J@d~y=(Z9W-9knyt@Y$y8<*CM7p!^d&!-qJRRE#Ix zI6~fg!xC~vY!d#(M3mw6JR)Srb=I(NL!x*$)<=}(*@k1~cPp%6A@1+eyTNCd(ewfN zLVckAX2=G8Gg-!4f=8He9e#sn7YD+bt!{!ldUQGMcZn6!cd6!*4dQ;@ zRwUng=>h%DhKc%mX4&u!r;FvAH!#+2jG{HV@3!R!(u?Hc7=Y$&mAPY&-Bo$R2}N?1 zco*nUtemF_*lfnrM;FUBQ7$m?tfDJMCYR^`f{NrT9*v=9&MeW6ei%EjYQA-zTf`99 zU-(Eo59o^d{hq&o)B=-h`3Zs>+`8vp1Sk$>uMi=GjETk3C``h~vfi+zja_>c9#Dp&c= z{WfBJDU}VvkqtGDY!FU89*_+h4@w+MWbo|+rpJ_XWSuhYG~W@`N8gdU|A@~iSf8@(GoHP8+?**F=wi3^>(;f%Sw?)3t zx7D#hsXP>hLef*^?81l%lvTc)jcZie;I-0VPDk$f+<1w_4>ChF^k>qBZAWcR-|u*iUHsJ~x&mh}BDxlk;- zMF7mSAFBAb+lCunFP3N8c7k7f1`7YYu*^EENN(iP3BF#&vqH%ALazEdCmZygtLqcK zAa}tMd)e`PL&yqH#>wfpZ#wXplid1rL%8dS?*@`1D2~jVPoKKOFrURl05yxBzQE$NpQEvnQF&V^pD2V z?A-}+%|_uE>j3LRr;|3A@D3GokIKTJr3R@m2>ysTb?KR&%wT-_0kM&FBr5NkDwj-|1VPU6T zcH&z&F}5q1_UkO3QP&JxO?`rk_4&G&&3lVE(UT)_4;%}fw>IRpU&;DKE6Ynixd9{p zTG-9x^jGh@Y;(FMGYxeSqOMCeqF} z0lpTZU;6prno(D>i4lZp9KWEJlzVujO&fl#pmcxphg5Uh9!WZv#6*Xf7*`P5(-KS)O z`c(a|pfdVbsBI9JY^eXqgrk45dc2}C8n4v8P#O7B-q=!Z)7=4ndk}rfew7D;JcLjX%|dimR~2g3(8Ax(a{_$SpDsi)qDe|02zgf(FEJOeL47T92FYSPV??FnT$ckKr(G6DMlZLA+=%vY2vCu1x!mOW9~Q;!;8f;mcy7xcf+qufVkY^tp!#Wz|J)A!Pw(qSb{PXGg zpK%h&G)}6yR3C9y-8IZx+$s=!epgd`4*XAj2&DS_8pdW?*iY$G^zW@i>p32f zHM@_n+cB%UrXBPwsU2z?WVZv_P|ste*Iz}i+V|SJ)ep(Vp9VbeqgDod^0f< zirxE*w&~Vj+^wa5^#`JNLxs1>nbfxNcKpm|CpkW}Eu`I3)}U5wE{F3Hdr=l~dV}bL zwYXk4E6H9Se4-`1#ruZT2kR1z`FL+j-SEW{9DB7z*qDK9ul{Qrcr3PKkSlEw+$nh9 z`T08Tku#(Ne0r?R+sB=>;R)|{$Op#0VGd@>cQkykDc^iKMIN^F4XZMAmEZ;knrg=l zv`gbg{=QOqqu&w;Z(LW{C4HH7@q@gh-x63dt(M>po^H(NKPr{Kw_FBg#@81<_YSD6 zu}l3-c5naNAz!)lnQf}7+*J(-s=%#Zq{!*tKC^N5c=iKv0siJ%|FDq!Q*#9lxtg&F zximIu>O&yarylEw``@t+iwtP2+ijI9?|)hb_Un}A(R*w~-U`RW-jU_NEn~gtgKje` z@oC>v9SodQ#hzs>gznug15I$mEGEz!tl}m zt8Z>atqmlT4KDoW|D&E~`Wu|LlLQ@~K#F)^_4;|1q{QFL4x#pRepEj;JLo?P9j>bCmxF*VQ z40C&4ELUvj3s1kH&ci~V-FOG)ND;1a`@+i`9^&2TdC(4XfRo$4!b&n z>m62+JAgr+QU5^9(^XU0?G;#A!zKTS+Y86A5Bgx(w6vzEuj_Qo@7%>8FX2isM2uDR zhxfD!S{q0v8~=x_FOTbS`QmRcl@_I>>_l3WROs`}gk*{AgoNxRC2K{dRhtk+q3mQ= zmO}HnwtKDDF8i+TwR10*Yx|uu&wc%V&-4BLJFoY9&Y5{WpEGC9oH?W9Vt>fR*w?5< zQ|NFe_t!JtlJ)7WqcvYXg)W&O_cu7Po>~U>2QrLJU-1o|ooG#`u|k)AWj3n0!a2aX zx}#gi7X^0$J3c|iZMRWzQ5WPYzXvpl?-9PChPS>RN^ie_SSd7y=NYk^c~|+M`=PY^ z1s^e2p=(T4`vBzPIyl@tt2+OcwbW_j1%b<*p~rT%(50Qzb?L)pp?2Txh{6+N|I+ez7MF{dW-TF9C8o+Sg|Cksa;H!Pqi_V@t0+$2@~K@s#D; zNd5{r?l`rTD+~22;Z30J)_6Ce^Yqp(Oxw1EmrW}rMZs_{5V%vCd9p#;3ho%Rlb))8 z_YpzJ`Cy0%t~|oSZ|;CQw_aMrEf{9P#s=&?=K64!^xGsSq02t=LiVUb?XjG#v!tzw z?gY7&Rx4S~(Dl4@X$C!0*igvTW;I~*7O&+SUuRJNT~iJ1WVWRQWmNA`c0@WY277WukZ%-_H{ z5DULk#1l?g(VN5NJ@(icMl21^BsQAVrwNYo9(&4ceU<{T?XYD<^hC!(vFCiHEnt!9 z$$ZAt)pUntn%Hx`-?xs%?}K-nR~OSC>!QVf`pLNxHvD}FzZO!DP8=c29iM8TKK}sy z@ciTWIar4v?>g{{oI5iU{Hq3iORMc3T1g3U7sVW;Cg{SsMk&X;!X5qBh;alZTQHBG zMciwFEj96%V@o3vjMZa%w{7YGWg5?etbcZZ~GlhBb=f|BSdq9-dAV+|*tctR!L%zsD|-OBoBqJZJZTnqodt z{Ndx9vh9 z#$;)3tk^H)rt42)8PA?+($?f^s!x;)ozo2_u);Q`+M$l2kn4Pg097Zl-v_p*%2=!E zHv)bK=Lq)a*YhU(dBH?GyJ9qLoph1lZ@2T9Co10&x#&AKKU~AfsBv_#vyYgA*)e*| zaMM*@3vCt~;Xe()dGmBx=QNB#h0(F*^8Y+CNssyec*(1?J!$Kn69qSTleNmepxl07 zUy9z>@?jf2Y2SpY0@rV|wTg=}kgK$R*oOA6(@i~XpFUBvoXfHBo^vhPwaGf#MFXSg z^&mLw1>C?mQ?;FhMzoVkuILZA^`F+lI~;B_IyYMA(iiHhxYd8f8@+I&Lu03k{;*A{ zvls{HysB1D>tqx|!-!lbkj}GV$7kqhqZ`N2nYs{L0$uvftgqG&8c{#xS_Uv3T+5W} z7PjHK^|Rs=w~J1o;T`1IQrKz}R;K;Li`peow@EHS#wdtY`4qk9p6*FB;--9tHg2^s zJH4xhzs(P$>rZzSW19*wTGe+0A^6?iIv(cTDo;qp_2hGd5pbXV=c{0PW6pf?!~CuA z1#V7pW_cs~(yUeUphoo<;R~Ff>craq+mG%znnK>Rc`bZ_>rt&#I2;G!P7m!%Pr9U% zEBZeL_qRA$liRf5J?|Ki{4w&rw$1OuSg=83{``#%*{7K=#@6BPXcZUxL++h8c*`#` zo4g>hPyGv=oov?WPycC|O}hT^LFjU6UK5pm$VL5>Tx>&bl(ivkeyBBR+i;1PtD|is z_NdyJo@?BO*h-l~ms75U>6;o-zrl8-?y3CWuWla1q&GSIa?dsN)-~DZ4_Meh6)V8s z0mce0#yRl!X|-fUjGT{@9d5+xwzuN8b83l4zP!g?6lMf=*Ma|||At(C13op7my9%K z){eP6#-fxyN_i#b&oi$nd;czj@3AhWFVD(x2A?zsRXhU6hVh8hyT$x-ZVGiwk@sp< zTN|plh(oUOObOfYOlhXx8oqpD0!=;XDCS^Sc0HC~UcfJHnoAGfa}fINS!u?){#n2S z?2_oy96N#Av)qj7Un=0E$0tDELnDFPnNts9GG%;cq7`**B-_cZiyNx#B#amBq!Neo zhqz(W`)MZ4{He+O>lg8jRz~)3Gk{w$+(}I08g#JE%#R2Ka`91Zy2xPp^Ya({c%4rw)l8m)^y8NzTI&m z-5L&U0A$eiZ)Gj_+TVu02$$pX{faEu^$#!k_YG}mT{gt@p}*iFOSbw!E#ElCg?b)? zHfTiq*W%BYyrhQHV6Adn-l+BPdoi$9DSA|@2$ElvSTK3 zI@(_!#?gpAvW@7QWUjVN*dN#?B^Ucc?lBX6ZC&tl8ggB&BgzI{DsaF$dXjhojx~ zUeu%OG}18Vr|9q3agMC;buT*odBE?P)aB_qKkrkyi~~MULdU0SP5j=ZQu21By%@)|Cf;ngTM6HIy^!pvlw^0S9P z&7v07+Aj_tX=; zHbV_@Tbg@omB4k)XvpUJZsryr?WwcxDlrb9Tn9G1cNtHZrxTD_obbwn=CLZJh}Fc;E)Eu~FGr(;4P55mZ(bXD>ah!~3q_&A54dgnaIPuFABO{en% zwT{%eu^a=)ggv&hE(CJ1E`-ufqTK(rlK|5}J8740tzFtAgG~H@V8{fYoepiQATd`f|EVyf? z7kT9|P~aw1STe_T`h28!N8+>qV*1eGY`C{*qQm(x`*NCe(n{17|MS=;CLKA>w@fOB z_hQUNoaWidEv(7TW87J1KV9!*sYUL~s?Dl>JdO?b@jeN2xQ}@aacz()>?_lKvv64$5~Q`i!<=gWq1^V}ALIJkX>I83V>z!W#-# z_~7xc$ZmU(3*0^

B`D$3z+EV=Db2fa#z=bXR+omlQ_PA?M})YJ9q`%AO()?P)0Z zTusXw)Avabw}8e$Ii{?*qLv4Kx1;)oa{ko-SW}eelE}q#Nu_N#^E~P0QBN9z2mk^CZ}lK!4pzU~h2ZC4acsk{Uvs2Dw8sOxW$cFZr~t zHuR389J@iC_wA_V3rZ~Mjy_Cq2QD^M;gE|sqn*p%J$$$sGYh$nOY>e2S>_0jII|BWOANPQu`osvi6?h< zT8jSm#ha?^ANGg#Pl-b=;xf*6r|YUy$$WE}yECtz%Kjl&*gwF1x}Ht$`pS6}Yt|X7 zxY!?Zdnji>F%eC~TKkP4|KiBjYtfI#PDY9d#bf?K+VgJ&>7Jr;DL~?qQD($^6TG+pZ zx(nFvPh%y%9_s3@ST5Eh25m|o6UTu*rt;ndjsx#a?A^!s@iVb@u^f;N6EgqZ??4?wUaj z;5}Ky(YXy&IZr49bDk^@7VxI9m)tWMa!mnOQDVu+xkm85=^ApwV7&Oht?XZ)?YY*7 zM>pO?{F_V_^S7**C5v8a!9AL6BJZ}z{%ID(RF%Fc%0ORK>33oq`khN!mqA{dBVFDz zU-Z{)X#kOF<5_gHG3-O3F@2UUE2z23;~ZvDk2A90lny?tvJJV|R`c*Ge|Bpw zJu%GE~OO)O2L1-HPSf{>mC)+&37T(qYb^`gni30lqX-{p81(<@-xpN=O> zhac2@S|rD+(&5Y@v~DWN`n_D!Dn#B_r0Qm?z+`#W^^({}DH9cZ$sF&|G}C5v{!0myOSPDZCl;5^8(lI7T$< z%-mPG(|+G{$&4BOgpDX~eTJp@c~UbMC^$c07{NKMXnUSLc@ycKJjGQH+e6)HOW|Ii*X!iiILnX*|ws6~B!KMeAZ^vdX}6=;hzlemwnpAbwirb7XgJr7mr0vRkj#)Mq8}pqRz-2v+X_a5tm8t zo66@i;pv8~|E*7At&Lp;|5d<^W=87V4`{^P53CXK-u)FhH=T*!LC+CT+h5^RBNu&Y z<=zx^!M&-{7GoRQ;=s=}yr5<-z4QreEHtJq&}Fv{zvKs+o6vJ*3x$ke*zXq|dC47X z%xKDWj3w{-pOBPHu|_X}Lhxc1Czbh-bBRw3kF!-E3X zCaN9lZ{w@!^)!H3I~)@Fc};1mvav!g*jS}p)DPtbxBSXy^lwb3IYkN?{#mg8T6~9h z*qYD|k0y!!eDfUG8WB7Oi9;^pzLiPT|7#>^94+rZ zw#S*M>@#xFJ}Ys^MO?@s&^aNVtok8y*Df|t*=OXUeOBU-i#V0d1{~V#K55S6g+V82 zBD^(&xaEV)*rpY2NWr+7(o@HBF)zy^3|W`!9mq4QnbMD>{o-5ZPBdWaLyD^F{rHXi z`bhqt+YIf`=6U2+`ve>(+vY77T)U7E)+lU6^*e{-WZgR1?`$+Uhy@P1%s2K}FJ%T> z2)WG;cV|)K&hz?Z8>OpH?S%}@;Z|&0Kpr1nqC+Mvk@N3|{Nkjl4GF{0!P<~hT(Wp* ztR*SA;w-p*_t~@F*^DRWm3}YzJfbsn-%+|c^2P)Vz*@7wYQKPdca0-Q*Cs~ zr->)8CFWXb%Go?_pFd1OjkjPruFc=fj$o|2b9>!0)!`mv?D%%koq zw<<`W4Q@jl^p}#O_LY%~zH;%Zmpo*l0S)Lc+wq_|mMYth<3QW~c4jTVTx3A0uWZMA z&x8B%+iLm0ugz%epYl3`F@O)w`r3bJHm%B&eY2i9R!qAN{L`Rp$j_F?);|mUFon%V zUC?F^Hh%|it`*RC8N0+>c{E+X>~DYKt{qmV zLbfD)xAeF|OV^d|5L}n6R;+GEkyL!Kn*Oq4tKhn&G-rR!+9dpgZL_xvu1ij9Ho+o= zTfNvwO-9MK*mYGa_Po~uKDl%Y^*Ic_04V5O;>y-%#X^0vF=Qv{C1kXp)ru`#HMrVs z@=(&rb+o{lrv|e>LSn1Gd}L&iw)4UI7{7xAuqk0%Y4>9&V*t15g)S1C%)ABJN64fBJ1{81Z;2ufMw^ z%~Wdua&Zk%;*g8D7p?tiW%DSqHcH-emMkz(tpUizH9(0&F5)WM_`@CRcw%KBbMu$O zK3=(202kMQL=S(Oc{`Q7DYO;ymku?im0au(xk?;Rbr9Ej!QSe!#U^x61%g!R&iTpm{j_oLhmRA_We#I&(r)u z_8gfZxRJpYYF(g1)TMULY#x4O1LII`vABKe8W z8_4gch6=e-bVK$h+ss|co#_-)Imba$WY6w|mhs#)XPWun8;9O2oY?JEn|b3w?P5F|@3V zv-a)j)&ugM9eq({8{)9-?UFJ+{F*z}zL(EFBhn36@x0AE`nfyZ5d?b@m>0}5QjQJV zaBRwTM#x?4$V{g#(LDQ{EM2qy!528AxnG_tIpnqdFTR$j>JP+<{*>zn%E0v_^k)q}6PQH%c>0LBng{oa zieE#GfRH5WzZ2Skyr@7=way?H*BRxyfHH7hQ1*v7(Vy`x{<}^x9dfCokdc@NcUnJO z<)`(Msnca>19I{*J=PHJjjhgJLnkdM7BRstb<K07uv%SU8JqxYb8+cb{$A|mUexEgBt}5I4vH@YfG~VDJ$$jN6 zA$M1^u53q%hHhD`OIr0^Bji@K=*A*$njN#-TqSMcr^Gmxr|PkOPgfl~zO737G4{0h z-4`s@XKm<{V>6%Zln!S9DsXGk4A?K_ANbS3ugSQkg9XlM7-119A9%s|zsb=>@_xVN zP#;!u_&xF8r9)OVlkY0Li1TL^W^c%Et~w;UZmsC=R;)A2?Dw90i?t$q6IP4)dl>D( z63RN$8|RymtIy<^`C%_NcB`~Aee*{L5`0dM$?S&z>Z4;2tD9>><7AA3ewsn;m@mblI+amYp7!|cwqamNti zV=UY8eQ@tdxz6D40M{8M4!MXMu>6ei%mDa`}9J%RD31I)hwXXOuYPBCY`D;EQJz zdG0K8S7z(0)*0mDI-|rP7jeG<_j67>d3#3IIkiw=ez54M`S_)_g;9Bl>v!M!_8&Ys|hiX$*Pm zwlojlf&it%MwzjKk}|&dL=PH%R9mszp~$I7^FbT7KG9DGL@+t8g>Y)Z*yIOFR@ zhwO#52O0lp>EGzIi?!DSdT@*+ZbJ!dC~LmP9frA zmgun&V0XX%4)?5!GsJ&ux6_a2f3X@bguk@-&5d zmwAb?rGUS2*!&jHd7MHWa=paZ=E2?Yp%4pvdOVGe3Whcik_>iSDFfxA3{{ONXv7*( zN}G+kpv_jw#s2kQ&>oheqV71)Mrg=$X%jkqTn z7h22hKj_d)Qy}&aa{EMBvp*wV@JaGS)0X$mrG|YF&N)$U6?Vq!*jb5;FW!?b({zk9@S54PE{= zPK-^;u!Z*#-*NL6HZFdeqyDt*#}!{*z^S@{P)wB z$g9j$A!CkzLzcI+gx_?iA?I%_mVXD54Ks)<;ul-hkOya>4P<0!Y?)!M2O0e)S1Nax z$F|UPFKhKzJJNq@zI1ly1i?*#GsAO_Tah-#xsvgV*@8Q--fp&UW&ye6=0FEP?FRgA zJ9bzxOV^d8e{Xwwo!u7PotrG!>-P<~m+>aLGODk@g^aOcW3QUlQTbY~iO`-*9ZWzGL6~dtuOs^Vmvu_ zT0VD9f%lJ;Yck5fHCc&6F5-?f^rhY>Qc3kv8!<2Q_L-{JUjX9zyFTR0F|SMKG^cm1 zl2Dg@<}08ML8Iyh!RItvFIP#}-$BblmV3;tx_?QzW~=LJ3FQ_WWU&S7){+Tg~3YFFm|crdh)aQUq%>DQmun17uUfFYc_L} zroq(QK#sKxf;)Rdhh+0Eu6oqebFGlEXudA%H7c8TzhFrFxXb?ELdc`I;-Aj@{%%OW zV=WNSFCOyJhC$uGb5I-duirWeZeBLj4Il@2ZvPl~d%#=FOW|?@X6t-_@5_&ZwY!tx zF3E*Gr(*3!{c!DesenC>c`$9Emn67DcUv=;)>ZuZwJG%9gYtcsg-{pgqNa+!SrtW_ zJd^hjnV{dlCI{e7;S}o7%vZ=@xoRBBK%7!%oO{%{Z@nt+W<8M(c9HX%V?jTqT*RSV zsDH{^*-WI}4*LliGr{LljSX-(w%Mz$^CQPf>B+!m;+(FVuR9xQcb$JVD4}nMIf^`} zk?q`AgMqjCxre26?IUOdAq~a{vG-O%(u_N~n(IgRi8;V~MXI|-fWtN=4#bMKyAM31 z7W!W_jqSPMV!r&Nzh_8q_GM}6vi1s{Q}w5@qNAU9Rz(P16D!|a^eu109A>`fEm{tu z!#1=KT+LQTW;W(Mk67HFR?TQHxc(K8Gp1NqQ7*2lR?Tkl)f+SDH@^;oJ8Pvrb2q)l zUv18S8i>#aI;SkxQ~3hOMPER*=0PK_dAgo(=jXu((kc?xH{eQxnzEIiFL~O!4+Qt~ z$n_Z7PPMKAOb6Fh6&Ko&YhefV>!M$h9}A*He_aQ(P_O5J!}a__y(|3Wq=N*`ErpD3 z?mnzM_yX*s4iepeWjoZ}wKLP}d4c-`?k0;k>~TPFw@x1Hlj%$TqV-GiWVakc=@8Oh zr8DY>ItP!s!r#{IBI)A{g$&~BsgjF0lpE;ziC3Q*N~0gk`Jz3iTdBVh0P!0=I|^sQ z5l5+CCwK9?>JZhORnED@Ph?k7hhZLC)X#M)+{1`|#cwAh(CG&9U89LmlX4!^fz0$w zq9GRYcbiyb#10Oq<70f2=(*|OHvxC*YRIin_yVAw4*CMT)PqL#z9&6Baa^o}zqaqD z;vx>Y?qlot(yxsE)5SydHz^O^V^QdW<3(N8_OIjNsR^`RmTV&?6dSYIVby$^-fOZF z-WJ3DCPIC)HKCQf<H*F@$GwcQprUbD0jxRkG$KuJ7oW2*&b-RLG49Fe<&CGvw!=R zn-$$9i~b=(uD`!K%O3ra$K3vtbo$g&$Zb2U1Is+}mT&p=f;?Fcu^`~K7|>NE1KUu> zR@Zm@!kBBs`<^`a1H7GC^z1!S$>kg=+$Mscei=~LKD0@Z)c;<#v}@=%g4_&vKl$DL zthBlsM!f4%}S}WuImaoF%CI8~~!9@l@jF`P9xfL-m{X-(9QNjH!2m0l%e z^B`Tp9p~7E8Gd`gy&rLU@L@~ggY_Esl6n}9>%wKW`kX7`O~52NzN9CAHci}Y3m6!wrcox-LGV~r<`{^ zXsm@g7aM?>i#@URSN{IfEpji(MR2{kd$G2`AG!3`Rg$_z_DdvxH??gC8ED(RAAI7Q zb2F&f4f%gGWJx_${tJ#5^Iw$b6+ji|6{b}!$>PR4DfN+k(GN=wsO>!f(cZVZox|sk zFQV^n$ahQo%&)JyZ;Io^`=7%k_hSvbs|t-F(dKOZ3@dInz6;%EDCaUQFEn6A zDOP-zr9@Z76^ilZ!d<93A0xhSR2P~@pbfY=kXNdzmkTnmUhdbX7h$b!Or`c20;hqv zz`YxP@s;*hNZKvA#zL=-ZmMsD{oyxK)x<)bp(fV#whr8}^f+;9Eyvte^|E4vf?M&o zOOBHjI`Vf*4zy&8y&SlW=~?n-mAtnv8e+!QoO{9FKD$e{u9NrOo?Sb$`IXQ4z~T2u zY#97rK!$IZPOSU5=e)!H>*PamFQId14~abqd&&EbyGC-;et$S#{QXVc zo53F^uA=uoycar$O{~Y><~QP#8mE&KUAcBq!6c}sy1fy1UztnhzZxOr7ELf_nUgK} z^N3v1j13iXizXT|`oy056nT-$LGoGKH1O+Awrj-C`34ZZo}eGdjfJxbr&sm)^Y8$Y zw-UwyjY$x%Q`S+(xxzZ?3!%1pv&m7k|84m{9U5Z-`Olwtzp^RR_>lac9y8yN?d;Zw zuS*|8rY`R<<|=oN9wXt6_>n%-NtDY#AvY89$aXif;3K+CC)JN3o&$21LY-r!pN;yV zpS{)eCU5BUD;b|B*QKLvy0c?*Zt~E$i$uFxp8H0+W4{9 zi#PZ|-~LjAJMuY1%hC?4L-b|7=UAGQJIzkuTz9&{HDe>bVO=ZgFmr>@IUZsKEr=EW z2yKhfHpt(1y&>}(P|X*Pxk(1@WCAzV&xxJvTg`7aeLw;rClPgy=xxo?TUGM#lA9!o zr3e|5HTLYPUp>C9dNTK+_wrmz{r9PdvY!Hqi|e z+<*jYRu^kX_l*BR#=7hjZNFyOv7d%lIsarpU!KVl{S8j2$F97%z%RgE`m?{ve)h0= zChY3>3;g(SUD}7k`UVP)j51*jQqS<30X^uy=5nowknIiFilrC1Z`U5w@2ecc>kl2AeS zVmxSzKi3Fc44he~47cJ5P9165HF*t9hkB)cPDZ>u)q@WCLyl2I!+E#;Av^9p_^syU z^HPFynyQ!2&RmPrBz;SlyvCgs|076GWUs0}`~T55O`2W2Mf~@Z;eXzusTa-Z{9Rgf ztVZCfoh3#LylC@xR^<8zeWBlGcW1R<3_{SiRdP}8|8nuWA$OI&7k&6|a}wOtQuJ3q zAbzU!i-C;(t`dh_#0437QRi$=lK77tn_C-bqw;t08==3e#32`PrXM}2trS2^jG7C% zg=36W{w{LS-&Nv}i@0aNy}3Jt1jfj*f?TjyN`Du*=WTq`M_Y&nSpBpuq6zcrMBzqM3PKTX}^G%0_dd|!Ma{MPQoaelLQ1O39~yK{d9&t{8w zH9!032KtAWh49xt1jn+gKPOf%m}8=icQd1*b@}3}-Qa zJzE8+>>uLL{?!e<$;&?;Bg?9rivOj?RZ`vmK%BUX>{QCvH*7>BGvzh3Tc)+D&JMtI zu+Glu5m9{LnFpl#J6H#SoI`Ec%-tn??WPALWvA@7#|2rkL0d|A>mIelch6Gs`n6936ER+nye3z^X8_Gtj9jBDdNTZUX$5L`7(E~DeII` z#8X0RNzXpZ1b5budTc^sHNSuHD``6|Ps~AhL_OAFaW(&0piAwJ%W|j9(r0gnR`RXy zzmnUlp$&A7j51K^hhszil)B)&pf0n!UF2`-In%di<@1l=_15Yd;(){bhq6W}%D@_- z!?X?fP^S&_mYEzY7(CEMeGUO!Jco#vOnAEEI!HhJ`UwAi zEyPd`^*+LH4m(WSrF0U%m+8y&nPs~Q?sf1mb?gOgAot7$C-!k87x@vV_IrqVSp{{^ zGxDo=$`3~M8n}x&#kPStRot?75^b`pgOFRa#6a~vJE$k#XIH*2jxsQZ^pV>Z&fdn+ zjHT^_j2){?nR}}(5OJyF4lE!J-!3CDi5IgujD%eQSb)x+59d% ze0>0oh1y~O)0qPK{MR;h;Z6Jl>4HOWHVchYE3H_J708HBpncl65^{HE)?;;z*7F(D z6X=~^<$d=qXj9hgM=sXvAJwM=jjCxx12bI(_wDvUtnF?ZIy4xAQ#_|@f%jkZ}s${p}H^!&^QbB3(B`)kc)4_xRt!% z?XEv18D~Zco!z_psA87L#hB$^=brN?M$gESajY7LV;%fhr_XmKs}^0UXYY+-91C~VWA#Gr zOYSQq`p%|Q%wIOxc4ZAZ=uQV~&?&z;%D`_vl@{|)Jp!ovemOol1Li(uNGZSCIe;3} z%JGN@xEtx{QOtWh??FAQRm%4*(ZIX)IYO72#RjVWP-pB<`KAx*f^YgL zxu^?rmGNT4VZ7L`;d^dhGn59kl7IKT=2)ooLmcW?5K+p>0-2C>a(n_4*z zLem2k~i--6IfTdMiPBTM7Bu0r&eZZJ_@LkNUm4I$;6qAob6s=XvM z;$Bh}djKxR9=3)b?rLnjftL5}Bj&!aQ5RNmwYBEb?e(@bG&%k{q6mh%bmq_>3sp9vS4(Hv39^xU>pVh#puvSRbYi+R1p?de24IR-FvC)8w{RR^{HGHB>o zIo2|6nGxGGw~jj{X3{{c&k8ceKzw7(@F)CmQYN)}1@RYXoB+A2$~#0j4$L!Gek0`K zHyY5Q6vp958$OZ0k$<`^)ac3PGcSbDbReUj zt;8W0aogs4&`RSL?fqu3Uhg`&Mhc^(q^zb4J%p7HIkd?~MMlSl< zN}S*V?k4PI;%o!RkomIjojM8L=1}_Mz(qe>i9;^pzJc80)gff|b=iMrkf*Qovr#Vk z*-9L85w{uS`n(Jy!J}ku0_@L~J~eXDr&i*Si@1KV9&})nD3b6%J_nn>)mZI&0~dX7 zB@VfWs{);8{XL&736yi%=0fhd%J&8?`rb+$auMe;#)Dc+P9+)ovOhk*(n9T{0~dXC zB~Hi%T-6W{8jzh$R+ZHg-zfQ@xr&Q8;?z_wQ(qReo>qT2JUaW zFos%ngL8YBn7CPbZ2w|AZTb3s^m5yd1aa-#tY$Wo?6vPOGrZ%c6gT%6ai^$l&c zyBqeQG1lz}a+`GB#_a5krNv%ZlADKz=nrFa%>#=`R$(LBx$jM(-x_#Bx;0xvKF@Tb zUazkST>c(2RjoSg4{Oyuw70MB=ANM$m3BgKGwTgzb7zb?)+ae#b0+DK;AZO1W+_X* zaK3R7ZT0bi(7ANuC+4)^3*-C!rr)SbW$K1p?65&4`UH6rjygEc0*t4UEYvh~G zvJ$`XBVP`Yy=^9n9B?PEh3v0izra2J3L-_!K8kbI*gKi^${!~gwNI72y44r^&@|ZB zI`8n4Xl<&L^vq7|iLu6lZq_G0#w&*Yqc86@CdC=BzN_FZh`-}#?OfPbfZ&LD17h8a$z0muLI@(5#G7DGOCETe)k(mJt^l7GVmjmzAerR`nIZl1vKKmLYdQn z-wks*4&TU?Mmj9fbU(01eBU(vDJ-$(41ag(g0!y6Sm@_}Gk}fs%H{6xerMRb!{9pxwF;(2Q^C)H#v%J`*bS+e zM|uR)@*s#~LgTn{OV-kR)v<`hEy(@EeWESuVF#6;i2b3TxHhs0kA1tD4(~1dX5D8r zV7C@E;e&2(rB`$M3K>$8E&I^YhR3|$OiSj6i2iy-TCt(N&v^0MN1Bwl(c(^nWVf1W z{(Z=Ej-S-5ykjPQ&qGWLSoZnHykPQQ8n55S`lEjSEz4QUvK!oE*9Ln0dvmd$wvDFD zqWT8EkhFDk$x#hlLBWW=uB zF5`Ya6X}<~I}4p>mzy)=o;!IPGJ#$`)K%ylQ*EvC*KiKdUyEN+$D5DIro-RMK3sSd z>>(CC;ZEV%G$&j3;igPAWR{hA($!tBG(Uol3c01;%~Zb)P*40eRCz(rhn z*lG=XFWZ;NW<%Kfnge|P*aD63N;w8UA8g&t&?h37czaxXA!FW zb<;tzBBul{WQ_%@d0@;3_b%5&HasoH+q<_Tvoby_Es8oxixYMWoag@btTb+ybT{KT zjdCj!bLCv@!glm}!Zi<4sKPy|Mb=_O;}FUDPpy}v2?ya#Fe4L(pDbKCGjNLe|L(+z2zMB zvhn6@=jBR1uu(o;{-&4E`QNd#*>T?^{NagZ)R*)S+`k6QV2>tO@$RPi^x(k3VqU(4 z!#peA6h#^Mrl@lL#c|;Jt6ZmX9Jo$5JyBVGFk6q_yS`rZN8)VQ2xB+8HTj{G9~LIzTUnbks8yW81RMRK>;qkn6q8nC|`4n*JUw$6Agpw`Px^hO@^{Yx?r% zW})AqwN}ix={-1;G@)kKWuNOHGiTdg+$7&^OyKS?*bV6L2)uovd;=L};5&N_zk?k& zpGd#?$~j|E33{qGRS<`7s-&Fl&sW-Yq@hja9M|N0J-Dk7%2OJ5q}o9FKb^c<{0dtuTJV6LO+x!dGvh-wcqu^xI=T?d%ll{0!Pa=}4x> zwC{(J1gEZ)wAdtYi{XsQVDE5p`H(MN{T1c_a0|gVd-<$i_0GD@n)s$p63QslTcmm? z4(9;hiTifKSo?kBK>F&z3*lb{1;L(O@oqD6@!jTDZcn)JmAQ0KUwQ3`gF}a&(B^74 zi3I6NYV=ngf6+zHo7>9n|}O8emwzs0I16VbI7^d!h=>#pyvK^+;+-IsB55*i@Km( zWleXSd#vd`G5pZKuoC_1v=e{1qA1C{@b zx}g6&Vd8uKWL6aQc_YV_r_9k;&lTWsuJ+BT;_a6vP|psY;`^2?He|EMAKVo}M&OX2|cZYqgovh3H97E=q_MTfD zn@f8+!FL1PczECW@6(_7l=qC@xGbMXjm|S>h37x=(-YOme*3~ zs2bVN!S&qqsIB&V>1evW^Y0>N)TLi*)%QUC@O!B8+o2Kj+g1K4D1-i~GXEKW8<_vB zdiw&n`1ZxZy+ypH+K`%rt`XlTW}%)cuO7#SdG*R1f9wx){FQH5qJH>><(uCl$=3Qk z=&M2NbwO`mAm)1+! znYOmtl8D!&LFrKm$JV6N8kT#@M!RMGOEPoBUJ3PU?y-{jHR?)sXU9tC{{mkga7)J- zvIEQgNw>*urP+b<{$tr7$N^Hs9dQmY?ikVU4!p~~MjATgs_;uXZEe9mT)fE*ey)-F z4U_A_I+y!0opW{kZ{J)xeZPDbGpMHn3q1LR&vMVDevjdI3LTE^+F0c)qYU(wm0ZLj z_wM&QJo96aG@^x^cimufFk9($li&MbEp51IE9SmUd|T#O|1Q)6HIpu-8HxF8SV&b| z><_uhcTiC-zJsc|TMv!6&r{|u;QV3k!sl<5T-VNrb~TaD4F@QB-;p$2)j&~M}xbM|*k9XC3XMr)#Ee>|+vMCGHS4D``ex%;3C=I)1QJj|CdT#a9&UsWt{#hQ2Nh2`FnH^ZmN2V6ZONlIF;|8BNyL4S8`E5 z{f!N!%?s;`?@K}(tKabipm@hqfkQ6h{{D9bxi;08nsoWEJ|WbG?CxAdmS6Lxntxz# z54e&w#_Vp4p|-S17+vcv@3A|NbyB~n2S9vNZ|+bR8j$`}x<6X3FJIx+o^1?rq4(qU zi1BMf(ciWJ2esc0T=cz_I2W6r9X~3qd%_1As2DS zG%mEkKl91=yYf6QDl=C3ooP)~KF8|@afj9gy;zbgRlg&KapKQZKw?(C&63G`APy=sc;h`khAr;yaH@oZtd(dbpuBWA6ky`ICeEU!9G$<^JEB za3~kwbyMPyO8|FoilMf5>=fG0ys_YRUudO%!wrD=hMN+HT*SG=8)_pwqv*Y4nJdNH zsNXt5x$xG}hJR}Lv!kJOS2KBy!Z#D+?mgylCqn78U9vwE0r&is{h`Tpv)@O_EKj!0e!{}d6WnUEA1}ER;ui@>enqPv%c!Qk% z)%iXk1M_{9djph#djlmG^+Rs(g}c1+;&pP(ZiL*Qo3|=29C4TzuF9W;M$Di5E3bmb znl__P&dPZ=vmn;o(E8n*lWpl)3ge2hos|)ni8`-#63|YVOJ0*>Gpi zcWDJb9_mPa{{$}JV$<|k!XsE4Cyk?S?POnm+yN_gR=zE zsCb!L2KI+CR9t97uIip90P&utvOh64=&z_3=iXi;>DabC#hea1;l%13t2nzFMu|x` z@jZrBJE*<~ek1%I<2%nI(L;`Dww;ypz7q8d*}Aki(*Ef~&5Ql%qQ6 zr)Q3nnzvsf{a!Xv;250k+zMJC?bqf?70z>o+$6a7)Tv*z zlX>!Osf5^rDg058XqiuZX!k2O`&bWLdm5+}7{jZOXT=dazSyplT2^t!HGfl`1J_zr} zf2iPN<27`|pO6y+U~0eDl^ZQp@QOrvY65b(Soz z7T&_%>`p6Q$+4D!k>>1=`<1+6ycgBAm2<7)?_KTCzpPg94cJH_w* z_MJ4=e)mu5kBn0^;?{mKr`kWl*xHOgq`ZBn=-AitIn#*yotOsJ>2r(2=x-b3IL)+a zhUzsGv)^ZTa5=%nHDIz0s9K1vygLmB(dLjKRfXA&7D->cl#sfB89 zfZq-G2Fg2jK-IxJc9;4)9!p^hlH^gw*`wxRAS8OTK$ zXMc01Uq|Z^`*w1E#QN?HRr?B*i~9;C4!MXkKjTcByEGuNW8}Py4SgD@_7%v*eT5Q- zT*Ni})tMf?-h#~S*huKSYLK~VUx8fQS157FMcn9%&a`(YFY?>eCW4y+v3ljc0=c-a zP~wn_xS1E6>687G=>L}w7Y}zwl=}+g;=Y2y*t`Nm$i^OW{2t%nQF5_As%) zI_gY2?g%4icQqCI&4#$Lau0zra1WuxVSk7--|tL2-H9X`o5q5hTxzJ=Lm(IT5Ujm3 zwJ3oaQO)hd?{q_fv5JfRAyYMhdh)C3Id2akC!>HJb7cRZ?pDN%8y3gW3rmemdG? zF9*`dO{N0ZX`Tb?vJm#-hvI0=2l@Yo`DUv3^FT1ZpQps3E{Hp0^n~~CO)1S8CUoh$ z+fMzaJmBz6`DPYRc>c@obajUTLKkdnx7JX5KYlK)yx<^o>AtLi>Rl+D1AG@s71M|Q zFs8rt1Jn}uI+Qv=z6CVt1m#((&mo`@&mmNPJM@S4<;2~){LYSh#A*Lz!S(O#$zJ?< zmtPq7Os;hR+%A3EFsJ=Dxxe3ia=Ck)(3xsnRQ@>5K@j-kDjc*SPI-3|$ALb&QZ91; zS1vROxwUmSd1lEoQk9h;&r67t%5O&;`t3^p9{WT8J|VA?H-B$Kt^JmYvCRj+{mZ6G z9t9E+l&l77C4}Rc1Uxm@$pu!liGi#xw>XL$iSNE z*DEcxlRHeIIk0cVu??DOs;bY0`eA)8WgRcn59@f_@e;wEn+G*M6!k`s zi}gnID$Dr6vJl#C(L6B+Ll46{11mQ3%ZEbf=@E&7JK}IdRXs-JVm-$8%gT7PpAWSi zE8iWS2{LXMmhm=qP!q2uoQVK1X00J}p0%0VzU)jbkI3gFvx*E<`eA>lpRzyXVt-05 z;*fhGaWgMnuA!^7a-1-76TGdXkc&8!`_GCpo|vJb=Rai$U8a`7dsGT8;*h&EYctRB z37{+dAQlON$3k9)l8ZRxzS&pChj|3hqwm4bfyS}h%~f2)Ay-*14g14-X-clZ0av-N zz&6}h^k{6zd(ZetGJDCs{9N#NJw{maH6uO}?E>)I0hk4MJx+8mqi}un&mZY*3y=OvH zB(fxAD{HbRBsHZ{p+uqVyF&I|lU?>*+-td9%g4U&_wqYu=6)Z)*UP`>ah`L|%T2JQMu$|h5xi{a%V`@dxm~Ep)d)>Js3-Y_mEv;72_ZRAk_Dm*pVR?>! z@MnXU(W3=WrvZHF(!`Gy{R#EYEA(ismZjo58Zcd7y$=C;xDTPaLk?iPL;lw80QbM$ zg*MQiD6pNj+Oidm4)Da(2wE@}d;x6OUI!IV29Xx>WMvK<)WaM&Lt7u<)ii|K&q)&P z(e;p{Oko4{&_-{E-TdEgUFg+`Q$&9ww%1k3&<4u%y$_`t? zXTm?MajleLdni-J+fjz`cB?wOdA)i;^exl^6Lu@CRd&$^+EwxZ)I%Pi#Ns;{0aztB zKt1FJ%Jn_UaDA`jB#1>$64j`jfBZ3t=2ggl&pL>=Uu|2?M;uC`i|}kWfHxKzsP5h% z7Vq9Dc?IeruTbSH03qfpD5~1UohSIxDT$J^4^P!mlp$96 z4?ryb16EGm#kX#-p?L)U0U#U?cZXGc24u)*{Y{uc|?TeZv|Q zs(%V#@t-nw@-7}0YEHvG$p6f!Tpc#(^PiAc`~@iwNfzw|_Hk0T2Uu)R^&bQq9pFEx z^aXuJUsSO^kYTJ(X#@4p#^=UQ`MVn(=#^(-qQ4oY3ZXauuJ{zReS-*8To<|i~jwN z#eN|6NT3I`%+)3XUI1qY;bPb~P;v-t4>^QV53#7XzpV%D9&Jg=o4}qN2v>HoP;m&v zB8O1wAr|#k`Fl`ZM>kS3Lav_|!Wnuchd?ZH2&EokQSY_JgH|>2B`#)?SEP^CR&fZ# zB8O1wAr|!-Lw`4Iq)LC{O=KFY1)9?t={GPeyTxW00H&9`*J;W;Y0IG$0 zqXRtXsut5p!ZaBRzdpuI#Wm0dat)q&R-^ZC0DaL{p7&vJ7a;WLHO-gFaMooFoOOZr zQb4BS6(B@jp?vSr7kuyAm+DphdOnl>+-E7UWP!D+o*~-BdWK3p#G>B5MS4|_uQS@f zRdUm|bL**U7a|sG7vh$oiOokyk^vSzL|yxx6XnsOcPR)JnbvJuN8HN3ECEvkP*#+%R=rGID_ zWhy-oqHI#mey*EuOj}Qr>vo)<_m0@bdoDGmBWBMRHU?(vv-R=2IC*A3JC}kC4EM{_ zSNVs&pnuBvJ<2eCubS^ci1WSDuFwO!syIJjG0v}A^P>$|^S|F=R^>7xj&A)2<|_b4 z3^7yXlmIm?%qg*G+YkPr;duIeSyR!En92I;7!+VJ2DR+3AH02BGIhvoEcAMmny|8} z&%C5jD)kx;GSI`^>dLy;XannBS9z}BWusS;lCE;j8R_DqIvap}!?OVg!<~5VUu)>9 z9C_C_e5je~tTXE2S!ZRwQqecaSDFU#fLZ^T)1~uQi1#3_JJh{V=12xC=19JL*^C=F zTF~uJRtcX6hFYrfFr&|yhq;gK82+X2C363yTwl$Cnt#e%{OAkj;#cLc2N~wDFI<*M zTvjyD%(mAPXRI4G9>rE%O(&j}%{9lH+-rwe*QT(;`h6x@b+V_XL$Z;$GvMZxpspVP zdRRYT$mT?z(4myfxYbqkEg;@jmD?ZN!`%K?`^5A3wWXwQN-xnjl3)$7k#~G|-*)uc z(JlfTxE1nH#k}Kfv?xtXk>7Ms8Q5_B!6z)LM?c!c3q7AyM^%j_VFPL`Df8vx*kit2 z>kfUn=O21>PlP->m<9iUV?Fxvq&!3FI(fNxUs5J$vr{(RAhvEudo~0aV6(?S?&$B~ zypxwU?KWJ->KDKnv~~V{d62I*_53FHAqsjMvcvk__|?aHH2k}a)z5+RG)fr^ffmY? zzM#*)`+|DtOOHu?d3Jya-FI2~HwE?$a+-DHCpwtWHACc{@Jz@jqtrtz>fM~zm)Cx6 zPCJ=^9tbBuj7KR$J(LB6bmRV?&FR27Qg13?m1BT}hcl;Qeb zb?y*^cDx`0%A*xg+`OT2@xvVrY^%%WGh$QSu%cmtugvDi?J z1wF(nZJ=GWp~Q;50rqmo^}Os8qaS<9Ga}oHjbSb+=lyFk=(iQF!oT&vqh_~S&y8+o zK<#B`VRy$O6Ezl${EkJth@CheVqYE1>7PC2KXeLQhEm4EP!Ho_&1RJI`nxmff^#zO z>IOIinE?Jx*po@yBsd7WJE1nT$`=5mFUq`^*f-33d8XffewuwG3obxR3xtDXjM!4G zUEHkUD{^qQj4j1Q)lucQKrH6BNN&B0N9+7UGCRwE{Fw1N>};D|eD$i2B+N>3rqM(7 zSQbkw1Ef606QGciz?&0D8u+J$`)^KM~BpLU!VD{XA4$2z+|U7rB~J53#7Xw!)Rpy=_VC@7qXhcM}y?Lo9MNrJlfo zp6(V`+Pc0Qxn3f_g*-U-rQ~XeMXsjQLoDiD-Rw$Z^nA&q;ZDMC&UkGVS3@jvHKiV6 zQ7?3pE4^GwNujCaVA=3*RB|=MB3D!DAr|#g=ekldBZ5>aqP;#=THx=kWS6c6=T)dGfu_xus!5?L+e4_fa~38YkiIQ7D9Ky zo`3LD{?CbSbj4mc&j2<$?r>D?hawjDLzVj^sE7L`PC5_y9j`8QKukyZZEdaxb={uw zIksJ>s}qs!ZM9R`#rDvy5{t4hz$&>Kn9xG5Hig#kmN(4kw_$R=iiUr{t)X}LnNv`E z-ab><7*qh*Wf%l`+SJ>NbF&H>yv zpu4xr7+Dg?e)ZeMM}+Iq2+u+>PsT8PW`E=dfBt+DUH{Qb*yx|4&!*k@0kt2K=p1`5 z(ch?f2C91wXczA}sA6Q$H;j>~xF6~P_d7hWIUn_+zQ%X@E`sB-ve8X;rF|RzxKvxy z&3r4t_VNtMRsTT{Y2knH(q{w6L%Mi|Q3vU(HsNSAYV@Jur{`r*Ho zs5gE^f6=$j6V2F{NoIWhAO8@iGxDxScBCP@kZ8u&G}NZ=M#8-gurW2tfEiD=Yt45;XhfKj}b&#n2%AJw-NO) zZ=*8rAnIY>!TW7Yd7R-4@+iBz=tm*kcS&quS@ocFFpZfg&-r$WuxHN$Evq*7i=$)G z{}um*2&h98ywR+REgwwFXMPvwWV-gTW>wd8d4u+s$!Le!V*CnW{u@)rjPK}vnM|Jy z`!is8#b86$?n3kCgA5v+0DF87I#qFtU%e??)oq3)B>iJELj( zhdfi%AJ)oR0lEA_|FfD;`>DY8KMem5MQu;SVr@^Q9?DQJ**}*TrajU8Uwuhjk1K5m zJ+LtY>_#R$*2Gk|5M$8yn1c!{YycK(kN#i%Q0yDl4^?7O53yEZ9}nrg38L)vQZZJ; zPuan<{LFPHHK3_ZGPfZqsmBft{lN`;HlQ2(4H0(zR=6;q#-I7WmT-Q$)-ciEw(A{L zcc9S*-hr+dUdpfCiJ-mh(*<_OVQc29Ddq-`B52!wa_uwnuqB(+x|o-D?n=M;W(!|N zLOu%BooZ+h+f(J)K^g3|S^5@p({&-#(^*VSAWsXb?Q}YmisyL`Qi~uInmul?>ZMnbJSRqJJF& zOZonG?zFvy{ALEh`4aT+|Lo#8quuOZMSN5Tcbd^g#!yBt)Ky`zJ;YvdDFy!PLJu{R zdj00W8C(Sx+e0jU0PVeWpgljxJK7`X>adOarF_{P2ikt=GVyKonr+DH7!-3&i3@G$ z1aT0+j-98Yl40LarnHN`pk3wNFVw?5*PY9X_|_^tdUr9zX+Ssy;_|%JP(W@&%5Hb3(j&rCZDgsx(=}8A!nhoHUj#BwGo1H?(n!& zXIj@OUCswkLvVZH9lqeaJ$(@%Ww;hl>S2FJfS!^cp^Y%$NBgcn;1371q-C?^JQ=pp zn*CAhDNpO#k_M#3iLt`{RV4>QUyy@s*`im~t2mQ>H!v1@6yo>yZFH(0EX}0r5+HsL zHbNJgsq_$wdLe){o{~*9rSeRXCf!O^V;!-bpvL;M1A0}vqjP9KUt`f<|Cu&yrke{r z-E4zqzOT&fy3ECoP4;r3Ur(OYoGkk+#<|4DMa8YKJ;C1;SP*Ibjz#|vTc@!L-Ba(0 zW=oX5=v#3+8x`Ne_KWcQNAl7UV zd532>8q?(=a!;w}yx(Fi0LEC0QV;uqdK_XXt9^{A*)@3g_IlzeMXL>?v@;^9ynvOc& z1Px-mNf`^m_AnNtoQKdZ&O@qs5`;KUD(#{k+Ev!z#`drVw=%~x_7`(Z+c_WS?_WC8 z7I)`}vF}}A$V{A$^OU7-Pzx5$Pysl4WgYhFeI=i>(T(z3a-B00&PFNcan!?k{A#2r z|M?-4jQCQc2&Y4ieWeZTFWON0f>`wB_{}12GS`}JERw@}o35ysIHN2ykMa6Oe)Ld^T+@u*Y=rxqgxBjqt?Ec$=D_{NSzniss>VHN zA8+~orNT2;?xkXTxR>ho;0NTjPo=trGNvB^@$C34JN`xIHM#s+_G4bZ+H88E9X~Yq z6S?UGYh?gu1GiV5^#dWE^?NtmkM|nzJaCHZ27-DSaIYvJ*o)hhKMZV5R}dV(Ot>55 zc8mr(gmuvLTy|WH{UTVySzqcGc%qJ*=Jft!!p8c3#*7_IZ^t8=Xzs?G5M#d-?nAWQ z=E|MUJP!O2u##XuX4lGRWura0-klGD-qq4>zTOIU-Ro^-+`FZL9&smyjp;7USat1x zD>XM(2QF!GT-X?+J(XEjb>Ji**kcAGePPdLiq>I% z{br7)Pgfb=jaqHY%sMXQ70c(7Kl)h<8&+{0nd72--l2UVxme~Qu=b`SX|SG`7#>zp>}8y6mOjVV-_vy=K8#z=Gl4JFM8P8*}*|^9bp2 zU*1`EFKEK*H_YWJb=r}Q`u4(xcY%w_2KtOPl)m6tp)bCRa`}~ug@m5;71+i@8?km1 zbGcWiJhITKsj%xc2*B=dn4cRsq6Jw|4?&ob+rl2ek9-Vv88%!-7h^}ezOVf@k74jqv6h;GQT6Xhxr|? ziyKre@)$ttziUU(XR8j2*{#rqRYev9Xs`3W1p8*&VI#YB$i1qZ^`(!8`4PmrH($lP z-aO~s&q58iI@85Ev8~-u7=zcm|Hlea+$mkeZra!nhxs|5KfbzzwD?Evt2vJMW1R=* zLcFAe?7;hAV8eY>Q}tMZ5XVZ1MLopklYCx(=qf@3O5G4}2Ko3bSk6V@NOiEIe{FCH82sI~!Mw4uae zdx(v+DBykkj*!no$BOoH;Jodf_qn{g#}SfhmmvJh@^NAZYjXMdwEe`n#Srm)lN&<5 zdi?^vv|<}+x4DzRj`V2Coc@=~U*6qDeieoZ?7+s2)&7Cuj^LjXi@qRs>(_j)pRu0= zTp1+V8|TtoD-Ln)pS{5Ph55%8uPO%H#c;Rg;xx;S3+><@u}g?4S+Iv!lGDh`!(* zMH|SAbK=S?;x|R^-Q_^;d=)oEpMjg6Sy;r!)civ>_m}^fc!(#e_WeK)_x+T4{LwDv z@mJ;n5_W;RY+ZeaoBFy@-33haW5irtb}^xb?`h>m&(?!D7bp&!qpRko&>(VCGm~B1 zIOZO?zFg*so)BTI;&f;iIh~Tfp>KJeTJA`ny?Lye{k696Z$Z0yDn5vPLq4d~LoDi*E^?%^TI!I!+479sTzKY6J}9uj z2bFq=MZHlA9O;+ymSlK<k+!(+N}kqo6h6<0*H-aC zw2ORDsfSq9tDWo!=V5$Fn+K93rj1kcLBt{-{592)TJ5Fe*cWH1K7CK2;$YrO<=c2S*my=+Cbi@)I%)lz09pwHDLEJ>Tdo(rm9o3 zq4f2YKgIKH9o|6A8v%^G(cE2^Ux=Pd2Kx3Ab{7tT{c~kKC9r|@l)g9B<(IE7B=5ZY z%I_TR8~oYgg=YDU*1-MbyE|@`KD#*QgJ$aI0Lu2P5#u}o@d|6cx-@Ub9AE6@1-(y`Bhx1eY=mDUHl%td_g_&(cHD^-*j^3% zSlvhacygaA^4G{1fsJSc^(qzZp?}z(YHti=xHqQap`eI7RJqrNSlnydd$Woc+$*Pa zqK~+nF>sKP`n)6P;d#fv=EZ?Np~tBEn1RBVR!?U!UB_dAVa<=xkn`c99|`aFu*{L# znxM$z^lZ!iq8~9IHnM(yl#OIrv zQ16Fw?L8jujb+{{;cE;`AV0PIr;JS0VXFTObOir1Djo$sBac$q06ny!Y!B45u)QWH z$MN7EOKH$3nHQ%A)bw7KH;lLIxs=vgFJn+WBOxFB^kIC^=n^{W8N}S6z5bDAj5RCZ zZ^|!`{R8AVk3!&4O1_2TjC?E4F^}tz8q%UW#3(>m+{T`jeC*5P$9mIGqa~-CGhZ8O zMs(vBLALa7xvrZ7cTxJU>c*EHYeH?8$aUS^IohhV1@;5i7Di@yd{^-$a@|>f}D z!7Gn9AOD1$Au?t(5AG@5Kbpov9cswEa=D*e(9)i{f63%CYuAuWmMPw=MXemz!P{y4 z-P?O)&k2Z8fPeGh|66X9#r3}4BYQ_kUNH~G`I}W1H=g>0B#o7O$3e@xc%uH~)_#rcS5@+#rD`Z*ZY?Qsg*KkB8j!-brx2$(Bw!DWB1z zSvu_epd?=VjRQUEDBs-$S=vmK&Un$0CUoC5xkjG`u?HnL#jzjv8#l$VLT-92CktwS zd(!9iSBh^dAzj@b`i$*OnZ~%0r6-L|mwL%?w^WHm8;HH!=p=90wvy`m_=;~j?T96d z7;=_hia$gzzxNUMt%7Hpvq?S9^0e?uI&}@m0Nl6ImQBsb;&uDDQ_~FDkAw+2tSXN2 z#xd^H(|e^Dzv*z6r1F$AC9oGAxi&}me0iJ;JKg-S#yAo3R%ppJHReRH=)G0b+Ig;K z`$OPc;9ok(Ha*;+37#`oQ&uVO{%1k1Y~>kx)Wb9M%9vD`Y!;stVM~kR<+IGo`7KvA*uZlwb)y+) zkWaWkQB@?kCp;p{{>)1i=Idnmi%!Fa<- zhIA2;b9M@hA54qf^p+l-b3$UL!9Pl=hgj58`hs@Rmn-eEc$bTM^xv@m{DbGFY7g|V zy_Z&um-%SZ(XFHnTz4wxPPBn@r*fVYV+Hf1vtJfp-%OioH<32dVNIyCD|`XF*@1c7 zC+!nyJaw`7-sT3uJ*EBy{9^7W(!xfbLrG~5cZWmrIJfwhw274e?%4zM;S6{tx7d7% zEN>?7C>8}@ zbl8LJmB#~`YEvU0IRVB90aAEjk}9COb#? z(=-0^y)T4#qLL$G-;g6}&$`2lZ#AHGg42XAu~6sYaa;{=_^<&Djsz|V4UUA^jfx|p z4d95G7Q6U^r8kLI&sjom3_On!M;<`UFdu3$Uaoh$uQg*O@1F2JYkX*z zN8D>_Pyd;;0cuk|7J7?3ny9cirifi(Y)@kkKhb!^!rBak^I;95hm^b#vB(>hdWc26 zK_BgCl!+T@Wac2SX}}Scyb-a;8!bQE(fH3ktH@m3oLpy(KN}>G-e+(iqR%g6slmspgF!MBeD-wTV2O=0|h5 z{Pv5M=`-!aeaOuEo#^*Y@;^8SzJ*SeLx^5NM_OVDu?J|c5Nh=OG#f&a#OEoD4n zKCEBrZhpe^b=~ODlMo96z3_R)j8{G2Psck`qsmnA-uHns?@R7I;cEsqrap%!Nj-SS zJMDkKw@hkG>s*^E^m?x|W#9Kd;l4W>(C33dhV7M@vfULA_{_5n=(yE0gkGZv&$=pm=OaB(Luir+_UO1lcXv36})gA4ok!{~japLJ(pw}%r^aX++y+^_Yy^_3ZY z&joI;^-hDngqkqs`kYs07Z_;1GcAJ8vZY-z>*|uM**mOQ^TDx@px&%nc`Plbn`Ye6 z1sdH2^9i<>Q7e}<2^gtyZe6HJiOUgKRx5{9_J;E%?lok)vpjQ`3wuDilS=pnkli~o zTl6;@>UllsU&N=qyGLf8n=AT}Nvv2pUB@4kIzUVZ_TRvUZ>}So@0Z6XoqR?7N6Q=r zv%`&<9j5RD2NHLq4eF5ZE{55K0?}{oMxYp$+B! z7RqpcOUYAEhCHRj(vF|{>j0UzCrvz$`5|WPFmdPPe+S5eR2l2bfZE^68sTUcYlJKR zgV-Ma2UY(l5aK^d`Ts>M{(rB(cZaPQZTi7=iLg7pzdqBc?ZNLq)T1{~K+F=bvxdUA zf5VQCxv59(5@j5djnZKb2krP1XKh-{BsL{RPt_h`u|4HJ9s2kCJ{{`)zE6jGxKF3@ z8HDJwaxW0|a4%4~pNBHs&r|X@lp%jpay678S4&pxH{!V9eq$@cdj~hWPSmVkeoegh zX}}?l*;*W)vS6$xpve~v`kV$i@^W{!IlSS`6wUJ)7ev11ohC&p?k8*j_uINLiPy98 zq(gJ%+7{Qvzjh_@j1x_$?`yff$6Sf+hbQnQ$D7bZ;B@HAERZ$nmB1~nJ?YvciA{$! zoU%Ri<@ff`F1A;6B#9S5EwNG$X(OdXM`)c%3wm+5%!@O%>2H}|8# zHgfHg1bdJwJuv*c9=3;iyNeR|RR=$MAW~vephk# zIb%h=f@?&7moL(1-K<&%hWs5wEbR6QJ>QYeZ1$K|fmVCFlV*ndg`W3FSN5vJj;>jx zO=qu@`EDxG4cSRYM;e@^P5=DwK2Fs%OI6GW{ll2ieit82>7}Eze|n^N$1kqCt7;GR zu)WH8cJvQ_ecE=Rw6QhYkQsS7(pDb&bY25F4;{)eSJ_1@+TGsIl5QTTLt?hriheAF zwbb+qGn&|0m-IBU7j_F^uiVP$o#ykda@x;Yp1mB|pb4A#LWgYDl+)Z)dDm#7lP}!w z{-81SDx+mBU`~XwpW^7tMy%~fFSZIKUZt-^{PbMsrmQMb+ouTAiM`MY{0^L?GfKktGwa*oyn+k13kJ*)d5i4WV_iu%5k-}HpNrtIji zB)%gefKDKCjvWs*+zR(4@Hf2zsO5j>9wvh<-OZk^>Buy@-O7b8tIWgMyPHll`(eK3 zb;JE)Ew$3B6I(REo(`BXSTp=DCid>u8Aq$^qJL<2TS)@%va1#Svam$<7vix>8TM@o z$o6I=am`?NYH$DFx0L|7d=%dd_6@%oIClCD40gK zmHS{RrE0r~MLn}YX7uY{CUo{1`Cc8LWzE(-(5gzd-9(4MnQYWE-?f4{jMA>^-*qFk z{%^iA+)&EAwRNh#r>&><{{r`eanUPXsPg6iY~Z*wIT1n~n#*ry2IN(1*D`@Gbq=L< zUj4Ubfd1atp2jZ}Tq4~L&J=bFL(NpY5uYXUM$0i*$U=wqbXCuJLa!XwYf6rYddLy) zzR2VwysJs~3Rwdn8`dRC8|X9Ic(T=e%CN3xDjtgMArDn@PV5_U&R>u( zVD}k4`iFy@Pp89OkC6U(yu*1t8rDqm(3x=OaYd(neCwJ6v`%UZ5r^Bq&xwuycz}O+ zw4dJmw?!5DlC(@$%{jpca?X{LU>$bp6$$2Acb-1qZAD{hi8Ovai=1j1QP z1vf>Xk(+kuaF*YOy4MptWUQ}ILPM7Ca+VkTy$5PTHy3u@;=NQn6rftjLnp7i!~N46 z)2!lT@huF68iHk`A@4#~V>R&;H@bTmIlmJ$m=`6yYE8 z3gw*|Y!C0$wC|+HGXk`!%Nm&LKsY?Yl#SbPjL(`~i%yM~|Aqbu2C5qC_>8c|`rQ;8 z8apdXL&#Av?=H7(2X%dI=;^o(nlp+26Z7tZ#vW`>jzQIV&s^GZlD4qnp50ibhrXcR z2*Bo(Q<^H1T0(DbYg-lnMZ3ssvf0cRy3wr;H zx1sCTxDx)~o#4{p`f8pGSme5%2{v@!6(6$ty^DCSDuAylvDhABm3jcxLcN8PY-mTV zAmZlGNc8P2ZLa3Oposjpx{e)rvUL+R*O7D6pH0TF@b0!m$DoYzdU9{#Xx(@U^q*IoMFS^xF0-faQsEl}VdNYmsQFw8xfmXkzjI{_e%Js*^?U$| zI3HN9T*{{`SWHb?-w^L)^a2A`?Xi?U8BhY_a9O;Q;l(Cw_V;4mYG4WdlK+QT3xv%x zWv`PT@JtIEdSsB?QyMT=pOx-<2lvH+i-RxS^XsU5#(tpBD=VIGr)Xz-s3~x4 z)SFXB#htNl$ekBz-Q~8mJJQP~y@ej;iP64M!;@_~(jPneiEp(F@M#ry1~78x#7jH* zqU{yLbghrj8{yQFEvyAOgWFdSmqSg(`1NyZq2k!+3vz6;rsttXQZUUflmDm1RRus5cxXN^8%J!>UT#{MEteivHAUmd(eqCUy_c@D8wVbLyPo!1rc z^NXzM>cetPGZFqNQ)P@j!BUXoTqRG&l#axxFo4o;8q+D(oiOn+xY(lz02EJ-pl3`(!4c;IW-l9F*98 z%^N^oh)iypv!BejfLI0?NrtmRla8eF$NRRE@m=8=fv~5)D;qVxhD3dMX=;MH?}jFK~@XAf0M9L5xecT{djQmjHg6^OQ>H-9 zTf>&o{K9|$+Rh$g(tu6aW6Cx@?Z&eDWo^u|vjbYG!$` z-V>~8(Y-e$G*@zsGjr|O*t2!%*M}cS$0u@KayG|~b+U-%p*EiM*ckaf=fHYMwdM!A zxaRNf7R%qlKKAT&l27LVCteYp$a`#_M)pA60`$4{P)GLDB%aqBH=TrbZ!h{whd`{r zGM=xBj3xO-fwpXJvqYZy_bjqClL%~^SO;brk;wmvnnNBYb`V(qL5|GNKc4?^ z&m;y>odh;$NIey|N4v=FC$);@O%uFn$EU!%VX(4`w3$uQWU~BIV@*S+lVVIuo84u% z-e-`icdayq%T9wCA*?+l5NkgP1h`LPrRSV_wQ^(0~YYwfNIivkifd~{kt^TNo523 zi#BfltVi)K_=p5)cSBZf6}QK+LT<0rLoDh=7}?Oy9rfu>3yIy#4Ae0Iz+w!b-o`cj z@{%%5izBVXd(eM7{NtTB@OqqU4*gdrF7B|E3X3)no9;S;$1KdD@$rV@`93{Zq2}VC zh+N!y*Eqg;M>f<0|0%wir+kCTKWq>E)B9SFZh2xzwbP`}ds2+q&g%y&*N+aS!!G`J zwi~|bu&_&&3;G9Bt@$8>eoTQl&Dt3I%55e81THYB6uzX@%4GHOT2}H~KLUF;JSpC_ znYCuI&-;QagJypV46{5e-nE&ar@WVdzTmxt!&^Q0jRv07XpM|FO^ANr-zt2Ochx5=QAE+hyIFJtAB>OgIuNhmUAHipR4WzEq z;A}jA#~v_;JCBy+yNQ)%;6}NpG}h+za6#-nQVXkv++PshMrloo5v z_!7urWn3t~nbB~^WZGaozW#$AJsu+YTfaCXm0cWz-}yAkkWY7=7R%eSAX=RQ&m4sK zT`Fb5XOJoRK4OvYKTM3}?I6yOK2^@A<6$0G$`Fe(Rg4FO7<>3SCYJZ>9zdO<<(-R( z2h3D5#G*_U#{?nHb@NBX@;yge(GHhO#CtGpyOAoMgZ^PWC)h8MzdJOVc$CO*%YUeY zYR*PIoU@hx02~AS2ee+8#@)24$++XwgpHg|W-5M;SmftFcc=46pXKzir=FOb+D@y> zCa*~6W#LPy(P|wrrojmotp1fu{=rqArv|9jOdm&;4Ph5-d|q0@OSiuwiK%i9OXz8& z;`?Y9`M#3JV|&QsW77+G&tZnN72f{<;mlO19~zs-Uyd}S4;RR}csi_`_D{LQkL4Yp zc6}iCG3YfN<)P-?AVl7+;_;w|Jl+fLwAf8}LTYaR_rAcMgO%BS-tEIhlHeivZ$Dpm z72ii2$oG|YK_u)}bw10Ta}Us=rzGF^n*wKW6+9mGkjKATaffeoYesL!0RIKyK)45< zIJ1VIYu1cLKZ3n65DtJl%PJlZddTBdXBI&Z&nzmrJz|mDEBDaQ2JWFL_vFwQ+>@(k z&ADH>KV9-!e)}QiaQ0GJPXxf2M|i=7Vz}44kZwP9TX2^wIRE1Pw3I*DxsV#~0G`6{4{e~Hig$w^^6tc)*AJWe z{7pQM-4pXcvx)Ut!_8|B>s-A@8YllHZ1|3KR`YYfB0v9Zw3Ih1DW=`Hd=DnhgZ*v= zuLU(Np^*$MKSN7c|vyIqAhyg?mwW2>u z(#3Zfod@RZccbVh(pv=Xz zV_$8d7Yq0D)6b9NrXxzI?qhw?w|-HkOjk3EhvzJ&%?x0^2k>yXkG*2h74Cca0@<`B zN?=1h+pqz_=lRvv7fHJlg9SFMQEPUt+j*|@{3IFIL++o4fu3gYX0qU=h2~yk8MKGzxK_}vg+L%NUKKnnnf2J3EB;DKc?E-Ml9}an?Zf4Pq*%o zIo~DcOoOu@xv_4%`H={+Xj@m|AJ*zo@@}+&yxSw~ZRHQ0$AM3_uNA%|>MUl9PkgJa zS+B1-*tJ~vGQ#FKTdb|kUwwKVILvj8@MQ||I&6QT8~@xffdn+@A@rug{s$Rk%MXSnkTH!x z1`g)Heyz3cc;3!_CAAtR@6-8Dv0)Qk$MZHnSJ4%Ntp&D4hCMrXU>J9GUI{g{90WFS zd|kHmf0KE=wcezEsE_cE&VxMkFDCQX4K$?igSWtv94n@GZ#1v&*qpGvt)zdD$6EYua#?~g6X0pxt5wzZot+oKEP)_okvX`x(omA$9uCm|L);i@63aJ zNtpj&T<&HyQQ1WsXji$WRvvU6z zWw`&V#A17ht;ne6zmob;ok8+^NjP_AgO^_5M+WtwDJGI*cRk?1Jcd=nnY(_p+=Pg6 z>9faL#fi}da$>(N$GFGRA0(<&=E{j4Qb!dZ2eVojA2&XKj32sgK>H4qxxI!%UD^(d zDtV>99xeNC-o<*PX`gIKaJC_xRP{l;R|_Er)9IT(_{^7#KG&7!h9lwLyQ*e37{Qv^ z=MFdE?js)r2HGqlXg9T12D@D9!cWb<9k{hcKEW}7Y$BKHV_injWeBg^c*PQ22bL z&{~B>Ul7Y?TGN?3wQ0-ul8bN8GE(tmY!7*|QV+4Hw1R#9{xGCrw=7-TPv#*Cx`9ytueaZh8|JAnr9NB_xCp2Rd z^EIA+aRhCo!5!$ai4~d^m*;2(S;dNXBOA^)P3wF}Gn3?LT9ieKcLUEn?OV2%`_H;W znvRnHf=dG@?lnK`2qF7WfEF*JI! zywf@=Plw%x`iO7W$I$Lm`~@~1#zmR84E@8rWg~;_c>AH3$}xvfb+BAPUg!Cy!nF+n(gc>uz0q+e@(TJy}a98 zVCUz;Kd-u)kJ3%2(@J~=b`I=C+fMz#J#V$3|MLzL*ftwo*zG|-c>>x}OQVr}L6;c-xygO@a9Zd4V@IJ#>A^r*Dm>-{L)m zUf*Fx%-{DVny~&U#Az?uQ54AI)jg#a*G;xG3 z8=rBBm&6^Sv${7I`|+)k?3ju>Lwm@bRs0+pO!2JRU9(5MXH z*dXj)WXx*s*$4afE64#G1L5Bgr`D`TKCH8Ut{_%*jKy;s?bwnP$L-{&suq(F0{LuCXi^&Wh_A(+`g_q<=X^Dn5-^qilJsUpGPKc^P%38*9g6Z za7O9)s+X0wUv8&s_C<^L0Oz4ec~7{m#(>&I$-Un2j5_RI(gR-5%Ya72%@Wuiur9HW zc)(xp(WOmJfDC-@J_GWtzgxktMHtdyec?&`Zj)6KHsvH&I3+AXedAcumh;ye6&aM!8vti$P+vUDIvaTncbYz9F zkq`53eo;4Z#&vx&kO4Li_LPP_{!&>G6+lOt$hgWZh-W`-rO#*f4}kM25Pycw&4G7K z$@374JTKj_h&M{xNc=}N7j_4EHc|PESoB$w@{TY2XA%vm40orKS=N*$Tq zL|9w6MbbX2T}69=8yuLo(+?i{z>*%biWf4k^!loL9XKvnuVaSwXFlJ`nI3;9|FxY8 z%~?rYV}54qnLwSQy#i|!8O9op_u=10>T50=?hyTeT^Htct08}S`hH-$O}m9J4Ucz( z9Q%edRzGAkbyMr8mtpRuh&I5 zzxKZh{^(N-z4Rx1`ylLj#*LNEu&tWl9!AfN9uVi~nS^HE$~7gpJxON3mnpeYlV5IL&#({sP;ez>{^? zystc0c_eW0!?vOy>DuF1XE$9wB6DA0+4=y{k35i#dikQVkGHkvm!Y%hN2cCD=F-)S zZd?45Bwmr{EN{$nV>{oQ(Mw@pi1!3}j`nPcBhwr#tbBDKh@S2u^GoILF=0J}H&oue z97MPDDi;3DgT1>uw>Od*mf`f$7>JF)xGY+t#~x*@C1bUFQ0@&}4TMX!)M1UESCF}k36E9m?hw8SSEXJVaOgpwP@?SWQX-wazj1cWLnBmD*I{)C$8kx~< zX7GHWy{74|EcT8Cy+2l;Zqb&$9EZ4+l5?USa#N)qzE`N{aKnPOsB1)Du9n!N$xshX z$xQ)^oYOGJg06XK0(pPs{K9iB)I1dQkcXOIdd_du&!<%%C3k7pr~`YNt5Y>@-CR1| z*;w>Vv)op74-KGNcn>Yg*oM~FTGLni@`c`^QcLFUTgZgjIB5vDY z1?`e@QLMv!mbtR173SQhOE5J#3h^drFd6p7oXbpk7%wMrapOdLcu(Z~3tO)Lv7Ee0 zn;^z?elXN9I%>)XM(!lLVv^)D3bA0}Kce`bf4(Ab5@l>86=IBUt@`piBR`SX110Y+ zfU{ejcZBnbPp^mri#zE%wfxFiaqPV8X6B2JTNAx$Vv#F{d z*dF#HZB;mT0KJVK^1RP9*ppM*Kwr>?$;5E}sq!8%f*d#~n*`_YV-H91@_qM6pS5tV z9)#IpkgHSS3(C-!hI6C%T<;n(X`MW$H4*Xv{pc6Y2Q{l9Unj!ZJWw1IWvm`Qz~cBl z9umd1S6(7MUTMN^bhxFeJ+y)CEe{Xp_cvT3HlJh+zDpF;T~hc5YQjI|xF8nCrG2v~ z-e~y|(lR7T*uXkn8$84LhJ#1QtRu;yZ(W9(GYhS7-lE3=(hBaMpwHn0EmY%z?cul_ z>)}v!>R31}VZSseYh8Z>Ti3^_s&scZn)L0nnE%>2tY>YfMe+ADcaWWb$bUsRL^8=O@8zvv(C|0=m8jsbGXzEd-~PqPK&>wo8#{0BHOuk=iQWLpX3fQ1+Z z=(UM+U<($c@&@x45MviuAAqo3jJ;}q0d3&^f|A1`7C9`Q6Wn{-oE9&a>$M56C#O0S z2zoevDvk|cvzdF?< zluby!1hPsx6nHoGExe*Gi#cDzCx7WiFGhw4yJ0(R+1;Xpe9+Bus-@#A^im)<(6i9J zyr8U%9vCant)J-7i0yiHhaY|1jc#|5YqKs;BcrR{UA{Fpl6p@F5Pj>m*N%OtuHlV~ zBB@6Tl{OAIs`uo;7u=I`xLwSRb@J);nSY7-e)9%1HYEB9w|TEcFO8IEaKmCP*vvr> zc%F7GI((Dl&Rs^Bv3bGK+%r3fuA3`k4>Q;6v->@w`GBBcS~OCwCyUDrS-D9B|EC~` z`mdfZe3=6O`1q`JK5o~S@jyk$ly&RQ6TfJCDa7+!BtzcxQYt_948FcO+#RQ*`&cXsV_l_A|-erU4 zThYw~!H#_MCcrc;yi;u*m-#Ky#~*6iPsp=sXzw0K78 zF#iR&*rr)hl>xN@*NeFh^}6b;TlYXFip85KxA95FUA%SFQ5Tp|!#f zi1)9>1~>L*;uC(kM3>Um^7{>)3im4Co#U;pttVOf+M+#8D_`b!{tE9o^d;E}HJY(+ zVg0PwhRav@j|-1T@y#^Rk1pZ1D(;MSkvl8DBgEo&q}=O88SeEu(jwlcTQzAEnj+fE zZV7b--Byt9q&>ZVT<+)1g0ohTf1Z?mBlM34i-lg^K2vtz&y#!ltfZ|kww7ZMZo%@j zo%jrp8Rp1uH3puWitB=5q2`Wyc%Y^0Tdjh;}ECL37h``YT&F+T3T6(tMhJ*B8Q2JG?WW4v;X4ei=a zoA(+-z-@vU?NXm3#^AF3D#;ro9!Ld1({3xqXvZ1Z2s+ z1q0_)>{lQbWB-*~?D&=E|B%6* zF3`g@S8~rN-qY*=@mVoZJh!f}MpCY?usvK~seAz$`f_8ZhT7crCPrOqiSau^Jy}&o z5WV-e7in`G{!suv*~X7~S{hg7dJd)y&Yvd$g>}w9Y~W9`D*syp=&u*&3ED^>`hz(x zF|Km%HGtNSJx35*FyuSb-RwkjR`n-MbEJ(E(M~KZG?cb!(Vy5wy%RRh_H<__oh|9Y z$WP=-d-y(}y(3HNvQ2QmDcb)T8Ky1&@zn*uUEW#HK41Pv+O;kfdKc$8s`LS-tZH4Bqj}W^7;nolvmUizBY5H}mCc1i=c-Qs@)n_Ml z&bC`0KSNV{$+tknGPqOS^| zJZ4%}b!`iE*LTZ#sO1tTwj8qjj{7>DzVGl|d`CVTJlMpCW>pJnC(~7JAeIYQto3p7 zv{_ZR*^}t`UWsiB9;MsBwmjm-@yPtD3pLfpFP;I#D-P7I z3JmW{54}1oo>7}lH`$hU`c`{tH6nze-MwSd`^nvY>XSENF)glCvKvvW9)37L~`o z?WNI)GekdHm(^#c>*`dl_TEdUB*7X4z-^b>vE`L5DhD^(OR2s52HUQ6U{xP4@@2KsoUw}J-$~H(l&Dg0wyFh+) zAEKK`h26+pBlhpnAlTFNA>9sl6n1++9{*{Jg1EtESF-N^k@ePbSuI`IFoH;jgouiO zfG7xvK?r+Bu*Fsc6;TiqyAwwVDLWA*#l#LkVX(WqkFCe<<1yd0W}f%`_CDXg^SiED zYi93z-*e5ZS!+vcF{iy38L`*%0(c*&8QbQ%jJHjLJeqmOLiz2-`gC_oh?xMN=l3;$ zT%rLyd%h8!d`!NRX|T3^!@~HD_~~#5UB=i9>Vvrm!$9jM5${vo1vd_2iuQYj@Pr4` zN%yYsZa{}|eWBLnm6lv*TUBzZYA50Ifc22Wes)X#`;8ST7$n!2{d0|2@X#>6c6K~D zeXpIs#SMgbbd_E75ACk6AHrQP#S^PA*n@(`0dN)=HX)4PjL9SqFZCAOF_7bO`M?nF z7nMo${UU^aW239F;SnL+>PHfJVBSk`$3a`$sbT!!^e9p^SnknAMw@DULA&V7a*GhY z=X4agzo@O?_8$hdQB`vQFddu&jSXl-8yYUOAvX}>J05=MOjcRTXViJDsdoO*F3jJt z;4nUEN@ueCEfHf2i-)}jmCxuO`mC83X#4NHAP(onw@hG>i|uUO=2D3>N+2f0Tb(2={$iKscBCVdMH4Xl(!)Z8#bC z=CwbqCa&$|*!ss9vC@d%{9becx$<>@@FlE=t=2AZ(XR94-aPE@O{6ayBJB3)Rb8va zab7@+tNp|G5B(e8?QqaV^Qp?I6WhdEbUv&x=l3r-V1I19QoN~He6uU8SFjDPuUa(z zI9?e&EM2Tcv-Hx~_Rzlk7v!$=JZvWH4h(}k63zQ^@9=DTuGm)i+&j#MO>*qU_d&c~ zzYB1N26m&`*|1M%htl?R%c}l|9iF(ZSYb4 zrl&#tq(-yD*if?<6~yrK0Z@-QTk819kn>DkM+{&(SVv5)lzW0naMwtqy8(x~yD~e0pZJFYVk%_7V`ORT|;&i^hqYLd3C&xPiYDlZkL=cB(BE{iLxpj6f(I4R~{A&yU=Vi6B`1ldIWMgv& z;UDJXR_k-*qCUUA;4<%iFOr6yZ7y(;*~Z$~6aZpu%DrU;eDl>zrCDVQf$O{8lm%_t zz}q*^RL*?!7k2xsH)Hcl_EvcOeiv-HjoT$)-vRLuQ~+I}oJ$*eLsezEuM@~)>^A~!Dv++gMXwr>pbX&}N(cgs?jx6Uw9*@4WlspQOwIm1BR9Npu zIlSQN3bMIWuD!z@1KGiT8+mqkF1b8f#<&gzU)0YW?cy^xukno68}*9(o*6I3)}pI3 z8*=jj_dEBBbnuuU><0I!t9`G4i|ax5==YB@bv{hi0~4Cwv|S-?gKc^!b^Bn)H)Xk>C!Wt*410MgK5{v`g7#-k@DL z{rh^5;C6yJP{+;TJBe{~jvcai>w<%%-sZ8w?i^QlcByX`cYP0<^9aP;L5B?X8M2_h z%DnCeN%y((jAb6Ye@P_^`Gxj1>8-xG0yinG3abaTivl{;q}|3t8<1y1oBEzL_J{YZ zYkSv&{k4{4)o{7S91s5$>ez0?VQhD|%@w>b$dZ=%%k!DZa4xRV?0`efuC9NMcCqej zz_)t*?^W3(xInH;(jouVwktLHs9J?22wUS?y>)i zQ}366SsmOjQGa*QXZ-Gtu!FnOrJKp{2&t2k;oL=S1951>S&@hn5-)7TcBrmhhXEJYVVd<2ka0bfHB_JWwp>cm>uwa>ONkJN7r%;swvAIhy@2&I z;3A-w)y3>|?&yZz%DfOC&E57g&_=rf)V zRJQVQsd5#$k!PK!k07Ywb-FZ z3wq7q5o!IuJJ4rSYH7IW^MAQ$7rC0+4bX_S8)EDx5z~5pG|N-k&4T=*ep@G!ruHr9 zKd17A-6gB4vU9z^^7I#j=%7*$(KcX~J}Zj<$}1ZVqzBBP4Gi}iZNPpF{{eMYqG&>0 z7xBA{=nu~*{Rc0uHIUZusV}%aM?ej-n6G@_;3zt$9<%{B@;^BA8F5B%7Nh@Q5d98u z5;(TLGhlywrqp*&HTwO%T#KGd zsmu?(@4Wb|B$QM7l208_INw$g(0WQ>FfmE-+??j&4rIPQv;Hi+LID(1elch5W|XZRGRD0D&7_ zx3Pwcz93iqJkV!+9+|e`+`{aYGGKX_=x^W_Q`TVLVbEau5DzT>qhh92)!ezj{_xI4 zd0#l^WTABRKxsD!;+4IkzVbNdw)CGTu+9cxi(*ISce0qzowPJSEd+A2*UT}i6 z8!!LgMh4hxV%gC@jAfrWyO4MHIY``dM+@#uXHU)l2hIWhf1J4!!pD5xNq!xa&m*d% zmG=JwI>i5vLWM)QwqV+4o!m#KWiG6NC+AmhP}=tGG~u(~E;n{izl`gCrnJ#@sTV?b z)Y0g8w2L}kt=Z9M)a-U``|?vkYw7Zt@*CDU+?x6P+m&w*SxdvVfPMp9x2`tq-s`UX zT%T-OSz<57)~B7VMmwVo)Xor##d|%lq=x!ZPfvh#iCUi{4)wX(F4{o57OT(kT6c!h zvorn0d&Qu?5$n$Jr&;mz-#pNCfSU>Hm&a)*dD5DA8b4d=ycAfgXtX%sP>ZY2vC%G` zW8XQFzz6@%A~8**rc;L2U@MlMG(C6L!gxxt%Pvp|}bE0j+T&d4zgAKJN#{N(f zclflB$FB9D7hlUg?v5)g*wVk!`KQeubk9VolOvZJYVu2%IitSL>C`9-&yiQYg=0G~P|5Kk9{UiSuqGnfPl{YR{1mx}yuKK(Y5xy7? z)Wmqn`#|Hr#pzhZE-k=eGZ_h4l;I)2jR2JGv z{o8*##2H<^%Z+*tq`ys?3IE27gxZReT>?-vys zuo@M2h|Nk*y6Cf9A1s4f;$hDokZPaY={Ao-@t)3ye2khnU+@LveAW6KeMWt*_66q! zeMxLm!EF~EC$2`Z!oSYmkOaPZ1>gGZJSo+azu$0A4{bdgAY(n7DvcpO-2IQlWyE;F zRl3*J>MgK=daL@Q0$$c*B{{V9hggU8s|z~si80-Bktw~ii9r6)5^x5SJ1@9^9XX=KRlq(=QuXh=b`;AD_6ih`i(lN1b+*y?;d1t zqs=RKT`8}$i@Dice~DaeJLl4D(Z^o7VN38x_+0q+vExobWE;0LtR4I zN25#p$l$%CY$J>p$RS?MwYnSnL*4!I+yidX>Iuml2HF5{N^3Vwo&;>edl+Ru4S4wQ zFr_H0QrHd2tHHjvvgQWU6h+sgTyR^jv1a$^3eIol)60K$i8Cta;sB;^vxMJ%nooxr zo)GVlYhh!yKYkNm+B;aeH$V~n^~f`0#$P7#-0g|9lOGqjJNtrI%%NW`=02~h%rtu_ z=4HJ7DSRH~Et@zff7Ny1KYvZJ$5#yw9pVa4N-RscGxAHeVW+Bw@P~{H;s>mOv z&PRs*VLq}|1xftttc~PfOSuliy^JAW61dm-jil2y1@S5yYaRR?FET3FjBF|1* zjYgma;;kvh*9;xNyc#x69X zU3EMc;xL|Tl;dH(?&x{A7cKVyx;AXgHg!GB9}K=uhPFx&cEg+1(|%uojNccGAz9)4 zjJQTG5YKX89}_liYYtyic%RJOk}2Me@t}Xzv2XZZVeDJL?HFDXT9YmZ4T0lLfH?TC zW+S;XsYy@Ym23G_xI1^`eGISp3Tnd)fHvUHfc)OuXXRJe7#;|Azq>_2F0oEwm)CEu zm{#|0@ZSH$jWoAUVE#u-D}3w?lxZ!?6y&-#n625XhbA4|tN;A#YWe1U`Lx>@dG?g) z=FU3x$SNOWT1X#vlV=X8UQR4(a%#ErqouRVqAX=1!H_FJ$;R$<)f?IQZG*L3ksEH$6X{=5j{=3SQ1nimF& z-@*;IrR;b1jfxswtdz+A-N6sHh}8bCf?fPyZN7ITxzX8{*7biPY^;P@0l(iL;hhsx z;oi3VMl8?JWA>Ad@vZ6Uw0jD)fzxXzLhJ%Hrqctj65rh$1o!OBTFeCM9y*S=Lk#O~ z5bwdoG_4j#F6!ypvv2b)=gX;ejLg00JEac0?|1{o!Rf_@GWTNW)>>?97h~$R;t_Gy zT`z249YwVb7={koP~&h;5!dUd9vxGC6-k@ENpR1ss>Al2)uk(YFC|{l#lk<-?CM&L z|Cg)TD}YAS`(FyKlVimu)Y0OY=#QsVXFZ_)iNU22L`jfy@U*YOE+4N#%Uez(UdyD7 zhjC4r|5!a*d3hRnI}_#w`ulreORZ)HpHZ{dw+~b{PDoa2$Ciudn^~=|3u2 zS#&E)d?#l@+xkJ~if&?(GV^Msc;;|zTf2V%{o(#W!`)Sstf9$@|Ig8)KUQTHJ63C3 z@SiD3io=shqQAKiYvBCiMesJy6y{+RUF+D#DV#?v(F+Pvub8E1$=SO(^U%AxzX>D=d{XAeKv;T9P>!;_? zRp0H!dH4OM{j_J`U<1#qXca;21pM>1AYP&!c zc707-(g88mNzst)Vr&N+5O(k;Of6lyucM4VSQ2KYIcLYY!gKceHCOPw4U6IT zWhCaxqJMWb?^pmo{>_qZfEr6USLty7xBK@{9`wtSHiCU)90!B8SuX?l<&BujMt-v= zLH^07t3&yy;-3WnN06Hdd6d-tpc+f6MiFe5x*c z`X+$;#?+(MO)OOJZ z+BNFdihurHn^uXJdTRvK$96Rj~h`iyopHlPh{sK{) zRQ{&-|xKFm3n_P^&Wd=4E3 z>k`jyT+c0+-mLB}d~O$OrPbmdTQy$Ot@9WdRQu!aB1ogbs=iP|I^X|ng zhF61{8w*GOZ$Av`gQ>ZQLv9atl3U#yN)4w-EuIW>uh!xK6IxuYo$*~m?L4JJ5?>cE zg)F+&P>jtt)|qt*NaCxSCX(D!u&)B-W&`W8HbWBlnQv3b=CyL~2KBGzY#VTRwyoCK zXcslM{*Q&+uB|uyu_8^{g?s%3bZ1it$#pdj>;N4o7QHLGU#^7i;k5bi}KpR+Z z!Xj=fX*$Z9*12>|aCc;xF@q}`N#;Km)c*Mm@w?1T)Q2_KPX5=1bS18jJUi~4W5Vn{ z@8c2r>B`{da$l-njxqb8yNjP1w?PS+G;KUdmgFPvq8;l;&pJ_Ge( z58KAks1|ZBV#A|cMV#MBL;9@WALVty6&o8CDS+N+lt`KOPYn5&Z>ZJ5ufi+o#ol9D;RhIp2qTRhoqy=y!$ zdXDnT(nQ#(wXY+4{g*yJQa(=^Ijuspg%;VdKhc*V50DpiJRrY+J(n9ZkDznBduK1Y zWch4iqw_*jmUfvdBbWNo&Xw|fH3jYj*KtYXt;Z}@GS+n#{Y61s#*J=E$Yw_AzR&Xh z;L07QY)6$Wa>ze~#(J#~xP?XVpYl$ZuIb@TmS0&ReBSTv%i^o+Q>T5d#NAfDLkHXx zW*w(PJLEYNgX|^3mpyI)Y>Qh3`P$l=F4=WXaJT20Gc&&m_zqjpTSgazjXmk6tZLm- zQtz+@9lP(6;FhGDvxbJ%sPl`B#5NPow_u*nOoH4jDqRarI;d;aXR|o>cs8p(*F_wj z>uU5bG@||;*f)tcZJtlM)(aKBka%0|UL@dfFH)^T(FW?!dzTjSFHk#kbC&#%pSDmJ za>b_e_#8(%e+{$&7wht>hdNo40~^{f2X?ixLhf9ApS;|iA?7az_MbDa zAL5zTmE@X}j74nk8pO=K4)gKp$4SMQC^3#so{ia&*b8}41tS+`p$pVO69cIT+->W{J-=Z;I8@a!T#{SN3CmdUQpLM-hN*3(5xXb zTM#RJ8Thd~tJm{>Mf<`gQ_AJO5Wctf*c6){Y$JGqp^WLqYdSX0iC<;7~G+h8u7?r$T{B&bYtQ%(y1x<0^_Y5 zYOC=Dx#)|Ui*3k#QE33Rf6tL+hc<~hI5wiDra!@j{?s^ZL)xds5*!<+GIed*uEsS_e%|XF1@x^>jDt9t{R72#A$Tx|8PGK8&KnpAIR2&@{Il> zXmNx7x_sc->&mEJ8wmO`chyg3Fzr{x=0SUvo}n8F_7}b8A2xBo+lpMLOUk=Nn+cB1 zXWeb~vA$mAKQx_|EvPQW)+WP}o#F14Q*tBdKaNJCKZoYoEa<0OWmbdUH0Y>>=&yli zA$v5rLFLZFedy($Hln}Ufq87v4U5X?4wGroT)EHRYPl7g^4X%Y*U?$Dr2a4Qf2kBZ zu=AN#m7#lQQL73#^9TRDH@ma929}ktD;YI0l=ldlZ>h(gMw`;uq*7AVL4I>?_4Z-Y zsuaMgAoIE0@?`-v z>?`-PJy*K052YK+&HtUJ)b21|%)xTKboOBXqw=ryQ1=Riz z5x<$0#=Y3aQ3f<@A?&YjhTks?FPXB z_|kchg~mVZ5B=-fuN7Yl_4r!emHPr|>5y-vZXj<4b@u!s}kBt~7>hao-2g2^|{?|6*oT)z%{gGS(wi-${b*#GNF^Pa!<@ z(?K%oH>}~H5%*6uS{E8o>nhpdd}vt`nbD-Hup1R_#?GGz=QDgW$)g?c9}nDtkQ+!H z&o7=O#Ph4~7GN93(3hq4<(B&J8}xM%{RK_4Wo6;rcu%8zO3ukRRb_&WR{sJQ^{<+X zc9B~@A_ndS{v;E3%e|##o#8Bhbv!rz@)PQy$p6*FkT>A^*chJaqf3t;gtJ*7FX&^y z{_Kk9d49T(4^-}7We(8SXkx@AgC?GR>m2XgIe|t-$T;L=$QQZv_(>ifmH_7!5JLdI zq{Fi`xps~ltej4(RY;wj3i~u_F5-}@(YnxvT6g}+1itk6Fmmf$BjKOlpgL@Gn@W{@k@cZmM3KptVuek}Bd`>`p`j|d%q zM%g?>?(vj`I5YF|m*jfJL!~*?HOKLu>d=5~Irp5T?>MCR{{jD?@f7Gm|L|OXvrTgv zS!ID}o3K<*b6*nu!~2qRLacb~khS#U8mU)@f!+#yZ%hU**+K0RHVU8HHS=Is*4dEI zDck9op>jRc)29KmOBhJ5&$pv7J>I(HiKT)YTCbH> zCj%FCa;IzbM!A~9^?t!s!vDmN>Toq_(lBBEOKtdnyuBRAtsxY1qLR9ySa(0 zRwn}&wXT|rHvY?nCLQEvY}BVD`lRx>hpp(Zl(=a0FZzP|x6=bF`j_u(Vq6`5gV2We z{nT0)+feH+gd82SzgrNWCh&~~BPV=<*$SdV`(0kFB%Cx6b6Qrv1#@Jd$cPwYE!o8~PcqSMKinZdD!4nxnXkKitX{B_@Y7Alo<3TcU9 zC*jK~^Ulm>`WIgNdR6LUC*xE-<6N0{m!2rh~Hn^{$dbiSW1liAH)3vSQBpV-CNO-h~jw@6AIum#-KgI=>= zzWVgz&VGcPm-~Mg5**m47rKyhCW<(Akn5cLLwwk)G5Yl8#}OoLr#v^fGs1(}pKMy5 zSL9CH7s)m7kgRIVdd>9xE?qq7q@~aXHikgG_pK?0^ySNF(&erEKA)Xei#2?1KvO#n zCp=$%pD#~$WV?+`XuW{Z#G=(w!M&CQxsYbM@Vy&c6(8FJV*Y#!U6@aXJ@0;N2hA$phTcAU{+oG-uk2bI_eBg(@6_MknlS|Xv3;!~Q>#-3-Ym%t#3jNfg zK)gc}cEY{36K2HyUJKgwf?Q9I-fgD2^Mn22oga0sQ=C7{b-H8R7qaS}JDt)|o(mO2 z?E&@OAmrlRAaxuRwqYF9x6xNB8h!L6N0$#0{zbm)&UWZRT~)~Qi}#+ugbv1485fun zW@$$Ce|{8gOCX-6+DB9Jb@ZuI>)X8cbauJtYAL129oFkVrw+im5(X})>8M&yF z)i~iZ;06ck(*t|2k~uTB3GU(PHX5CbT-3>G9C8uY+e@Er{(OhH43XT*R4a`pMlNdN ze;oB`xyxf>RV4r8D>ABUxY!?Z)i|K)AkGz@<*SI7#LGo;_orHDH8ucIW2+jV=& z-t{K;gXMqs^`Mq)Wkwykw=j}iKPA_b7pWg>-N}~T^#~wcpL>Y+?`Ci)bK7PO^|Jj* zv4dP&-1YCuhL$zrK21jw-7pznJO=WfYjWa)gP0S4yOBQi?PpHYO5~Y(3Dgx-Yd;(Z zYQIh=8gUXlgX}EqF6>T$JT{uV_5j4Z_8rO_@g`IHlcC0)1#ZL`J&iBeANsN(;zUph;)bmUpb&@h?JN8PglS*Tpw+fA$-ef5(KrDCkZgsh+TLFTN3b0Q<4t ze;_a0AGsg4Z;hpP4!{V`!Bh{Yih*0Ls6OPVM;mtgd$IH1Z7NnQx1v#c@NEa2?f!nO z)5sj!mcM-2@w9cMhDr_y4|932&OA*k#uj+%(YLp1wXj zU_>B&3^jbw27`S1RmTVN{K0|r+TZejX4-lKwlL6#x2>kopeL}`40f?bm0!OyrF&wU z^7z*`v2IF+d;ra-ZB}+wPgO>pxca~I{h6%dN1<|bS*mg%?x)cEh}*t1h?}-tOP6ku z>%Zs@R&0D{U;Y5{UbbohYk6=c8qSKGLVWr5=xl1*(nZ*fX=}|gbF!6!6)6y3vP0O# zJOpi9r6@m(l9f6}dxTw#HF)a2T*<9BPcfyk=0-BKb=2zyazHyLsrXyy+ZasFC&wW{ptG?adS2YW5h)*04Fu{Y}T<0G?ahg^Aoa0slk z_4K{@W{=hM@)$?a-!RB`6Z*oYQrC1S)U=g%09%iR++twwAvng zL2Y02Vi5o8o=ZD;%RQMsz0BEF=F1m*=F(@?Wk8!oV*?j8wnoQ;FR0_InL`Xg&5NXcjZ`@YpyQ8ptl-z{ z-X|>&C5v|`wtaO?JyPgS2kVileZe;LMV+Sunna$Cj_#rSPvl8rUwf{Yzt(+gFpcg8 zGV1OVgTC_nErMvWduw4=*<44HLmX{j4so^aMjNQR)o0AYKR9FFTG*F=eOEyH_(_fJ zmspc+T-c4@{Zv5fSMd|z{h7}H&1p`vBfu_@BllWswLOqg+rOQbz;&r21Vk-lhkA z*}rjZf|6(0(vuf&2^-B%`ZG;_IOq`b!yO9x0QtQeQMdlEP6VG@udl(@T9okO%=OC4 zmEa%X(5~?To60k}{piMk^Wys#*vS>viFbMRMe+1NYxoZZ+&IWB_wecs-gS9AtuoqA z^fv|KJY4tvs0fc=OCR-<_cg}**JL+r40-g>wNMLI?#GUUx=^75pK_mjSINiK?Znsu zycNj5c8<4;44^kVP8Dsfw%W6%>n`)8jseuEA?PTu+pgG7QyW!$*Pu3P`A&$pZE%!K z@Np8pM7T6%&nA}fgXbpG-KH|uASXkgwWzB{?cTLhhHpJ7zNZBa{*2n|(c|A!l&Csi z#J4!dv58hEgJIOk#m7oW-19(sAXI9cHK|pZ&gl|zbfrQucMZx5Z6`WZn4s5;jhH&%yh=_lmL2tujwjBNA~~BeIki*di2(`c+$G7)S-V52+`_z;G&M#=zZuA^}hOy8SUa3vpO#X+QqyO zOVh8DF_s}TJv>9q^VZd-5MP`|rXRDWA!dJxXS5C4_J2wu=hs`)ZVw-bx!Sf8_SS2s zkRec0{n`}yjEW)mo%(JI+Q7Rl$AWa|m8Qw$$Eh8Hdj@j+8ZPpM_`ekpuWTx8%xLVu zawFaO<8>?Olp96@mj=0k8qM|Lg%Qi?C1)Ms-=cb+n%Gqw8^*3qn^G0(93_zp1yYAT zj`e3)-?jgUB=UQ<)UbEQc(Bg%x{$)tW0l25JA~bof%?p+s0*>wZ>rdwk=id6&Nc4$ zYE25F$11}E!DkpqCggu_9f=cMqscwkDjrec<~)x0{MA?ZY&t89eLCKu zV#J-X#OYF;;2KPg(8On>&lsPrj^oC;!Z>bCeo<(|{G#gI*2u-&*7M)5C-vu7S0>yX zCG7U`zQrc5)1`a1Y$O|&$r#+5GhCV9XO65`z(<_{Y0#5U4scI2XFSL2Y2IKM5rH0Tc}4?as>dwqnPMzbRqHM<&zT*Q6a zrb}-}94F)Y%J=2MI0ubpM=ol1H4eFmd$v`V)?I&&)Ue$td_FPNPNUg{&!E}WIOHPE zWVJ3;KEN4xrsN)k+AC_!j$G92Y8-MA*J{2l9qMtHSj9_jS(=4LpCcFbdDkVn^i_|? zWKdiA{*^7X&~ULokpL+bCQ+eW1I+b6XC2k>sleP4CcXj{~ftW zfQt^xBUxn!gMVL17SD2u?h=+ZEr&#A?hg(~Tqu59a{#BlQ-fT*Q={2qght$BRO@}T zi+X>%z87zukx2#@^$~XGLQciTH|lYdHJKzdMD7=7#OkwSC+qPX*JN@vCS2G}j;YEz zd~C!|{YfJCR`(Lz8L%!^_lM)f{xn=@L#`&C6@VDes_qZD*x!)kYV`UuYucn({s-(? zW5KT1wW>V&HiEVbzarK-zI|M@wWolKwWnsxv#2zsy=eX%sX1G8b7Ce&Hx>4IzVdmL zj8jFuT4&`YW#WJZ%AHQI{sY4)5C>nw&On*xo2E4K_LlPk`n*p{Y4G~CsY>p1AMrer zK!?__2^$2=vbd&vKu$8^@oKalSl=1qH>$UW&a_=ffG5-4iNg&cr5OYkoV&O_}i zeE8+sP3Y_*Xu~;x?_bC4YE=Jd5{V)O0(U>6x%S%*IQ+KPoEFH3{|=_p;O-Q3r!#81 z33H9{;g-8vQoYx5jTB#E!EFBa=6;Uubf39gBaK}RbsFAz^YBU!y2e-j$Ik-&@vgQH zUw5oI&3Gv9^d~~ix{`r`ywmaKbkJMS#9(AL#FeV|D9~rzqfqZhpf9)|q4p2C=%0GL zh{N%!?P7muSH0(fINb9v^V`cy>i1Xb9cwJ+s_$wejem$k|J1pZu?=%6tJmJ>3$DHM z3-3v;T}MbhShkD%I0)-m^>>=U003$aSG*gUS1$0TS+b6D%w_a_KsXUdp~Lv%tOrb z>6kUm#Ip>8Hm{|={E8LiYDx?gbKkAMg?66-$hgm7I=L0^4t3@?b(ZU0tPiGs|IlZA z|1^6A|FawS)E{!aoFvcs!}kSn9l~wdqE08sEtf|0<7@eQo4B^BW{(1>I=Dxn&IgKZ zm=9DvUK|^aSF?Wrjktf1asL!Ac(a*ieQG4;zV?hJEKc`4X9qUZqFW6r(HFC%_Uz$> zZhYs1b+qq||LM!Ln(Xe{a1J?1NZ)pC#9R&NYogKnXczUqI-el+hdKPzXX@xPo~f(% z6tE5V6x21>us@vBjAk+1=FA&n2=%KFmk7DR?LeO&z4V4OnFQZrXiSARwT?%-sN>aV z;E2OBaNFWTJijc5WDeC4{SB%a#G2?H=FSf5i3!x2LtJ+cZ;d`jyQt59TP)(AYX;IY z){6wL&sGaI^g}vd+bED8(t*8AAV=+jTr_HZ4rJ8lhB^tna(_qi*3ezx{ASjK*vkTb zan&ZJ=|TDZ>$}5Jvj>27aSvdfPG|a0y>!yz#Ygeoy)earjhWMp-f~??M%;p$yI}Wz zq6cfAafaVWFQyA7c#7w1IXjeXA8?YN&n%|BKYCRnuJ-gM?Ai0{JT>PDDNB<%z(Tv! zVdT|I9(MK&d3FK(1H&;M_1Tn9kXO9d80ux>C+2GU6ucMno`1RJOue^^6>aSnK@D>^ zs3$kyjk=`BHDTMV>e};Z=nv1Q)p{SthI(IZ1MQ-XybR8JU!F|&C&?Uit5WqeXWNLw zv+asH3wTyyW1@VLd%o`34OwLE44z%=OgbmY^B&Bb=jBqw({@j$L%iIC&s&!oL!KfX zT9h27jA$n7C+~9gXYW&V=md*2h5A<&bFkZyYIQsqMjfx_qA$pu-S}d~gNmJWi1$Fj z4Or*E^t)WIm^F0=T{|R3Jo6T7>@^x2=KwXfdJh1f5$*xB9I0P9J#!D8GOVh2md0Bb zv#jP!=MtmMgs=0j6;c}jaLYLH$i@zw!ocv zbsPZN#W;ZHHS_rBk<;nzV?Xy#McETzb2L2{x0=)*XVBS z4|TU1hg`%p8>U062lgj7nbbY^d-}8HX2#`j^{uGMrCVaWjkrJa)-fyZF~FSq+x;bM zc>XJ#) zpUd-A%*m_Pzvv(8Uv+#AwqbmZ=KmMQhX23n`-q6c`;D619ngrmJDxPsp+BDIlanjt z8Q)Fj%66^&LrSi#A!g}v-F_m|j=2n83U^Xl(WYJHo)+dQ(!}nAU5v50I(S^gXVC0# zF83C5)i9zF3u+!wQL=kBah)Z#uKDN=Y*d|b6&*UyAPXY8i8*L6vOb&drb8RjO{DC; zwEK8uQ;jyo=Z4zUqVySwwS5=-d+%NGJzbzXo*jJofV6YEAM7{&p4hKjp*MkU$QSdzgZf2D!8XGt-XyZ1dUkE+7gY0}LHQ1vOO*Fbz*acmy#vvDR_n-VBPaBky z^LD$%dvJHcfAlZdMO~}LAs2B*wh(L8uaYE;k=)CZoiw@@?V_$#RL4pxrm!qPlv`mKSw$bk=(-x)*4-lT-3E{9C8sCVW2}Bd0rzk z4odER(41;ri(J&Ti_LUstMI!-H+#2u4|YLa05uo;L#`SJR2{?}`S^!iobi}E-MdS0 z_duIQCj$_*t{R72#3jG^Lnal!B#AX77wax*G%<2P6RUB^MO-8BIq|^<@+xqruv?jK zrPag$L`|&5As2BTx;nIr>Axg>irjlBOSI7HUjU;1RpWrFgSb{t|B&V$I&|I-$t|4) zHH^}9=_+d->Ng2~3&1@v*HY6TaT9?-f5=sj7srOz0?m)X*q?RoZG=@yux*sX0Oz8e^`T~PnFqTe({ zaawbs9C1mYYujgBQD%HjQ9k?miM1Kx>NWM}m2)#mqim_|CqzJfXZ4%{8RxV={HBZl zcv7=b@+^9Hz9lma{zEcvy3?>0^1pW1GBd5#0K2F)uvX&!5#IFKa;a;R;SS}eKz|-x zeHnSXOvXY?fqT)WQ2W?>ayI$-D^`pxp-(l|)y0c1T#!xH6+s*LG8f{#)%SYAgorOz z>srM9SJxsAb**}yu?^>0eZGoqc)qIk8QaijwPwdQ)a)l+v-z`rS+teTMKSlCmYcDv zOY-=XE?Knr800DeV6Plg##(3d<}I`7w9}`>+=s5PX8E7jaP4lt1CQG*~CoZqPuGNz3m{V*GzIdqr^8k?N6=g*sYlA1GQ40E5|RvO)ic2PI} zo8($~W^OqB#m5lzxo*=~b}Zbj^5pIas`Dp~AkIEGnmv0}ukux|aJsA00D?B^dqruq z8gfyqy|xSHhkq2%CC)M)IAn5l*8Q$8-}|$G){YGp&#m3q|L9fd5A~{An__>cqx3Uc z@r;^HXr8@X6Q)42Z1p^&FF4QYGiK!C8S}04{`_3<=3W=q)2vb%pW_cYv_p9?FDlwFF}KHTA_|4zRwsT63aZ)SSDG7V(igf~otE`NBrrS_3xW zV>)*~7)(bUTOj6TK%p_qicR1xrU#SNOWlRt7HKs!_h#{#yQ$j0K{!Y!zu{fOfI|!b78b+`jGvnte*1;m(FU3Hcvy@I$pG(0&Hc2Ds!2RhaYNuXs+Y zhV<0r(W0%>IxB6QG&qfM(v|KxeADn;k`-1$Nn%!S^1>vJaYUwQn^aT zOSSW8&Mvkp;+wuO`niYPpWMFOl#S?=$1lEyI#UKxOYUB2uGKTpAL^OQP#5L?q$FBA z?z;HqG+I|*t0e)4S~9w#7Ed-&sNNg722O=NxAW^;k;M2K^sk4{gwLxs7-@2?q0g9W z?Lm0}jNhD?f4eKbb-U{YY3{G$bHn?qleYgL`rqo3+KrZpXSCbPTdRAZKh!;MT7Te0 z2mEP|gdW0f&<-c|R(Z`2&IqF0XLT3z9J;->ra!cS{heR`gWT%tLmu^&=b>A?8fxx6 zAr9|7sd3nbxL%n*h~H95YK@TEs#I~+>NoHYHJBQQT*Q^1`$4{?cOms7Hi@yFZSAGe zU^rK(!PGe9BJNSt50Z8{n&f@oF1Q!rJ=JJ6;G$MjLyoaNRcYs`HpBYj| zbN2!5;@t;zf5^rD)Ld*s?j7haZ1PMp@r~>cYpSSq8TN;|OpQY>;s(Y3ARnhe?uj~b z{fzOBYMqB%)Oktmevm5bGs(-oa{at-zL|!L{UKM41F8<K(=;0BWWZ5WKV*>E-JR8>2$%TY1GNQ9~eH8Cd?viS3_LrKZHRMShU-?PQ^U}q7 znz(IX@wl1*;hmFwq&bF5f9#~-9=&jM0o!!G&U z;+-^_6MaF=>G$jxah;<}o14jX`~JBWEdKL%k_`6&I<}GXTsqra(;xbB5&AP|^Mf4S zwTU#iA?Nf;teZyXp$*h|Y8-MAcijF5+2ym7=yxv>{#_d7sL^@IMV+U{As2B))qfC! z>7~T{U&+N-cD2q!F6ulr4!MY{{_8vWxVMtHy^!4VbLwbx9&%CVsd30fT+^CA$jWEO zN#G30J)CT#(Rs*4ou|ej7jf9%NSE{E;XuhPNjBH$JmjLzQ{#|}IOBi56SMBu$n&H7 z#9VD#Xspq6$VE-(3Ajs>?~<))GUl^*k+Fu0{UKM41F8< zacBc^zixjgX|4Yy)i=oB<$+X7tsVp*>OnOQxrkHWg+d#67b+*=0SV5{S6-f8DSSSm z_-O7{;hf^#s>)Ace0M`TB|Rub%!~2TaCW??BR@Q>hGG~AF&NOHUdj;mB)0=^eCu0q zt^2Tkfku<)KCtH-$!8ZjD0|Ze32yykZQ*`5)N}Q!qYOVG_k0a=)f1dDQbMWg* z`9JLu2zOvkd-KPmA;-~Tsq^|wG++h^t~`HEP5LmVK-lOv)k{!2OSIqoL|DMBw&v*_yBH5n*qxY6ve7i{WHy?DKT5sXA zM7>qm!iyjIR6yFy9wz*o2DN?@ZT&gq*ds^X$B+AbpHA{C!51J;h|$-^ zdqX3}d#m*&+CY7&)`Q4JJ$N|9pZjNSCX3t2J^dk})-14{7vEL3nY0QVCu~fIy3J}0 zi~XU7RclFXLoK;`fIpAaDI{xZ!8o81@5rj>3fpk5*4)kIU$d9e{K5C+J{;tzu*-qF zDsI`3OYfjqOSLYr)#zWef%^CUeE8nCai#gmQqSy$^Xa6u@V!6p4mIoK`?4SE!hbc+ z=3ZILX=i>*^fzw4E=%6i7VCp%;SWsvT=U8GPO-h@xG+OnYCK0;n+~CHSh}N&z`TNepRJ@3!ZDktUvnl z1uxdowRwt|7dp#ItLcD@nogs)pg+`G^EUYNz3a<}&%p%Y%aCr6t4@_)3g-py+&0T? zCHCs`9?0|LS!=6mv>)P7`>Ap0Gvbm4wdFq_!MR_8oP&UQb{Y+azd_VTY8-MAr@q^a zI6Pmq3<>AEEIX5HXIqH5>K$*yOm~HI_x>KL`0ZtYHcC+|5s}Z+OXEvqHkY# z6Q~b(&T)d61AoXtx5c>%4M?s+|GEq7I=~%BhC3$4F`Sj%C#wgh3cDHb?jDPX=iN@; zCrGg7t;g4E8BQpwQ3|czW!k#cBo=10n2KV1G1$QyrXIGy=q76KQ{Pc7Z zH*klV@@M5aL`G~?_U*?c{_jnFn)6n^lXKvHlqM$@a4{#Aq23Aj9;_#MHI0Ogj=r9( z?VIEL=kK-TWfas$ggFhf>dR)2Jk49?6_UlVI$~_0-p$xd^CUi~jThn8@{A>TNezw8 zL;q0cO*Km3j{kTOr@b;qK#N5+G+eZST(y>jCLPq0-#;wmXF9i}TjQmM9Xh`%tMe+I z*N$yTtD)uu@*voUQ)^D-qUIc*`I^V?OQNy2rRI!YX~6R4zvc~>r_jfB;64ce`$LW4 zpb5|U(N!rl@{~Le9k>X-YwB2Hz+o(L(C=5gBE2znZ4)Q#h80$4gW^8$M-$>{^S54N z{)SG1{K`JB`L?p5^v+Mv(_kcaHu${rIuG){M=pkr7dRT+kU1>8#Pzc7kx5gh3S1B3 zpsf!JcCkLJTAM=J$A;>yzoSCNef)#%#zz_w5E>eq%Dd@HIg6moyV(G!{GX$6RgBs2Ahw=Qv zaK)g0guo45U5!0%K7gAYZKA}t=_hbw%Pg4N(hR<*cqy&fN}gX%=?iBzlT&!;&ZRWI zM4n*`4>M<9;-KyPVmj=!+~-Q_ZNMUC)}{$ZK9i${^4{#N7*E!_y**u)^qCZ7%jbJ- zj0@CZv#6Z9YA)>-{!o0Mn-n@T@46`@w$u0EM%iTq=Ov@sI`*hq66w~Wx}sPAAi?Lm z%>D!$HJ_1oo8JXrH7z6fJTj}UW?f$IqFzixkcm}eOH=^R_g)~wXPb6T*O(l{z{rSWs|1er5>ytXUz`8 z{2-UkE+rj0N`1K}!&HMqUl7-})mL&OrGWg~NsjGUti48aisu2EQ;kC|;*Qq)O1%GU zBCU>h;#k;g|yQp87%# zwE9TCe3IOqiT}}|z(pOp;OQ6gdDOoo`JMc2?MpS&aIrt+s&VKa;*2(Yf!J&v8tox% zlqHyJ_gVmmdo5}l_J_D;Yrl|fpY-V0`jT6krsX0Ix!wMB;AdN&BZX(z6Kv}l{gLGi z?8=>AoFuL7))DljWB4nkyPxt7mdAT@gf1<$QE z9dhL_ASN&|Ia_e&K%C{ZCEmPRsSO>r5_Ao4M-Qv2(Zt9_P26yr8^5^6hVBT4|08G| z1T|>YcR`VhcNxdqyYm3JABy&oI{@-Ps_$PS7w=#0yE(sNC@Ulmb>-T}jkIF!cUZ+c zhqYv1yD`Fs<&gI5%YlLXq3L?k|96I%XP;g-*<|}@u0MJ!sZqID%yUTVd(3d_P`>Kx zRs!b>1Z{+pTiQFp(1v${$1Q9~)1oZNBqc`lH$U(NdzI0Mo?+Ic*OP&wzqMX>G}T@+UpIQa%Kz2} zi;Wl`WE4zFJ8;;EvegmvG8REtTENP7RQUac6O&9{QJIM zwAvsWF}BtNZ8SB_5QjC*S~vd6D~|S}qaNCe{@RSRWSUr5z+o(``rHq>;!Mt`2|s#y zJxv)KEVwO_Y}tU)R(#R$Kss&0Dly(kTa7d^%=j!ZhFPPXp+D5lMeF=|)jGS#-X3yZ z#&k4e_Q5)pJ0kt*`^JhGhd`*I;SlcPA3TMlPqYW<7- z{a61Y7xiy$-5>n#1{Sol#RxGko^wD4IQ-!4A6n7F)+2<^jpjJ9&=nQDB0!&Rx+i0G zCo{-FGQO0L_{)&)*|AW})nxciYR*W(2%eGFtu>jib~B^9qh;*=bchYr7LVaA9Lt3_?8$a@P;9dWOY;{F%G)A z2HX29k>8wKmwc(HFUAp?Ypc=D_}oxCTXlKGot?jv>AlB`aWwDPK%ge`>np-CUO zdHH18u1*s%-k7wi8m)`{q1J6s`kv<)8$vw)G|^wHX_l<|!P8%N&9@*5nDh zwqglyX>*mNY$+r-SIL2YGmFqw+^p$UGB_Om_n|R8;02p)Q^7|~Tu&y%*$TT6^&2yT zy(K(4Cx?{T84CXfI{2}*iS9hCN+E@Nt^(I(xEb5u$$|I!Q$X`l+X!De#aL+Thk^~P zAL=u&g8x}wh1NJE-{;{I^fd1{`iJj$$N$6CS%+1*d~Y9+vPe5H!0s;g8nL^v6+2L| zTX9H5uu(xQz(7!J5tTtPz`($xcoYMVqQ^Lj-M(whe1GpXkN?hf-?L_BKYQ=zGqJ|& zxJcY?&en9q`CTlWfp-Py?*h~}dKaj8!%Z|Q-H^@j!S@3!48*f|YoZ#6_cLsv-%523 z$n|nRet)RD7@GIN6!CeW)RjFqh!1<%OmzQZ1v5_fkTDvctj!;O$rAqm__IcP8c3Z# z)@Rs5k3nef$MF{nOvB$TG41eqW}>zPn)~yA-}g4{Kfq14>mHk^Eq++`b?Fq-(F@%4 zSI5&P>c>*N=c3Ajd{|tiB796%^NFH!MP7YWKD_Q+A3XeV{vN%tb*dVen7qWqx|ei+ zdZ{hs9o0D>ddIegwa?;ZeYeN@)9TO zI`WdP2Fu4hyNfZ$)N$$EzqF8nlgUe*T)cTcyvquLZ*3I2B&;ZC@KSx`)pck!BVEP9 z`7r5S7z}Q&*d=~tK?6He3}RZ_U@)9TOI`Wb(?A}}0(B?FpY=iH5Sa>qf-pJEfNK9;f{4F?6Nr!He z)w^Tr8qEKqd8t0~>N={AbS&&GI4rmdGjE-ezkjDAiW?alg~Zspj=ZFEjd_cEWNyLi zii+7!Y;-g-HVTQcbsc$0XLb553_6_yor4s!A6xqeW22B5Ti217be(p-#oX5afJ35s z?vs`lH8M5|iLrGZc}e&C%3JVtc?qG*)pzUIqM`;)rq6>oS=XV}jC9v=oPUmc2YqeS z^LNzG$i(C&CO&-lEliI13a`hg_8kwjGkB>!^6ENjAL+hacniIzn6WFHRQpaWwl{Dx z#UM`BbyOeef)>4nO@%F)&spWAJ!ZU&r^(Um+0@7K{iXWm z>W1^H6qnAg>SqsW4Cw5k;eQYd>3?wb(z?R#g996!uX6M(n_*#KXYvv|A8F+#-hOky zyH;`U5f;uJW63w3`SFOnn98{D)Y*RaC}+~T6$Mfw-?wHDDpZi; zS7(1MULo5ebrJ_wy|Y@^sGCs3aDI^D()qznud~GF9=@zqLKFGjU$Wl9m^%i8Q0^E5 z?_(M9e#C^g;NI1Zy>?W4tm7jK^Q+VUgUz{>nax4mV~x55%!#1y7p1tgwy3`kQ9tN? z$S?+2NMq2haUtf{))qXws(s$&yAkmTjIew*YVAR#!Ns{D2(0^)kj(Pu%;V^Do9A{?*rODF&_Aj@p_j;?DJE z%}S~Hh>pqSd7^)Y_&vvy6&T(@#^@$o4EOwym+tvl=Gaht#l5R-TPlWa98$)>u%sh~ zJ%72a7-42&QI%BtCLOgip6kW-(Yam&!=jlOR$t4f=YZDo4eQfbM(fiZ4t5iXA7A4g z0P5X#9?iE41VvnoJT8b8katg1_|grloj;8zY2E-)oTd zaG`9APe)XS@^UZ_-(k#)?>S z`t!x&>}Cg`d~GyV?cz!rycC1HIzN~Y7{7uBdxp=PJ@yR2>N479s z`gv8ZL6(eg=eycJ6>ozZo30f*AwTnSVGa3-?vKQ%v9nBbyJyJ%qiQ>FP4itPvCgvr zJlfJt^=*wMf8tnM%$QUetfRZh82#`p=%OQW;_!lN&@<6bwq=rsv+-VTYzy7X-S*cF z;a2TCY;C_(*4KArQEr`mMO^j#4sJEnTI!(Dg}B>aSA^r!_b>sL${77e6*la*rT)@> z+gVkdQgb(Xv7yt|nt%HqW%#=d_Nn!64`F-m{wMp-YfU5C{oFp4X-m-_M>ZPQA0jP8hgsecr)NJgf+nX{4U)D z@}Ai7!jPkzbd;mpY-)5$=CfC@*h`O$214nzaT>P?ctQV#x+-J zAFjFT^-=q%zJq;VL61@O;qFs)t|+EKWh0xSm-tfGk(YF3JHCR><6Fa*>3d~Aw%4p~ z;7b}8;!9meUeeuY{R$ek?1gvSs5RG}O)47rlDv{bH63|L_rT>9ENwah{06Ca%mkbl z)%lXV#Fx5`yretp_zKKRO@;jSCuN)W%`9Z#OY#z5>N@h0F1hS0*b=lDqAscR!Nlc- z3@k}rV#$`)ub}?>AaE{vLVh0ctMP1==B4_`tLxBeMmoQOufWcE1*F|o@5OtjM+ zLSj>0M_$r3fBzCbwG9X7Wc6;FIO`9-L?Q8|u9Iy+-JPtLFmzuOY?`n7c5sZHfiJ0V z#Fx5`yrlbd?IjFyj)h9|PRTJnI?}OZizMU+OyYk}fd+C5$VP4C_CfmTlfS!^Xgu zt;oPwcPLgwyc%h%?f=cL}a7YAi`!Vo6;`UecxQdQMaGlX2^}Kd!R$-Qo8sqaU`g^4OP2F` z31c(9;u!?hKH3|vd#OJ1>N;v4>88(l3B!ZT*yzP7#wqS#;7f`@e5vcGKGM}3_!2%> zv}7~-Dlg?~()p6S#Fuj?zJ&EjHq5e_`rQ!goef^9kG#5$+DEz%KYxe@FE+FF{ww8w ze4955c<~DssS(Sg*w_`DZIa#<_)gPtdR;NNV^LOjmg3rV zxX!7wF13YNw|9?I!sYQsD6#B;90RXH!+4V-sp8hWNNAg`-fg=T_T?)NHiE3)M_B)l zYMjq|x^UYT^`KqOAvVlM{dR6`R*qM=T?sSOq3JRAA@kIl!xHll-ta=Um~h#VEfM>G#-PQj=X`qnEirye zapt&uA5cFa>R-KVkBw|ogdzf@yAYARmc7;cI8LcN7|FRQV= z8ESnsc9pe(YpKn|wYryLkoSpw9&C=O#da=L?zl%5K9hm308nS&24piqaSAQ4PCbnS@UBO%o~^*FG^W zt$kK{R!1!J%Y%rXD`kDtaR2l8cBO^K$m{Uze29D|*N?L1as5h*uP3u%Wo5Mi6AjZW)uTU$#Jg>pi%^v4o>x{qY+044~8RED%S!YSAk67~g*S6xHxYn$3Fs>hA;kXk{ z{NmacV)*vfY+4m$b}Ss9>}X_3(jiM4_I9I=_IBU8yiI&)GL>y?ruKZsZ7hiEy4%FO z{246Q%T31E9Z`_qHuDsty&9U9{!(ilwU0M4?rp>vw72p0V^`t+^#^SKq4;+uvVGYT zrA3~L1zV4q52<~NhFTfs3aD?yALfm`#M~3>Ok*E<%D7{;+VInEp17Yi+*DxE0O_s2 z8P_Ux&O5@CDun=_N&twQTu&=Q-S}~ z-roTch4{P7+rsj9l&PC1<_p3$S3T6!5QEAnhR$WwU*fWK`}^Xb@0>-~RsEQTIbk;0 z+!0sJ{8-;>Scc|>E6sWO?eAhSo|k-K=_cFUdu1WsHut+&d&!@@TU<%Dxl@!QKiV_h zz1!Icu={vZ>Y5Czz*p`1=DzRldN?=imee&H|C`+9(E{Yt#9c`bPZQ zx$9H0`i_sO@;?XV=UXwZDc|$CpXpb-AXD)Q4`rD@?gzKb;aV_-FGiW#xm;llqxdMz`|JA-pK zSa@ezRX*iXarWi$duW@tR(_V3mX+rHrWIr158gnh5d2P~?joMKurzxH51u+fgDUEO z;UX`^r{2kf9#NHG+8=meh6RC7s`uJc#xVhs7J!xa^+(2RBmtkOy@g zwS{zLlk?#4wW$Bkd3(Kz8hDV#g?Lcck(YEX=kj1&y;!J*d$*`92S)$FjaW!LsO!i} zx)(?AeIXtvfzH!mU& z+Fru7$|lOYKNz0_og2|h?6=e>4`QEP#k2Zp@;B$uhN1>9)kj`khgLJvHCT`b+bnOx zdVX4Z4{x$FvLp(L8+9FdN!Mgl9#k%KAMQ9RHa(1I$qX#{Kd-KnUep~LlLr>I`WdPJ-#<~4}J-l%1n-F^1MH|k-W%*x{k(xbhqZ_!GBlZ!KdrW zn~LiYI{VS*LF}jN$Vt=8!QNZN6zAR7vuTI#$j^M6?I`~Jz*XVcas%c_QS5iBn3sVODF!j3?VQ?Tz~LSc*1fCr zPMKxAGY4gI|LGR)lVCX?DnXEG-YtSv^rX7K1^XIbC)MFk8o zs6L8Owr*w7qEKsynD{@I#Jje19wZ&{pyAvnmQjqo7F9&(p4M#0f8p}~a`vIZJiA+6 zvFRG#n=^BhjJpJxq{z^^Vkw@tU(;5torHQ9;00{l#KXr{?Djdup#hlpSI-qoaVb|U z#c*;mv1`uABv|OT&C*bYGFfKGJ&T2udp7-pn}{6Wg6+Jo-p5yNwc_@6!Q!t@U13N; zwPsU)NjZL^ZlEX+gP_MNd~d=SjV59K1C5g@261wrQywfuMx1#{y$h_^Y{fe@dm)n?OiOJI?7Gv8~LxDH$V04xVUV;i`{_Asigbtxr7(0U5+(z zvt}!*gvsw4ouAgZ5oKn?jRwBNLgGsUH=>TXQNM4N+Dv!S3~^g8UVRT^ciQF2=Oy`Y zSzfs2CUNgxDEkiTo}W{vD)W)kn~UuwEm*(~#eRW3=zM_2l2{?J0iE;jfl97lZCvvG%v|Ilvepc-B{chA0L-LwnEfPM)^O*R&`2=Sk|DzxjOL;brwx zc&)mLkF6r}T5(+Oh6S-A`%@x(h-)tE^Kq%q2R7R(%CFfCcShEhaVNXg;LSoja6Tsn zgcv8=Jbj1_KW|aNR1WX7@F}L4eHlK_pUpd&24T9*1~-t|u`PU;HIM${C*FS9&i)2V zS=K1DEI)q5PkeRW#=P2C$@-e&dt(0EV3Fv!jlH~xxOBhE{57S;NiRGbQ+}QF z1|ze7f9fji$9#nFZ|dE4;ZSRyvbVIj@!|)_`#P{fzkap`hNUqjhP~(PX0oZ~#9BN5 zD`Sj2?7%%sO%k66T!V+_7s@fEb-MWnM~E2@(xJfoIWq3Vfd#qED{qnhF&*!BN5;Vl z@sK*NS@w3T^syD$cUN`Bsr{2~{LS9Q!ez%ZQ!$e|pWOFEDSW>Q6bY~MOwYYrNpHVX zr477FWB(_wQk#iaucfRKDKmOAvsGNSWzy+l+{0nDaD3c@EuI@7`!Vs9lYxoJOH6Fg zVIk>UCvFo@Ce&p8mxRmu`s{b+e{b9&%Ji%z4t0L&9?Z2I%ztp=^t{%`p6JPZI0SZiM^^|H!tC zFWk>~_5p*?*$2a!d29=vnLm_WRupoGV&yH=+|AS`Wq8#V4&u<}P3%m9I30E+^Zvpq>lw9-A+=tqNv)yerFb9=O_;H+t|%><9~Hg>R|#@8D30%e?~WhN ze-h*KIlFaT&6f;WX~P%WK8C|@UYMHQkCF8q^mOJ2T%N(iaxYAKTd3cr6wlIp{a;ns ze@7ayKDF?-4*T&muC>8SpCx(A7kCWw*II(r!yQt0bPB#VReA=E%38ux4~&84v{}Ur zG000XbT5^WchJvVIO^jJEOe)=@623hBmZK3#J_qB@=^@lOJ(GJ`ZgD?_Nff6^%WDJ z9rXuyV|~QVx{kc03woIg`wusOR@3*WzOjl1cBZ}&JL@{x57ae&mkaAhc)->w2c&m< z!-@uWCNHtGt|Kq$HoeG&)n9wz8CkVgcO5>bIy;k>*jd++mvphubHQ!Q2uQDobKzLH zuCtwioykk=tm~u~bs;x%q5PVuc$cJlkKHuU%D~R#C3e^6FL841W4Z9TMKC-(tGHtC#=-_K)kj`kNBtn(`wO`c)^!DZbx>Juw zZe2%S()pjy1rHt$4P4c@B={KFnc7F}tm~*Pq{~Xkg>SE;;Mf1g<-iaJ13QzK*jd++ zmvkZPb79|vSg2R>jQl(fjkPndGkJ-fbsc$0m%bzys$PhPCT$hh9-L9wz|Q0)cGh*| zCEWy!8~x=V{1>6TiPH-i*qOY<&bp4gq&pdz3!c4_VYlTu+2;LI3LDs&yu{ABj=ZE> zJ|h>_C7gz7w&$hy@Z2H>c9v~McGh*|CEbg;x$yf{I*h5TytGDdU~G&_oV;mBF8nNZ z4IBoYlfT83BSrVhwxCznp;hKmNgtC7JL}vAyI{rQhokI`+>JuwZe2%S(w&1`Xy9=l zqAbp+xND7kPJJWp)^##2>S_$m#WQkGAmWE&amra~ z+(_z7Cj&cETw-TkM`J)b$Ct=8XpdYt(DEDf9jLq~ zm*X0}&e-Hdb`GkV3k43EvEWr|jv{H9oxw}>kyqDI-$=KvWiBl2X2~$0f_z?%`Q!Sp z&eJF)PS$l)AL(ip%LV(_Hf;ZTpUwy9?jo*0O zYX$C%m0GkMJhJU%KUOASF0Kf7_Wt5>aOUA_{3Q z;$QDvMUR>m?0qH0y7Q5l&X+^}^)JYl3AK-LC9V_eYkX86t??On3k!+2bT74qyc^A* znYIM%h7t{)0C^`&`o@>`%`^3DxgBP;{Rc?bZPt746a3xO-G4W($v*+=uh+tF#UpMGgf}jSHxNyywpDO8Wv9YD=$~l12vzqXbLg#TV=nxwv>dQ5>sxzw@c^YF7Pycz&5=T^~7Ciz?OPu>-e?oWGNx?ZtjlH@9SS-Y2TLh+0vQ%{i~;T0+KJ z8lEAlkDej@jwK8$?^r5*K24lhT7(q`B5pgC1rmP8+{aD+(Fn3^H!ZkY66l>E%dPl|=;alfV6yeU9rrEQ) zsd3p=kYBvuDtw&(gY&c0Ir&`Q=fc$JM|k1+L@_6T3N z*G0UlTOTZEF&U#bzWbbaaboLwe}o$z8>N@__QWi9U>>J_L8%+K{{YSBSC{0iC)9xh z%?`SMn50;IVSx=ir-nOj8nClxg8Q5jTcmd}?p+ug=Ph2w zABRJC)OO$#akA8P8R%@_ZmN&CyUB(T;_;Bvm~(Wx)D0SlIYTN2 ziD`>ILbD61ePJG$6M9k6R13dAHfhN-`8?O%>dK>B0)o|Q?hV%d|GPILjP zuaV0Zey`6n(dg_cHouk1&0Kp{C2sZOg=q9hu%izv%kM|~r#<_y9?Km0ZtG2Ab52?25rxk^#^{SVDrkMW%ga=_zIdW+^Uz8S zxy|}Gu^Udqvzh993a z(Xu5l{?<}c9owgJy>_JS7QCY+Af@Td4EL*zD*<`8TCe4cT{orlsh#A$?{q~uR-yPD z{2ad`!o;aPm$xGaQpw)fREG>|ox>!#>SJUv`rGlmJ$g;l{*Oy~3 z2U*-Oe~MsnU&oR>t-(E*J1)j_8UK%HtdiSQ z{z*?Y@0`8-oj&-H$xqVK<}@ZOxu^7lDzmMt$<#fqKB`M(-h)c?X2|1x~g z6brUxb2Ka{uNW~ayb}Kr>LB-=Ov+Z@)unhYf60R!sP$!^X<&vr^L?x}?ujmZAA(z6 zF?ke@mi^e@v6P{V#)Znte9eJ-6JMGpz1tymiTxc7EKbiUvAC`yFX^nlACmjeqwHUN(gdu80SZL1m>TecY)Ti217bk9W&Y_)9zbypse z-ovdc7#N$p#MruyyresKH3$4`d&Ai2NzxkuB@B#BUSe!rM_$quO3i`h!6P8ypyJCg zi*agBVZV0~17lPBh_Q7YwS{!=F)wb(8k=G4ch$E8_%5I`HhGD$ zbsc$0*BRsH2gJhIW@>FVaa<7tW0RK{Ti217bbDv!K=R{wNS^#Z{>426I%AWU7+crL zHlxmML=HsPJp`jZDDT0kMGTBhUSe!rM_$qeOvwRf-(>hb`+|J_j!d#MFgAIKv2`7J zNmpfH4m8R+jd|$OrT64q2Lof1ml#{uk(YFj#^->CLk5g&uDr>}WjasGxX9DGj=ZER z(I5v-o3263U#iW=*V-Go8{-n6|J61JiVVFC11g=D&rnhn&Vg!Ps*k+74y|USd)_4n ziqE(Yk2;@K-c>j^qH(qRouYXeCb+|p5A#K__(Bo^-;bVp>gk78S#oh7?W zc4~up7w!wY&r!^yOELLwRWB|LuS2gVA@Vyjew;O5F~U`3nO{_SvQQX+>sz`Gt!AW~Fwa$3O+{}n zb%u?PEnws=6cTS4bXeb?I;xL!r@&Rf^JK{N<+30C*bjY;RK`W7tGUuu9J!ngiCY!Z zEuK(-Z<}35TsxTz4T`9BtC^i}K2aM3>MxCfcS%<<`glA{r1yI)3&MTUhO=|jUtE*Z z=N>37%{}Nb$V)NqY`F~qJ8CgYPxU^udZQ&T?0XNk;$G)UmOErWR^z_w4PJTRzow*V zRPDa<^LXh#lkYtJ819z+;r`xiocgV^o4_|6cnSxemoPowFRYTA*ZNs_3!P%wW3Vn)5r>n9oQn*e_KC~;ps)MiMCHHp|6LPeEu3e4dw%eJEa!= z$D28~wUGVjys#*rJ;W)s-(DYPIjw+<%jP&?UN!sFW1qZPiS9NsZuePuk9+Cn;>x0I zm_1PKo$l?8xfkDMiSrhItlag6((8xw2YQYuY9Hl@GCaH34|;azKiwoUSI=QK^KtD7 z%Mv!=4KxYO#huPY*_(=6Wql#jEsT3GP)B<(df?rkH&17SPj~g~M&k3_Yh@czu*XMm z>bh3ew`e%t$L!u!%%0mF*8c~xKFU?xa(^XJ{^C>j_bs*o#a(K?(s=e28%<|lf8O;L zE8R~+;t3x)R^FJO)xW%#m}c|B6uP3btZz(0VZQ2NN46qrIh>znC3T0E7v{a$2bE!MF2KO@QY>F|6P4%^28Y^1seTn-pv(K2rkA78TKl+}lz|St8CD#147S`NU z%-O=LERXN#E!x*x2Q}9Alrc;rOLEc3TXakeh3%8ONU!^lGW@_f?qI8iMo9XifXbApqbmo{=Jnu$Zd zI(dujy}jXSM|asiHmnrCUB(;lv>gJWO`FNM?Y)Ze>xXX$=glWf{r29KEL2r6LtJVL z#nl;+#+ewAceyXRZx3d%73#_M$)DHCkGJ zzNa=h^Rd0Ri@be-tncL#(t9S<*|0`RF=&lcXD})w2J0LUDmGw_-?^P`NLE`n&Wa!F zXfKMJ|A#qqSIfSI;ogtqYbuLRZ71WpbuSrr?oX z(tqRL0(Zc5!WC0ahgjL)J)MdhIFFtK;yhhP{UzP_x7pAtlMFUXkX31dE_O|({DI2#hTJ0~V0Yyd>0Q^w$a&-?&eL_|C7nx1Hr%;A6$X!1jI(jLje+yXOPr_c$V+YWoNehC(&s9CAn^#&Hys|#@>N>QVkg6Xu6C+>!!MwVvtwY zQ4G@Us-6wevG;*JQH)4?rwu%aLgGPPM_$sUVIGSG|2%=K)79sejAw!kOou{ZI$cL? zA>E03*-*RsD_B2DeQqhU9SuxJeIusRb>t=8qYt;?w$FPwzgKxrEp;$39eIiA(s5j7 zMSg=XJ1@v_NnUMl@KSx`)pgW2(%o^)hCvU_*pXRkT#hX-YT!JIL7b=S$V<9=UvEQ^ z`IhXwr}{1=;rUtv)1i=+I*&l;9s@Zew2yvkLaAJ`wE5 zV{YAmo|g-=x%T+%VtuK&$2w?k@~JLKrP=fXY7a}r^S!u*?}}5tt;)0PzYj=V^YliB zbAc3>&IKCI#9@83pKyKTC1~`(iS>AOQI20?EarLA^4O4<^4J*mETWh8Eb41Jq@%T+ zXK}8g*z7#0yLP3lZ^<7z>Idocys+e@vyttikfW+U1oy9DvLA~u7qGs^m2|YnRbLaP zGFlT}aoEH>ZU?}a3dPhr2(CAlnegxBY z&bMayLA8{6rn5C4w4(Yd)tZC9<4a&hYFkrdC){&~g%xWr;1_z&hm=*LO(i?GlKb$g zRhiF6zpe*AN}gc)>#m&I~U##%u zo}+yJ-WuRt>;yYg{(x-X%Y-9*X=rVjTl+Zs5~lv+U+g``Q>!-sr~1d)&X|MJ`zCIm z!AtEUuYSJ}^@Hvg8nZTEyq~pz`R-BgSEC}V`GqO3#NP`Ru*sIlM`)&;Nji&D8L{}f z<+ov~g9lsg87kYiZxgQZRlNrvw|OvDRLOV-bFrylkW zFik!bEZ>3s@r>BhciT>_DH>?XT@otaF&AOk{_6uo@8Z?ijMH0XjFmyimk$Prw`n!m zjxvh3!a{LP__GUZ+-(?mPjHpGv;E5RjiKe((b$1-`(h2*kL#={Pkz)*yiflDuYK{1 z7!E>YSNxsa)J9C%`vdYjsr8hwK81Mj?|x$R+lnyivq{!RcZ}$3kmRK`$TR1=h^HMY z!QI5xQa3Q%*5D-_c{}aQ5Hm{8WG`Abm2m@c|H1WzIDa%~DyuUW%TO4I_v`AcMxPO} znrP@H%FieO?@eu`cSJn?hdOzRUXKgFp86f6cSs!O)6&-)(M;=&%Y^R0UjY*&wzZEn-M41crA26G}hni}}3HSigYpYpcuPVlX$vuW6F^;u4- zpUZc~ID+lPHYTsAAnEmP{gRh|?g%&X=9xa5)SB?D+7GyI6B{V&G}kn+Y=DeA9m}Q` z#d~FHtTl}pgdBkF^WK5y!8FdJG5C}7Xbgz+4sXIcM#9&#hFAWT&&!xWh4_U1!6J9z zMwatV<+d3*2J>32@)P}5uV)uZzLxU`V?7J=`FZ=q0hepA-&)PnjAkW_Oowra>2w{n zk93!l$B0TU+gP2}Wo4V)rxxdpmW~lsTW(>!yOffB>p0Ar4;fY{_1Do}tn#m1`RsP} za51nN^@CU~r7`kbz%mw7qn501@>1LjQR|NQh-KlaScZY;gqj`A$ zF$2_@i;)4Ayu|M1V$#+MY{h0=e?uV;Gv|r)$r1TYdYnH&1`b z@oU|sBLC3LDs}&nUd%J+iyW(#U0nHte(fM;_%zeR7V0-AY`8UVR;nfJTRzQn`Mvu8 zST(|mUvsukb)B@7)xLFJ_P6eyYJ6xyrZ5$C$N!^gvMt>Ymo%&oQa|MS;I%A>4oEcZ zFR0evc6D_!tT)ma(0Zf(|3+T=f7|`yHvDw9Wv#p8{~+p4_}TMsT79IW`jW70(zs01 zE2o{ZEistaUgtdW66fhU@{-OuDGQuZUYVxeR{XZJpPhm8q!&3)*O8ZWA9iKI+Cx@w z)iXiH-GlGcI_Hs>-hp);c}dqF<8Gc>4DNfV-}bmMg$$fWUgA7mM_$t9+|7c0-CdzV z{rxiT(Kapy&Lb~zo~|P=>4t2~f|IuzfmN9LKRVv|4<1A>ah|RtFX@s)vcTa*8?g3Q z{C04Jy@B&6E^(f&BQNO|24=zdT79waX^9n8&wf=h#;bqO`kAGzGp;HCP=tLxBeM!MrevcPih3g}Z)apP9}o*Nhu zg~W)uj=ZE><(UN$kHW$Hp6Xi^o=?#^kNQTOr|YOKr0dZ>3tXmb#=9xiJ7(0tKX?$m z#Cf_-dQtZu%Yp(oVqu7ldLQ31(b~Xy6qk5V*O8ZWMVn;7HkSmb7pJ_NXW$&D&V$ru zt=8Y1b_9xRVT5@)f_u4=ZZmJn|Cf z={oX~?m&es_}g>_^O{_d&tLq^f(E7|FEO32lU~$yx6gt$i!y-aD(|6Xg^lcoUShwl z|K5Oio324%{$=@Jdmy5y!Atd#SJ$D{jC3_Dv!KSI+wlFMdT&3l&CbAs)IQ=tT_?S$ zb1RqyO)n!4K2|KbF9h$4*7%aV#ErU+yrk>);|4VU^aKuL4h1Spn1*}Bbwe5pXWcO#X+iO|s{Ee^q3~1{Y$Jhp4r?tQ8gb^`xWXY1MGn z<%qg-<6HPRz9;0E*q5`O{oY?le!gE~Ci5lYs5o(NJ)4kNKt8AM4vgc2KXhS*?NTAf zzY0+M)@9%2H-`0K+jpLY=Q~OQwJ-MG4ZiYuqImLgD7$vAll1nvh`AFU;(zDf!K~@p zelkYy%Wim1X`t{g(~zaMQ~P-QA_{Q-i`_+diH2;Ti`pychq-L$9q%r#PN~bH{!#nL zLUGPq=LKpD@j~Q>0m2(~A1A8!rchi18rIWNY^WFuBMz!Pd`oamZptb3b@veYB_2aE~k&(mk?$-lvG8zg*bF<}2h_jb3ZTOS_yE z?_RmEM)yNyjDD*M@(KY~Vq6_Z*3vab#u(n!k>^z^nff4c5}Wx+oiD4mv^;moEtcw$ z?ah+IzRUN&wtf!0=;YU8X~-$|Z<4EAJFYj+#jw|po>SWEr*kcRmc+I0fj7W^Z!MNQ zU9C&{;a=VA5eG&8j$!PEZ3)@t8&Q>c-dd;B>G>D~CeniW$<>~msPKh->X$rJr}UhAGI z>B)|4d{UyUufvhDm}CDo)Jzkr!TrdkML=!wv6zEvkZF+L^{2bf#2}zC@V1=9y}xx6?Q2`G z?qefmjI}+B@B)Y1h>>M1*s(4VvMp=77B%bxpcu3d;9x0FanHvI=GIs9Dnp|S8913@ z5GU(8Y76Of)}{K0b^ZH#iMU^mP^|~ZwhW9eV)UY!yav`qGqG-n#|TmF!5&z1W29_z zn?7ZDjdk84Yswyo$QdX<-{$=)@-@{zn9gK`ni`c@EXx)bI>24d{$rZ4W2UL)s^3*_Yd<;e=o2$(OCJKFX9a=IEecB6<9G>T+70;S(vvrI_8Af_19r$ z72H_v>F6`JAg|F|IUk*Kn4|KRFTH zBAduDZ9cLrk3vqKb@Mjto~Ql;CbxGq=B>s0C~vKG!HqKj>c7x)t(;?~MA) z)j^#P@Q5kN-M@sK8teHNjE;OD+fr>{9o{(R$f?p9_aOG*1KF19BWv&%RuxV?%*lp( zKOf8fHXc)+hit57avkqy3c0o=nPT{3ZssLZe!91*)z6Z32M;a6zwccxPIPf)ea38&^?5I{;Dr|ji9%Z{u$Hs&KLz7*+-v_M%_j9{ zOfUB8!3+6Y*P(-pfyJrK#Nu&JZBiR|9?0@Gs6F|uhL+`3`&y+gitNWe&$X8Iwdv}@ z*Nn`Bo3S-a=MJe{=*Q~T<@a`G!dsuQrpFc3@7l4xCHTbyS@7@T(Wc60)f~W?9xk}Y zIt$KSuW1VUU+$-r>a7g*QCt43kH&!Nd%QXmwsc)%+V*Ul{EYVCJ8%W(`C{_iHEi0A zi?VMk>sH|L?fm3A@uQm8CM+3)`mpES6k(YGdA(^mx+iTPLweiY}dpdNECogflu9IHW zm0y<$qyMskz2_94Z^k)Lo#V+%9Ixx77j?zsGNE^1F^D+5PxTk?(9$`cyu|UkPWBgd z7j|Krvt40O54AQ+d4F||Cogflt|Kq$%qL~SyCIFi%QjiY-P7I4!13fIj@NbMC0z&K zOc+?UEezhK_&k1eVFSmLmpES6k(YG6Cuc(I@4eweh}xH%=;>(Sc=8g*>pJq1F3~R& zzT}R8N$=IZ+=O13J5c9+^b*JGI`Wb(1n+a~FmxJBnW@$D%G{h~sq~)kiwFDw$v!wHf+l zD7N1?ppb#%r58C~*O8ZWKO1Diovc`RhCC?SGTz3(@#H0r*LAWVsB3DS31?a)z{oVk zF59MA891K2#PPb0yrlCjmkF-khv3|Ewe}f-`|xy*Cogflu9N*mT?3Cy81Nz)CLd9Z zy>=MpXw-Qhy~Odlj=ZEBQZN%L_d5eO23?i?jhJj{;CPBlysztIT+~HnT!EY0GoX(3 zHR;_Mi0kn>@1vKP{mPpwa4GE?eA|>M|37wOUO(MS^^sTCq1B9Z1<>37_H9T#s^$gu zY%5}%13)3o0q8pNlCEXm6|j7KAFR$Q{!PF$+J-p*^5PtTt|Kq$&gNf%F*Z-(=x_CT z?8Y*zv5Xb8}>Idm=e!K!57QTWcTlIPDpH$eu@#H0r*LCD2UCRSkpyS2&@cX** z9u541_t8tt-ah#XOnZa(=f$gWITC^W(7aS1d37E2jdW#CUV)|-=B)l-YFzfNDP)`j zKq1Wm=sNO}u3p*|=)2C6#ST*A60_LK!12^K;&@$0Z6V#%%~xP$Yg_i$h)eQ$*)iMN z$omu**420LGws z0lSaiQ@WMv%nDakYqQgj+w(o+@hp4gFjM`}CxGf(>-Up?j6MlA8%CR|eL4;_2Adar z=LMHJvY1yz+1CaeWLrdtqaj}qc`0Ae=h+z|KD#$tvl!Qa(A?of1s>T^;QgzEm{+y- z^1I-fR*oMTa#nZ;c{2OqU8SxM?kCi9)KYzvqqfQGG~x5mnZddhGH(A+TRvbxrtrGn zfvu=MOxD*Wp|~N(5w)3e9CezSf%gw~VaJCKQ}0(hOB&8;QVcq$sh_K)GCEfoawJ7O z3oF6~%v&YB3-QjO_9-L4YI0i^=@c#Fu324x|990Jb`@>QUg6$5in}%3nqTVa4OM+S zSmOXJ!@}?&3*LSd-or7zAbY%4o%Nl+z?|o{PZf^8`!T+`m#nXMMrHo4va^_)zk_X^ z*F)CV(c6L7dHqEE2;Ic){!>sgyZ!K9yxE03v3%_&HnxvVD#fs#;l*7i6cL{HGTqyW zNkILWhj-V^u2e#F$jo+k+%*BHeRIqMc(dR3Vrh?S?mN;30(s}7?o(2`l-5hXx_5Ru zC3TC<1C4hAqnGXk4p?4Bl)qAw?H{7%U*<(w8gmz+j&c_n?mxmZy8r0ATRQZw;lV~P zS}ps#EfV(=!WHnZ;K803$8kp8jtI;ZG4&F-I=i#a7uA{34S4^DeXT2SA*~$?-lOJ5 zb|L>7a-yP{a-!<>VRf>;Zyx(#RHuf_GgZwMtle(SyM^t8d2O4rx)&AyZo~iNM}ddn zO528PTu=2*y?Adyp5K0*SYel8I((jq@F z57tdpa}>*QT}@xZrMA!-uFbJ7qEDm~v|iRuJ{!Yh3K?`X2Bg!On7qWqWBYrFk0&dF z_b!!#X~_CN)}ql&Ytd^)c#E_z(Qx%#KRM2(DaCo-{1IY!-57|QF<6ds2QO#7qtOU4 z_Q58wzcEm@W#D96p5^H+ykj@PfJJIgIZQ5QsE^u5_07IGPdNK;WQ$F|B^wMKRD|aT z`iS9y8(G@{7Ba@D{)Kr~ZyzxzW<7iKPOU*s#GF`q8TF0IhHn`y3dOExoqDNUT+{IW znT-P{iuKjP*{aFv9+O#^U-^Z*Q)Y*Zhm06;gKl=f!bXR*OXbcu#ixVaPz738o zf@J%~w{tS+XzWS%SGCfj?6xyd&JE`+uxw*T2g4jAeWz)TaYO4%?gOU-+j>p?4lO!@ z`G(uo7Nz4KyEkQ9xF8WH8dQqG8n>InVrOPg7 zeky#q82+g&n|(lWs6WoB4jvUG0(z8U;oiuN=%u?t|MMyc*cjOy!EGx#3+c z${QIQ>mw$n_q?Tj$C-Y1-!A)+fNNvjR%F1hPHRl{1EOU=VsZY!z|QC;{?&E#jFWCr zWCpY}?KfHF;2aMYZoqT&I{(u65&!Bs@{(>&Xa>}-d)2frWw-RM!hNqg|B{#ZSJ#o3 zbT$hzAjJ2z=`~M~-nD%S8~9gxk$-g^c}X|PKLc`(TfwZOifh;7Z=KG+(u@47>&Q#G z1L+4-FU*un1C%vd^)i(pu9=Jh`ifXPjwsA!R|B{#ZSJ#o3 zbVHx*H+i^^F{v|K*udX96>72S}fMZx&_&DyAY;)YOA_o2?FY&LgBQNP( zdSpQGfId*IuHxGLeVh&aOJ3q%T}NKh6~CAcmDY{~ucM0n_If%P_?NuIzq*dRq;qbc z0sj4`LDI%^vd!Bj<2hHIlhI53tLw;1x^?9;;B@6BU^8EFV~nqrfqyA3@vp8UFX?#o z49Ghe44s2j+}M@Y2G%7nvF^6=8Bp!+3OIco_d}64$mpdq^6EOYN?mF6b||zS?`Kln zy&aiT=U<9J{HyDzKGNA2$$-BXZH8zk#kD(d-bd$O@)G~*I`WdPhIIy9{T&Oxj;MG3 zgz@-Y)j65^hB0&8})%$qNd}{;$Qe5I+T}NKhxuN%;$%kOXT;&b( zu`uwj>@V`Kt|Kq$zF~ja`DCauL~+#IVO9qIB`@)>t|Kq$%+u1L_2e^<hm}l_y;GWmsmG$H$H16ze9<$YFrLS8og8>d3Bxa8|p$f zrbD)~Is0`&jmyEvqDFQ`A+fWrBQNQ8ZBBE^kX2L7dSA^z2M)DO~m`KH5xXNB2|tIA9Bbp}pGFEO#MBQNP%EW|Tj z>+IRO$I81c#LCFd)MjMo{ILy1-ytvDXII(<x*T9BQwOnrybbHsiWi=w2v!c;CS*9#~aRgVi}$B%<%mrUfA?z zN!QBAzO{-hWypg|ZKgc9*Wc#3Uk-L;FP}b>Z5epHxZ!=AV$l0|w?1fB%YX^Nu}0x}nRy@~NL5iZ-uZ*@=KSpfMP*=_7x=xTgEPNs+KW6Tj0~ zR(n(x-hV5u-F3lnIiq-W!Qmp9H}s}>wLF$>yW%R>?wlvJ;gwol6L#C9nQaD^p|^j7 zD*V(wH$0DBjTMT)cWNw~9b?TepQ<8U$LG4cm)szqKVNfy?$fir=rZzw`$m`bvVDv2 z{ki3=G*R9nniaTSQO*n8t~HQ{Ho74GEgH?b2UM0ZqFtJD>vu)q$!!N_-{!3x`!&cP zA4eB}*h>zqLf~6DRsjbJ@ogCe;79Lb%(mid*_Oa#MGc=h4vQIm<~n0jn~B+zvg}zt zcY@iT6=i)<^(ygshwa#!+ofPJF;PJIuF8ee$%p6>gwU1{Ip`8qQ0Gv=}N)DvdvXiRpa3?o?>mLr>X7Z;ZkQF8f0K%Y9BGN^%yTv zCb%9nYJ$v;g~L``8~1i&A?@uptR16{){YIFj5^}vT3_eMd|HWb)c%(N_^xMQUDOfl z>N<)`I@8Hwsl`1_j2m+1akAQ)=Ieqc8rUi+NLJgVE1T{x7W?vD$@5gfSb!!tAH9+loA9&Q6`}SKWZmnNs zO5UmF+k~O>M4w$QYh`>CV3bx|0 zbDoKE3zxBWK2>FmVfa3|=|~e6a-#sNQn9LR^Jl+3eC3+P%>9lvD_*vdZ1bn3`}mz> zjd2dH01J530I0v8mh8nlZ5>kI6?q4aj|)j}iLQyf{c*?Cm?LkXt(lqhmTh-{&+~9d z9d7p$TJ6O$^p)(qE^ zYiD~gzbkgqOY8ghrdp+LD?gNNZiHSGHuoyWTTKrUwc9U;b>(Zx`f3la$}4oWXZtt) zf>}3kp9j`=Yei-5F#jwxiCkl9n-?R?wjdkm3`_M9!`4`M7VjY$ZxW4^ZqLXf1}|1; zM&9Xj&O*@q{ietzJ7j$;2ih9Amg*y})pg`0-L6q*A#K-H)3~~E(i@C<5_GO5FLAA| zBQNQS3^@w}7Q8mKX|q>)LwgoBa4mU>YjquYNf+MrEYzuL4fVGuUR^%U(!jOkC9c(V z1r5F3F>&Q#GtR`n+NxdpKkDMgEQH@*-TuWZ!T3tt8 z(rxuP3quw(hTqRmN^f*G2LsoVm$+8fk(YE{HO@lB{kD+OM@a9U0d@wiB`&Q#G zGcIR=g-wH6X^K~)r&=4hmb}EZx=!{NbU z6%3O>ohjUm>$LahNL#r9-VqT_!%kLF9|9@V7FJl6YtV=P7b#)ziNw?ue8lJ6P z4=q=#zU{#8o6fc5C9c(V)E3f}yPgImZ*GQ6_y6%K&K2lfOJ3qyT}NJ;Qy6nO4SKfP z0X^QS_u_q%3mdqWyu`J-j=ZEB_9zWJMkTt=8?@MV=W%VK0 zd|$mQuU}$e;9Bw$*Xla*l5Wc_{ERR+%e2-it}k+^&b8zvu6>h`2J`2f0iOofLahNL#r9-5~I>!-d`E;;`$Bwyu?nkG4LwIAYR2>(3scs8uZ_KUB=kEzOcbd zG03ayC;4t?oR4%3X^5Rsyn_OpI6cWSgI_d}M&MrxVq+73G^-0D1CvYFU&agBt z#IU-Kyrk>2EDg#!et^4Al=nbTAtURemw43+V@zxP9SV4;F{NBrx|ixBudbuMk#6ja zG-y)8oXu*d#wB@^laYT>NSv(e$V<9{p=q$`pe6GUuqxnudX96=~m85 zgJ!*KS+H9rc5B?>+w?S?3+!)Ah&ygiJz+#EM;e&&0^*eT3LE z_6}R_(25m1;|?#g|$&%J2O;r@zPVT)%(sC}kYN2}}r{#Kxuhb+po zti#L)u?{n`eacs%s7opv7*fbmo~)P4)5rAU8U*r~UOfvASsGT_Jlts#O{~>Zp2zB$ z_QuWM%bKGD1H_Sz8|AUthj{$KzUrdYl%~SrEYBb0@NY-E8<*C-w0-lYg)sJSk=!)) z!KVNGXe(B^rD)huy*Ht6@%!HAZ7mXu@!CqyC5Qf*;7WIF(;pTSv*)V!#6^6}vIZx& z4|D9U?kz}b=5J>wo-ebZB?RvqS%f}Eq>IX8nY>3a#oHTsrTLw<+ICTUz)ab`!ycoI zO7r*8A5FT7clA`CS8TMS5ioH#y>HW1Tq?yL&*u>v$7>gT{+3?X@fUG9>Ue z?%N_f(uJ^FBHOpHTtj0--#i+5d!FcacZc+{*jIgwY8&%td!+>;q3L?rw;20&i18-s zIL$mdUsU+KLLS@vCdeo`F~)r5HOlt#4|W%BO#fsa@AFq_)9KX?db)U;JdZG5YrNUe zAT!E|$Yr;$JT`cxleN#4uL1g8?RGHnSx)R7^CVn+P&keQhOAM9w$bJ7fBk-SB z)cm%y81nEcp?zDo|7~2G@ed{23JZF2kx*}D;@?Kl^B1(Gh@1Fv^<}~}h~N6g$T^c_ zHZ1X)a;B^Og@*NTH(sQ~nhQI;rogT|{)M?wJg@vse5@Il^^|5UQqTP)o>yLbYO)z{ zg7?s>zgXV$frq_}QJd1tD+juZQ~ejnbL)T5%LrSVY~C8%OY9gkM_rd=rHw%yi^ z)fOv%Q*&S@$2nR&4{e6$CP<}_MKBu~| zl&x@E-(Bgxr z13su{aUNf0agUHa-p!=^8+&Y33#sRHRgj~_5m6o-QRk2am(<3jR?{xol3FWoGfw>DP}>Z4+aaH!kkM&!p~>oP{Im9J1i<)-|bJ5hogvp}cX)*A5m( zM7?lCokJF!e?60KANJ($;aT$82yf$IaYSU{h&qQXxPMBT^yh$TyxwH4%x-L4-r|VJ z!Vz^2S#U3k@pXRIls;$W$!uK5Vire47LKTM$bx&|W|CKh0P^T|OlH&i7PUAcvT#J5 zLl&HSQIqW7^`eGFRDa%f_Cehdk%c4b9J1g%T}|5UIg%m+l)r5aDr|8?WZ{T9hb*|d z&+};igK2bNh3X4Tonv)GdA{t3I)^N{zHjoVdf;MeSw&?Nd91GPgUG@Mbq-l@lb+^L zm0woUqOvL*&-0lq-pE;aqs}1u0^fh z$XR%!&LImfetjMd`27sM?s#4OX2!T$91-=x5wGyM4fVQ0?Y_Sz|Hd9#X3e6!G|uWA z&JA43>O6Wh_!fDORdrlg!2L{`U!o3p<6krLD0tI7I@jyEtm9^IWlI)yAggnz16iXq`6|rPd9KwA*#`n(S@yiY(Crf#JUTATvUor^4)H!6q1@z=Lk8u&>z14Gda5?V} zp}Qo5a73NMd4TKblShBqxrxVrt3KvzgZJ~&U6QkKM4dwxobH3Te(=E}T;Bh7xQjck z>O6ARx*0pG<a95Wim~%*9lu@WwveYSg*a+gYRYNDKe$UPvr7h@j7cDr zS7F>GV{4kP=}>MT?e8^L-jAuBi&*yb0f#+(vV(lh0d}dBP94s{_-)b`x_K6*st-7 z`l4sAbeWwUThOR^)x&SppgQ9G*bMnQpBm?26gpbMFYtYRG40uQd97w_EMROIIV3OW z3W;ld)Se|HzVqhsb@TJ)G_#3zqtti#pgb?*kGzd}J8IcPb#L`9KY3RnV@Hyo*t*J| zzUmw=--{1b_BXb;d6|AI?)sgn8A`a$i@DG6RHZDxtD9;I=b<}f`xf$8T}%7;JkY+E zVMRoRZ8ynQSh?v9qq1@FY`p1v(h!B+)cT@1ywBr=t|{h~Cx$rVTwb0>c63prM8f>T zUv;k|W^Yp0U<|wDf*+4kNJD>-|2$mQ8<*s4ImXr6;h63Fqg3=xfGDe1l7Dr?dE?IW_9rN&#EtIsE-GI5)r3V?uoK7Cya&WF~VUm#7DyHCS zW1{v^O2;T-ODECmMX0=&n?re>Xl;L3F3#@D{bBJ;Vt-h@ z4-y>uAax%^Ti}DG7X+CF7j&gT%akMbo8oHS_l802dt-4#&cYFM9fq6N->;)>&wI-I z(RC2diEHxz*4jnASZmjOKi7QKJzjVE`}PPpMoXzRt{z9LjTLG!AV6SHHiz8Q=dk}!uQm2t|ZrTOY>Ge(ey6|*)FS|9Y zV+;ZKGts;Tra+597%ji+kY=_n{&)dmUp*lU*ki|=d`hIC0m`9 zg=Kj^HtuV@=TUajNMc3v@K(lE#Tm3zJxW8RdJS(;VC!XXRpk)uog_DU1Q#9J!cZh^aTcdTQ6 z$7y3lO*b{(qD^oyV}IjArBBO)IKdIU~RAA$q@Hye;;na=+-w4pz_OO5k}_ zZ-nH1*c~s%?yn@zZEJ~6yhqxsyw%?)h+q2GmDeD?6j{pS=GmdVLJba4&C%hu^lhq+ z&_(uE=j1xzjXH-cxW!ElQRI<5w*B7!x#TDZi#Ot$!W(rC*;UMqt9*!tjk{#K(?+@E zqOOH4-iR!`G1lV{IS+ekt5jo`Jhyr5gL)R_A**v7wFCFK@F7~_>_jc%Gi7!$udl58 zCF+1*>KwA*wsH34V^8u}xmRAljjc*r91&SKqRyc$;6@cZM8U4rC^BAom)hc9Nf$>Ql<(y-al4~iy(E`@yS)H$>T+|~ZMG_u55I#TqeeExP1wfZ2k@IjqJ7F?~MTpHN(3OVuK3~0;I z>BX(y$Oqw#I)^Mc=SaR*D{s+)SKrI*$*CnRj);2Uh&qQXIFD|*l=1o=m0EOLX3s7t zZFNb`!XV-=_ZQ&aWYU6n z_o+6I*jwNt8f?3&vb_I{#X}i{hw7ZnGWUDwT=FgHChl!i&+g$x?iQECwSr6P95>kx zoCCMH%5irw?SRUnk5uSeL`x&kX|1R&?aK0tmZRhWBuKCAYZ&GsBNgJ{y zI&CxJ9@jT_UaTm}6iAWpQUljH8v!L-n7i{Tim?ev@|uoYQqZVcw1s)lt(^ERNgW%q zl;3@{W2ghicAcwl{yL?!2;TT#d9$32o8k3Mr(91lE;?D(F=d>C5&UO!^IE#6upLt6 z&0b({gsrM?7JXGr40@3$xz)UHz0RQyaH~%7n!NuM6WizTJ31d*%kxd2zVI*`Ij4&M zyPi?^p~Z~8`5tDUa+}5N!tG>vy?T}~4s<+he&6??sJT?#k4Zewb*1+)^ZC#FMX!Ur z?hKdLenC-VPFewxvooExN3hrOvD*u(8vpY?X!_?Kw>i63me-{}zsFwuGtbQ0aKbix zH@{CZ7kKt7Bfs52bJ^N+wsT$;WWD__RW*`^_mKM#1(Zr7#_T%x{ma<8vb{O182|0O zyM>VL-u1DiJa8yauNNHZ4UcRf4mC}({ZhqO-tz-RmK%RM)D`3WHrmb%Zzu10Zqb#7 z-K-eDN{gxsTV3@IH+^>@!>PghRu@He@kh!|+2*mSF2?qA2Wfaqe^K*>>eGx$ax(1r z*vV*{2x=E4&o?T;$-<#6;1(Y}NC7_wh@6?qU1E4|W8IVStig$O4q0#(|K)@5-*Nj6 z(*BT+V*H7XvVDb~pJgs25zndh^VVrIJPIK}BS?*@7}g=iqs!@5dD3-rh~t(P&jUW7dLs z=BPimh-%q|A(L0F;?fqdB8ch7IVoz^ve|S#zi@H$JzW|GS4x8WW$N#?h@spws|Ei z9J1i{6w0CTb`5L~cn@YiWEbADl+mh84ms?cV6%U}Rh~!0^nw<@#CgCk^(@N!GK=z% z4e`jKORK|eYX__HB9|1fI48=3bLt$j;7S$E;r;3N*sdq5Z0Puc7Ux73&Z%?Af^+zs zP3uCqPqR?EJdcI^%|rJ~WZ{=Ohb*|J|725eHt&1;K>ZDy*Zm6*Wa6jM9rjGZU(uj$s%r0qN+~T3g!b5dVwwbxtx3X!D zcL06A;keAM<8>f)4@DLps&mMKOFolLKUC^X{hytZ+3@ae77s-h9;$Q5f;027Y3J;b zH0z1-t;k_KPEhw%&cZ`=4q0$V_hnOLyXiEj{W)20^sIsw4@JH3P@O{-+@@XGwCLnw z>eN|fV^$Qjcqp>)P@O{--0RKR+^@Kb1|_Jmrm^d-9*QhHGLl)ez@N8PYD2={(t6VZ6$i?EE^185d>KwA*YAwj7>c8!z3$EAX{n)m| z+2WVT!Y>PdolRbL+0;Ku^)u}XFJ#H0JY;na*9Bake%VyF_F>BVP4&-YO>wjOD(YZg z)j4Fr&E{;m=x^y+jB4M`ZoGeh?xqaFIdu+g0T<$)O$ElDrAqUZm+czlZgEbW8=O<; zkOjA0WYYoT3h!5>d~iRH4b`0!SvaT8Aqy_HeKwuHd5hZqdPiPUj7im<6InQ?&dDru zQ<`PdmFo8?sMe1%yLTSuZEJ4ISvaT8Aq(zuV}1@sJfcpuRd)Z1A{M_yz3@wyD*X3( z%~N`}@(1~h9}aQ1WMx}8t8*N+1GlC|Hr2{`MHjQ~$ZXyw538@DeeA0`hb*|9=Gip< z><4-ub4z7oOIUrCLHMf9$t-hbiEJ7;#a=uwt=#!Qw7b<;8HBIu9J1hA7R;t99~?xx zL&|^mY%FZ`RR-a!I)^N{r!V%A*9I5y{lCh8Gr7Ok;;YEAuj(AK;2t?;(;p4oM8(cG zJ_XEzUa~!n;ccr?s=r<~j9t~9QNaw@74VR6}>EGflMTy~RZ3n!!9}Heh zS+kpodJDK8jLTck>swgX#^3_6Hil&`9&?zBr?0DlHe+24yLEoH$!AkU$^-SC|8TJl zhUcXzwt-tVi$<3k$U4$prWt*`I-A#fE*8G)O36N|U(bv*Vz!pgJ6R)<*JJ!n-rxA; z-0xEO&!fENnayvR>R*jr=U{B#)89POuC&!?V z-n{OIc}$J}oBfTwQTrDMv+|x>l=$~**}hF9c^vY;4ra?L_v!DeYvs9x4RPl6Ufs+hvW_le+>MLp-k9m>%f*FBhLi zm6O>3?t5=??~R!jvQiYj$@haVOz-usMt$##=Hhn^#gCq9yk48t#f|12&zRwtnu^mO zmPoEebZO&Mi?ZgUu+k!Vw|d7M%Y6=&T#A{oaizs~qgCI;Bwi!*I)^N{xFK~Z_)$mkzx6z3f{zV6>1{k%P?7hi zYbOfbQqREd0*&3k8BvRnzWy0fERIJ;$BI3L5faLf2{1~GnIcXr04vp2dFWM29>f%3Muk!|TU z(A{v`*VnW?8%%!ngnXX+^Y}kchpA?(vdN;vC{KAF&1aV~zCSa?jA@oAlBXA!od0M~ z>o)+d1m6JkI&eQwhwkTS3;cZZKTFK#|D=dJk=zQlA zvdy!3T>XqjndZX-_M*->buR;_@qY9rGRzUaAL-~m}~#|T6~?W)>jS+cH}*g-k4o8#tP>HwdMH^oy*7CzAz8I_*%SJ zQcu;pz|m3%>O~!0f6k=6O`rR%o2dS8g_UYyIR2AK@eU1a_T$vw(+Ku>i=T5Cey(#| zoE^A?kC`<3-UM6r{%x`?F;g9^-vBrZkJmY5!Ik@8CaroGZcE#svWbR+#p7}P;PE<# zEV!&cGWp#$%QkSe%7)JV!uL4~kJmY5!S#8RNx_dV+NvB^-%pqE9(cOPqh5G?^E;Wm z=f)FT^=az6UNG-Rpl4AYvO336J8(Z;%A~A^j#TQuKIXN&zqs!Er~|&QbI5}0bv=_x zzVRgQ+sfmkeal*$9a%WL&Y>;f{y3URA!Dl1qkYQbBYnzRoE=#>yUrmC?(*SG`uWGE z^!Etm@oRXEY2De8h1=^KvfxJT%A{w*1L*QAm0J+D2lVIM^erv<-{v_T!HTF$imrm4q0#`He}L>!09yap>o}o zJl9Bfc4Xn~Iw!Nt{Vybwu3TA6y&ccX=YIV%dyBIp3uo6kWWnuUn@L-}R?&j-s@{#f zZ-(yY$imNSEYGC3EjG~0ooD6Wh#21gNYA1?WOa_CcHlNm&7{f$BB@k;)xPL~t`=vP zb+EJR9LfWiKbqTjCxQMq{gOPlP2Joq&WjpQ1ZEvT$~tLl#^~ z&rEXr<`IqGpt7+m3tIeK*2{igyi6wjmBIbVZgFuJH5SG`6UtxO!221K1PI-y*f|0=O>leVs!V+?e;fX=bvE z_^?~`pYK@dV)cCn;rlv=EV$zzcT=*Tn>hTVdUn%;`FEtdJ%ey|o#Ut-xN8r0(~8IL zqUta;CLwdFtMRaCHdXxIU0k@zzg5m=ui|fbTAu^52f5FoP*NM)Uk}#Vs?F{tpP?nZ zx5R+-X0|tNLu|)}j*(fzevvUZs~(81cz~dk zPi-aFbrFvd(dMs$!~E5!i(8wYo_f%huRF+khbFrk|9;!re7?0IbvvrEJ(uz~itDXS zyG#c<>(EtlLEE@bPTzk9_3~U*y?uPh4()4tXf*}p_7L;?h0F68vAwY6Jq*_%h<^)_ z?OvEy_l^}l{rTOD502nH%=aZ-<8_5Piw$Shb?LOj%P1Cp(JWt~yLf*nP?pzjPZ{H{ zun%U9@omKYlMUth`s}Q1boDXKA7-}|KZMLw$F`I=va6fsrBWS4(t@e7jut82#t5H7 z<{80bL)WRfZenX0Blh4mvygjtkrScLx6|IzM#*;<&3Btuibd<{%j{bI{xbL3MYF-l z6%lC*WO=Q&l{0?dIqIliiCj@&`6`)hl~~5;5wZNpvXZ$X z@uvEg(PC36BXmYO1@!O{ReaSN&RE+}Ut1XW9BT`|TeX{Nylx?`-%*|ywZ5RmYr(;Z z7q8w;FH&q`W`h`6@5WUAzo2Dt-;mWgoG-ZSg}ce6mA{y|I8tWUbAO)2lNp33>m0J+ zt|aWHL!Sf0hB?Ze!}x!<#giF?C+i%t;F^xzOsS?dmq zHp5}3SDtG6eo7HZLF~zVu*uT0hWq|Vv%>uuB6ExyH=Ld1Zp=(tVrF!W7lk$#lywA5 zDsCOK%~_1uw)A)NG4ywD+8Jin51%8Px~Tru%rIW}QmX@PK^=2;+%?bcK1A*37M9nv zRjt-W%DY|W$*X~)cE8E8-riibKVg>FV(`3!ULHG7ddPYPcCZV z&^~ZC5^~HValA%UnX0la+txc9|8B`KE6rame*LMkY|HitSL2T{d(5%Sb-hAzSD;Yu63)wmhTx@e+7~;p( z+O6e%s(-p<`mLK1Y@2QuEcXLnX+PJxHxXyCH_^s+*G&H&o^m;J<4;ro)VAltgKP_L3X!-NI<&oM%33n@JnKQhn;ZYBV&;%@Mg5%Ek*!Kuyc_2W@7{MOgQov7(RS}Q<)QJD9W9;=4xX%+hk8+-p2f97_RN(G>N;_g zZQakRyf}Vu(%l*5!JTyuS#WEvXHdx4EZd)dDxVGyE?{wIWZ}*_hb*{O$1^Cn;w78g zAk|kMGQ`Q^$;iT!bq-l@-yF>#hu@#rI86FbI5`lo0vg0@~hFt*dsEV zDau=X8d>%hLLo9ymIWB?9RGR zBMYC_Ib^}P@_uk@0;bdE+sbw4O)X&YX_;l8);VM)Hz|W!-Cs--mnnx`#^dXBpGFow zJwoG<1=nSE1`RB=ivDy}*)ZO_POGU(?Ok<_Nm1$lqB@c$^?u~9D^Tj!7k=g~8R>bWG+q1BgVc60Y)7RN>wj;(XZ zf^%z`LCyB3(dI_Vol^&W;o_WyW9uBU;BahV(OtAHUiI;%F5vl5x{GrbKJ8yWgVKGo zso(SK^6y&eGABz`md9D0jLjn$9$EI zUCLuzbr99!p*1y}BAI^`RWXhK7k-SmY|qh9#*w8!aGX6I8n6{fs<{d)e+s%23g zvO336J8)U{8T7}US5zTgdG|U#X7O_d;paMsEI8ly>6GO3k*>J^D6dQC>H=2BW)P0O z{AN0}jIbA#vy`824Rf|+(LQ8#4t0R5`+Yi(xpNc=_m!XTi7#SxaR%YyI)^N{HNn~+#Xdy3PvhFdr*#hJ0nYh)I)D3e z7iE4|+2m#XF3`OSo$j$){Q9rzE1y-qp)sR$T^fF2ml%%zWDXxMGsL)ac^_4)R8oXL zR%2)KwsU{aZ+mHVf`|C|w(|4CF~yC_1p0!h(fn>7hxqf6Yuno9ohPV_DN>rvITt8u)HBp)IyL$Bnu-=9?!k zL{U`h354@4H7L($QN-VT@S+>Vlu&NpZ5sc!wDqdMVSOo`LwVrzHL<{94Xa3Ze>3OY z5V{xEUj7{#I_`^gvQQqcleMk7zghL_MDpm;S#m)^uEsJiU-M0oNp!MCH~GGX{VEUF z^EVg$Jf8x4s6Oyf{CD!(&pu{@_w#9Ueox8G9N}n;@9%GVd{|CD7wsdZ+ zVTj~L_bqHJ@F9++5Tqd1@W{Y zbEM2p=*MfBweU5E6_2225yNC1-|#rWl&Puahrc5IqMSQPZib(i(VKReO~-`${WGnF zyyr8EbTXFb?l7YU{m<{G|MB+_uA>w0nXT{3gL{s(v+4$?(;cUlV*1QDSzdUggQd?J zS@c=!93Qd+=QK85dUyIM<=t4HRrhXW;oUliEVz9m)9GOwf6?JP<=x8@x&K%5cx2({ zI)^N{n}gEn*q;I7U}2SAy~5t==M2Knbq-l@FZtWUzgs$r*s<(KIFFSDEXVkeJmxfJ zH(e^#Lp( zv0~!4BfrUG{s$`=3*IIAoomeNkHW_#w8G!}RLV7@=lM>u`0d^KRWr)Aw_v<2%X zS1Q!c^nMvfRXYrl*`Xs`4aa-q%`$)91oL;_uJmMb6PfKYi{CA@HMYQEPPJvsHa7-iwnz7yYWDwYi`Y@4gltR0 zb>)puIZMpIhKb@~4M$mC%elN>_}e&&XwqEN+o$$@4Ucv(u6rfWn4emSGJWD@`!HVK z@xyoK``|*e25qcW@Qo6<0ppk>_;zuupei=qT#%P(IyZeo+gDX9!%6h#Yg+q2=PZr|q$>Y5jyk?(fFlD`y(fvRpQR+}A`JCZ?c0M-uXfaE_Gs;81bNql@v&!cu z^tAIj$&DT6Vmz+(gIV;4jUuw>HhG;VxePLDcDQ3k7TG8s^1KOTXFCoz%1nD?Zl`eZ zU0uG;d{C4gVzfT~+)O!ESR9@>PiEU2MUC4B|1xtbxrlQa!IJB;$j#!!xK?oDCf+Xj z^UKW_pMNhV>*$$M)HoL5n7^RGd~qg6eMj<3C~fpSo<`k{HLwi`Q|*gxQQE*eY|HbL zZ2x+wbsVCn@V8Rklev9xT|JBQ_%e&OAZu<-qf_TM*_J+3ZW_gV%<2A%^M(IEM(6(X->u}#ZcTo+lmuFfF~PK2dV`?e)% z+4x+U-QBQ;#dVQ|>*^e`;4;Rg(X}1bscL)Wu=_ffwzw{`a9y247F2xPX`{2Ynhb*|5z%<(FG@Z(~IH&5J zP|)JU$ij(rPS(p@VQ%x?_{IEQd|qZ(Pb*+?Vr1dOI)^N{E`!skc)3;d>sFOb<9X4# z6C*2~SmTfd_ld`6_878(T&E~s&6!x#;`iZl7zL4&< z$ii!N4q0#w+ow^Z>WTCzR`nBS_4KrOEwb=hokJGfsETQHj`sukyXH;#3}x|rI^AoL zh1cqw%rf`XowJR1QIVOg%V@W6`6&@L#l#y;kQ?9=Mmkr_zqP$EoPDJ2D%^b02iCMf>2jI)^N{ z)JLi05_Xna1SnsP8RBB`T4dq1I)^Mc-=9-y!jD%dW~=hXsEH01uSFJKt8=nm<{W-Y zrHd7A^L&|mvdu9(W%8va5y%P*Nc2#{U@2lI6>WYQ3qUC=a2;#eJ+)Z?_bftlFE}K z`2E!4#0Ky6-SMWe84La%~96l*e-pXr^TAY|cII+$l z3oaxnm0I<76VI-w@eDEie^B>YTvK?h&Y>;f3T;lM)Bn1QBZbs69>L$-Ue5er{?ER> z==;8we79(nRnx*D3$FO~RJy#SgedS_d2%SfCyvW3VMfO865a+o9fQpy%NX7(Jk73Y z9mS_w>t%Vu(-SF=5Us7*IKE5=e>&<6AQbWdwX1= zc{5i_E{VNSABT)OFb=tKMc#krMMdHHl^UBoE4rZ3Z%kP;_0Ni8ZJ1iqY1+nuMrA5y zzE1o~EMC4@mbWm4|CaonXRg~`MVPnM*g?#5ZRBK{RohklBJ6Slh=8~^@bwy3pQ z4BTE;wy(e8%;WD<%qf%Riyux`l*e|h<~7Rl$IyhyWoc=%<3%@MPTRBGTUKj3FGvS zoy{lp827a7`h@BlWF0czzDO8B$%oXV?8K3CCEAwS2^%LE2&f<(Iyt=DCb<2S;*?9 zd?IkutF}}k_RFBF%JUYpH(FehIk=?Gp)KGxa29@fp_xn=Gm4Fh2tspeWUT#Dn{vVcwE8lCgP9!oh0YGy`s^A z$BQM?bOowk-TIINSU`z4OS zFTXE4f%|X=(>fntSx37dPwRYVJ`c=y*866WMc-_v+qcYr(l(2|>ng~(@P+4gHzrrO zWma93D%J$^G0r-z9Aw#}6j|(1I$+llv(%_q!TznD-BCp>d+8#Jy>u;m3Gp%PCFEUn zojG>Nd~x+JcbUyu=Vq*WA89rl8Y|vz_(4ARoz@q%I48=3bJlzoX8sfuE7Je-(9VW6 z%a|RqF+DQPT3K%5^E@>sx&yD-@Nc~gvrHvdaUhSM4F&_2@H~uRnP%I8#l#N-)OUss zAw_vSaHe^*pr%3$KHb=96It)$|l|CPm0>vvp;xe#!O1FWU^;V{ZOosi;4_ zs^n5)cyF<}Ip*^pmx=)os>^$n!h0KUo%qJguQgm8DWb+951!&|6z%rH{I%(DQD!~& zuX6iFPIol+1}2%4o`n0YN^38()4iKmzCq!9@eS%#?=*9?kBjXWd)1deG}gu9jks^{ z#uxQm@_+a>Sd{NuM4nrR*y4tNoMZmyKZC`mgC4S83imX2Z%L-rFB{rU=d1P7qT2C# zH}T2zkN0F-;j90-B=@CS{E{03N7S=u-8iexiT+hn#zTi+VxH@Z-Y4VOswy@Evj#Xp6@Jj~ajXH<&z%5vo zOvUy+v6b=LC9l=mw#6;pi1xu7bq-l@4;LlV!7Gk*xxqe}-B`D>#T$`@H|iX+;EK&o zCYK#0DXFmP58Ya~ro|hPg*WOPvfzCCCR4>*)#+mYZ)Lr^yLef=5m|Vn&LImfra>}I ztm8vRqLmNk@SG&w8KwA*e(#;k>(~bH+NLLEy{Qwej)*KAQRk2acf4mZjjY?7 z*QQhRj@OTNu(~8?;gaEg$yE5s2s(6H%_UpQ^R4tO%0pJ?IBF-kX30D^d79kI6dc~s zEzZdxob$NGAq%d1tz^3NVKJRgQckyTIFBdP{1WE|Z`3)|0q$v?WXd1Ditg=HPWSBu zFNc2cWsieglk%c$v9J1i*luV}nu2JOMT>0S9ATNtI zA`5TSIb^|YDU?j+ibURX_J+Kd*h5Tfwvql%Oc%#g+ zH|iX+;KH4fsauy_G~lz!q7O)SL}cNJc^{K_U5IS**{Q~SCWkm$vM3K(o#Ut-xOYD$ z(elK@wDZ5Qml0#X@Jj~ajXH<&z$M;EqSx-n>FOo*p1qpq8|dDM_Q4x<4q0$-&m_^s z$g?!~nevbIgPbkih%BBpokJGfwNpuycmE3YoT{8IYMi6R8)d!hjXH-cxEF_$DBb5a zb=iGi-pd5uuUGd*SucB|&LIn~SXL562H)qkw|KwA*?#xf3b)Vfu%ZUG6at*H!qWdL-@W%GT zl4wOt32{9|xo$Y`@t|kXz6j3h9O?kKX=)Pv)4Y^;HA($`H}GDe77t|*9;$Q5f;$qu zz;^zyuuVOjC!e*1N!Sl4+!l9vp6%OSdGa|;oa$(Jj|#Vq+e5aS5l7`aP0|!cqf+%X z=EB0Qi2H|Rwti?u!(;geGl92w>0d*=KeyOX(KtGY=foLpMBMP^GTUlr1>G09fn)p^>Ds;*XuSq*1S6SsNaf+9{XqHh^Xy{H5AF8vg4{`~zj-iC}xYGKZ(T2yYyI(zH`#oe^uYGE`gy&Q3vukO`!Fw{hW7%6{%MFwE3|~e=SKgP|q}A_@MH_xM zy~q6FH^H-)a@_{2j9J4Un@LV?wv0xVWuH>fPE(EFTP9MqCk;gNqbah@Q3u_PX7hH~ z_7z`koBZ7k=@1yl7?Kok+Y+_XHef@REN>+r`}p88-5KsB?%w8i6>f8Wb_K&fp4WSP zN8*PE(ehfYJ;-}p>-}ZSp}*{9MGtcOqlL(i&64M~bkn~^@?$S@{IRJRld?~q+wAav zje^6=(W`Dg;`8Ob^4ylhd^AFPmFK;bcG!wlZ6LGpWlkA0dX^Qrf27$)c4;89k>xHJ zJHPT4j;o?=zYO_GW|K=Cv3NJy4DW8$tbg9Y?8Q_yc#v#!(J7sbh>}TEo96_dE~Wf8 zn4b;ZlaYld53iC$J;-0&KcTo~{0&9V;+`X0$}Nfh+|*Gte5tra{9IWa8*TZ5Ll)eH z=U<8UZI{vCZEBm0**)si&G>xT-YkFaieKA|$?E#?Is~)!uQvxyS}e})ahK<@JI>7* z`aas$x5+wNsd(i~Yj{q>rSJNh3mS#cFIj!$eH+f}E9+}Vqh74Br8_a|g%exm4)a0G z9d?}j-W>Vz0oC?VznS{IY8j_OmzaIRBKi6~mCq2y5V*(BHK!&czO`-d9$be_r$xX{FgE`QTWd+x*AdNb{%p(Zc`6PqL1FhKt2(!NF_w z{#De0{#D&;Q3t$McUXCh9oFKZ%)vu(Ec9PPI8>-9+p?M0gtm+?W)9*1ZptTuV>*X=am;gG z9369*V%u6=^&>{|+GrO4Wd~zH)%#5(@eY-=pIiBYX=)Q{k8_m~h(X2T7 zrPW^BpfSp8W7b%+C=Xek!?g!jXIvcBjk{!v{aSf#2+z&c9Ts)KVRa7Wftxlwj@Fic zYAcuhpVzkbusAHTa9Eu~b}e%cN5zrX3`Z)`Q+e(BT2(C$i!2;g=a2<=JTQ*Fu33uu zNB;MJx|Y>pk%hzR9I}bby|2dicYF;xeL}fuYR3{5heZ|+t8>VLn^q-`o-XmBhr`ua z-OO>kR;TW|oQ1>c9J1j2YsFD+g?7|5MP+w=<7#nO)C-5zIb^{FRpe68hsvU# zUH4UF;j21_EV#>_ar8f4PisM!v+@~A?&oIpTF%02bq-l@6^q8v#Ng>Pb&2xTU4b4} zujMRUL+50hnLFwjM~&JTlyycqXU>2U7OzE{;k7!4EI6kZu~Z{(6|awRO}6>KXzm}> z{g<=wTAf1{+==J0^pjgCeb}SM+vZL3uy`%%h1cpFvf!pYi6y(U%Ut{~vDC_UD;>#E@5;L;7PfdT z>V?Z>b+tGwvT)d`cVfwVX*PNPeM|l=-V*6-$)Y@Db&jKU z;1cp5wK|9Lz{T&1rIXc<)2EthobRf@LKd$@7GA4!$buV~ z7E3+1o#lO5f0EC^y1rJgMHXJGbI5`_yg8QFWx7H;qm{2l@p?SE*CGqA)j4Fr#l^Q2 z$m$&02hM*~EcF`UCO&?rJb7!#7f#F|oLJ|O1$U9_{l%%6@I9`c@sxE|hei9~u#P=q z>H6jpV%&V?(<%IIUC*L@$m$&G0GHG@miqXX5`9q<8kDPBf#-Ta=DbV-Z7mo=A_uZOz0IHAL&X zid)0;VK+o{Gd(T9MINmI{GWIv9P)>@T2Gg1q>p$vO0{{@iUP*% z_6u!$^FwUe)#u1IFXHvmZZ$k{G=JeW+m@mHJ)6U!@s37Lt0(4#gKfmDg#q$dz^*dJ z!z;(lymh5SmsV<@(Y~u)jE`sX%=a;+M0)cL@}5uRZ!N8S3W=Zpeooalq{%w2t*vC3 z;|hyO!(P+ir<)~rbKO@)ZQmE>$L8(DFN68J1-IFMS6O3d(pkA>Ac$4d9YGhb*|_zr~P$`>tZdHkDnp?hEH+5H5M#v#;5(=oH%pS001Q*=nIR zj2(4?%ncEfZPm^Xl;<`!g1=9mPc~mQn<}DxYe+6V+SM|Dm7{Y0>hm>yP5TM+DX4H~ znH@fu_ZMF|-aOQ|5>-CuE3@4r+>Am;JoC>d59a%ENxE8#u2qc*O+50;vwl0x43=<1P0sQ6HF)BQb+(!sM$u{%PH$ap4Qa!mW; zM!~s9Ob73+!s(V;5B_GOu7*#=eDh+XRHwWS|z^d!Uod6?N^LA03S^_whj;9Oo~ z^-7o-7a1wq)p{Vyn=qc|6=@vK7o6^#xPEZX+P)d)&IQFpozm>~e6ZyzFXQy&9P`>| zL%3Z~{gO%CS84G^&cYjQU+*zn(jsvtfZd+6Y5aey$vTJpfWSYf&xs21`c)m=&{*55 zKz`@zf6(y~imNrKw$ZNGWi!ERyZHL5I^Po0gfZ&EMRQ1>tz!NBn(};Wj;v*Pcw99n zSK2N{`Bl$H9fgdZmOXNDZrCH&Z}abF%Rk52y3E}ouR-A*Ut7Ep9K6wq`#y_hE*1a# zZU?U29U*boOx7Ue~9R_D-Wa3y<0(%J7W*@8(q zY$U%U=`M-(!6kK0md9L_KcCz5r?z8ax4h1)*&B72L>4ZobI5{g;1fx{y__iMS+>k> zs9MY7lE}g(bq-l@M`}gV@t&n9=AJ3Dp*5>nToPHhq|PA=Zd|oUTJK+jTAQl>GOA4p zi%TL4m()3A!MT=>qzCanDcj60sdLDJ`~5)#-JfVslMK}_nb@ze#U+u2 zOX?i5;6`w^<%LyL=8SU0L|*qucS&U7k~$}|%w<1~pmNnhY4GEl@_f_3E@W{@WZ{xJ zhb*`u=OgIYrYIgKr#vc)*V5BnQfApDbq-l@s}Ds`#`{F-v_g4a)-ZRAOUmRG(E7i;SQMP&4G~Q26cTR3ITvF$d1$Ssi1dZCXi$a#E?2e7D7H>qo@W$#H z5tOhcn@XmsciZj!POWEA9xl;eGksbmwFcE~#^93%CK{5#+l1EZMI9B(F;}?}@3qB+d;ksdLDJTedoa z{`lt#HJ_*)F=m9b#U+u2OX?i5;8rh-;BoA?sg9{UFJ=<2g{eCyXW^1MC$r3Tof1K# zx8JABcYaZAo?p=7lBgFhsdKW;%srSNLH@TMQQBISjpe`D7U$$Fys>TH2zvhSQ#xP# z7y0*o%SI6x__jG z@#>mpEi7bpNe1DPI)}D^`|Qup_(^-w?xo5eTw289lDIB#$uW&1=vqHVQM$Ei-=R&# zELoI?tj?i*;C45Qpau_I#JjP|e-FeLv-l-yt z%fAJkLl)czil9V~Vj|jG_4RK1(m5G~H~w8Mf`;!ZA^f_kF~{2?T`gIh8?riwI>1?+ z6XmgU>T{Bi#hj$0j~<%yW^EK_cW#o;UkA@2MuT@f%su{zqRURT-f+(zp2o{_?aXa$ z6UD6k)g(8dO9>E^Jv z2k2pZH+gJk$yP@8qEs{d(Lq{$NcGvw^zt(vw~h9@H)y3T=((%pmhieHfny5#{W^Jt zZRpm*vfky~-xKMcMT!S*x&Kd)I=H`_e z)x{Q_d5mx`y~m$5d{4k@xA6D-uVo#@_6)MDhk`8DL#YyY#^zg^M6Vht^4u`b@W$WE z{JOoGXS*}s$p&r__ZeE&P2q!BHzl}W3BR}B%(2}#+)Z*T?B^S{{VmP-GjXEL;0m(d zVQsyv*N@A?^*gYnm3ee9`DT;tuYRHOSzBzs)^K+7;J(^W+q=Y-@>yHP$87O^&9R4; z(}KpTkA6tsB1Rg|1?_&II0YVUDeLIHr6|wc3^HFIsYDaDwUXCraHNaXCHdUol8aOB zwyH7ylV9oRbFwY-?3Y-_)^YzDVpDBt9#YE4ot0x=X|qTiDp^l*_* zdup;7aH6|#s=rvC$H2p0M!g!F>Dt;>BH%=v%tmDJI-1(wA!PA8vh!+)q5Z9z86FO2@onPT%9qWa&$ zCtE!a_Y$6`bI5`#+JLjpk+!?HRW@RI0gKZi3#a>3JB-&1-D~@s=RqPH$zz%HERG?o zb7(WTBb@bWdD)igr?MM)Z#Ih~G6+Z1Ib^}%Sdr;ZY!?bC_gm4<-Qsy@A3U$DR~XHo z>_lDHKy6-x7{U-28}C4`4)#*?NoKELZ9=NjaxsNHV z2Hn4>#+pV8FN@P53#ZdLWWh~*8A_io`OuJ7s!uL)q>IJrkcHFf9J1ifJ`AO;N$qIT zC6!I!Jx_I~lUa7U`M-ryx$C`YWU`ts8Oifv^eoClR_AbCz#YFIN=w2=(y86b=~nb| zwfGzAfWPS+$^(~qJCp+0={!2Ce!pb_?iPPT7XGGl$bt*L5K0F|8+3b->i5IDx9)Gq z!rycbS#Wi)hmz~DRWvwD_1$e8|Ib^~0HA8tl)lho!U;kDV_i5_>hAjL| z=a2=Lax#?nD~_Un8Y?eL8scj4H)P>&I)^N{?%d|C-bqwGOSx6b&_Wh}lUepRokJE} zcvdKNTfUX1hbni8nZfr`_dKo_{-$%tf-4vuN=@^2QPC|bo3g>l;%cZDuGZ8Dr7>nU z4V|jqC$}aSvSejjIID9UwFB2=btvz9ahP77Rz8S1XBPKk5bmdQ$b!2a97^kJ9H+P6 zsq2#5hv!D>p2r~kP3O=Sa78DCQpl0BRA{N{_e`JWf#eH<@LB(>Y|pt>pKDLp$$N_t;HdcH z!QXTa<$*g`HI!!DwHLpHtM-|Tid$R_S-4tutx%dj!%=K-{#E`D_;#bGC5!Tq)j6~e zTyft}aUdz3>_xpRlXZ(J@IsQG5=WAxpd_JE#&of)@%F<@{Ly+80=O|0u z;rj8=HOh{a>96K1@5g<0P40&vxu4EambkVx;vv6=13Oqkx#X@SJG1*CNbaX|lqJsO zgLsjgu3*J@m?28B3+I(1Zb>P^Zxo7$zr4z^ZexC~L0w(c?0%F*_iJ`#n5fe45?p;a zTlT?3+-vChFmGX%aS56>RL@dA9wm8hg-6Eis|$_n7hMc&3ZCgRkMIBOsd zxO5F1p5cp+o;4~wT3}rKuf0K^Q5bUWuZD?vC2zsVN(*HjGhE8@Ix*fNrtvM9x^AI- zZkp1`f%`o67Dj#CC#zhvycX8k9-ra-#FMr!VD=ikh85FVnFQ`93f;73@e^@u5wC?! zu;QiN2MDLT)@)BtyhinoEWo2%`iau#-hoYGyyO<*d3PS)y~Xdpzk~OIcn!G_ymoW4 zpNMH<#ZDek&xvukPGnu10it~~E9UgiGRehz;rpure&YLu9}t+8D$84f^Yp{34G^Ap ze}L<~6v@%q)wetOiPi%?!@+J#B)1sPp8rs4fVhX}V&)G~&$jX1?fIJ217hyWSXS&w zP1!FG$2I2MX^$A#B8E+GdP`bLq7#rjhb^pMJPUzyN2_I4BK%{OhkikAb*nO|fZ4%xDL8eZ^au9lq6$ zZ#-ki%2)gYhIUqca4xAnw&$X$%~fn@fFAX*=M0m*csyOYgYaj-Li}Z!wk&cz36(xeKb^ zaQ)F{0T4&udk3F8xwF^abd3p{0#wHWJaZ`0ZJ2O+uo)7r_{qLug& zUxv#2?a>#{7m64w&UG(<=j^qY_v@4Cz!&rzDmMLB0-Sn+BDICa7WF-Z zs4cXI&{xZ@#=uB}HM_D(*2_2Gc^J1Q8%r9yF>kKE2Q$|e;%OE8xweRzZLGdKOz!PE zAKyJRXi?ks58y_4<&%f#KEf<#nbz=99khm5pU+Bdq4}&=`%DxA*CgXO^WU=n#^Uc| z`H&3J`C=V*cB7gT-D|A_uQ@hDJR4J=dCyb7kG?xf@x%+s;*VWPZ0AYzMl3K4&*{>g zldh3-mYA9;E{~|l=9O72@69Iy=O}3|No^sQ)H%u$m)3uW@Ld?py7Bt5pV#94NOL;v z5I>Fuu^NvX$bMdfdn@T2l}B9m>2%Sw)Mv<^qT1}+t2hsLIUrIkmavZvr^vQ^9W;*j zusk42bxmUFS4PP?zWPky4Za=}?>;87^+%@4I`X>?=ZSwrL&EF|tWy_!ca06)u*1RR zmsBtLWyLNwhwDrVXDROr$nu&-ROVgKIqjy0Gh=xXnKkB@;?L_vgWJmHhOfQyt+;N* z%r1#_kV}>=6%AbjzPjEoq}(*Nd}~vd`iinqRikm9&_v_9gL1IA0JBR{o5>}0j@nGz zL5FDg)FRoKKl5jHfu+eCDNEkCwO};V9<1#%JML)bJRZKeC?xQ*~m-A ztAEt}rp_??D%C+As&g`nTxRiT;D_EC?Ki0QMdJS%-5V)O-l%ib7UIfSM8nkY*03ip zTYetlHR_xF60_u&I!9UJEM7#xkmKbbZ1)kFjjLVPjX7g zsByX_P}<~|lqJ8^Im!}u_(l|5{oWd`Bq^s$8fk6vOUja8>KtW>TXQ)IcJAne>)li~ z8P~n*E=gH($#;jMz`@1~itarle+$cJ7cgb1Jj&`EMlFa7IS~atX8J?3OF!F(UZ(pc z)j@t)*Itx$&}XD)Wt%apb5sX$3${nWdoK>O$3JnQxL=U&p;QNXsLoNA zxTvjBuqba4l<>MCKes4vvrAHzTvF$#4&vHmM8Wa)@!)<{jr+y>{NkLLC70AW$`a=s z69ub|ra(bw{2PH6ldulmC8=I=Nu8rCaW!J2AfswJ93P~f2_tAdtnQqcC70AW$`bdH zN5SE_>!HQZeP`xQu{60P)k`j^bCe~{Zdw#vJiZMYyF5_8k5EgKH&T|I6VLYpx0_i| z;)EI#S)PXb)@oTQFC4QvhfxdS7LAL7uP+aRdoA^Bn?4u!*w=iO>L3r*Im!|@$1e)b zxaL8f%0Jz?e-V>QQkGm&=cp}9k!$Y}1&&wGfa9e{^4?PV6*ajeWyvLVj4Cu~@S#n98qbzaPnnyv| zqYuIA`p+!xk*vEU)k`j^b25wEyv9*b;p+>y_)uk+;vP73-=>obH6QFUyaZfkZ)1j!|Jj>;o$@F+lZ8?z(cOER{!Dox`XFaZA5N!j|QBZ17p-rdb)kcqoG8 zp*lxd;+A9k$~JRgPbaEz&h5DWpUFcJBoEa&$`WUCPP|CYY1t%8JlGP+sytNVQ9JSM zl~Nu575v6W_~8-;bRR9;FY}ri{}a!eyn`s12UK1Qc9CD4{9WAX@CN6BI3jm~(ciatM)>ZSRK-MV}f zO&)b)`L@mFX9<~=xl`}ABFefuYkJ68J|nqrufYEp{82btFgbscvh6ol;3>vO@!wK+ z=JFPwv+<(a)(ZUm`{UqZ+l{qNij(bIkMoPu-A}^ZXC7?8o*4DKw%MMaJ1|02uadzU zwXY~S*GXk~xz2;cnRY8#@*MOxEYP!mDbv0^R4?t@GjRO~QQ2xW^Bko-uhrc0{As`- zF{XM38$xF{VAg$%nWHRm+t&^fU*4}_16$XWTe{L1E6oayKD`v(S95!xsHD;CrSQ=qtAo5p}Qkt>rR91*|Cmt@1gVF7u+v(ckc z>V&}|`(&fn^Mdj|!f;I3?|uX+>sk#N)5 zgZUp)_cjjq)z$lez8lmBx=YeEa!Gw0k*?7=;-|d1BJ@_Kakq-6Y|F$AHoSb|G*PF| z4&z&JPuZ67s|)jv$LET1r4x-#_PF;GhJ!M!dCBe%U7H*8jjN8^<=8Q;kxhTU(Y0o? z`34^rcZj$!92YM#HrDmo-}8-YC644!|ApW+oujr8XL3%NoyGn7Wr+E;YqITO%Vhs` zSzO%Yl2jhKWCz#fVt>1u%&kP4Y_l)U6?%O=S!{e6&mQ)^EkC1le2>|A&tkFlRXlre z7Waz9?AowGe9el*BL6}H%ipEe`qFrrN1sg5%(f~EE~nlZ`Nrd3yAL;sstv2M64Mf7 z9qs0q;VA>NMe|cZ?AgM`vVG~eFNDb@@jl2UJGR&%juf88g10u7*%eE$yq5Qc=fViK zrd|V?4Z!)?Y2Hu7zK{s!@V2h(=i%ts1AE;UR->ZWtR3}bmiEQY7-$9Wt|b_=zYdUD z8sAT!nQ#2hJ>D2m0Ov4cz4+L~>$%z-e%L#LmDs4he@?u%$t9`p$t87;vcw%P91iZO zA6)m8SNrxPRBOz`iiCsr=jO(oJzHfRQMhhLcTVb4@@sCr66RT%os-&v-l%hwCC=@A7^j z*{A4|Iw$KzZsnmcsBqi~#y(Ph8OBPQT#~Znk~&9O;=XSWgJG4O!P(-RtT%jkL6b{T zmRwTjC`(+)^%w4Bb1zujNM%>!nY$*x#4P!x z&QX>)BP|ThKJbU+Ip<}YH~eO2a!J`{^eCO9EO8Yg!l2ZjQ{ebAHO`sdv$)wgv0gdu ztZ|ejZf6W;J8>v-K#g<8_bXy{PRx>X>KtW>`)zI*{CKbNWpVgPP;lL#d8xAC{QuxWAs3rSd4Na~QQCZrTX^ ztsdA01)r#F$UIAvn^GO*raDJi;wtnFgTG#8LG@iKOZ$fE9!gpAP@SVJac-T$!1~8Q z$o5tayE3Gp*;f%HU)4Fv5|`X946=OWf~e!=Tc|A252}E7{NMM%$P?l(OWZI!9UJg0SAt#jV(e<*#LS(~QC< z52Y-5sLoNAxU=^{p$5ZCR`P&mEYjx~GtRAzT?Drt6D1j%7_jy*LrPr-)o@y((HbW|N`<{W~hj%nQ33ONe;#-OTek??c{BIffHSZ)j zV{}%p$=Tz0kML^&Q6`C}AM`E3n22G3zZKT@Sbgnsiic`emT zzFKreC|o*Zu<;J)rr7AU>x%L-i7vu-ReLtMwmO$$^nnuGBHBZo&g#NE{ud?tDtt!~ z?s&PK_~Mkox;1VhuMPCF=birSB+~0aw3VtSZWPW-do}nZ!QNuO-`(fot(5_MV+{=G1;xvV_`Sx%Ij#rgLAZ z&2;Xo{{DsTjo!b^^jiq^2K8s1YpFI5I#G##FZ2ceZdIRM-J-^#cctP!v+xmYF4Sj# z*r>7S^{F92M_q@eZBlF*l zl6_FGdrK}xjTLiNyfz{ny2z|=rac$UhlJ+d8n%DZVI{+Sh6S8$ctUb}E_L#+86>uWa=v!Jz``rbg4 zrM-bnZi?5)O&et`7GJI7*s0Ll^1HTcSuy^auM_ol*I}cJB+GhTm*IOt+@towjv8#> zF}41;Ph1f`Vq2#09#x0gH;$ED$HgW1U7yV&CbSNVz_W1Zvuu%6iC4UnEbI!zvFmdm z$?yHv4aH6VOKm3q)$5=(QyovLZ5H$H)nI2%tMZyJtjL=~wuteZ#D)z}eV>B+<^|T; zA>MVL#DXg~ll87hE`)PfvPDn(X{@BD+RH30$(jeXUMK87mt%EWr^+_BiYbq4TC1`@ z3ys0O)|CI=c6a4BeVz#472#~tRJ?|58JbjxSDg1mRPv2t(NW5sN8{cOHAg0aO_dI; zMK3ikgZ836_*W=g+)#@3roA07oQY?K&40(C%C~&i`Yy_KL#j38J})^G-qphRUUQqQ zgU`!?T~MeM@m~KHXs{OAhMaKZAYc`_7oUUe!VKJ9V$6I;gL7j>;p>F`Gl?yuwhV;eOe^mDQS= zyjI>Ddace;mbfA7INYe^2t)2G*Nv%P)8w_XUi4a>qbzZMq;lwZ-wECwRIagmTVBzv1^;_g~DC*XkT)i8~O@;eLK6s28N1GcnNYwNx*8 ztvyyrkK_`E`8*G|B_J9PiWEP1WYQI@zi;T&pI8V(6R&ji`wQ^Mr6R4;k0 z&QX@Q>VbH_^`^q{-B;viv~>W^r`EidvgEZoM_J)7hHZl;`t(|G)(PVv8=D1$!jS~UaNDIB~J9_;5I)VLMp0p)0KUSnY@;=l#-=g|E_3iLXwe0A;MU;G!dmR*I0sjESgMyCR_7>7 zoY8?pMZO-kj8fT*uwPu4?iXEG=O|0uKHO_*>#l9^U%qn581z+>>tdE%SLY~8To~YY z<8c-o{;0Ci_}^K7z{#LG=@|%sxYbi@!t85Z;YB~W%62?MX%L4nMLj;X188=2(!B@Z(K6n z?6oqBf1h=Zvc!!p%3-?YOZac8%F>yly4O;cyjJHZOWd{s_*u5ehmdHMT{o+c$!jS~ zUaNDIB`ylHgQtInzFl6*&nP3HkjZN)OJ1vUlqGKdB|H!K)(?34uX5d`xF3}6wUi~V z)j7%%_hZ65uqc#!)b+4r?d9BXLdXdBNL!577&FVi>*^M~I%jCb9C5P=d zeI7J&w`D1_U(090tsCr3St^gRI)_mU;$8&J1E(W)EXnJI%x>FW!tBHdk`wD3Wr_3V z^Wa)92ln=k^40aYhmgsM5hN$pIm!|@@E_cp6k4!nYgfv8SEt$VKsyd=S!tH`T+PK^ zyWGa?$rvV2ZZR=WIJ~(J*7p|5?7+@txZ|8WVLRnHMAlp+`}sFq`*o~)uDDs{0kl6F zCZC7=yO!Vw$4BPOTsGgZd(}xk6VAtRtA!Je=QKGs&#)T)uN>c+i|ZEqJN}-N>%G9Z zyS0~mKAnfx>>K5YsZl3!PqM+XUXKP%`NHP8qRirxP|Ma|*6Z205%;}uRQPSqgvm3N zr*v=7jQ4+dR1{sl7yj<8#&A7rwK1ImPu~MN1Afxy9I>I;VK_F|OP1Hw$(irFkt4d^ z-wREi|qn(9T&g6cJuhZm_l{XBXqkJ_U5 zDP^fo8_mXke)1OnC=e;zH)OaicORB3f})lSRP%|zZ-NP^xX&?oGZp!y@Msaqhxjj&O?E-j>2+n8r&%8C$G_5=ROPU#hTzW zsD0K~-UrQL9@s2KG@2d6cGoW{xotRy;N|fUNZ4zz)vMK5ZyN3qwdQ>YJT2Fjji|C( zwmC7Spoycl5LfDu5S6#QHk?9zf%>#eUI4E%Ay15~e9`#dU@su9M9u`BpArbmM!PW_ zC6(pT-lUzKHu{x(J(06Tfsoi|Xu6Dw%{YsX!6}swL6Yk>fQ)`yhUX4}K{&kNp^%lDxtz(03DR*&>bmUQ1 zmBs9)8O%09y^|T-qXh2x=p?3=StI@O&LH0W8=WBd<;ET%5hU-6J9Db`D9oByQqK(Km$~r3 zVBee*l?$_awekNsmREm89n%;t^)rp(>i$djOaA+CZKg;lUY~89t?r{IFUq|(Zx+0M zeYPPxPL|gxxdi`alPzMek7nhos`q9b=afgj%M{b@j%KZQs&{=6$py?_itu_aiQ}2?p_a1mV{w18a-Y)0zP%3Y(7WX_+k1Ku zez3(Bj`aO}7x{*G3z z4rfo!)|1(lxJKvN+5_UBoKUvojg!o-#xsE!xf(lUU!~&MqMoJlWLD$oK8P#g zF$2=w^9_fYJJsjG%9@;*+DA^Tb5!0+n?7 z20@WAQz8Dia^1CfzO(Mc)Mj#Goue#qx7G*2#V8I7%iWM|rag&tC#EbpvCdJJxHTz3 zQ2gT}fJ?VzHVqwCcVfzt6YCshiJP_{2r37~!P}2qa$=pMEO9p{1>v0X z6sXxl`RWQ>o2xr9Wyy(kjgLlDkEUJsT( z_c~pR^M>^-l}A~fqw|q?yPf^O+_xbV-W0ro&}bX z>fUHhhwi%6K5|{1qqY$DtauPyYJLbV#H;^Xn?@8dJ27U-iFJ;$#8nj2A!1b?)PA8{ zH**-SFVo!_v*g4&M_J;Q+Xlg@+j!1s9W}0-KDLm_iK)%x#5zY=;#Pl}4!#Ypz=G+@ zlcVunr0&F&mF}!@lqK%ssp;@w+HKhMP1HgPaZ1{N_nF}0bTSm!8998a4L-Nxoa!cCRU z4#xd>ba%!qIkC=BmbiN>r$e*lpW)J%pY=||^#Qs&W0ss)=VZOe)$K4HmVW;M#ysV# z8^+k0oS527PONj3C2q^`>5yL2iWP70R`%6~3AoRv?#@&%IZNG1uKuI@ekAUB$h|dlS^`I=lBa7<}pz{ zV>a7RlefCE2-jFQVB7oL0>mt0-{kS>)(hd$=!VQK{RU857Um1i?dC$lu=*@-{qI0+ znf2^EPq(udZ^sXT8QnbO=N5_U+QLs35H53vz)BCihFm=UFFW>Omw31_$`~;a$Mf)- zcRG&URZ0+nbyu?3{6}&OlFq!>&n~2T>5PZ%N2A5{IjPM4?i<+$-T}6}=ACFU({CC3 zcthHRHQoW}AN-&WUL7L+xgkBH^b`G|?HOCMe{Y$|)P^Si9KS!hK(J0wYL zzqi#W?)1|Q@L9g7Tby`YYrC-|w4-cuzpT={*4&bZd$bK=DcM%?TFa%C`MXXn+1;0s z(06$;`T0&h;X_i`78IRBRt+xk4i}G#R*E2u8cBz@8dWowsI*>3!hKdgpBVn#@LaGFzE*n%lpQ+z8(-A#h2hn96$Ey8 z3Y7H-{L8dQ6lH0TsA_J_#17vyX4k%^yf?qjrA&KHQI__caxLdAuB2occ~SjjpL(Vg z18qZ3pG4;{ug?VtEzxc1{aii{yp7P#CuD0PP%Xx}N^KDt*IxA%z;p1`t zmz(b5ZMZFa{&9um!bTV1p~E|iA5YMKL)7=a&7yLAvqv8>_tFNIu&0j9woa_TN6*7` z>V0;>+n%FkTRQuc<<*0{MUU5;VGtiB%j@e^f_GdqOaz?U55-dhB-b7Hfowa|Tl_h9 z7wohq45Jyf?fUh5J)qYWi7}neqfajlaS9tJmZ<@Z1eW zR?U?6+rhIEPi>c!yW!eya7kStv*mr-;~q?Lxy`3+g}Nj08rEBGpgZq!Dol(k+mU_w zfaAn?Z7iNkd(-l=*u5f=eg8x4_qxV*7$0%*nuuPX$m~ZeFH0^wm@n&bRtF>bD*H18^LXxcaw*kfYmM%|(>jOMjbpXz-z&ZkOKl7dK?hEI z&9|70F8-?QRq@+0JcIj1q|EjVE6T6@abBD+V$IH+jFxrupJ8L-s666)M@|6eANj6b z*Kd;9#ki;J;6W2$)Y=xtfH&J@y^+1JJl&l!O#Z89sk~pac*%mYPCX{T!B3Nn%OBL| zu?Y7%Fu608hfb_>lqGIp%L(x8Q?gOH-A>t-INWbZcVg;Oa$=pMEODP3On}v+vy7p> zDx0|Q7k9=i`LE7VmbjhOCcuf9%SPZu<=9DBhwjrx+lPOD{taFqluIIY|I8e?8UY^X6+2u7Fn>?AalYF0Z_Q3Blxd9F0-l5 z6-=H?S@L9^qbzZaW(9!TC?}ZHRsD~O@hoccWXh5!U)U7@Wlpw+$-kYG-o)=OTiJ27R+iFJ;$ z#Lcf20BzFap+-41CcGNg{_9RmS#n~XqbzYt`vky6i&R+JMET�cIzrEIF~x$$F8S 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

X<5C{3b@S_^iY^wJ`mxyfBb>? zb1CQ9ntl}%9Ct2-8h1QRA*IFz#~n*6U~3u^DVH8gE0Uf}GnN!d<;iTqB4;;d~|XdU&$}$y9<Lwl&o)(@F>Lgwj zYkCF8MA*t%!D-{L1ja%WFgF$&B(em2E>obNI4&_rm=in zYho(05!r+=#2b-M3)UgqK=ZiU5L@0lWE@$KSo3Unw!GCT<4AuxL%cG*KYewITC^s` znztEw#PdTogMA+G9`ZEpj|3oVQ~Z%NDc;Bi&<}VUkRkpc{{~NEC?XJC=iT6$^RDym z^6v54`455nBzJlHCGC7YVL!i*Z^P3F7P1A;nISMrG)&YJ8UsfqMv40*y%OU@aET4c zu%ricH*g7USTc{fgf_rfOj|E+oc7B0(P zo;|Si*uvurPb?&+0qMu+$LS~NE0-F^4JMMXZnVUBiK~U1g**7FeZbD$!o$MT!pq{Lm8ZogE0KlR zLSiAZ5ST(l3=vDzsP?z<#1M7en?2KAblvsb(_I9nj>JaKy@X~@zNx@eXj%*JCHxE5 z!gX*xOoDH~|H6j2>!4jjZ@@00uAyu2(V)`0n)%Z2|5&V@<7w;(0CEl*yhX^jf zV(${~JkW;;M+n8U^n*0d zDHIBWZaefDp@Ap}4Xre~>2S+I(}>qa(qYFVj<+2SJKhWZFO(EK;e6ZSfb)d&L1!3j zE%Mrjee74{1w(k~JT?P|2e<9VK0s@_39rU?dNtwmyyM}OST(*MyAnHqjfWH92RLsG z4jRD5m?gm7UY%ZDUfo_KYM0jtKE^E8jBZAvI)@4gHw|LVgoMrz=TMhWh8Yvg@8g(e z{)GEDAB^T6d@#NkKLQr=Ct#o=ye|d=VIc@Qg)YLQ2zQ~2u%=I=&!CT)3G8XK zKXlCexcLe5`{)N~jr*||Nyo6q%@1KGum`b+u*b0JqyyM}*!|c8SP^s(8y2z;JCBq~ z5bgjrBR<^Kyh_;b2gx~J7g039eN%59QqyF9XcF39nQJ;ISlKcbHDD_ zN4Til;h^!7?q%Jpe%Jgi>kjG<=@0AwBo66M5(o9u@C%_-d>TF%UI3*-3!$FCbm$Cm z0i+-olWzvz2`DDlI4H;{QYyX@g(9g?mEakwP<5zUREUNF7MuUkQQb3=uQP>!4ES8Rq1ZKc7*u^j%OZK7oWWagQf8@L5d*uJf zbnHFyhk#T{H1_=vSzDpv&BPLQ37r+>~ymZaaLFbP{!D>m=!Hpv>0UNZCf(;TxwT(UIzCybIrh z-=oTbO1K=Bf&PGcfl9}J0QZ@W|Kl~}@EkSh@B#%c2&i+9@8oztc4?S+3={=nATdY zQLWwHY)lzpx3}DDREz6($43{(_2c>7_VIGO>9`>A228?sePeFYGs$wGQhX z#vFEI|HA%_)y4The`9xJ{ow%k63Pd1#9l&OMqNP#!~XCU)GW9V3V;isLZ}ETfcD_O zx%`dagU8@z!IQW@xL>&6z@NBD+!QVt-i(>T(cs^>FnAMYGiD3sf0)^*EtpN1Rm1_} zAaNCOh`5s25BevrpZJcjlDN%pyC2JIn_onj51Q+y=_M3xj26Zht&QsjU13{{3p@)&fyuBF>vyI%=IJ9Y2Cv zXAN;RaXCukFmZ$^LaB8|h>56S@G25fvr$Q?yU=pfJxGKycGf6HNl?pB%YiwdlTi1} zjh$T`m!Y;ou8wkOE940+Ln*Pl9dl54pa+Dz>=v-+ z#^5cG6Ll!ik?KVCg8no2goXlxNv5zdYyxXs1TTg&fy?2ga4;!^v=m+jI-evq3nArz z&W1&1Su={wBxa?AUFd9hCwdoJVitjk#Aw{+vD1x+-QlK@gmnauPQvcR60xD=FtRta z%|jy@Okk`eD2(icC1VMo@xX429*Z`!1Ewp?G)|ZvH1#s~Ha}>(-_zUtfaiYCZKCa> zl@q+DkGUOUy9B3S59ALaJdVe&3?!M@0!K7eH zpfNNlEQvpNO7WQTkn)J~nDRU75#>+RhTJIyQnMj?QI1BW?@yPN0<6)pfK({C+#!nWtC|VUKi{9p(D(dijn-iAQ;kn2SU3vft%^%Y@55lMHvhL782K`-DrGozhNhE3_5aify?DJOjP~ z*Fa>O9Tg?u8SLkIdxkH}j@rxH$J4Zr=Q5Ar+I>7)t<2EFV3~)^FxT+CzPo{kfv17H z!4=_E;kUWp=Xx6OYOVdr+ss~?0kLX##xOn#b7nlwO-kQy4Jt);1<2Iv^=DD8&{ z$<)!b-jHN^lvZ!pU|3?fNV-_+X!=66So%`6NLp;TIZa_$4CV^M6_h6tt&|m%HcBhS zUwo?ebD5t}8^urTFaBWo&d|@u-{_s;d&3Wgr6T`Gf1?5~(Aj>G{*eKZevvKnK4b?* z27zv#*D|kZUgJD9uzB8_h1XK9rWATzODXUw^xEaQ!*i$SE>81ez~x=&iGvrcDRXRS^<{!WM!;TL6G zrw!kZ@4!0|$OIDMA&E@5Pa+cFnSMl=iy;!`U|g`tm^qla7z)-ItLZJIAr}gE&}Fa7 zX5665kjpyUDRWJ4!EME5lD6P>;&$Q2L9YX@2mKR2iC^me%6t<4(tI13yflAh{@Pp_ zNc4Gaj)S-1HsLnlh(08r4Y-Ym3!D(x1mCU?*Q9T9jIHuw?W?uriCeu zV+gl{SA~=sml-RKON}X(pPg2Qlo`(=tqd6mSrrmW3M0)T-EtlXVTPV_4kJC&I_Jy? zWrjY{daCtIt1E;N`YJSv@N&kdTG52AkTi58J{6sYo{vsN&&p(lhT|jfk@#EA5%}BA z;dnz|Bi|^<(3ce&6#P2W$TukX8}0^vZRqRJqOi50v4q>sF@#tGouJTfN6`trP_ced zm_ol;zeK+m>VtluuH*Zl8~E#Z6X%nJ6NGTRlZ07%-%&qMv-HCCBJ{T6zoXpnTk-nD z68&+=74L>e2>L_=B0@;Qcc8{0XJ|b{0Y>P}#wX$R&^l;cv>uuQZ46|hHUw@A+!RPh zF;JT3hP>1*Ku^LN3(-aB0o)!S2fYXV-GPJVqIu{^^KTB{9dwA_9CV2~#QXS@#1hvI zSeKX))&W=H{V*MHCyaBykMD&2F#ebTObd>I(s&>L0RIr}k9mM^!DV9BL(4Ilm@Ldg zaDmt?%yP^}^mq6J`XhRt{s;7BOcHUfev1A){ki(9;SkJR{Wb6iOvMCaLNHX!68s2U zjFcdni2-B?Q867skI@g&kI;|N!Gs+gLnxT=2pvM81n%HGM&sNo@tUs0$GEBRmG~-r zlv}i0jN6rE(Qa3lsqp&<)8Z7WkU46 zey8;mbCd;Yu5q&Q9Ak~gyw_7y&bx>jM?=O!{_!3Sc^~pFWIyG7$UgFZ%6iH_-eE#!aRYKL>)rT$+-zJ)Y8s2!Rd z>`@M=CWizd9%YG2wPtP^IW)KFh&mnNMKoRiB%j?a%`Oc11;1B9gpiHt`JCJ3*i-b5`mc&?jau+-oaCd1$}=DF?*-Iuzb zFr9?+Mzi%_=q7=$j&hxn^apS+bQ4K3r(CB*QUWQC1P)GPoQV61{fzyB{fa&5e9HMN zmL=Vb`ik9y+KbwUDua~JKGX+{5_;nG0W)R(5%U^j;`tG?0Zm0e@!Ejih~9*LjiI97 zVBUhQ8jqkZVkga~%%{yK&ErV%q}P}-?|4#)Ynk`7`856r_*~gp9zh*N1%Z3es0(Q( z_LdHo`^dVGgQcD2Pp3(zQh!}&(n)REWZ7(~wqz9{Mdz(9SY5Q*TePp}qSZUA_f{XQ ztZi&;K3IiVhgyeOhgj!h3NY&Yru+g-WB!gjjd_b&@^csEEy`cioWDD-CBHepEq_J+ z_PpJByYgD|_ke?+Tk|{fJMwqt?aBK)Z)e`+++BHp(dH?3_%j?QNn5XH3c@v=f^ZW7-=b8qL~%KaewD*Gb4p8H95Blk+~zqvPZ z-^xD8KFU7GtblK2=CXG(Q_z+&BhY4`19Qwk`{fwRd~*VG0>FiCO=QM0|D5>jfSgyL zU&~&}-h*3R$$c-ontL(#TCT=7vP-$oWN*OMXEH`v|v+1*?_SwxP#%ua@pp=BXC5jo*GAvtrh zLvv>3%*zhXNywg)ot&MJou8$7#QdzhtfcIstmN#Z?0MNK*|}LoS%q1-Sv8q?Sp`}3 znT1*9nKhZ!ndO-knX1g<%*q){GD|bdGL=!X!-E+!R57? zBg^YDS1sSMY;gIiiQ4!+cID8x-4$Qp>aWP)8UUV<4Y+Ck5_FHy=_(yi0c!7A4=on1Pyhv=0Xo=AD z7|toUIbsZVk##EXbe_h+{K24A`GfgG`A73s0tbRt1q}ub1P$k>gpA@=1x4nM;>K`m zaqZ4?LsCN8o#&7`oRdj&NOMX3UUNuKL;Af|dJTB}mOac}i+h~=WX2QVo{#38$UB*L zH19#~vAq9skAwa%_hIg%+@G=sz&p7Qa_{HlxTH&g@kti~F9lu>MDPg#i2)Y^%>yrjUg>o)&xV>p=^e zwaRADV#s3HV$kBdR4^@)pFAEhviS;EbFh9Dx2#WpDg<= zdM)}aG=8%D41RF0ZvSXGXmNb@N6Yt?$7g>Aez5##IZu=-(zJE6P4ngERMA+=<>o8R zSDW8kUTOZfd8B2uWvu0T^9|6~n@3y5TkJvKZeH86Zl)cYQO)s9*1*|K4$WB52~CMj z$82G61 zapRzR2(&HeXN|Uvc8&IpPa2Ho z13ju<0M5dD-8cr$xqIFC2F&rm4~_Gi7BrwszNMnIy0x;kYDNh-SFyacqE*$pwxtwU z-YQ%nT_Ii}nb8%T;V4)kTp?QF(&pOc2AT|XY5OsAM&ysSpKVpmlQWXrC~awCXJA#c zuduqA#eTM;y4fS!SLm6|V*3iG*lFUqh^7%X(E@KlupnBn*l*kZ3ddXAi8;x?9djq< zukZu>=WI>;vx(t;Y=1WR0EZL8iC|6$pWx%e1H^&i-t+)*TizbFd6cFT#C_>|*n8Q3 zv%k#U%kE46i`@|g8XSt+8TA+Yqxh5f3+*fI8_g`rJW3;pJpnEy{FRoB5ZNR)ft>{Y zz!2C(_Il0>_A~Z#wnlH>cY`##H*eA)d-;0KtgP(i#q>#o9|k`SCJnfmO8TrUZYG}1 z%PgWR>1FgHx}2_{XV8m*;6ip_l0jceUk198uA<*#RnmEx<@Ab~{*QHo^@#l+D;c@Y zYM|d>mD3yO_4G&VyBs2?mR<)M&mqio3%!}%NN<`^O|PN9qpRs1^eTEa=qh?U=+D4U z^pErp!1usc^cVD(z%M`=J%Szy>}5pKztg|czX7`#-{{?pK1MsEo6!dBVDvDefo+UD zzPV&Q!+fc^B$l4X*W;~ctYyT|W9f7{gFXhDL64$G(_=s{TyB&TMSqm@IH!01qa350 z!_kLjn(mu#9DO+2DEdgWA<#H_9lwjN>DgRo-a0;o_l`&AQFzY0H@vqqy)9*X${XH} zl$|L~$PUmXWLwHs;P)6uB$2xXbRu^)H;MZ#=6lSKn3p^PFNyn-*Ej#4XgugSTs&_> z%ElD^*ex?of_+wU9F}ZM`57}A^EKvk%om_=@s}9Q%>v{IB@4_@KmA z>;pQJ<0JM3W^uAPnVce#T*QzTiI`GfuA5jcx+8W2TknWR8BFON@m=vP@d#s-v4#-? zCUv4=#%j>E;?)c=M`}fNq7h^i8ABM-S`k}X7yBe`45^E)kByI^iJ!y;C(^`G;%G57 zQ9=(+6w@ViDP2teBi544qPq#C^t^C4!6VRdG2wKt#omj<>C%|EnD`hp6T{T#o8_0q zmHrVIgy)6lhZlr@Pt6bi822GAjrlQ7D9sNSNK=_<%=yd(%(=kTk~HQT$!dwaSRmy} z-NihqP?{&=Nu9;+Vh^#iIFy?&+Ajo4FpD@~&X(>MQn`Nwi1eV4E#*sp3)s?Mg5QEa z0$=Vy;UVEKfj{?<(3k7SE#TyX_e!HbH-H-iCK{>SU~UL^){LRtFfNT7HKRT+lKV!i z&+`z6b0fH#elPwY9+JEluaWGLL~}oYc{DeMyGOE0GGDq-YQ~!{jRlu~H|NE2>0s`G z(76JE2VyU@6j}%)xEg(tbHcO2DDF972-g=mEIBLm0tRutkW8r);)M_qXJolFQ<~3N zF7=LcN4(-Rk`YJ52}l832|(~a`Cv~xvI%@*@rWY~ zj9>I{;3R#DK285c-_Dq(Z)R*_M9;Vq89;u}f6^!EKj^Au&WmFiKfxbM9+R@zdGQa% zPX?XwgF#t5x^x=!FNS`^*^JSp`Vj^Z;o)K7v%)oA7v2yaik%hyB<4`;KN;sTjx*2B zc!K$hahiF8d4_qMnGyM8Nh|B042>&TXPA#;G9sVE;3G34mqtF0p^I+_AIF$V%p?pk z6ZCNj6MSWST=Fz#X=E$wX$)=&I`U}@F%lh#iNr=C$oD04;>8qB&!X-{&pA&Q zb}w>_>{;|=p=;#Rg``NwNT*1bNY_X=;IkN~NHZIA8w(pVn+8H7LFH8G)JU+kv9qza z;Rj^}*xO_VWCa*u^TP7OjIah+L##$M{4}%*R>Mtj65s#o46F3F_B6&>d0Kngcv^Wf zyqI3@HXb%IqimxbBaI={wSl97V}WY}vyCokjbkPQbBx9@7qu>FUDkSKwV$N%wbdJ| zS5}c!8g+hHBvpvwqXZ}+YBErOa>w#f>o8Ashs@Vu#xaj|pXff-eXP3xla5h)KGALR zRC|Wt+_A1$H>^gv_dfSvTnH`{cb~A=eV_Y%!UKY)Au5h~pCBcsIj)4I#8BL+U@37G zyb>OOSHWGr->|FTkJJJ9yWLB$=DL%l1#82a-hml|w_|o-c4B_OwfHeu3s{HWj(LTZ<36D;IM(4`Vqalj zV?UukqraeEVm$(Daj)Ue=%4TpxCr+XF2oh#E`)zV6*wiX9H(&uX0`c0sI#cm=0oPg=Bv$Tg$$dAhZvadvD|BEU}|V; zWV#vs9Aji!joV{699WI3!PVjlfjeBTJHLTIOb z`{BE&d#L|VcTp(pd-M(LGtg#u6xJMn1DlQc7i)%Bgmrkgd+&oaW>9V1vE(!`2U6C$ z-AAQi=3^G&7vtw+?xP-{9-^M2p3S&`XpXj|+@{@jdYJi{`Wd6m{Cth|{cpPe>!$C2EKKAYhq>u4#l&IaF;Ywl^(H9~_A|ao zl4Db-`EVYbh{=Z&Fo|I6TxufbO+X%8>-5Gw0TUcLgsyR_b*gicV{eh`oN$y{CmVOR z+buH3jqPSgv~jm`w|3V!AHN@F!}IYA@UPH@L?hxW^g_@X_=R``%sDUu_hLA(5pe;$ z1dYIn1P=TL{R;gW{RX`NUV%%8TX8FJFVTqv7U?B=A({oJ!_R>T@CEuMdZ#ywWbD1u zI}f|ddy`?JkH#*%X3sACTX0fv5$-LFCU)V;P%qvT^#zS4?)9}L_Trr&TVkM|6GVpg z`0n-H=NqUOq({};WVqRos<+4Yn6DYi1Z9dcLmdTu+}GHDy~A2 z6VwgTzodV_pO=40-JUl{uR)(hpF_VQokhPU*xpX;bLpo5GL$^bZg9oM?+@}ZT1f|^dIOPQ8B;|k3q1q=Ym!MGX4GzaC8-g|l zU4l5!J{%j!h1k$$!_$U7V#?EA^)qh4;M|| z6m&2snj8c6F(glbHUx8tQxs@7sw>rq>_&|uKh*UjN0IZ%2>F5TL)}NZCVCHb4fLMr z-UF?tr>|$A$0FgAI)nt`oqeKWmA{d#>Z3PP#Z zZ_sblXHr<8nUvGyFlsB9wCKA)q0}&{3*-u^^gg+VQf1Un?w{SixHsvuC>oo=KDHiq z9$(yP22lnr`Y{HvKpT%(1I>hGz%-y6Fo5b{nFgG+ad}U~EXk%z%XbRfI&>Hkd;3va>J**A?^0?`7 z3+#Cpcn`FKx)0g|?S(Y<#NYF%alY-L>DwN6JpT2#?a>un<6P@p=ln9RC%!9Khp@4NByS%UH^xEfgxBLkXm3^rS}88Cpn-i^{Vu$^}g!ofcNdI zeg)`qy$U@Q@HF`hc`w=(IzukkJA|G3-7i6!1V?Vo{0b)B#~X?M!*gx$*(FTmuv{R{gOcF*mhE^OC+ zCDb*ybH5Vbh3kU5G(NXKpxme2uRNf{bzSbd)U{7}QRA9{Zq0n4dsTN_&%uUO-L2yX z8+-=62VWNZ48ACSS^TPaqTyh}p@xZu)noR(w6#%d?ZNs3cD?q!6Ah_g^$(-o)E?vB zk?z!<^qxgMi)X}wbqp}Q*j}jjb+O%y3&8w!@tfke#b9wun*y6ZLM>5&4bzroi`X)4 zo9$Zc7TYed&9Gf+y9_vKRb(p%8tF_~8R{7680#FgH_|y|zsYv9?H1duw%dS1cEfh7 z?H>9J+dcBRw($DGM?P2VuG(F;yJ&X_=$v=S&LywgzQ=x^(OjbxBaN4>a*#__m#wZ? zWg*!}4zk7mvej1mE%w<+5PQge*nYLWo_N?^SFA185o}%X`S(;xLML5X^}L8Nrd#JY5F7h zh2pdH%ZwA?R}5wRL|l3NzPO3FgK;JC74hZZ7m$kh@Pv?rhy;yg@u3MHL4Qh+$Ct&I z#+Sq&h%1eMCp`f6e+TaEll1Sn19AJ~_QidW?vD$TegKm&X@oRV`Wp0m={spSut5?I zCSg*wWR^4-OlCO6tHQSXw8cN)L;xK_3<$0rM(JwWLN; zCGnS1r4wQmXg{gHGywEL@geb)=pfkVnD~$ADClX?FVSz&ACZ=r30h0c1+5F@iTEOx z=qK3v12_rX4{jSP`UW~yL>Do@Rs{GNOuma+z~S>85mUsTafOf}>JYNQJ#+{=gL@R|})TZPmgiVY3i?1qF;0MT=rYXTjG`?ZOse+l>DcGz%{Z+Q6+& z3mU*a7X_CDk%ZHNGlG8v=LG)))(RVhjlx=C6u7Mwm|PH?6`TiN21XLj3T(hW7J`#A zS_;er$3UL~)`MFe6PO5&3l0lT0F8jBz`dOi)CsGE^};%#k-!w}UnM*$s0N+LHx}rF z{f!0jd=oI2@Duq7{CIvJIPD>xpUh9<_wxF9-MrcS0bUZnhd01m$?M@=;CA!+d6&5> zdFQzoxaYY4<6h=o0-A!p$h81%0@{dc4B8wh;23fF907;TG2j}4xdHby*z+ImS>P$q zXF#`uN9p8s0o!=(ybj(eZYxm2@8XI1Z9G0-%x~ef@>cLb@&%wdz~kH|Fk$mKd@kq{ z+>=~g;2EwK_vlRParL<@jvjbK76$>3elk!SOil)#3OpUC#ntBScG>B&%VoEV4)+&l zw+oL`&1Q3|*wySBHjg9bNH}I(F~^*1#(D9c!fK}Tg_X=8=mnRcM!ZA zL%czrp7%BGPl2BIDBY4fLLa4%(MRa@Yze14y`HV_t>^ufr0-qFt_SyjEM-4Z!#)*M z3;I-0k;UntQ$Zi7yWySiE_gRwXi;P#x7Z2WCCV)xC)*`HNiMY5k4&@nBKu~%;M^wN z;_}FOn)T56k@I8cEiMP)?XrxLKdGTV8zcbVCFINnFUNe$z^AK36Hf0(Wqwf zS&d9Jvx&)LNmydmG^A#>Gp8Y?pj-f!I07wVwJ|mGV~pdBQ(y_CF6Jr5X~r4GKa68D zI*KhqJD8nd-occx;#eYWohLM#233Z0?5%mf68N~`f0yLV3T7;HEpHQ2f%b^NL1yiuh2J0)3bfF4ZcFHu(p9d{0(B_^x-9hbi#bXf*B8xCP<5*W%vnF4t5D4 zg8+UU!scRk5*LAf0QySsP9g($f<(tLa7^4kq_ZSVYZ=%${zJOx^$fa;yXa-(_yl?i zJ%ijFpF(OUH%E6z4=^#n-@&bMb$477xH@pkZ%yDD*AdrISBm459~n;#SVkCiT}oI+ zSWH+*STv(Yz?EQXz*c|H09%|#fJSSa9nK19gLA+=#M{;1VI6QegvG@3&;{rb z_9Ad8bRJqnv?VPhE+Q@_+K}pJddg?o$A*OUUFq9E#`;eCSa?nO6#6uf8_8<2g_p{M z?iuUZNTz#Mc&I!oJ#4&ey(&E_JgUrE{B67nd=h-J2?b#PY(fq}MzF$7;AMmZ_sG zzD&Mr@`)zJf2Q3wxnrW)ddK9+lG`RvmpofS3wXMuV3`Cj#mC_#_+Y5T|B7QUbk*?= zL5dH7s8BEz0>yd;LofX95MKJd@Vn~u(k~$Rs#iZnO^y!fr^JNxQTiz>DSZ?)c!$G- z(Y_JEcL``;jBkwJA5V<$Z_huTT3&Yv_Xz(HIJkS@lbiw76E*z;S^{N2i@`s&MZhKC zbNmkKiY3L0veSN-{W;5jEYDhMj0%emJ8XXhoQ~dZ z*I}m-EF)yU-nrjCTQ^fTOIPD@pA$Yu?T^_XxBrrJ%pPj}lJhm^TTW3~Pvy6qj)Jc_ zM-)Y6@-ju)?3$z+MVY@`Ue;C6QP5e?Rp2iVkT(?kmUk8qa@tD+qAUSHl&zM`F1?%TmGzog)lbIW<Wffa0wpPG7T;*6BPR>;xQH-{w7mu|qC{8ct6oUh+ z<=F+JZIB%42M4Bu<`yqrhxET}-BR(Y^<}GHhi}JIV8+PP)@QA0^4F~o3tqK~yPvh5 zY7}>O^fQ|t6g(_wFJNbP^cTw6*_>={c7c2_uTZ`!Z!m8lbpQF2uYij)iI1VVKltFAT25hkI9w8xMfrTidf^?|VIomlaReS*s2Ikq{h-q zkiS8nQiW=cs7|T=Rt0N9G?xAkISTr;>YMtc>a^;p>WliT`kVSL@*lDQi8p^$Pd6tc z|H2E9WCZ*w0hs(T51GH2Lo`F?tBrrmR~o;WPgjht7*!Feu{f#fYDIO^>55y8HybBa z-Dk$0-ks z{qr~H@P z(i2NqvY&FM><;t{X3AKy=MBH)FB+b~&*2yFEofqi#oN#w=y}6lZB^5&hAmK4(~;7> z+MU{04RY=41{t{2$kEaxrR&k7rEeOj^4ARm=z6ptZHB1wdyu`tLD7%y&^jn~YJ1T> zFn6l%L#?ZOQAjaLVO2dzZC$O?K?=QYhqg?o*Bxyv)4gao+ISlpY=~7)Qmf@J8w|R^ z2A$5JQ|m5jPorwxDfBe@H+l+n96o}h!mj!Rx*z%*-3J{;?5g)c`=JBSA>=TkmJdSh z=mAJ6SIO0KrMy7>6mCPGz-swp_z7(3c62rRk70MmQ&^^yD=jTo{?8!MovQesL8g2G z9YQ6#gQ!$@06mBvLdDIJW~uHu^a6Sb4MMMg;$}$M-F{fx)!yAc8itgx@&Ni4f|ZB0 zZy}y~G|W}=)Q7b~Q>eKG9ViYp_ZJTouP<&vSD>xve}zJm#e0SK3j<4qrW;UTX;3Mt zG_bT7GBy-J#ZU>fvEn*#H2fO60sRYI2R?^hLvKL81qv0fA(7%=2v&SioBuO+GC9`8@|bpHEt>WCZEwZ$&1yYN>>|a8y6c_o6G1G)YT?L8LHIBgedc>E&UvhSNqm}t%+BEsrg#-t>(1* z8TYg9*1N{NVo4{j2*o_b=|B+&>SS9DRQL+41MbpC3Okb^X-y<1dWA z2)f*3l}DRLxrfQa?9szEdGxXmdK~gN?D3uYgL>HGD{#KoSL!!vycfkQ&dVazi{_Q+ zJ=dG&HP5S%Xz63PleiPOzk&0-lDy`Fd4l(R@7dl7-gAI|Rh}kY9oy)$f0JvL6ZfH|`&NF@fw?LXZ;@{18Gh0VN=yRRkr$fr=6wsW_^N z;7fI&;;Fu%Z&CxOt!zAXC3_$HCUrl%75sO9KYJW|H+v;JOCaH73&yd%spHwURBx&y zb%@o%wzQ03N3|u$2qlDB6nm;2nA=l}SfB~BDRC4V>THTN!Jc48uq9l_+Y$c7U&sH0 zw;*0hF`FzyI$w6~MDv-cb9e$a2QZ?W&N z--vIq&fa*;ew?%SS^PQtc|0C-5_lFL29CcmU=y$he-eKR9~uxAFafk=*j{`eSlNr0 z28aVB0nz|G#t-91lE#}To+M7=rGqsw;#klz;=Pi0;!Iwwc#7DSUBb0= z7B8E(k(my>z|7)3?||PyzhAxzlErg@=L3KF{`URjI|4rv|HqdVpygX+2XF$iga`a? zinD}+z9C*OeFuFVF;cH!uMjU5A=ryeU=ixrH^ugtI(9wV9^-&<#BAm?`PZ`>{hR!o z{TE`I{QvS#U^rk>Fbgq@fc8O)Fb+Wpj5&U@c=6uo76aShIl=%0*@Z>jLv4^Ab}+*%VMmmQuEYmQsQ#b>xlA zt;}uA8gebUj$A|D3_3KR3iL*16?qeLfVr8ui8+Gb#t-0+;1{q4d1EDQ{Be@8l25i0 ziCA)&Z!wjCrl@Nv>gyx{A8;hsT`>qsUGRVR*iJUIAL5ct{COWo4y}xhr~C1 z$4TDVzPJ5g>x6l4>x{YP`I}{tLZlMk*}igqWjjXl%DG-VB=!RrTgUVL_=7xHSSPL* z!$O(xmF)}O63{PrFL{H!S*)kPC%mWNd*lUciFm2_32!p6m^&GKHx+YBxDfX_?q(c&iD zZ`+@?zifZo`V#SA(iem${^JSbW%z$QM|#_OTf~xH*clMDbRP} z5a(~qam)$K-Hz7ctF728qGTSb|Cnhq}dvjopX34|gBw_A-7qiVO>Sz8jBp zFX%D#ntLmH{}|1^LW2`3G6)TSjNs$lMmN;cI2v_Aozc-~CA18!fWSrYp$CXgT?M(K z4-sed0rC*hgLXq5P%Wf`^pHIoAh&dYoFI2W|3(~8vYY~%EdLuhi5QedmRX7fc%f%Irexx-2M(;Avc#S$nZ@9GtZmDs}L+_OkbN z@OAWE3YvvmDm6H&qWm2Qm0NP@?)FibA6N?MLN^7Z|)K)rIvOtn7nJd{QPLymFZv)4iFWD(hmV6Yg z2fanSQ@jKCRkT_BQS?dlSu{oT9vBDuo9K(^D=2TT&cn%|?Fwc}^NwOu5?B!tY$Zm8P#cptDbZByDaHyx>qm7X+ zmo`aVasSco(OhwExG}i%qW@_7MPsC6rQ@Xe64zmuNR~?Wi9+f7Mf*gJl1!TrdMI5^ zOSj3e$+UrKGMbzQ(=u#Uano%ANrQMIDUg&LL?nSXZs{-ZFY$x;bhl#g2JQ=dF|CM} z?v~-Uz-_);GEhPupcc_2@y**@c`?$m4_j@X?VY_|Z% zvCj5kTXU?r);w!IP+}*w3$~Nk)!RzMb+%xO5nH49u!E(?vUL1I4u>6%I9wEI2uB<~ z`DzHIghLMdDc$r7BB@v9%l=?_5u9mh-Jwba*+oX8V zZPInpwNfl-U!V+JLIfv8CBD)kiA(}ZaMA#&zjO_7Ets4Y7fb#YpB0}GFO!r=iY1=X z5{ZZOw0JC-oEBdYpBF=t3u0ITNl*zQIVW}p6F1;^V6JG4*cq%GBhC=zigHBG;w+I1 z=$*n$(PB}SC{wgWxKp@8I7;j)b`ft8eiUpK{tfzs_>JJB;DcbJaGP+eaIt8cFjcfs z_)f4%I3V0C+$0t+-@#kN{{;FoSn~zAUHCC(IX(6E6{s7w;AR6#OOpD)=e*A^0kwgZq9Lut1YQ(|~Dw%VVYS7xSrt zOg>FO1-CKqX9#lmOhFcZJd6r9{(4Z{|1ls2iVWs#M{W*!28VI$m{2Q;12M5c^JO>z$u{PK~H191wFu; z%8ms+mEF%8VD+*F+3&!7Ip-a_fwP>`!fEEzavC`eoM3JXCxjc!4d+hain*cO5MU!X zRrUb%L#}`;>ynbf#n|L$$H@V9}-{jr_^LpNLUIVY5H;q4oe~ViS zdMbY!KaO9+tL4@4YIu`D|I4icJ&8Y=KLzx4?hWoO?roqDc$a&V%NuSHm(S&b=5txx zf51e*t>;*p&E;^bIBYNnn-OtpIAGfxpqaw}^IFbpwxugLm7M473NU}ge$9T#e$IXY ze8MgV^Fj9H;eN_~#-7N23VITl#DIKRgB3YEk7P%&J6N5p zE|wLrm-UOecDSusHlTkq|1gt*HmrHfAH%(XxsW-JnZ%sW+`>o#y^)bP+*=vj7#kUz z7@HYS=$k-4r*CEK1pSo$jQ*Vdg8q_D1pSh}ov{PVw=)(nQ<;mHDZoMc4#pnFApI5n zHGLOjH|SlA6lOZ}FUCI58O(i*bmm^hJNh2RTlzb&W-sF);{cfFGIN;O%!7;^rV}fd z>CAFsxv|Eu99b?bXVwnTJ3(hLN3k-QS>R}knQ1^f)@ar!mK`gNY0ugOdNXST%YkJN zOaWixNR}=5s{4Swto2~N0rW=Tde#=OGLF3wT()ZldkgsRKpcA(dnWr6@H3dqVJCnd zVt-?Q1^tb^iZjG+<9ucRWd8uYma~Sln)8#rhBJ}7mJ`jL2)@fEaaVIXIUSr>ZYQ|d z+B(i3wxy?Wr*hu`-*cyMdpJ|Uyob}xnZljUjpuf8Y(RH$`Z;}^IBq|2h_pFNvBk3ARkF4kPo+gS3ZA8HtR(hp z_xbE3_9FH|wiRa)_@`y7&>_t)-k+;^~EyYFQ!U>{&DX76S#VeVyR zGnX*)nY&qDtoN)u<`G6dGmq)TTE^VZIKnv0*w6S#KfqYZJkD6gJj6K8IKeo?_(DI- zctih4|3H63r-Hvh0(d>Vrc*$ZKnDTe(;48__w+CH&-AarZ*(%4(195=5>N7 zL+1kpbnDD)T2107(4Xm_=tK1H^h_F?UXz$fTS?8Lxi9osXlZp)V#cT_by7`YRbq8w zP2#Ai36Z0t?4zm^sSE9+u7-t2hDA<@43E4Lb~Ws5*wFNV25&21H?pBHIIJLSX&CqbX4uR~IBZ7b^vL+g8Idz1YZqTgivv9^a%$uhU|eKeTHWHB z#b9Hw#naN_(&E!<7GF=hkv1)jox#Z{j=Y}6$+!{0&M40;j*O1D6EQI&IwB_GM#N3v zt%%!Tax3D$n0qnu$lDRJNO|Nx;J$Dq6e)|mmiABD|I)6dDbg>bEe%toUrM`}7Lax+ ztt9d;m|sl0n|2E{6j>Nq6nPUg_(14z7ep?JTo!qD^6aEDlg~~*H#sjdA54}4b0V`M zvw=$^uY%JaerY#{#e?TOEE1olNm3=LlPpe%ypl#pyP9Uv$kim}MqUP;3+~G&8@NU; zpPUw%4w_5mk@@70z)zrAWWE;@$R;zvgq6ef;(77C-huv1=6Y=m{!9k#^`5*Tcw_K; z^7({~!50$VkUM4nH`EZ!OMH{~4VJmnA2iuyO@1NkInkoj7Xh^#s`5=s4vB=;M@xtXk@y*;WY$!Pa**)LLoO_}R??r@Gt*`z&8MZ%s=%6Kj3bo!v}D=>+6>x4U?OcUm?zSPV!y}E zpv|Ps0&_p`UE@pl2hO7<1Y~%n9?g)ad!!P8NcuFe zW-4tOtz_9$T3|Msek*kv4NWIz2WDeZZ>74YVp1=Kd8W=y@ksSdy%=^W>~h$@Vb_5d z!?s6kiSEWIUS6X=Z*t&7%2Yy{o1XvLz|MYeHUBL2#>jkAjj zpSCA+Z{}Z_dos629L+Qo8H5Hy~>40TLx}x%;okcgp%8R5W!6oHIH^Od)-3q%F))jFp>_%!=#Ld)<$jr!FVHuIT zz{>RET}2tivm!H#Gm1MRI>DM*k)08{B03_h(r>1YPwfXOVMm0ecSP)r=nwBt56m7FF&8{<{ow=Q>%&Jy z41~|3jfzO7tq*te8sjzA%grl4v{>t;EzuTh<6BC!(_7+O3bd0towVhMv-YjJK8hJ4=U0;Y~=-0^C%Gb%$^-I;+y*{e7^6cIv>ZR&sY9AF& zQVZN$n}^ zX>AwO4P`+Y&?#*vFcb7Tr~~SR9>_AGhq86h7k!=bv;K?zlm4^*y7q(qz5ccAgZ`DQ z7_L*klD(EamKDLpa0&cKwhXrPeVGh~;SR{+2iZf}L)CrRBh_T}2iX+$Lsgu5ih8oT zL|vplTpg!AQhm0%M18LMaP|4>bD&?ead<2!bn_n7yZ1r5T6z2@EK!}1BWhvbLlN90B2hvmiP z^fe<|7;74vN3__qG&UctZfY*CK3aXGy1bgEHdWtN(bSJrw^a~)N3|4&z*n&pUIrJy zTcOpaJF2Zv;c#avhiWsFnaV8XR_H&OTi;#Tf3kbBtNb=u`= zSEgN^_Fw`5!-;z^;o*cw6DZjaCvf7LeIHKf@M`vrOo&P_TA$4Trk|M`m2i6QnYq(l z;#}fgrn?x^qq16j<6I(v&Aw&UExtzUGV5|{T~?Vjov610|J(x&Rz|DwzV5yjr;w+T z-J=cZ<<_P=L%KQ7J=!DMGy3(+H#0q>-E7Vhr;^=l#@LLt`Kkh}d!zOy=s2XmZW({`rsN`DVOGEHuN5ARIB2|qMFGCek3hi||);a6p^ z&5up5%5K1~%O+R7HczRVTs0T|){qF#h3CO5;13N`s+O$y&~RL_0&ay@!dsA5urffc zL@gZ)Z$$=53F@s#fSRCggkxZE8F%nnk$ZH4AZzaI5XW#BQ}6%hYbiHnB|I=C>w}>5a)E*Tgd|#Jw@? zH19CC+gbcm^SkC+?Vp-|YIm56tBa~rI}aIlnhUEB8H%b88hYyfsXb^oWH?|*YwxK` zZ{KIw4_eW?-;mxOUbf$`qB6V;tBxqktH7%BE3VXHkrkCdb$a`i+CzqKdJKX^yb%oY zRsT&NVomA!}4CxTUI9 z@Go^M7i`1FZRIxQg&Hh2=e6X;8L||u+_1VV1wsz1yQG^?cTsmqcUhOI$Wml0Ue{(R zu*McH#%QrzWl}ANoAXSn?(*h5tZ_LEwv&Xr%X`XmwM1!Ru=*1cD^=Dk+0$ZO48 znWsR(YX*2saa{3U{XzXvT>$!{I;`P?`fO9@+OD-{o5C7u@+(ahrb4vRRDc$uMd+N; z#8Qjno7|h8tQp_*bWLS`O@3{Deg1MF*g81BI=>ri+-k8WuQ$(#DZ`XwY#DZpa?BjE z9phcm9C9LgE_n`lX7;S?xua__b(p!M=Z#Jrebs5+=xa{@IQ`G*np23&|D1R(92c?6 zH7AY>*TvEqgiOK^k?VpJNx?+uGDQ4N6uR(T1fZK;1uiYFd>8+zfkeNl{!?3AS4{Gs z`gZQ5H2pt!TfgnFK2u*!pzoFY0gVALafM?6D4u<7OSmR+pOk{-fERNdN%NyquAl9 zqebv$t%Fm*Rq)nrJ!Uzk0droy9CJaw8nXto7PA_&1G5wJ3G*5A1-QX^1%AEr2IpP& zJM4Gb@3MbR*lGX5_c=i)(Mr}kmrBUeIR8@6asKiCi)~YEQ*9U9K9!K9Wa(2$s_jy* zW;{vSBW=dF;8)=L@zLZSX*=lE_;x&(!{cNGeDqt5&j^Sn$B@4mo&MX|8*Gn}n*%J}r8&HQ^264rai98*#n= zYr;07i`{_zdV2xkEtm@kLc#|B_5Q8)8~ok;-xBx)H~%sIGOV9?jK9A)){zG$gA^X& z73DSM4aH)lV~c&P<0Qu@#|Xzr;5pApjvM?V98Y-)ea?BF_dM-+((}}?9&}H-JJthx z+LPzxL3gD;C3|2u;GUANf_9-7db!e9*cW=8_FQ4F^x1%0Vc%-+X6It(YUgIxXYXp) zZ?EuC`lx&qK6{C-^gYDA#GTFxA4$*^`VMDFkTl4TyxaK--H+@~4j}Jx-tD~8d57~I z8;eDx)qzf~e5akxw{7m&+_iCXb#}dLlg`Ru-L+8@m$+Hf5dYxQS?z%{IBkLLfvW@C z0%OS#sgpjPGlNr1Dj`|Agw#bZCb>~2lNU4G*j@Aso^I?5&KEo{dS3E8#GlT&%wWZHHkMuj|eBSwj^A*ZV@9*Tb1pFn(%Z^tZpX1K6t~iEUhge5g4|#@IPrwg( zo@WWk0`dZqkUZr1-Sda1l6KkAViP^W+C|tzzhjr;lj`%s(+w}Q{^2RG7Fvs}-S8s2 z{Ka{Ta~9_>&IaZ#7TSsI#CG>{QhmgB$)r@D6D2`8BXcZ0GKZFvOj!Ap5=s7#;zF5-iN?fW{v}3Z zt`jpbnV>T;YT6#^F6wUT9xBH5KE)!|)zVF73*|ZP zE|_?_jt9^mNJQ4;5L~&i980hr|THX1BzGRePD&t7|Jh>S0E;^%BjMs z(y7X67q!wUhDi0r1h)D_6GviWh<~$AvSNrj?~|+@w%csC+gconwZ&3>X}-4D3a1;R zY_VRvXB1oP3ZEOJT76dd2n9QN*GJtLb#oNZ4@<#NXuep=WXIL^H%DP8O9;;?PbtqR z&nfwYB?K?Kr<4hfho}ds+ied~!yG3#hCAjH&IE=#9;6y+Wwg_QdT)zo0?!7zE_7RX zHV|x&}G*g!Ovx91OF`3)6NF!NqU-rrYD^Vti@JiYp}K0a;Aw{i!ClOF-uBjVrOAzV+(z; zzO%6ypto zAUQ5NA^KaCm>&T zndh5a&vWO=>62I% zukyXwr^(ZOyxE=D={{RLpvR<2d;U`7pTxdxTtV zbCP_De46Y4thTAKskOPxtg%_(Gho{sP-`<_yWVz#?K{8qwkHJd{NDS0@G}O!_ghbt z;|GWq5quCnH)w!p3OwQ+2)Zn=JkS(a78r;xVgKa*;+C+(N#%h{g2G92NM=D^P=3&o zpuC`8+#XBnJ`9YDS1kypy9^PhL1Syi_LmuZFNkTE>e7E2> zLrG`Ipq1Mj8Gvo^%mS^&U$3+h(vJc;)GueggN_HEzh<(ia9B4=K5$~hk$Gnq$ z96%@g9Q9t{GoI`Yjy8ro7T8B~CzBXs$b$?L;|1d-kj$VA_d(tv-eDevafo-GcLDS< z-f^HA`ycim){L#d+F?dwY%vz2u`$@dKwHdiTt9w^R}41aYZq=eF5hd3*HW+F*gse+ z@88%)a9()4v{BjubeDQay`&i63Sf)0Kr$9|fus zXbXA-=yY(_J57=<$&l<9rw)4noRQxrwgLVT*?=`8#S26u#EBwn&;!B+;5dn*9^qWk zfbg|oz3{o=oYRM_6WO$PX*5ej|J<5j|6Ll4+W1vKM`Po7@()XU2q??yTAkV zJ; zn}TN0u7X>`eM@j#;3T*XbQQP>#t5eJ-2~$Wllab{odnJT7r|J;I53Ikj{+Uf9|s;i zo&-91INgD$Ton!$JP$_BlctV zJ@$R}19lkjF>nGqoV|uM0h}XS!&=K)$7*ARfJrbrgdNImWl4Z-tajFF)^}z*xb-_Y zNA{EXmAMj3T3IVut5_eHEx@nLZ_FX)9N|@LZ^FGFU z#s)?wW5)30KD{6G0HdFAmp(8&?_zW_L@8;D`+)I$3GXL3#$lq~Pk1{47v&k}6@`hyM)^eHqI{#g zqWpnAQTQmosCQZZQSY-JEWDEQKI>gp@q%;NS99=D7WXG_%(Y40pL`&BAcquXX?d76 zXshJ@oY?tR$=1nzIaN{pIkGT$7!sxkQv!)mRZ;XPMOb%4Pejpz?uY})y%BxGUA&-V z0Wm5tDkv%-iZm<%Ji2!rA?iq+cbre0XWZHOK5?fC&(2qd?4P9wQHH2O&?H5Y#dj(3 z%p)NUp{kIDiyJ~GF_RZBSUicjma&2{iP-{dWvpeaV{|a!q}K2bMjUe;Bc2(@`~;ru zIOYuIOy*nAADKOj>7YL_r-Pmhj0a9(#xkRsF~h!OzG1##zGMzEv%|m4k7cd^4l*Y& zpMlAW@Ye8^;S-qQ%m{F6PIv^9Q2(Sdf_X3`2h0zK911xcvOf7qrNx|Z5iNPKI%H+I zEnOWVrHN_k5KV}fCZS1bM?#K*cAyJEJJ8d^GQu3_5*nX|gh*)lPPtA@(78@|PWetJ z3y+4JDm+Mhv`S?N9jgJ8RIB@%*33e+$3#QU`TG#7g}IQP{jmCjruR@UerfYC8dtSrd3inw2!1uq|c;1swg|j<-_hG z?nRqAwEUPd3Xv8_GpFk*nUhE}i8PBzRPxL+N)mM*wRd6?l|Y-F@*~Y+ z#-#X^4djeTnUkDS18DIn{EsHqUETuf zd}{Kr%V-5Oe_CA1l(glG;!@&MCZ|1_H6`u-thkh+w8?31sY9S2%u>a3W<42}3od)g znbnq=o}h?V#;f9EGnDb^3DFss3RUrG2?Lb$gnr5ZWj!T2!!5NV-LyC+qa(d>(Yo}G z^w$}Lg&pYu3keH}3mX^N#1a=S2R1CSigio1cni$$$J`$FLCnJ#t61yUKQTvW4`M9Z z#EyvFK(-$CA!#F76mK27k$i;q(tRWOh5JkQL3jS-m+qP17eMGaj2xaf-&^3#^Ui_N zjM-2QlnZ4;hqN5^!RkZWUsVUIUuk|+4OM-w`ccKvywVJ6hN@m_)YVQ^2ddT8&owVK zTn$Iljc_&3H7gLdW*yRvtVLEMYk=#J4x|-nK~?~N7(0;cino<3q3ntlWEIkeBp6pA zbBsTXZ225xf>D?QugF2#!Ca67eq|{q2gyb95NJg%04?9<9?cK#9zbg%s}2%zRW4|dskWLSL9dh=cjq0d8T=w$w!`PW>&t? z%&44MIjSn5@`2`|=8%y%7yBt7C8UC8 zcQ(osIt4k~l`5#Ftf4ERv!-mjvbO9T@GLO0C#vU6*>UJ>*_kra%G$DH&~ZqVb600t z8P#(PV#_)5yE;8e(r&L~%U3}`Jq~LSLzGg(~zMc`LLMS_N5k@eQk>YlVD+ zz+i)TB9{KA@Mo|GXfNa^@=u`^x*D-Ytx%!H8XeU9M1CQ^5urw;5o>DIzYwwJXO&3v ztEyIAr+%*bS(T>OROjgH)SBwGx-@+*l%vmqvh{0qS^8{!j^3>{yk@O#ovuSSp=P%x zyyhwBXS!#q-I{XEGnF0sTveuVM9Vd0ngL{=#s+mnZP9*Y0O>;dkt4abs14egHv%1r z+My%Rj=avib$KIES;=qYd$6oTUh+NoNAS;J8{|ju2tFn!PqkI zGM_SR*^fXOJ$AGsA`jW}qO)%&VlH6y{qRWr4!xw5G;Sl3)>)fcR@?i&H- zwwlqJU|ooAwC1APR&#k(RC9>#g8HKRwEBYjYt_N3Q)&;;r_@o+kME%84rs@yO!Y1mRJy9PsnjuQ9pOdfv&iR>FCy0x))6`g z&ms?iKhIi%vRYL=LUW)>RSlIcQZFsdFI`f)v~;0*kvc`4Upi&g)Kv@BODck8J5*Cv z#jV<*+Ns*5YBcRsHJJ)Z>sQ9DDkv>1y{V~NS-*1m%DR=E?MRr7A*U0zSMfLRU!+5Lv`0RvsPKW0oDYh5R`)*Y(zfpM@e z90)U;ePJK?bnBcJMl-XS)qJY;bZcNMquHu9u=P~ym@@Oqh2>VY*0pYBW6H*sEi7MD zKDNxQtkc|Op5D2rJhtaUXQz2a=k(4=+8Lc6I%BmTJ11%eWeg8S~z9ocBxIIeGGqq=v0 z?t$EcxzBncD%HL5+5@?9+9}#;+Bof=?rGZCo_OsT-AvGXyYb!Tt}!}%_w0tf-PX0{ zu4F?+*X)Lbh6RTChGfG61KO0(z-pdvcx8HRLYv4kq-kH{D-+U0l96R3m?T?LfvER2 z%GG~0UV-FlME$6tQ*Y_3&^0JaeHBVk=PC1**PurY`O1e4c}j(e2?sU2tbEvjniM9b zDNEg0sx&o}HiB0IYMQGJF*lSZYv*ZaY3Bml+mp3!ZTH(UR=c&ew@1RO+wZqMXp4d) z;7Hiw*Pepq_u%`WFXb*>Zt;@O<=l%tK%a{~QB{#uW7SdMwTh}DKu@fSsEP)yP$^Y6 zm47OutGv_-u=Ubd^*Hr-wKvdH{k!r{rKZAL9npMsRd{m*_+GfOYR;;wtGv{6Rwb_T zZtGPhg1JXqf1i7sN1HX$(pPBc@4K?9&`{S)ZmsRD>n$)88j1|=ZHMcM4CL0sb%iSm z4AF+d6`_@f>yGOD6-RVOb)l6PR56AX%4kE3!Czs8jMFcIQuX8XctxuI(K>%cfWl9K zSNNeo)DQJXeU%qfehLpXXq}(JSLut+MLbYX)CvPKwoPJC~>$O)Q#%5 z8Y0@L9#`9-9$))bGpjUKGp;tOc4DovW>)FM+MD{QT5hMZ=CN8;b5nmy|3v*r{aF1( zJ=AbZU!r`Zp13NsW~kwN!;gla4HH*cOoe|nIP`sQ$SHT|>#M&~hAT^juavFQ_0=bp z&b61MQvTH^4jt&ZEk|Q<}^cHa2HzLmX~5gs} zC_MBbHK8>x>pb;`p_g@D+QGV)b+78MbHm4M)^#kUW=Ab#H*=P>9%ET=s zyELct7T7d+3hJ%RF7?skwD%Do?NszWVwv1PJV7so;>xZgH;|ji5@;#34012Ojl`AR zLT)2>kbB7eVH?q#$WTusTGr%VUI>*n6+nexWj$(avUG>>B#mKi9j}e4eN`J$V{x2T zRWn9QN5^VoG~={mwSg!dtdG%<(O3-*C8H!X5Dfwn6jbzb#Th6FI0p$ri3)<^e-KeI z2T4TcA}f@MNQ?3xs99<8f6zJT40IN_O#VM8M}7v%mgmS@<=NoG-7+}={!6p0^ept3 zCIBYDM7ULc3L?U<^k<>h`py}rpwm$2jIJ5oGcFsNm9O=e4fEmVzT2J6%A|Ek@O(HK z7MDjGlGcgKCFRocB)CJ_sa&M&P&QVoRBJ)6QLa_4Q}!r(hrOk={QSA4yscEJ?gH;9 z?XTwU4Pzt-Rru}`uDnbx}1t!@Nph62QFJ)u>4kAPQ}f(|Ftb! z{%_l@wuRb%LC@B%Zl9%{txeD_&@R-@2Ue&Ov`Jc>a=zBAs!(Z^W>qs1Vpc1aN{v#j z)G75!1_GWu;J5mZvV48xqRr zlvme#tE%d4l-??p(gqx1q_VR9wyvt43*%Lm#;a=Tx75|v*MJER=EGa+qT$VT6X9sk zo9eb!S(>7zsyEe%)m!UCYB6X@&9*vA*Den?NNOe+#5KA435IZkutrp4>F-dUURYya zYgb#m+`cwXKeE<#xSP#u+eX$ts(o17-~Om}ZJWIM!EiVA4fM&Yk!o4>UsW*hURzV2 zXZK%K`>OU<-D}&U^K9#F-&gf->p!jkYyG$Np6Y+CmdO&mSKB?+ebob1zJ7`Rf$CN1 zebp{qzMfS&+wiLNbt$`)S;_)_>U>=~wwqbHLHh~xJ?-bt#Lf-C|FrkC_qB)F<^z2m;NpqJWe z+qbR5rJL6JK~8O@wW3`v-DA5y$Un+I$lpv2a`=5+jW~ew(7R&w&;eSZMqio z5cC~dJfdH>8B9_}q>iw3>WBf*waeSux^(Mx1G+OU-8xHm>v}*_)Ms1Lw7sBzE7P@> zPS<8=e=B+LAMhGZ(f&~`(q@CnB5jH`6}<8n18=k~*4}Kp(bieNwtY=|w$|djb#vFP zUE8a(xE{K-=H{C9x?5`op!LuOXaI_br^7ebER{KTERijhO^2O2HtU=_oI3U)o55s9 z$9^Oe-iPc*s(W{IRP|Q&mQ+;r7FU#1Ko!-!#>yJd*O0QxqZP)=vdXK-HRK=UXvGEO zSjAQ3C~^@wk6Zw1-rGMfpO5$VyY0)EumSsiDyk}uR$lY@qw=cH zH6J?WXyxCPmDN|Emn*MS7FU&26;$bHex?ONXn@Rh_RIt~$Q-*wPuL$Cq|A&nTT)T3D)SreSJpHO(ul+nZGj3fHzb zzpGqXU0GxG4Yjs#!Ooh; z)%O=Xs(xHeseN9}sC`!by!u5ov-ZIPM(zCt4;DOJPz)}q{cA<(tcMF`&nlf&HY=&h zvGqlDQWdRMtJmq#i?sTrDppl;6>1TB5xa^Bwsv#XmZ~$Io2y*AX;oXnv?@BBJL^nm zL-jk|t_Ad}cREW|103zH1-lmvEwEJeRXwS!pTB#-lggUfzN*^V`uPp>8|T;5%KD>B zIdu*5qfE1q6Opr#6QGljEBxyGCL!1OJVjf(*5@)>6}i@j@5l2Cuyrp=q6ml{Auke%h7sIDT@4%EHtv+Rc+I|OSC+0Zfz4uPcY5Svy zV+gC?dADJXBGj1I-mMrlrVaDPI|OZYa7;+d8}DZ^`q&52&%jF%L$Ow$z+gj;V@_b! zW7cBU*%};E9Q|hWQUo?+2|U$WhIljjEiA|NGuX#@8KQI)EYbxo8}%i)bkq)10d6~L z2dsv<9km6w6*mJn6IXz{?_FziEp9RRf%iJZW;k)jV%!?UT7=bW5p?i%+zs44T${%Y zoZ5qiqeI&~G#=jGG~7=geJBoP^%QS}x2LxkbTZf-d;?vCD}-CI_H*!;VEL#U=$q)t z-X`o#w0x9elycNb*U!PqQOgmEQ7QH(T~E3CI^&#uoPC`gai?7C5X%uO5OoMg-1C?h zF@fGI5H!>`@8>alV*|bS#O{s#=KbCKhqoQ}ySF`dJywYR;k_QK@^y(3poM5YT7Wjh zzKFp&8)7?SqrHcq95fH+(cV0CC^{G&0_C97(Ok4NEFJ9vHT0 zY_0Dxgthzd<;YSbEN=y+qZp_s=%;7~DhfwOT?l_icu%+x9)&~Wd~qST_k@P95L_q@ zgL{ZTL+it~U>d?6BDP>Wahow)FkT)W9-bav9-A?reZKg3c#QQP=Z%^A*=L-0p6_R$ zF_D<5-cvmsr#QMhT00N+nd>vpXTHxwFYl?lV<&n|@*;Wcirt9a9lI-btoNcgJM38R zeBV4@m9Mp{v5Vq1U^ij|(VL*_uwm%cwuYkv(W|hlvG!OjJ{+x#+k~x&Q^u{r?uo69 zTL`WN^Kr_!UHJWYYj@)#J$X1jF4A)$w%9AubGr*4cLlc)OGRD5J)b~D(NINR#a=sI zw!7?b+3E6p!b|U+E^Dx9!Pc&Y6{25wzx4jk`_Y7-C~J4PJf84;LbCni2}$8BYaR3yggA?cZcp$eB zuqUYhkY`5^k3Kj0QdlhN+~~8TyFKEkUJAP$rgd2maXCyBxFAA;zUCoDOVCoZ7|jpg ziT~SUTZ9z-x5rhFYaXNVS3P#(zY?x`a0sLEuJ~wFB+Av3Lx@C0p`uZvJzYItdOY`d z;qlVrP>e7x8g(dU$Zt;6Njo8KPLu#A#EEbx?M~U9wtMfp(N2VW@4FBC!FMlqANI7} zZa?3t)(-h$M()MN;Pc{8@m(0q$UgTjOf;&`z2AMnz0aK=E(o7Gy9;A&zk3-Ume}K4 z>o4#VY{U2q1mPHgFBl`3#rGCeCC}oQ@Qe7xw)zX|@pbr>_w?!sufM!UJk3@ zZjM z!#?epBeBCimFY)ftJ0HkDY#VJcU(0h6_<=V9r9<$B1AQ!2B8l<9byPwgy;@4ggy&> z9$JKW7FrpR@A(V&JXG)Xw};9z-&5n#;idP|xTriuff|=~7p+SKs@1Ku2svewy? zf|-Wx_Ml+8Ji0x4Jf>m8Jr7{RJi|Tz@#um_f{UkA1~yTkN*lZLr&Dx5-Y9+hVH;e>?nU_^t5U z;Yj?g@O`0jTn=tu=$_EMq5DERJ#uhjT%m8dkJUyGlgBn(xz8M*ZMadMd$8FKL)bmo z2go7p9G{V%qdY%)JU~7~e)JgW*%7OEsSA3DEb=Y%RUwLebuJw)dY3$e3XzXciSk9( z24xia<{^SIK6SL%@OZWkJh>td7L52#UTVw`V@jNMk?Cc%HF=-xc_8MsUWnjIXR<*#9ew;nx+| z>A~4bB}T|_;BbNFx1e3J1rgXcCgt247O z>#o;7;JaQk#$QC;S0!c_W~s7@vaHR|DuAu`yzYCM0*`y%_hMo0d6_&|7&aye!@^9) zPQjiGI2AAjn;Um3ATKUA?rj_g^M@xJW9?DT6wfqFvL^?Vy7J3yJs;cZ0NQ&WE_wbB-o_h|7yRnsA+TgS0#zJre#ek3^5ej6{vxCcHsH zjV$H=BX}gZPWnf%MYv74UHC}wCS|*Di}0!7ZOS9~|NB_*MDP?kef*5^ayO})%uVh# zeS8dIo+pVQbDQV6-dW~WL!09{*VF0^&KsRq7k-&(?NGw*5{0$I|3Vli;#>(+bSI^8><+Lg*Am2xJ$?8f|bxN zB>d14`7^Q``782gq}|Nc_~!VQ_}2Ix2`%vsQFc-GQ4Ud#nVZvE<2R*kPTPvTLy$+e z#>=AR(TeChgu8_F(LWUk#1I84IO4W1J%ku?8}{+{MY+;L7$GQEv@6C{j#8kkjYyc9 zK*vTTq$O-f*o{d`*oE1R8N%=r9tRI$?#HJm3}HA4tNpA#IPyH^w~+@&9vb;5_;Ik+ z*9e;ve0;AF7$IcrrUa{fePup=P=8-PUwi-|KrA59%y+#Fi z26_g0Ud9A^p2rMhHo>05m~)u(7%ftR)FIoT?aSE*C$BX( z9sDOOFximXn%k0lT=}Q+v@#`+o0p#FqT=R_RGm_~!o*QEN@ex1@~l#wJFINWJ)<0J zvo^QS$KsRV-RE;2ehic79q*mso#=gDIg4{a$xOZLkm!BK;jY6yhZ4>#&TP)yw7U-T z(&nbEoHnjV9)8zB5xyaC<+S=~s_^`9MR>e-ez-O!-uqPK=}1-hCgg+&eaxvyL(Ev0 zO~}p2eYiPpn~~*ibKK^-jddC4GTx=!%@{Ch+=yw$0J^WsxRK*VjdK~7haB(n9-D{! zfaQgx27JIS4PF*J-X$K9fEe$xG&pbSk%);A2?%SGoF+v49`V13BN1$;B&TGj+s?VL zmF+Z)GQ`|=zHXQ8bQU#?8uaS-8t@wQ%5=(d%67_hx*WeI@V?6fmu#n1fvW?pUL9D6 zS%Dews>7@b)C6dQ2!sJIZP35Ynt=8I0>S8{!#|80M(ObXI{)Kb~4`);V=L?YDa(-)Fbq?ttCHxczpwNc-%(BWH7NlDs2tk#3Uq+x5vY zk=~KmNQ-=s+$Xh$Rj?FnaIzu=%u%F6 zot5bdCuOq2Ug@M{DSj#(ly*vcrGxSZ_?N;?c}V#`@B!svF|dj)<2 z-lW>5dX=|cwOO@MwF$aTwO+LWEXdEyU#H^c3-kH;0%&?ZH=hUolK%tzG5>4+XYkkj z58zK=V?j?rS3x(lv%pwjD)^AEhjtX`3k*=objI|z`C2e}I%PT){4W1}ek$}+ep3Ex zo73_+`KwiFa4Q31!X9h3bNt@Y<&;? z2;BkKkf3-A-mcuC+^O8IEQi}lP$VjduqOptmRp`XC$}tjDjeGuki4SYV7P{&+~VAl+!?t6Fj=RZY4gn7!rXPr^~w!O|Ga>_z`W;*^~%l4 zjmk~X=ZY7Kmx})so0Qv>Ta;U&ZxmbMV|fD~*E^WMQoL5+q3;wiu&32!mZpEUjyHO`QOlMVuPehas_-X!8}dMv3b0Bf;c&6JY1Vm!jbZ&Mu`b7dsA$Z^h&xVJy5Qc2lH+T zPb!iMq(UfH>M9#26Tnlai86Si1s*S(VDnMgN$?5TpR(i7ld@BA4_iH7UMW8%tB_aA z7s@NZRq{nPhbg8hs^n7@(TWJgRB)ss3LL5U7aj=_iYJO^ihsb?u7StQLzp~O3@X`jD5FY$NUdf{SyHN$CZ$VTB{Xo8glw}~(k5w= zG)r0}!{TP}pW+6a&xy~A{}i7QpB1}6&x;+!r)(Z69tCz1JBvv7f z@&r%Lnv#{BIT@UhIl<TScbJua#b2o5br>_S;PhSImp8g{JW%}#%H|cNFW593I zso)P#8l1@GUHW_QyYx-mZCnQUbNUwUR`3>XDQ_b6}rxULZe|KaV#bCc*p=n?v{!{9yhq{ylyeAO0|%e}{k9=DYld;C{hs!F~P% z@StFo&8r0K1cQPZ!eZeX!CG*ku*l{j;cQ`{&`X3Cl?Z2nks_4MC=phK6rB}a5Me~H z#Hr|<=)BG6MVG+FjGl~(qQAgh8QnH_XIL`2GIBCynY|fiFnmF^S(>TLlw^8jA+x-) z5Kwuh0w(fIL>4BiFGG>3%FNBogZ5?gXAERq7MX3mBKli|gX_1}N8~Fi6?)rRCM*}O z7tDfg5|jz&3FipsLN^IE3$_USM016{B7ac;?CCGMBDyY`FANX`iTp%?&>K+eWPxy@ zaGPMRt=r*JmBK1;u&7EHBnlCQ!k!hvU4n(e+u%EJsk_h$VU4g_xIW{qXhX)DjExx^ zGKw-cW)x@6$Slb$hBpwEz+0RBvVyaMvI4WhvO=?pGD|aOXNF{zW`<^M$|%h&&zzN6 zX6u%W+2F9Oh^&w-I7L_1`iw0Zn=>|LJP>Wp2+4Yo^$7Ognz1e8o@fj7K1}XrJr-@v z*qQNI^hESj6e)TLy$5|H3KKnm-iF?XNdz=ZR3i)*1%t!EQ$^E6i{Nbx(?qp!lHzFa z9znIRR=8BSOt?t6M7S8dU$9uXSFi*oI|O?KLxR161A^ZK@A&(nI|Q%zI|W+>y97H0 z&-kzS|M9m9UhuaFp7USu|K&g9d8r9|o9)+I> zwziH(wCDraSw3!bM2sexIfZ|xL?wD!2C=4SNK1h0{xl(J^cri1GVS=O1I_D$T!mbX97ML^)%Xd%ZTLU& zXYgly{{*}FruwA#obeswo8pt?lj`FNlQF(*aIz2Erv>((=*s~gk8HuW;*Uq3h&&mY z2B%bS#i#jje422LxO!X@F5Wi+KNTPEo8X)1yAt;#ZYq8y%o}j&K7U{vaF64j#669B z948DcO86hP6#PHzAK2fqhp|VXOW?=Fzhn6r0fvW3$8c?}@v}}ognSJ7C$7ftV@M;q zG|t*4w4XKgc{53|-FkFYkSZcg2jdQfsmvL*E}YZ+-v z>Qd4&(sI&LlCG$uXesHZ_?LLUeE0LB< z%V6tXNtyJkcrWb#Rs2mHW4BwfSF%qMBAYD@md%pRmKIA3rT*|bv`|_EE|Kn$6iYvd z_rN|oB{N{ML$XIQB-t(bBp!mvF3EPu4#|7*cF8O8d+|H*Tk%v|KZ!qzL%%C`C^@fVRG-U;53y)%1Pc1cb& z>;tvCk-8(hDCb7%wbbjWH&VZ3T~Ga*^(AW?>@!UqEshay&fb>29bA|b2``4TmF%gieQ(CFbT#&nd{s%~_wFmm|+n<>ck8%3hznE?b_nCR+i1nYB8*KYLB~ z>g*R;FSDLy^=JQ^HIV&J*1uqL_F(ovwj^gTTbd)uQRXOevU6lP(wsoCGABqJD25Yw ziT%XE;vlFj$6x#kCjWt7Kyl&#vA_7W_zn0O_&M|?_$h3CF5Vz{A>JriE7>Hm_FwTj zNv?F0Bv1N}_+Rl8*vA*@1I3CTi64V8;s>^R!(^4@v3O9jO0r(EPO@6E241CysezI3a^+8NTB(#?|T&<&EUk}ZeY$P9&1#(bHTaGC&$bupH{cU(XWFdBs9%ErQ=e@6SN$LOXxpha ztC8ww;OFXNZBNwC!N0d1Z#&lJ4s(RMQ**q{sPR&Z;mzY-a1Cg6Myt3rrxm4^wW8H1 zxGk(YyH(aIZOv}&YRPGpwDz`0TlFnnEv6PptFl$m>aA9`V%752z80(f)V}J^Oa0(z zKQH~VG)Lj1R<-)VR#j_WtB*QR9iaACXDb5KSqgaADzX&)>H&3bYqp}GHMe!JC9gHV zbxlh_>pSzBmiK0J%V5huOMlCnmetVv%>yl~S{^m8hOTc}*K)V{QS-y*Tg~^I?=|0T z4uIZj_HDl1j05{OW57OOQIijt*W}$SY!Wr`o48FpD6$#b?A?4FdINd~E@f`H(`;$! zZs}{WwEW$C6XxA5H=BD}j4iz_)?RBi!5rOuwfR!>HK->T)r@TBG@)REXujM$1?mO! zv?j0S3(Z$xqHnp;1kfVx8`HxD5W{-=ROXzqEEbs}Jga*ZtBS(H+$t)*S)=Pxpt->JDwk|8(sg`VLJ;J6PAz zVRM?Er`L6G^+J8Ro(tyd1>jVDnw|r8FgP1pJCebz9qNv@jwF4uK1KhVt{MEB?x60F zuBoHBqot#%g9Y<_x&|;)&(gEO`*jC&U$pySpD)_4+HcyA+C4Cd)PA!0llHSVQVXZ? z)kbLFgXQg0ZJw%~23E8y+a>K`;5v=eW@)>uy-u@IQ?FU3$pPH`X>TZd}rM8W!JM4*j#?OhaAc zN-(==Wh1L;MdP`K<&DD)=U~omN^44mNn>L}V@gwFV`@`M6Q?P?slGAI){6}djV+BF z_}|yk*xIOW6f|iX`AzT;1J^e;H8wY1ZfF9ZZ)mjnO2gj`R~!Ca&(+x5Un zj_af9&o;Qg(KL6)omfAo zZm!KD*gB`qz22jKVV!7Y&dMVVzc=Kp%vzZZ&RQ8*A5iaC?{BLe9F;@E2wP9Uar)1< zYxr6JqduK0LR25fMpp07K9K!e_Wo?Q z`Z4v0YPWiq#;V4eMr+;bf35so`*Y=Q*;S2+O_U~56WP|$@YzpjN^By+G7h7gUBNEU zQO$oepJ+Y?j~r`Pz$5B^Fge=1yk$j89e62pc?-3b*-CF^*y;d}OiC-YmDXync2JK1 z|7snfwpX85Us7L$$FQ{<+P1W9YTFE5-?pJ`Be+JhRI^yK1X``B(bQ_zw^c!_HNy6+ z_DW5aW|3x18!RTNsnqb=MeTxiArzK5H`yFs^6SKYCsqqbu)bfa#YZmVvK?zz_5#U0B#i2B7HiTb4-%fMT7+jTp1 zFSXmCueIBCyTSiyUupf}+N=$L+YN%rTkUJ@8)%R=SR10vXb-S86OMebCbM1Kp52~f zYp^z48>$Vn^^Nv}_8ojBv38ekuWqMq7hM04Zja5&I#zZJ!7?e09VObqhK$D<9 z^xyQ~p{Y2i87@Ix3?mJr3?jXgtr_}Ey`e(@HNlVGa`ajHY^bTDtE0Qa(9zjp>^Q0G1RsNM z3|61goz@-G9oL=EIYCeB9N_zi)y_H>@Ccowj;tL4PJr(_j?hFcQA^fRprdr7VLl43 z;jC_?j;eKmj?ua4hM{M5t~#dHO~=qOwKOeBONGvEr`TNFPSnn5C%`onwHLRSw9jrY zh0bW7*M7s}>WOMW>jW^jb*#<8R#7XrmDkE|)xl!vqSm$+ zj?EqLECOx{n%SBKb9Z%C>lC$z+7mAO1o~M0RQ(V1_qKo3N80|^_6Hn8hvttqou)%$ z(ik;*jRB5!R=Yt{(q7hX(v-K)YM;|y-cHxfX{Tw++UK{=11D+OT9$S`EL=Uey+<>z zy;IYp>DF{DG2^?6?BH3fFT9dPN6sKvd0v-O4gBAA!xXMwkO%+iY5U$&+x|Z68g&U3??sN|9_y*4C^{Kbv_0EYgpU4u5&$jHFRyK+?Z!v z)w#NJO(*;U*QfwXpfaPo31Na?q8O#dDJFN52Y3>6ifOB9r)i>Tl4-JO3wRrN6LgDd zZr8%Djo{6uIbCzR=7GzgbGpL1r*)Thm35VOg?5K^hl7Kmq1`XKUv~#}2X}{bKL@`A z{|kNIJ=C+e=fCb(u=T(0Jv|3{cJ=Im$-bWb;0Tz%>yGH23fK9j`z`oQ_x_$kJ(1v# z-M{r5v>6sy=$;QJKCyNI992bERCiqWb~ue_6}S?*-LwNfie0A4u9_}S@DO-6)YIez zA2kxZ*Q7Lhnb2SqRB6nGdr4(PnY>LKI&+N$VE8qyaYN@uxL02qHg<09+}xROoN3(L zxdlAkI0O9Ju%&YcSg;spdTnT2@y5^v?KU*5Xk4*!KE@}|rBzAgOCCqJ)wQ8TG~ao69IjkV9=3$FX z2tC;Id(WrtBRxlZ4)+`Z|F7o{n^*QW_5QD?vA4Cip|=s-+}i?f?&X<9=3_lAy=^e( znE7U|nFmcXbIj@BiIyprH1jyiB+CTLMCe${ILmnOAC?o~BbK9<|ACKM4ugLOFYl}G zJ8W6fx1w)Z-*V{Uz9oH2!3q83{>6Rx{>1+H{sd@TKfa#;e%1e?|9StFsu%sleiH0M z1i$Tn-T$WlZGT-Kshv1@?la|K5*1pM>Mm{ zO(UB|HI?@s?-|vUyNJLWUxDWlc=5d4MR|)ETNYCPsw%YJe!yWMwEn-US5>d8{;TR3&=1@j>=?K|ST^GH zqSsaZ104ec1N{T+!IZ)8{TA@|{vZ86`^^KEfxdy{{;%NV{?m)LS-yb3^?&K_fjO)H z6PVS{?oaAh!zpyPS&mnikJx5W_qFxS8BsQ(e8ij)e_C3=&3!F!4>b2NU{88K1MVd{ z+;5-zKf*P9?l%p*@9!Eg40I244SekH9_Sq~4fH^%gWYh_a>iiK0CSK!$QopV*@H=g z<^dLzp<@p|8GH!yN6@F>2ZN8n4BaIzQ#Y&X5_fjhU))RF%iMF>=d-PSI=F1ridE;c z5vy0My2M?!>cQahRm)Z_S+&&GlX~aXC-f)vr}Pg7>4R4WNl+Tp2tVY!TxA^S9JpMi z9ncN9TPTCp$(5?VtK2P@Vb8Hm!c*=-*}8Z5gucvN%{)4(zh*v+RZWK1*>; zRbO>qP2YZabKugxJ(gPV9*Yxf-DCO9a=^0RG7@SB6G!kt%OQ(1%nw;y!N0?tXtuW$ z)i_w}EqF80oMkic>=?>N&sy$rmZuBrF>56LN&9P>8V+{1C`4_aPCdQoI{K*_+{%p={&T7tXPB1U% zO*GHxUC=wfcV6$7p835AW{R0?9$}%F9W5ktWiQ!0ueY+dqIU!wxr=3C@AjUGUaEPd zWi%Z5C|l`f7ub_-rkSbc>Ry_8VQ+QsBG`vvW}2&d>9+3ZS=76=XGhOYSR}cox3+h8 zPqnQ>Fxk~p)4Q~HSI@uQJ9{2>Z->bf_}=lX`(d|F_ao>(-A}upbo)bn!OyzUFvmev zU6^ic_jLGkJ1lJVgRO;Ke%-lU)4K|~e7gg>1G{H*`9q7k0^qw+ZdZ>fuS?#g>ax~k zQgn5idQ9D>4wK1bG(esM!o5S@vHHR@w4%V@jH|PPJoi3D>@U6i#u0zF7G56 z>pICsl96tt8NWfl8=E@mMkd(K^vl>~vV&{>X=E6G8L3dF@uzWw$-%@jsymrRwlN7N z_NFAGb&_gK0Xv(VOpc~hqm!u*+;7r!rW!fMWMdjs)2Z+5=)7XkcXmSmHe5Bh!t>;- z23_YRcmk~JG{9WfnP%h}uNe%TU7hJhuFcmCHw>d;{~LyJhU9S_e>#+k;OCP3H2a}tqp40s)Q19TQV z8*wwO0lS&Tn8up;#?jECu325PyIf48O|GVN<0z<$Da|+%?&ndak>J&)wWdM1l(nNw ztKgnr4IMO`1R>R4rXLOZxSvz2w+0|QS7DdcBTQzn#Z=JMWwKa}V%Qg; z==KbIynUiQ(bi3Yn*$T=Z#v&{E{?kCTohFt^~t3qYHeU)R1tJt;QGLiE}vXJyIhaH z5&hZaqf5>>)zs-xGon;ev&ZF(6OZ$YnGq!(=alT63{IF4<)7e}U}js`7Vuy~_PBwB z!30WbP5fX2Hen!PXD&9OCLWj2HoYc(XKqD&O?+*9Mf?SVb%nJHg!2S1X!cAm0)l`f zG?~iqNJ25b3}1?OCzRnm2<`+F0Zo`h@FaK;&Oy&ZFB7g1JXMzoUaAuro`g$;i-f#p$W6`hvG`{`@jd|evA7RYwhoGN8%30IY58JI>gz>jj&oW8~-@zh-5^ZV;nu; zQPSh2i%E}?R%eC~f(XHc5W!YRDfUza*SH$}4L9TtvE0dHvjSich(3`5?tJ-76iD-cK2zSUo^t(7w(r zWe!qiGfSCeOd5?&W6)+Zg&ZCyox_E;WpOzS+VsR*bOtRN=1Yp4+!q&F>+J60uA#J3 zT->9XG0a%zAbS-%mWg7;Fwv|@^FL*yStwRX`keH#^m6DRyF7he=5jb$_PR_g7svJH zV!1OCA7)HXoRK&)v4P#lo|*Uu2Ltm4HimnXyDa?%l+L>WPqgSf2G4_Bmkv)scvHyk zWDoKbaxeTj6k6bw?m<4yk?^gS@DT#Epd#x|;;qEniFXo@al8Zw!L39ufd@2DSea!< z4HO0mJq1V8E3-TWAvU`UCJNr9xx+puIm`g7-=@7wV+1e*SOHmCAwpI_urNe868(bG zm&ponM!TR#qV3{b&`xpAXj%Y0z%Gs!U?0Z_rosNxVrc=fvC*+Hv9Ym5F)^{MU`8-A zm=!E%eu!cPzmED4^*-tytVm@oGdNngHJTZ`E!s8HEpuD+yQnWwU!$JQ{1WwiW;!@% zcBR5C^FK;@)a*cE)C%72t7Wi9_d%I}<)l>c!~a!zsn$2kLim-aj7IBzk(hF{BH z%s<9E&O5<7!*PMu@Q)Nq<{d6PQuupeGS`JSk~hprUnoI`c2g>)m_zcy0t|5>ik4Hkxrt|C9|P4a0GcS`Mc_e>T2$H)$07Y z@)G)Y)!Typ>C5SF3zpFD!5eZb>DO&tPQOpPOS?zAPwSuFnl~{0E^Q@!G2O3V zC4FEzjZzDSUpeJX%DtK!PM(w-Mh=H-n~*y(cT%oj!Ngquf)KJmIVm@U97+x#S3x7l zeq?`}w>k<1eq@2bHJ2|C2!w)ba-P!a0xDL1O@3V-PCd@JF2~A4sbN&BPcTk0LaD=y zGmNv0Veo0jpElPOmzSJol))cwtx7E`DKE)St1Dhvyef5d>YCL2w1TwhX*1GRr%q3s z$|-e2&Cn4wIG@FE37G zrZ727=&aOP2U#hzmKP_(B$auPb)9vCmCUTps>xcL`bVaEG%K;ic+krKLmCD@1f|KLU-ox6<+Qo7K z`<3ov?FUnn_QRzXv-h)>uy?R_!ej@_pXFD&n>7S3De-5`D%s6C#I9f`BpqTeVJ~1W zv^jcq)a(W9!{ztN5|Ro<_sXbAP8m_NXNn3%*ORD8^jVlv`waRl+N}7bH&mh#QpTi=g$af?HpQFQ zo!SGFkE%~9Z=NKrCsmpzNjpW8aZl1t(N5Fg&w0647nDpdk#O0wW|nMVv1d&$nNgC! zvYN?EWGyL9U@b0=XC<%_S+&Kn;E$?UR!uRURb5vu^wD*`+X8p;Z0g+RlgNN`3nD_N71k*rM$XSFA3ldfm9C;cwDotoEn%Klxi)W zxp_|8Ts%`VcN+6}`Q|y(n6P{#^FiwI@?+%*U;;CaiH9aIA21(+uP~yRx0$iThtNCB zyUZA3EHRGwh#5+}%M2lg62rh9tozIv^Ey~F=e05KG4C_mm>Om~^E$(y*3O(p^rr>T zrV(MmRpN@|drWJiOT&mRr0CK&2{A-Z;f=yLrl-(Lc(d?Up_ed*c$P9uaUq?hAaXe* ziE^02Ax$eq%c4Mb>J2B^YjaJ z!i)g<`x*Z70C}LCFyk*eenubdFPQhy%(Q-5`Sd$-{EXZ3JFwM2x+6CzZppc%K>01X zUSUwAlenZ)L<6Z4dV+Y8Xsw17P2I%TlcK2|Bt6WbiY#RZ=^p7WDMOj5%u-Gx-y=;W zPb2e`8pUmrKY1$oHYrmnRNf}tfqnQ&0k}YB}7xNF}#F-F`}sL3N&?9e!JovV^w~d>KuGmI?wovaglL}aRGXsag}im9M8PQ z_?vN=am7~R>|^Cu89}9_*@Yb9Y-@`+k5V6`K1_X-icASA4J^ID;Li#yMW(Dzdz5-R zg+GfoYjs)>Y`vXwC*^L+>NJh0ow_>Bo8^(&M%7T;scqEtX;~Q0Aj zi-1YSO8?Y8CA|}HL{wvmwqDmWbR(N2fdo+3B}ID&74g4 zqI=RO(;tOe=Z``kr%$F=&?eD$(br2Kr_ZB}qg(Ax-%XzaokX8Np9tL!d+w$`42Ate z3(}{jKMvgv^KCF!F{U%N(6@qj(04*}89V8D3^_x^uy!k526bhQV~%FJGToqung3%J zi4HT1MMa`(X;S6Yv}BMvfZ=!FeyFs_n$I#c?JdQq|z7D*BUQQbe9z!2XcLmR(&86L<&Vl>Njb2J~rQfEO z!elnBlvW1I;EaZSM$y;6rHW}T;ML%@V0Z#TyG|{Eeg38v+I)k0llnLHD)kzb4ZTUd zO}ztUQ+E27P$6+#PW(`hqk7pN*|0nMK7M9-tCX!$fd zx;@~1B3sKOv&iGKndG9>Dfq%vYu)i4_-!P2ynEo} zz$t;&ZcpBk%q8>4?t$A#+ete}+hD;AJF-7`56PbtKnf)7CJlkh!DZlIBuDa3s2!9? z&LBIGN01%KLbAwa5jh*YoxGczNzMZAB=53$7kMujNAailQv9GpPmJak0Bo-jk5JH=?JNUbeQx%(tOfy;NMAiLjFe@OTH5_hCH9NfV7Y_ zjyxXroC>ajJu9J8Nz+J?B)+JUBoOgMcS0@*qG7I$jV8swToW5Zn%>G6$s@I~npk<{ zRw(>ISnPpm^2o%jvUR;wEAtbjz4RViB>JxOvPfhb?1f5mz}B z69*kuIjnXlAx?++pu_H9UqT&+Vq9RGd%kMY(v;1?E;3U0tR;ztGN#EIiZ1&t9QPQa9`o2kl`>__JydiLre_cJ5%h7-lb)y0M?KGa z{_R2aPZ=Pq~)@yC0xxyT2SzwN`L|CFNQI@yRchFCk zkCsSFoF&%s0s7GrW2rP-{nhdX9B(05K107)@Rn*b!Lra?ZC+%qG7t4GGUF{oOQNO9 zyx3f8POvOCCt7OE`+BXWSjgaI=A~wmWto|5Sz`V_NB13;#Vt9$Btl6uuWgkDw8!IgDAs-A|P`kp;253W40GP$>*XKrs&@4Vi* zy~(|)y(zs`ee-&)`%rzUz2o|<`p|vjpl$oc_x%ZdvhOtX8R)a%>Ankn=ldG^FZ5~q z)%}hAX3zF%`j!3l{bo<~srrxgoq~JG`|JA6ZPRzW&jPdt=k!|k9qu~;6M6rMK1IKz zzqVh|f4FaK-;utby<__%GtTibBku^*!hNB>JrH)9Av$v%W=vlReouvu9$@#!mM1^7Qs(OuOXk?RnAn z5*&Ha_d(3Vm?Lys?{mK6y=}d*-m=)7N#}gGdgn~SdT;gK=Dpq9Iwoh5P0XT6Ig@fH zEt(W!WA2^a1^J66)hyiQy~BH_x7iRIkKkaN5Svh&V4K@vJN%!xhuCo3S?+9ij(emp z+kJ=c|OhZi@6ZA8X z8CyG@5zCBa#YXr{@rm?_@HrHFIQB)>%dEq(@98hI{uRPUt|b2o-_t+PKhpmbzRdbA z`cKH7^^sl&MvCf$YS;;ys!|I{D%LFaEY2*}tgT{m|1Nnb`%m~y^iZ}&^1I}_=&R_P z=(}i*L|(g1JS_bt+9uv2-YVWEUN7A$ULzfrTKcY$u9u!HZh=kWK5zBhes`quQl=|XKT|Db%Y2rg-D{MFykIA)c^AT?+k zFVtSDyu1E+iIM34>c}2lm@G@)u1%p@^PA#tyoP@>q=NI&_y@VE+#W6P(9Z zYLe^aXsJPtlG;kgORc16={PA$su7QaR*9{pwPKA}EtZK@Vx_oNyiuTpUMG-?e-~^N zY!Iv#tP`vi{4O}mUn{5+ZxN`)bz-f!LA+kDMX*^=FWxR_5N{Hk;%^pg5^NW26CB~6 z;-BPOAln5y1r~@UG8Wk?*a5v&aGJkOV1=CKk45Z|9fCcAU4q@99Wnv2M;zctdt@tb z0^$VC65#nv0ZXurx0Tn&+s2FI$Mf-gD}B@UH#i^HUy;uYfM z&{L!l(s1btafEb@e2VmUdAKxM8U?*UzFxjg9xYuj-(0^zzNLPhe6xHL^p5)N_1o$< z%eU7r)9t9Q)NQLjSbqSTr>oIb>kih}=(0>aUAC!O_pk0P^jXsx(`nPcx-+J8U1v?_ zyH1-fn9f7TbYJSa*mc2lsjH+vrn|KNV%LoB>D{maOMiJkseeXydH;zaa{r%0q<&gI z75c)^`Jr<|w0^S}hb|3K`Y((c-%ah0?T+t`>yGWdW}4nTv-_qguKS$nn(3dmcbc&B@#d#^LAYIv)wZO}BR8}`?$8k7yS4R7U2 z=xy=?^;_g`V|*iGZdeowG9mo^$jx=4Gms;ZG*SoOP{Kr zudi>=H?%a&)9V}N>zf-A6y{FXr$NuvCTofMx!N@S9PM0%xsT`%>mA#V=qI+{HMz8# zP1oNuT{k^4-7_81Ymvinq!yX4Z9ue0BQj5$qL{Cpr%lzSz$8tPqMfCHiJ}3?(57q8 zYBIDRTF+|EY0hhADKeyqig?9bMWP}_njuY>#w&AmI8^rUZv!(N;X4i_7q-(?*#OuYw;DMS_^`A8m;gXDq>kOCe7DHY`+i+TCH0^VX?0kRm5DL_h)rO01` z666JZFmlOgTM1ta)`_iz>&5HDo5h>N{|MyBYq(X8lp+7X7Pe^NMzNQ0lX#p^iJ1GF z__H`o`c0fJ{Ur7keulZP&`0=5{8Rix>6Ug%(-qql z3l(Xq?TSq80!5$H-07+eRhsIj_J`KjkgoDGTx-njF?+r7M&km-F2zp8ckM345A6=c zkks5BhQAH&1`mU$VTa<2Vvk}>;}?ZR<9DrPqeWwnbV#~N+9Mq=>6La!`=n;aNjjxA zlJOFZkSb43;l$_!XU5%@fQXPyOAI;Oc*LO zA>Bw95+YoIn0q>}9Z?}2NIMeAo6d{nsgNjM9il+gNF5T!i{ee=Me?SCVLTi!oLApI zl~>Wz*^c8iwAZ({RyVYFw!=k0?Jd=<)gHdxBVFw~r7hKLWT&)ygo=!eun;!FL?{Rq zp&=|}8%RN#%J3)loK_-a#HN8~z|B4IhIAfXKt|#UI3mNxDh;Nrp+) ztM!v=Rv#Ps*%3Yz-|@5KR|jrraeep@ZsS^`WlA6_3 z5>Qel>8R_h8`F896WM9);IZHD{!=mM)3=sp#6wwg|yoO6fC8A7`y|hH+ zAYCddN3unU;0)0mWV*;~mMB|9Ldp>`LPy+v$;ccq86hD-NHXH)>+b8}`%w^td=j|% zM)iCW%xH`1sp$DAz~zq9&1j3^?Ki$P;BxmHqj@p#XCN#Wmm8iN&5P&7@j8)sUKi4d ztU#6{Gk7y$^42hu_pf0F58mkD{e~p+mLqsx!f3-UWzchY1l~$y4zCB9&4V{{p;saO z(DQloczwuxUO$q|n>*UOkR8xzJR)y9lE&MCr0`Nl`zmq;I*XUdyNqP}qPV<81NRwP=k^;69se3eR-S1O z&+RdsX@8NTroky(hpBoSHIe3hR7{aKiRkVF-*Y?j$ee6H{+{~G@?|1AF! z7$mvI50v;zU=cq_W^;fftNASd9REE30{=Q#$UDammIO(>CBc#ld~ZoHuaH;7E9PC` z*YPjHtqXYP8Z(<0@S2i2Phk#kvhXr; z1G$b|Ll*JO3SuV_CJRp@r;yVK5-W%m#v-v(gZ_{bg@V{@I6hsNEhGxBB5A_; z!gQh8T}TQ{CQ4i+Ny1cNiZDsI3Lyw5NK%FNk_nQD5=Y5gT)NOvVk>cw*n{(gSP4!z zPe>5rguO_(Fhn?27%oIhrV230I1A+_a#`ps7LAg1#%};eIG~D}E||C?bP?Dy(b2E8c*w!MBPP4L=nt z8+I!!8?73@gDV@pE3VdGt7msztzX&TZLnb-!HKg0 z-~E61FO00V`r%(?Rc&Q&WoI=3?3>y@)!s^FU1x39C)zjqhF8$2x3M?9cKh$~zv*=g zdmDQPyW2k@pF3FR0G9yQfU~%BIM;yWz`23*0+R!c#cjo=R%3B{ z>+u$2tJxDRM_ZP5o@goQ+|4`!ZD=*NwzckN>PFqe+{N6%+zI|KyN$hz+1jdW)winI zO<-edQ)_c;ORE-aY|YUX=<;;=U~6l>u1L37R|tmb^L04Ap|w!AR9CE90!HWybyM_V z`bhm0eS|(rKTSVXzeG1pZ)#nlE7O(eUc<+)oudoUFVf}ca&-avP<;r@L-oJ(-}GY)W`p$K z^_L7|43`al(1H2@eWor@-_V)~$MfZxx-8u#!*##(YD^mY+GyGWZY=nV0>WMXk@o-GIH7& zZQM3a8@sKtZCP7_iQ6{IG}~0!mSjpW5ll(Yb4|&nG3^ACMf=$HxhAXjG40mvR?y?x zQSE!6_qOkcJ^+0X+~0n<{ZM;t$H8`GM_tF^c6CQ>ho(aft?g*&sP8z|-q10(Q`0f8 z^N;pp?MK`HXde&9A8EIRp4&<6OzlkR)OMtHGVO@4RHGft#jR)%+b(PswTfGXt?xTN zbc7GQ?}!*kHI0XPs!7zkr)5{m?v_0*sU|@i(PRVX#I&Q^(@dCloAwk~TzH--%|tXw z+tN&XTBL2VHenmDO#sd@rI_ZM=9!ST`KCFhnzm%qP9p;Iinf}zYH+J@S=$EVR^t|9 zRof0@bz4;%(#D7T?l$t<{b>+}x~|sbqCBvs?5L>Y!zxws3X-=)%l$lbnYYhoi)mW&PgK+RPG~_Mk3X2BiX72Dx!+F`i{!nU-&#_wX#NO zcDZVW>NEcf|0{pGWVs4o_n9AGhp(G1nIV}eStN*(pR2inkDF>FmYWTb1?20hulAeL3gG+~&cJ&P|UD*G*X`SBOH)Y*@H)Js=sVajpMU@KABt>;cbytO}3$HVKwC<_uvFeHHsmgZbXdQpG?Fe=RGs0Vau#vy| zK;yy2KN`^^Yt@*M$EvmJ({<>PO7)77rgBc&21~PUxFH;LN zLd_XuYO7GQxly3`(DbqCQ`3j0tmU7YCau`qxTSGxW7cw!F?;#(`Ynyw%jpu4F{kc$ zeTeKtJzc_(FeM*(Au^`qoq{2GulUIO#QV&9r{F8M)^4f&#M@eH800Gp2Da2LR7sVF z!T!Ea10M$#sy+>jozM^a;Cvj2==L89?~drUo-lTT)dcGauZOKBycvEyd{tAwTC;j@ zWBuwqje8sSHSTE)7-}7C862-_9o*9xsoXcTf9SxF+2}g|p()BpWr$LujIPU5O;I)r z^HdV$cb-)Flh-V45q{%+=l$UQooB~2+>+uO;u_)`W;EQC-jd#y_SUacm^)e#qqr<9t2cW^c2#D*B3dzLdDqG- zGSmv|6_46bE4o(twOOs$qOj5scrWfx;h>-JZ$LJrnV8=9yKW0 z4;vmeY~T~yvO1J(6}yhTfxnTzi7)6QBhSb;QaDGISC-#f!86u$-CLnn*RhW%RqC3qBg&)79b%*PX6Bm2aNw4Xy-pv`O0eL4^@v;-ZCGVxs`I2T&7mak$RA^O$dYr0Wy?vGGH*XG6Y6gcC)F=%UZ(MEAk=%*dp7VhmuZ#@DmA|emJ3!0SepG(a}QVV)3Y>e z4M+29HCwY!U#h8>nY%;wxW80WrXgu|ca~`$_tP|GYI6@%bQnR*^MTs?Lr|Rh6n*RjHadv|61uKxypkpmT=R z<{nnhsensJD&|zsISdYy<5TfhEt3<;XK=ESE1kDw*+?XRDt{V3L~=`ZTNWY-m4r!_ zNv86{B+oT}X>QA4D~P;G$)r5DJomhnB|RnXd5>g|WtEagvcVNYD`M1-W!ZHxYTt@! ze4h&63cre%%B;HVx}k>Q2EU4-hOD|}s?+Yn4YQk0yPt7C>+Y;cY?|HVtf^4BXt=5h z)iM>eHnHh;H&=DJt3Q!iORGK1JH$KVewf#(rqyn!JH#`nH`Q&dBUEgv8?G~`jp|Ny z7dTwEy6&uMT5Fd&vh_>r>bkG3(^|ujuh5$%*L9&t7=lCoRS=qRNGMVy+alQ{*(}*2 zNgXbdy%M=6S*e!bQS@+6#n*wF_$hQ@SYk4E?8U9CT7T zLpOk0rIYfL@}tsDGeM(O`V4(i`VQ?GifQ#7TBV9<{ik7-YCsjC@EHnM=?RUxpOE`_EuwVA(B44aCm~oY)3=d@Fqz|!%Sp4B1A;s3}hx!CL_s2$Ti&z zWJG^WcT#m7HtsyC8qu%TlVnQ6A=OdUK~=5c50$wOtB$DtRGl34jOwgvW8E1QwUOLN zX*7FSHK*z2Lbxa#e6{fJg$Gox79La`Q2n9WtJ2Hb->=fh>Sg9Gu3u8Gk*(Jskk(}Gmzw2e@-z2$7uO%?-rmg1eBbn6)4Qhk zP1~E_>VH#qDZ7=wDJ@pK)myIUQXVxNGn`#<)NpQv#R|{fb1PUzw(*!Dci6KxZ^#X;rBmE7xf+_12~;Q_W3LcdjI> zDQc>^v}bZ}=gQjD$-S}i(w-SjB|X!dW;D%gy0pSsW$sgT|F)g1J5_hO?qpqyW{Y~0 zdb4_q`c2#0wtw5+v~5<`wO?BCw(ZP{O|==z>)OYz$XIT*V(f~o+A}Lm%B@PVaT6eC%sO21x^c#KIIi;6&AhTCCDn+D#YqxAU`0)3O11p zIO&eZCE!lFKMeeCb1(2t;N8G`f!}Pt+x)P(6BrX58~n{CCOB)E!9OOra<0K&HHB?%9y5y-#g2xqVe*(&%y4!jbQIf*b4EKOh>c^1vD+9X=r;IoRr8Tt=6n{1$z@hB^$gai28NNb6BfN_XLK<3(%YeT z(Rb7L(D%~!(I3)wflp|A=?9@7(H_&Df}3NX&|YM2j`gD5hlzyd4HGZWhqfv96l!zq zJ(xeB-J@-X^LWtiKyRaOr|+O|qqo9i-KK4Uz76xcw9WJ_^sV$sw40;d#LzKX7_HzW znj6iX*217O*-R#r1r}4?Xp?CkG*7UYx`euvT0-@NN8C(VLM?+X1-Da5sU+%V$`;C2 z%67^Q@UP4r6d&4OnJ+SfYyxZoZGvo0qE4aA^3Z%VjT&gfN9*HGp$u^}>V68HN~7+j z7~*zQ_EYvzc2jmiSD`&e+nut9LY%jE)UMXJbTWs`CQqU)BfC*1Q9LOg6c%|Ixq{3hA1!B- zx#Sb&739O^Ct&A@!?2sfk@AD(M?o&Rid;#yiK-%dP>y9*kkB&5P&9Cwl*I`|S49?T6cZZ{y6DNw1R3es)t&o##E@JH@+h>KHHe)K75C7dO|* zW4yk&&GXKP_~NFRoDnhX2lii^`CMzb_f;Yii;8oO35BJG8JhEfU zt#5eT^mylz6Kn3j$C9mIjs1J<|HcX<-@A~l-?_YZ`QRdq6h(?7O}N*dA6)+NeC_$d z#e^%2EQ+-DDulVUmyOqb&%2)YJnws2dF`1}6lvvk&r>w{xyzm@d#5~i`OD>n3yHQQ zW$%=>n7>?1F|MggQbdz~Sqmqd9b;o*6CJ%I#cWJ;Z1j1?l9br!qLh3v4=hMooKiU2 z*i?tq390tr;uQPTiK&ioo{2CylX@}rQtGMPiK*vPFO2quR9xI;xYg{bTvJSFTv!|~ zE;O!(xQe)v*hB0ko=@!q`-$UyR}uf6H{RD2(@&(Q(b7n1RFIYSXu2up;q*t-`|UBl z<9++>S!v^a*=fD@efItK4PJfrTCcDmT#(iamyQc!r@aFIPQRD_D#`5q^s#Q|Gw-Lf z;cOw``OF)h4yB~D9%3hv<9a`RFpiWK3UXYzt`)8WaW^~%;|AjBX`RG@xQVXw!9HRP zd!BD-dJNmqb)u`2>pWkVXeU=kSIP97o*2&?o;N+``Ofz(@aiDW_w6Kh5c`O~5oh}* zjZPlsjfAWYN%9>D@$gIX{pkDNx0^T;;)m&mW8V9IfQcXGOzPRxMN2;T_Jq6${NVdC z@I_$b%#XeogI0$0gyeZO&g`0<=auhO;B_(RQqYB<$IN`Mo1SA+F9m(bdYAP+>qFMX zp!Zn;n6at;7^_r2j6Ws-gNEKw&_O(xYVLDz{))_euhPudA&oQ5z6rVMxiVvEW@+Z) z%%z!2GO<}pVJoQO%-)P8nZ=nUFvn&&W;tZpXO(0+WRYP~o>`XZnB|dBmPvxP&w7*T zk>H;2Cd4c$bNvFZ>NlW!!g$Z}OpNDvPg_rp7uVG+AzX|T;zT$x?sX<1JU8ogrd6`7 z=j+TjnTg(GldX~yy{~2c6PM`yzqo(mUdLVW`X{bE`-&IAgEZ-i*MbEpaY-Hok2xMw zxC<7{@z@i*V8PghdxFo7Gq;zQBK3pkN6$GPA3VLhyuHGMB7&v_G4K&VOngjGY|!+e zn4oYZ0y!FVEGX4uzDJ5jsz+EviU%$N6`JBPF7$sedFK87Z?E6JQI}OGWKz-Z z{XY0fV9-qqEZ%q|wne8PJK;L|UTRgBgEhAjz~uK{7Rwm%-2YnaxP& zXVB9b>CE)0naf~;BrnTY>P1h#m3cq2*lUT`Qm-kQOT6Y{A~T&aOTC;h$(XqqCyX=3 z1+%~>8MD6TG0Y!jKF(a|^E`8b&qAL?KHs9hM=$aj$Xe(#m^F|!oMmo$HZz-=%>ZLE zV>1`|tj-#Oc^^2KMa>?{qGgw7)3a%CjMoCc1+Y!xs8<%;Sa1zigE!l?aK*yk7A_xk z=_1mi(nV#X+UGdsIOa?o^=QtYImcmjdb7IRwp>H5an$U*oVVPa8uyzo@vpRl(7slsE>C!p0u+M@cR2C%M3U8E^GR;UE)ie?rk z6xSEwi)R7v9zPqRN4;02Gpf(&^cuVWrorPWw~XG%5uQ$vIS+Zn17ig$%T|% zHi0ye97GO=zC^wTeV%-od=dIG`3m_eOfHg_QEDhx$kh~tQbnnT=27^g z?Md~a@+jU^f2tSN8`_uZ2Q8rZQG-AsMMSv{Tj`1@x5z?@6#54FCK(6kG#d`jVG2y{ zkZ+N1gHy$Xy_=o^*;G5NmJffewK6&zS4$rE%Y?9wtOnt2_~0F zP9$e|WiF5|LSKNlqFc(F%9}w~m|P{fk|vSdNO@(>qvpeF+gX}lR#djQY!b)L?1|2ybG;s~t>zN_|0n0zQMu zBk(!(FPJ=pehlB2``{q$5p{@m5BdRozwUtjwENUmw0_z!ZHV@SI!qg(4boPF |v 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%0Dmrw5+G( zcIEtvJC&c8-K@M-dAssv<&mnxRew|+8nw5&ulkE~|EOP`zd7&B`0BhXV`s)8`@;`}9}K@Q`;Z>5y)SzpYm&{>#%bfVGquB7 ziC82SizVWAS)6vTx?R>G>y!;uKLA%%4^$6Uuc{V{k*=ZY;p)}Zd!>IWk*?&5X_D2| z$rW=e=2c9UOp`=Orb;@Bn`Co@23eG(y||u2Svarah2*8g z+^`i1Qr4(P7B!bOPHrewRoB(j8ITu}n!2<$X-PnDT3dBpiK-3xA}&#ts=kQ7isMBy zMRB5dkr9!Vv>`?$PDJBKOJpSvqA46IhsL=VP30_A-HW~-{UBPIbU#{^gb5oTcE|6Q z-)+A;ej`!0{nkXm1vX)vFjm<5<_*o)!)}DV^?mL8#@B3)C|C5_*CEg`FccSt!{H_} z!f;NEuZ(XDC&ov{_fg#$pBNJv?hFr@{{%lXzQE)<^C#m5^9REpCVrqV!<*p){$N-z z$1ra(Ett2N*O_;~Tg>~+d(3^TJIwv8gRJ|^KUn)%hgg3=A7ve3t!E!%ZD1c}Jz|=B z3wtwr6Z>SQEwlPW{6+a6m+Mk;12dl)~vWKI1XuD;QGJ~f%56=0~OQH$I;`>UWhB2xhrXR zQqj!Qam6#ut`EEvw=OU-?o!;Yq{O&wv$oDEp1Ez-thmIu5I1T(E&ftmA&nMaL<@2Y zb_;RaI?E6>uHxOS!s>Aq?Hof?7iSZ@lheg%=WJnjaEzQz4qSxK?c}JrM$Sfd8|QcS zM)n4_j$`7O`v7Y#dpGLo>dmVc%%-6B?oYm~TtPyrI$H38ZnmKFOEu2C28ukc# zkiCmF#NNu<#oEc*!MesYyO*_xwVQR5xrcRyd6RjAd4>6%ag}+Ad5vlI3*!Uh9pgQC zj(M4B_B=D+G1oEAG2gL_MPlVUR;E{_=R3~FrQlL=^Ks83Br(1b&m*2i_(phz_(k|f z1Vs2nOb+o1X$>StJ&&M7eXeMnLWv?rRRlG0xj_{{%Yw918mBZ(2`Pukl$6BO#HJ}Z z;T1u-;o2#i0&>H1!dn8LMQjY%6tFpRn^gR0M)KjTN?x#~rqKe#ml1idVqspR6q9*a&czJdVADfT`u?(Muv2-7X zPrEzar#09w)WWMZSQl*Jbq3cxW$U=EsohiPK3!ACdTkxIZQS;87G9QKW4#8!?c>_~ zExk3z2W&n1LX= z+hEXZuQy&27n<7}uW3_gZge+>o5)4%B5@J9(A~!SHRD=vt+-~KZ(w{{Gv z-1Eq_xIvsxpl_gGpikfcbV+b&uwUSl$kN~{PfOPU+_T6hkxwI^MOwO!b+vMB^n4nr zn%d$y*0tFawuAI+_B@O`f;);kj2nqr6XTgM5;HmBA^j13P0al8lA>Wj60g8`8 zPy$qYumNY*GUD{~3DYej?5CfczCOTy`nrJi0UH7?_*q5_dSCFn=y%DlWlH$;L2th8 zMZe}LEmI8Rny1)C8^*;(@@)saV<<1U4*tyx!dDQt7imYQuf+d=&}4R`Te{kUZ%l_l@1G~Dae z`E!?*T(ACAwXEc3_4}$1RUfPDs?x`qols?8JS;eH(Oz$*(H+Ik&6V z)VR;_nBzIewQ5q8Th-lak2zavW>z|n_Py%+)iW#OD&s4ERNaRDQT6lx9Nl+Z()l02 zaWzM3W_8z48)lkink)Af0YzmaTX6v@8@C2HOD(r-Ej8PF?>(-)yXxxNdw0#>UG;l^ z`R94B$D1#xKpuSk^7+EG?kgTZZ&f}}Y*Bi^#75yEp9F1H3}$-U(><}p^ajb*etG-EQ8Ys4TzUnx>?dBDUdcx3Z+{_dYEhxZ53@3 z^^13k%;FuQot7RF4~iQlL*gdMa`7$^(k+t3&?Dj%;zg1X@nT7%gfA6J7fF^#+9XBN zCGZE*R>^8H(h{i{xm1W3~&XCQ8mPk`&K5{?#TzQHtO@?%uY&LX>6fG;3 zmcY+aAQgZ~GJ!N%mL$W-&@wMMMmAIKCHIxjmXA^R%AFN1im~wcj!}$Pj8nKO{N&>l zFJbaR@k;R;e5rV=c%wLs9uK}!>{A|69#9?x4=ay=tK!}&5Ld^oi93v59d`u1D(LP-YecIeg|E_-xL!R0dmC2ib;xzF!=}u$&uDaxhW zZi@Nx5P7g%7e$jH>Z1%%p)f&Y$QHolbLawjs61RACjS)5mLYx){SxZM{~Y>4>BXPL z_vU{Jjgm*oJrq&$SJ4sjY+0oIMfA()SJC~%m(jztexfgb4!@r`KwL(QkPi@J$lj3sA(NoTLH`bYB;;^NdFYXliqP`Vs?h4tLm`zG-C=$-q$+e_s9T78 z$YkgfAtytAgX>NPCBeUklmt(N76(g$MZqP(e*}qw&jv|?WzbUaLXb3A89XIK5j+_l zR)wXfg-nIpnHF*^m8Jsa8wGaKUzlM=KDU4Whi?S+|z@y6t$JuT*;^I=|y=A$>HKDoi-UvuxPK6$oLPGrq6Do>^%0jJ5 zrlFXq70G015{itXpy((DOz0>ZSfAE9#U^DGxIJZe${?ItgMu1N9!efgwg*=xkAn47 zk#Wd6EX zI0X(2nZgYznljtZ+t0@jF@EXZCBiAm?F*NVQN=GsbWx2}jZ-DJS1c`CTE4Vm={VJR z)dbaKm?O%%5xNPRswfMo3!AE%t5j9BRSQ9T)xs(b^!t$yBcDfJgX*eLGEJ4b>h;K* z5gXYknV&3WlA5q59z%XOY2kmmel_> z(pJBuerY{_WJ$eX9r*N~yf!;@D`o>-K)2ys%; z4WDcZb4W3QUs1l6oi$l9&ZO6nb(mB`cYp%t*E=+?~%zw$I-N_E2`_ z@5(RF*bR=&-Nw?aoi{|8;1C&`Q8Me?F}WjSGBWlkh77P>sABBwH^DyKSUPj)%DKf5Yt zA@tttecAi74`d(AwuL^J?ErlQ+AiB3dUUp9HlAx|k-#N#)44V1t{XwVYZ(t)y3%v9{L-3jivu1{~&)Oe<%NsoC^LRqsd<^okqq%W5`%? zJ)F`2M^?kHW~3WPjU+WmL#iVkBx<1d5f@te5b-c^A8|kN0MQXVOtdHNwzLz`8QOt3 znn)x#KxYtaEKMSi3D!g#;wWM#oq-IMulUhklq%?9S8BUZAolefMbOxD7PAC6IwxZz41n8gSUzYww9!2>{-bC3( zv8LEiMp3pvsR-ZQo_ zcQJP`cY+GmHm01VWR=3d9R&-PX=9bKb~4Lh;>(`L_GeeH=CR9I)vPMkT(%!f=CYr# zU$6t%^P!)ypIiDl`!#ewXOOduvmAWMeg%`4?B$#l9DnF{>>_B!kD~SDu zJ}MWk9%LQ@zcc>F_?J<`(y-Jl73&aF z%{s!=ujmjH7Tw{SU@Z*#18__TGva0&NBJ1uzL=gfYSy)$|2m z2&0l7%m{^fFe8u=WbrF(^M&!1@eLNR3xG)}y^LN?_h$q!<}>^mpJ4tE_?a;m9)-^g zIo%KDa~Xb&c?=2N7nIW#bS3>@mIAJ|FG~t7p-bs9`tB?dxG!se)`6_uS$nefX4!!U zvTWeFfwX;=1N5jY+bj%i6f_E+OGsmBsWcQVg@&dzQB$DnsY#Y@rY@q^QyZv_)V-7j z=v@?zrT0ie3DdHc*)5MA3IpPHPw~6#5;$-OGh`$p# zgx{c8`xcG(0sN!P$I#30 zk244GW_&+Pmg5J(96~=no4_OF!tLY`3JCdxJi;J8AC~LRB}^u|5#8bIo(InnFAy(+ zU8IY|PEt3i2flwgxrdZRW{{ciGdfY2WJiiKWenU82f+Q5gOo!So2jkT1C*nbBb3F| z7U;!PEG?bZMm6{M3nWHy;a){+pp#FX;*qQAg5~E)lihdEyn~W#T2`G>cb> z*N7f4xkj7FcemXm?-jP)c0G10Y)5QY z+P))<*uE#Mu=S$8C(NXJQD;$C*m_ej&`Hc>rYtOpi6NvA&;$%Y7KSFwJ~><&_K7+<{9&p*>{05&)C9Pl?P*)m9;I$i z`$YYR`jHx9v6K=47rCehDl}gD< zfTmRYZ&`At zgt>|RhINCyi7jVVVRkSMV{VZDBv)dpFx8mDm?K~%W=765!Ni;+m`OR)b7tgt=1k1- z&G5{r3-iqw#MOm;z!j&|h22kkke08!pH`r(3#$+NX#d{+gZ)SQf51=n-|X+vKH3XY z?$JKke+l^-@+~BTo=N`}@+S0c=(|vj_sR&wI`4Y#1#Mw%_1>)u+7@)oSURJ92I6t= z6W*gR$GvSa2ZQ%5*uUUl@S)(t!33W}!AC*o>3_Q&3qB5g&Et6Ru284x&eLyrT=Tf@ zal^xDI^J=u!v=@z9+=Q@N4(=E=#37W9KszV99KJ_L5yRD<3Z>zq$TS%5n4w^qrL3DSxHhNqHvt zE9JSMF}x|fIb578$whop`m|J>Yp--r(!$3^xJJ;zv%=}&KPW#b^ze$v%E+q7d{hCd zDspSowy5n?1)W%ep)OCwQkSJJ zPaRBcgcDX_sR<>i)Yjsb;<1?4;zr5`LKCH>xS3K`a+TanX`+;t+`=GzjeMO9O`a=q zC*OjeBf6Y|vLxNQ z%^*z>cN2Svy~OciEM|guyjVy4DSk}Q!Q?Rkm-d8^mWE3UO-oDL9{X?Fw%F~lJ7TxR z1`(bR<`AA*oJ;T{{187SjFV=!a8k!f*{R2|h%`}_h@HwwU50hR9><=*?$qwmF2nX? zm!zHm2e3%zl2Q|Rq+HT6ERU4Yk=aq!p3y<<;E@)#SG1S4mxDt~7q-_z*MR$C_QxEE zQ8P3Q#JdH57X-x4j}441Nfo6A#)@Mlu~KkR`k%P#xEnacS(#p$r!r?{o-H_)`A6pI z%WoLO0=?@tN^Wc=)A6uq6@*cEt4fjQGs>3Q|VA(Nsaw znzj?IiQ9;X8L;SN1xZdSCs`Bs688{y!7KSa#Nu>0NkM``3DQOByNFdJ6{(iA5UeCs zk*Y~Gq%yD+EQd)PIf-0KiYCXCW65z~6giq4LoQB_1f$3=$!}r)hWvs28hlHBM}BYV ze##)_9eFur1!Wm!IrI=^*wR9(h&n_mp-QR6)DmbhRbuJ6v;dlz>Q4)z&7=84&!+`i z`Z?`2^efss+Dq^??G5d%r3bQxvX*BJf^TSpStD7)Su4Q)tbwd$S1G+H9IHO+cLumkOvtY7w=7ItwOdI7}YtLMoqX zru0(=C^||mw2q>u7$^Z`Jxl_~^T~l^9yOO5NDhE|;}x_gO`>3fGihupyhx>HQ*%Hb zm6OG#{uFSs?n!?NehI9EJZjYhZ<-fv7R{ShIiYGo^#m{4Bicjg2Nn%k`YdhMBigen zZI;f`s^M5cjNou$tl&`M;lv|}+AJKMNQc8D>FJ;Y!=3?efM8;Tw?h;{H-ru#ThQoME4ZiHf7Pw3^e%QE?VkBtU%}H@N;-M zK0I$8EJOkA#hYd6S-d$sFWxiWQ{HTzFZ5&H6H7ngy@VdjU7q`#_X2t#cbTP^<*vvb z$mQm7@>qFna444z`*VhJhhhGTHw^o2Uh!V@-tgwawchajq2ELM@#gUaIliDjFMv0n zSDfQ#u_Q;76T}OK7UT$XigH%NVi`p_>)?Z2BIq^QYqQ^TSAy%Z*Jp3Y{={7azUO}6 ze&l}Qeg-4q9zcxZMsxq+#zDt|(cC6ZxW#79B2Emql@rZv;j}`ZXE#{9z`n>{%(=o| z#JSAA0__Tq1>!jNc=iOCTw^m>W1tx+Cj82ge=yHXD}Sw6q6%Dm$Mw1?00l z*fXFDScNP;OTZGcRx%5~HB14k1YFBp2OnrEhJMUg1-+8Fin*Hk81~gXWfZZdv%T2U z*wf(_JlQiXeT#jUeUp6)zSd1x2DF>g$>{?BV&8$eCwQOz7rTqo$N3xfCf#TEaC$A> z%h7YR939xhL36QOEeFHJaZy|hbSgK^(p{WnZVDI8O@{e@T&wI9?sx7F?!VAKxIekS zV3G=s%C^q7$wu4-`^SEAw`cFp-U*GUggt57vbSgN$o`kR1>BY`%PGxKVV# z+zl}K&ix-Zp8E~_2mH$Y!c7F@xow;TZVYq+bQ1g&OF4<)%Gg!0t7BKjzKDGp8x|KH z7ZDd0=PwQrPnArQ1c(Qk{l&|g9U7N6BaUu#Z2Zf#ycuH*Xc%rry3w#+y;i+WjfgVd zuB|sT8V>6Z>JRA;>+22DmIgzT5oJWo?n*XFTBI%QHA`xi*0k41THs;m;&x?QoCPc0 zJsDwl)vm;k)T~5YTC;VE%KI8WwvE4C7#{3WnS=Aj_AGgp4~IM zXLO^DNAwsY+Bn?2+&q~(vm0>=*NyAcIE6dEA)uiZJ-?v^-HL8Qx1b}GUxGgce-8c< z?9})<*t^N6X?Bx$(}}o~ai`*pX{NMOackn&#;=QSPFx$mDDhbQ@%R(*)1r>Y&qM1Sz(E)uf=y^zg@+)k!mW3A z?UdeKwYzKg)VlQ&`LCKB(un--LWi``X^v^hf(zxZnjRE9EI|5U0ZQk7*OXZi#FP5J#zhIG5zo*u938%ijRkrAId9_Bi2-V!)TB)hhRBO=9Rhk)# z(6BaON^^2E%Hpr)@6D1$znZ0s;+nrf$2G?{mo`Zj?bPJ7tZs;JMqJadwxO_pO+$6v z4$V%@F3k>2Rb4f#KsadLrFk+^Rrhp+FfwQ+g0s4xjx0zBO9)T+iur~KPl!l}Oo&Qw z%^8=2$jD{p>P6#n45Fj{aS8DWNBxiaANNnh9rI7Z^(OQsXcKx9eu=Fl0}0C#KF9qN z_bKjkoL9=HxLGN^qEB(n;x?~OakC{F@u#>(u}0h@ssopJ6-nB>mUun#{6leC@yIhp zy2J}DO_DzJL`xrdKJEELy^>%@5ywKyNTQ=}4Ci`8P4_;JFM zgr^B>lAa`ZB&|$Zo#c@;m%BPi$#F}X!$ow5iCfY=?tQK{dvel!?gQ>*xU{739(Mu% z0oMbyfIk`KfpSNc6xJk*3Qrd3vJoetjuccU*Cf{_Pe#2=s7-#6@G{|5LUr=*sEMfY zs7V%GlL+(1Cb=e!OUj&wpGTONIWL#v=0C+BKM!%5zlVS3Ja_PVoV)*xxCbz~?SG%{ z?k|lI$4FwNF?GaxqBQ2F|1FsR1>W($>;KTw_xYKE z+93!VjJ0;Kaky)>jk}$D*Xl2;J64EatiD1vQdvVX=LA&n7>jnnx`uhg@2JMFI zhV9}FlO@A;lO&TRQzWF8td?Or@7AmqpH}Zyzt$;|hv1{uhpkUrpS7MgJ#9T>TG{rr zbyeHSw&MPh{*`U99dRA|Qun7GNR1%xPklv>Aj83piU@Kfc_RKd{O|aQ_~En_X(MTS zz`bcdNXN;DfADO1KS+aCKS`r_*c@BlDBhseuuMt8=Ad$tbIx;7Im@jEt%j^rx$4{@ ztK_`IydkSl>Ur)3ZYXsDHH_Mr?ExJG{goO-l~IDJQi_Z+iu{@S1ty=V9^9$irtAXF zRIWAI2KH2lDH6C;O!-3HLsMkgkP#o!=g@c2cGLFIcF_trVJsi|Z2BJBYu0Rf7%P+o z%kHu+axZbiSg%>0*a%iQ>mfaYH3RF3orw)+ZDhZN_Q;VHr%*StWyK!2skmu458T1Q zLxa({7+frFPV?O6SR4b##Ie9d;>F@TTt2PJIi7OLVC5|M%XMJE5L>5N!Bdg;IBWvTT z<7(pgkuN%5cJd=X3jPuBBe}^naoyxjau>Oq%uUWtp5wDJBxKYapWsm;qe4fSh5f?N zQF+RK;T)gYKE6J4e46WheF&px`wW#4MrV%3k0y-1L(M2Bj9%k9R5rSNjq6(1b*^h% zyNG84?@*I`?o!VLCi$EVJQH}Z{7`wKPm)ivPomHBp%+7mJ|Aj7*1Dy;r+cJ3libs1 zq)$&jnmQx>Nb1qlW2sZpuSOqBy%K#j`dakyRCL_6=qu5Ex!T;xVsxA~_e%62Zv`*X z6&;6(i*${3MLNng+SMn0cDiqRQ$uruZ~Ef&n=vivf5zO5xfOG>oJG17!z8gtY?3Zr zpKeIkrC0DP`ODImrw^ttOMj8xj#+|Pia{)9mN1uKTGJ0E?N2IZo-W>>bRg+q()IKk z>DuJp(!VLbE1smwGUOSG3|YpC!Zg8f;flhM!m5nwjGBz) z?COl@%*f2B%;?N%nbR|8fC`3^;Y=7qa3Nf?8AG_e=;oqZi*7HvW+Sp4BjwwQY{j;Z z>_oPY?H<{^u)A(^&E}%bbsN6zMH_+bY3NHfr)}n2pRw_^o^Ks!?Q1;;K7sN;I>)+7 zU#XuD&YLmc+JDBp8P)O{`7Xk4!XCmdLSkN0-Xh{Z7IQdN_(jCU#1`TYYz~LV`GH+b zTo-(}uoBPXobjl{SK;@ht!AtX-jlXAcpYO+Fc`d#w>G$ixR1A=cYyaV=O-4q?oaG5 z><-#b>`vMa+CK%K3L1$26bShZ#75#T>=}Sqj?`+kA6Z|?5@!+aiY`46*=`Ly|m$;NCAhMRtxg26CQWDGG0j3Q%+QD9tU z5E_e(YYipFm4;P@DfmhF$#}#feldSt;VJ{-Wc>QVHHNj&+6rC8`oe96YvCT)R=B-z zN8tv;8@&hqwf>DhP_V(U)v(2&G;TGN8aEr>>$e!*>EFYAvtfr}JIpJM6~=Po4p<;J z&QxiPhf|Q$7^|U^O-ZIiQ;jjn^*FuX1 zN(R>SKQXWEFCN&~kMzd=4baj7IH+)7OTT1begAXwhW_>aTlzQmKQcczKQnLYe`Vg> zzo~zF|F-_E{cp|N`k$I#nO~Zpnmyst7v@>eFU)VvZ_Lx7z09x8v!P#`KbYT}-X}-!#wcXAU&aHwT#crupVv6W>&5$~Bpdc_y9FY&02l#v2B`vDauYB3?E087~`d z7_J*G7_J(w7%m&egJZyPFd1vO2%V#MF*riI7+CroeYW1wz=4l+vGf~sY&~7i(X;id zbsKc+b#(n&9RvEEc8zXCw^p}C_fq>#`&K)md#zmwJzx7u`%L>9oC_TQJx}`_y136z zI~&?hTi93JSJXFKE9mou9`5D$<@E{r_kZL_t=pP zz5TsrSn8_3m)DomSJ0Q=$LY)M*XKCkXeYKuiAFVf-+c#7D0Q#YJn$}B; z^i%By3LRNbh0`q2^dx^51ut#g2$rEc*)RhY&V`abbvj^ zZX?6g1G|H0CYFh5YBP2kJB&0_C+u)*GoCRlF`h7-f!kSZTxvwx&T!IT1=<>p8csnk zHl8xH7>^ok495&j##UpC@rT~VU=7<)^wtKvo}wq~f9Q$&pL)E0P)E?GLlg97-Jotc z{7-B^mjV4q+pja|26X+pzqOCxp7|T@nR{A;?!MNj`%8NtTC0O69`p?D9q7ASo$jXg zE_9DhuS0sO_Ldf{*XuC)gY2nV5A8wrA@*UmyO!1Gp>>CAO^16syKlOd+n3$P?pw@e zft)@geBfmkAZetfByPMSw4`G+Si`m`Z1v~1xv%9(7x~~2%bC<5`OsBqUOX8W%V1cRYe5bj~ z)U~{88SErk-o@?abmw;Sx(B*0buR15=^pMvdbn!{x}ZD1d$8+j=TO&R*UGLDSomvY zSAO?}&Z}^Kle}(0H@u-it_zdb*o ze?tEPfArY&TK8`2{nfL*cW19n?=I-w;LhHCa4wSSzTLeweGB{c^{V=+`_z3ZXjsg+ zFJ7yLw}naCdU%-b(pi{UM!LzgKq%u3My+=*9XX{eE4s z-oqf#Pc`h)?bq$o?bTU>yL3ObyLJC*t#wwq@7kZ*AKL%4iQso_oc4d(80Z9TBy=ov zZC@;ORbQ00qOZ2ErmwWGs;{!IqHjlUCG^(bvcAo|J9@YGZs^_GyQOz??|(g8puhKQ z?ETvFAKZJNdcOC3>-pLf34ZDc>-pRh3LViC1ib*dpnE|NkC;o$BX-G`Ek*2>_sF~C zeR6DjFQ}E*P--a)DK(TGmFp|dR_&<#tLbc&ec8FHwV2yYe>JVeti!CwR8guah@R4! zQZH$ac&5}};3>sQ`~?AmXle{KmKsgPNMfm2$#?1hU_MLg4gMv_5%a{Ul5CJG&K4_0 ze+d*K#BjkKK^Pbza1lxxBA{zByTHX93U{B@h<~7Z;G@4p34PsqweQinO zmoh|AV{xOfvB=`=MK2aTTlCzbV$pflS=KogqVuY%mCF{NV-cI-bj*tf7o(e=FG9pL zVVj~_qgw|Td%!JVn>-q)HhwKjYr?^t--2rzT#RZ;g^uq_ZTeb-*m3oBKX>dH5*ss^N=)jzLKY=2gt)LyLnrAcbf zY8EefUjL?5yku)zR`Yt%lE;y^UMj)-|ke*w9ej04M5cT-TrnKXvOHZ|gsGfA0R$UENUAP}`8uSJUvN zdtrkLdSOFHS#ncC---Ipvi7o$GQ_D1zm|2an!0eV=6L;y`jhp?>(A8B)r?-TEdFHu z9F3P|u4W*9S^V<&IU2{Np8==g(w_kX@w>`?2K*QBBj9Ji&az!)t4se2SXH{Z^l8oE zX2fST>nmf+;$SW|$CV*{Mfa+1ZRI+62EM3!S%>t?x)rA1sFTRQQzw!qk<$~>5^xEK z`(*oN3mFH=Dn>E(Ah{1!j4i>6u%!tl*rTk{gtCP4gcULq8BQNZEF+4rTxA(CTUkmp zk+~Qn*+e#w*%;WF3vDL%lLyEgOg}jkvw^XZ5sF!WnHKL6KQ(?@yd&3%J1w4(z)YAH zpTWvx;aP7v?>KnY!9F5)4>FzE`tn^UP+iW_W3lugz~L?#mCu zh{hZ&3d8&+Iau@^T0BNFWzVGG=8N-1RL{Q`Fgf75 z58{*nw}4wd_rbpd0s`&@xCQzJ-V5-D-s$BQ=pMM!>y}Sq0E)E3>y-OWuaoYl-2ZTo zo7WY!(<^RXJgo8V9*`K26tG`neKM^KehFJzB$vr`GO1iCm&m2ia=F6N z6a`&DR!|gF1?<#-mdmpgp|fdQp+q z)Daw2YG3LA`YLTpeUx_4KFT@Dxynq1FX*N8RnAuWC<%($$^fNf>6p?0<$Snh=Tc1c zm{N2!CK?-!jtofpXBcs`x?Y~FkpH9U|-38#iX zo5xVVEx?@XneE9?ko-bt6a7ejWWW8f)Nrz2$ZTqOwr9xf+diSQZ~5Hz$@X*)xb5Q+ zz(_p8MPw!>1>BMBg?s6a7cGBI}g3 z%R0ao*%H}OXuiByE|eF6U9gD0SY9F*StP>aE|e1#Bt@ozXpt|+D{u;e0}3 z<{6_p%{7(E!^a`|r z{wTH*KZm)E*iLK@Z7u#OdIpmh;%DO1aNR#7rzK}3tEHzUYosI6wbC`x$KsPP8Ihip ztdyRRoRplB3`ti>SHk>>_^J4Rq9<_OucC*R{vrA)dLVu%ek6V%K4#hSm}FSGOu9mf zcvP}ndRTHya$NGa_$YWla#V6ea#(Uld;})<#P`LYM0db%qI+-)pG2QUUqs(T-$4gh ztMH5HtH{;TZYB0G86$EQO(}6JaW8QaO)GI0Il-l4MN>R==M0W-hIqa?1_y(G3ct~kCpwyU1w~24C}=^Eu&A(z50@?y z@}U!o`9<-?3B}29X;D#fF{U`B7!9Ttr-8Fe(u#dbQi^Am_>{~l@dkZM=71ALb4q>} z%_^B7`d#!t(FD=I@U#2}xykU4-XhoeiwSvG7Nj*Vt&-PHQ2QGRt(qy09| ztDDNP**tGe(b}TT^R~>J;}*c$GLK^;;*0qln|noK{{12w(4pu~(SxGTGb zgt3$niXBOPgbl?mM=!w66Wk>&fcah0FaDpTyQGPv-$=iMf0D+LZjx?8BVH!_;$I?M zCPZMvu;Ez5airyh1my!#1ojU80d#TvgX9QoaePU~mNY6`I zlg3D6rm@nrC}!H4w3#?&nlVNnW0%iL)5jQMke-*4MD-RMVtm9})CpD+^*F0D!AE?Y zb%J%0rA6sbdX!(vS32Un6#o>tQit+S@k zoHR}iBayQh*Md{SmW#kf+(NJdrvlSBDqIYw0#}Js;A&y6z(sMQIWe4C-21#3&fC1W zf*4LUt_J3B^J;MK@}l$J=e^5&o0m{f#ds}vBS3tgcR*-`N+>uWd@aDFeh|bLBorhT z+$+GOBK}IgU+^>eSMrZ!E0i_rN3sp-6Ld_THL51p234I~le;qQAP;d>+Um6EJUOl= zw+go^tsGZ|ljF*9GEjl5!kwTWqswr|!K3tLgk$sp!ZN~g0*APte2mT^a*4|c2UF>M z2LE8{q13~vVNHip!<+K?1^hyO8R&s8(g7cz<;(a78>RgEdQE*@eSN*UQPYTc zuJ?TJjRt)~eZ3AeG(6!ykaCHB*JGD8tIJY{tImdfDJ0*C>d!xdW!=0R*oyIshIjQD5I<+`=IXgPpxpX<(yEr(F zc5-xr(>ub%)~VB39cJrf=Vb46iEihV9L{s^baryFb8&WYa&dHVc0yV*cF<;-&2pPT z8%LMrHe+3Q?#pdT$12B8fR`xBvDIU%V3DHqikM1ymHcqpMqDEvaT9JcP8PEXcP?Wi z&avoR#tT2kB4o>KcuX&mvr{gUFOh=;!Gb7$c1kq=kIvJuZ{&~8^PT599|<1|g9T?h z|JQ-^|2m!t&vstwyx93f_*D2zc%k!0$HmU?9Y5equiran!KDv`vpSr>heCVdY=ND{ z9}}bb&xMY{X#Qx>N$Az_t=&oZwf$Q=t)xs?vLZ=ekAg zE~b?vBy|_}6jv6G5z1ydh{x>a$L9 z-xBJx8nPO*<_bxow}iREhAcl}6{jJqnzOfPBe9yZfw+e+f<{TY>1=c{L{FjmRhQl=q{=*!KJu{ORC`Ni>lkI>#D%& zpz7f2JJ5fruBvWYyk?nSQwbXHs9-7hMn(<4k)~zTz(-wbvTA~=Sv4&NX3b&)oKT|X zRrQPNm({PTPw442C-p6cC5DswPmN0q!;4So3!B>vpBg_merYUdE^PkN*f#vR@t>iB z=7!d=*0y1kX2Xg#gAJ`4RxHqmg9|ians7~wCKeo37pAeQi_yes;-T&9 zerW!K{-GIKWnVXWRk3c;s>!SFwoh86uDsj+y7hkD-*xxu?$-^ix>q-GRa7gX`FK$!6+r-s7+7!#4SMP#;UTsq?tCmzt!Jkz&)uXD#)z;v*D(h-1nEa}; zst(lustVGJtJ~E<`mRpv>h4a*c6n2G=g%s6Q(jkBrzRt>>mRJVNzwEV_7nCqR-K{A z_>7fQYcdME)EN)z9@gb|6?7GLsTMt`Q!g4c4Vl!7REvDO=XAfRF6cshTm7zjU(b-~ zI%{9g{+>DAcbe`tU1vS+zFsq@`&!NQns?P#S=U&|(^YF7jG5Yf*5Y z*P;VGoSOYT2YRY|PpJ;{+^9JP&vQ;qt?FjYjha7eZq{&WxNr;X8Yz60ry6d}Lk+uT z?BGMqe9f*l#6V4p`hjM#`k`i#da)YmKWjqkoa!6Zp>=I=zqP0v)Q##Ua0zs?x)u6Q z(-QR+Q=2-s|BA`k)T$l>%IdC|^7`{(BCV6v$?Nj^_pXrF^)~f2AsUxm9q6pTsh8JX z8MvuOx~qO~or|ffevD~%-JUw6HEKtbTCGvnsnzOw^+I*3akR-1E*))ZA5Jyas?&@$ z>ROoBsJB;EtCt$SHKrNM)KzMvtJLj=GPOFpT>YY2r7l;u8dT~wL#tsyYr7$|bpbrj zLtAM>-y6R+erx>RXg^3BT08i)arI#Pu>D|y#$nL3Z1teSV1yhe8x z=4C;eXibzRLK6vE*F|b<>Zr>@HCG2_)?PGS9SG5cYQigL)_T>3R|aWDjZeHG_){=G(KT^GqFdtc;8^H!iIWqjfHT3VFxi6I zfts1P5w!`m8MOu6kJ^aZ2R$NODcp~`D7++GLL33{q>I8#5_}w!v>>s%Xen_);u7Lg zV$tM@fx^iP5(SfmlZz&AiT#^^xHa}%^j*T=gnNX$gg*o;h4%?Fp?9JF5S$k5LhXjH z=$5z}wH>t;wGH$noPqgP)EU9LB2U=Ti%@{iDqdIQODM!6U5Mx71^5k_e7rB=8R05V zfN#ld&D|5*l6#ehO_|9>dT;E$SZvC_vAbjc7yB>t&e&a+p2zp+?~HxP_v61ozl45{ zo@?p1=y&Mn=ojdh==b0|^egleOK-z$!n{In$LzrD#B7J&gV_bW0kaW$1LiIID|!!R zhUBPlC+3*&sPHrT3rs$v=kZ_hj|huWj|zpUMXAN9J#+Wq5XHW|bB_qu2TOcKzG7dA z@5+0bE z%leN+{}g>H`dst{3@?c&i7W{(IjTISB#Ge=ATdciO*UP&Q$9`RE}bHEle$aeC6{0l zFL?+3R{Bo*9wrHrEHPC~6K9FDMe_{PW%CX53;_l>#8ku+T{Gr^*`n8mcZN5Hx1hg) z-4X!4H3S&~4Kb1+L$oAD5-WLc_y7}Di*aeJgw?`s;k0ZwelYAXZa3~Ra$2?+cN%vX zw;10VHXCbAJB8;t9XFAN)uYmCngYmIXaFJL~` z;AikPJcWK~@HRZRI2$I9pr66q2Q1V3z+@(Lg}zK*uCLI08-B~F(93n@`qUh`PN6Fq zJ0YhtAT_5WpfjK=U_#DsIln{aiGI(CGsYW#&)L&;!{Xkqd{M3_PlR|`c14yenk1bp zosd&Jw%xgCZ1LEVu}hqnI=4G7alW>sWGq&@)ETi>lcBBA)M^%LYBcHElCd~#x;8`m zLHbepkMx67rBo{i)GFn??g2HNOr>i;{X}I@KUO_aJyq$|Lu$moVRBdXw`!K^uIi** z&~;aJ5KbO>LVi-d)z(V2#a7t0*>;QVR@>f+Ew+6Xdi8RXyUEQoTZ8ySbzm@fXt@c| ztnOO*?@Hel@CUwO-xYIK%w4hE)HB>Q+&$bg>}Kj7_JheHgWn3Xyk9;bUnXA;?vd}6 z?}Ix@uh=KwFFznZ2;LmJIz;QcIW%gR+$SAI`~j1{d#+f#*K@yz+^6bY+H2Q#uLse- z&9=?CP1URJrS)Ok)V@8y3Mz`%%JAi|#A=R*IuX>;Q zyUMC|NQH>6`nP5hII4D1?UdT_wKlcc&^ERE)Sp$KR8wj{t0L7?YNOOPwR<#C>QAa; za61`odo-ilKB87vo->{|o>g8_URGXFUR8d}yQ0j= z{g&65o0H4S&CPAfZMJw#d0jcC%%yB>+2=NwvM+6IWlPGImL+y9DNE`gSHMC570)^z zbxt50lu`(S)~%uwvmSD(*5Uwpp$uQFNOJ5`Csz?$xE6`n^!cykZm@0P|N(5xh?aIq7@j$Ci!Oh7WpQ55uEcx zwgLKy?5S*V^)uOX@P#Z_u(_)9a)y-P_Du*h^D*LL$>c!R7(!}aIX{~gl zq)w`nY?N$}td~RwZ;Fk938wMI4byc z{hRs|u_t2}1fPigZ>6c|-`@l^3-@h!MQrf4GcP3YTVwd9sq zCGi$thxQgv6i*VTi#&~Hh-ji#_(u}iaDEopDr^(B3p<2aBDx5++5$U-YlLfshXifl zs9=q-TX?)HS9D)|Ps{`vBBm%$)G5q0+66~LL|ww|v46*Ii`^dE!P^#loO6_OjB}jR z!8;=OU+bvgh~TK;;=mEX5z&ZfRCGjiOmG+`hrkh-kMKtX&-f$!qk{kV2Vn9a{|Wyo z|1dba|1iu)`Oo+ZxTE}-x)J^>Z~=EA*Og}m^O(BWy12SO&~bGWxUqE}+&{d3;IR|9 zg`5a3gHy;U;{4&c^Gx_Zd8T|5zB9BN&y^Qn=f(@=#@9t~7uChX6&BS^;Ca9#j}ykt z;pB0c90q5wiOHGI4d;e&oq6G0Cth#UVADX;8i!|%2G=@tIyeoib#NZ|r}0_i)5a%_ z4{V<{j@dr2eP~O9_Gb(cz7OxM}!XM5_wKM z2c9G7!XtqM-bdb7-e=wy&;k6x`w8Cfp;C3&p}_p&U9D-iO--djz`$y9D?7y9K{^ z_u*=H`1ko^{9nA^@Dac9z8k##gIKm{62$l(0DoPO<U0hcnOeHO9WgKhHnQKL=jmzv7+ezvR8*J?A~;orcL%-ZSV^{L}n1 z{8Rj4fmWavXuyAYCt#u$R0wN?)j}5dFYiCz6P_jboHvg578hQV^-kRSoNN?0i@7giXJ5=DxT;wVv=C=`DA zU@!tE)xrqTLQ%A60f-bkX!P7#;Q~>dC`J?uV#To{oER&%7Zb(f#dt9eTp&V=Pr&3P zcvgHyd{lf2`Y0SdB5s$Q5_d?}O3sQqCGCY(j#F?yCiwi0=O-!P|B1RNeiJ% zr6p2VS&`IDHbGV@^^m#BJY^m-XPLXqO?Dgl4s<>&#F;D2m*zb_u);UYA{yU4`?n$-3p&Wj*q%vRks7vKw$^gLmP|z4BYK zK6$siU*0G0l@G}W8Nc|fj~tDs@4!RDN1wLG_ZMhm^!wNqkQ1EIuzjExusX3Em+W#cnXaD844XDt3i- z5hseAKnFO}MNAT>hzz|%<(8mNEJ;0J;h#Pvd9BW5>Z7I5m_V^Qbb}QRg?yu3Z}8rSsAQ3nsk;%Ge_e)G*>fq z$aiSQP@ra5V`xQ}&ycuF(bdwmd2rg056q_x&DQv7f;6)=n+N4xTL%3!Q-=IC8(;(Y zErZiF0UCeJbj_y085;fIrooMa8wUAZ8wVS^_+7lN#x94BrY>BELx+6_x68SM*TwCU zcS*X$U9KIHF2@en4pIlP!@0w$!?7d2#R=M}#lFL#CB9`*3!%lS#j(Yq5=;r9gi?}fl50XKm9n|5v-UHeQvWx>I|%_FgT$?rtrk zj$RkWHx-8R!}#I+Q2uNF8~zNzYnaRs_zI$Uv^o=^sW5^U$uo3gcxGKFzcGAR5y3Md zhV%arOo*n$2>7*oJU@=V2)vIsAwI_6$B*G3;2+{2;UD8woJV*x@gaU3(VV!Wa~v_3 zm(9!JI;lqYi`r;1A>ML(UyoJ9>@KMe}R97wsL$Nj;NBbXAriBpKC1T(@o!X)Bk==-=a z+ymTZ>|O8;~*D=$p7(xZAi5*p1jt*ka5^m=|Ey8M_2iiYdUr_K=tf zc7@Qcuu+_$J?uQ~T81fLVgBUBN`F#t1ZN5qZ0*8vZwl z_+YMd1>oXP!R!gB_Suv|K7H2KaS^Tj6 z3G-z0vlbUElFd`h$>!%RE)5F9ZZHFk=5D(povYL;qFF{eVOn`eL&^9vSNEUsE) zm>axhanmBr>Xt>i)g_C|Fu!JT9i&)gSfyK0tgc&7t*mS^tgLO4tx~P1R>@YEEt0Iv zZBnf)Y|L$JY^-feZ7gjpY&sA&Hfs_0-YY|A>W<)!p z4Pj+#Ym2nCvTa9L+t#COZ5vSLwl=obwlyd=ssUAlvazj2jiK472k0tP9m>%EpdX_j zp_@Ik&$aspJ=gl ztQ2zwdk))-IgdS!y?{LreHnWR`x|!w`v+%=zl=4*|Hh5Oo8e9ImUs)i7hxRUn=pxB ziJwgHB1|DnhMq?7frXl;5tb1XiOY!wrw|qs7ZH~b4NfG)6DJTR61)j9!~~+DP4FIs zA2<{IADk<}li&e!PeLp)nixlnCAt!R;oJz(M0dghqBFsr;6{ibE+iWIJI)1~M2I9h z5J&_ULMSnc7)ktu`;PmD`-(e-HTVnn6ZZpm7W)%-0(%yF2745H3VRZJ0xQCt#Bwnr zj1a@c%!hBwX4}oTn`hUE;bVB1qgX!X2zIvJLv)bcUGzir1N2>V9qJx>mfak?AUJ0Z zEYx`meIIR@+(*x}yM<<_c$EEp6~`| zN5B)X1RO{p5Mkm-Z~{Y#PJ|F5fiRaCLYzaKOPoi<5@v(*iNP=lBZh;sh_i`7;CMm+ z(T^BN3?QNifiUqS+7kSU(}^>Q{zNN+EdfbD5$p&U!gJhs5J7l`LxST8Xqdmmp$Y%s zp5dP2_F-S*UgMtQUV%?=FL5uR_h4T@@5VmG?ZocE?!{JPb{l13YB1C7D#4xDO3W_o zHtcTfF6>H7C8i29)vm&*kKHu8ZP*IT-`G`{3QRd>C1$c+Ipzv_GR!C0O}3k2cLjYF zeGR<|brn7@t56m2`6@$Qf=Lz1($>)BsFf&F+j5v&*jn0-vo*Cf1Aik+VQy}#Kp6TD z(!^GV_=6m0D?O$+n>O$()r~~q6=FiFx$bVchD_>aT?4^nq7X4VI zivPK4VOdwt&sDEuRPpNg*D-Hm-p0I+>FQC!f*@Tz>iF)S9_Tb>y3)|;N}4iNnE`tA zW+**--FnlN?x0t%XRk}|gkJaFr{J^R7chAV{R-UH_o{b$-?qNpeY^Tz^uFzV)4Q|p zZSStW*S(XBy{~UC^oQQ}y?gpT^zQA0ztE~%Th~$dP4``AU++-wSZ^anh#l)g;S+-v z+lo=3ofrcif<7$X2S@eXec};lJMak1N5Ny_bV3O~QJNiwApSU4k7Dw7B$W@`A6S)%94B;y*^W+v9Y-8iolHEM5Wpc~(mTAy_Exs)l3cnUhg_&Y{%Q(&YDo!iTfRzoGjc#n+ z(7L|$n!;eXtf4JT7A`wpSJ_b2aJ;Umt*U|3cC_wT-SN8ht$W0qTT2`Ei1&(N+5U#I z29z8vFKgJ;dQ-8v^@`%A;)de7!W`Vxx~267=Njia=LYAx;yUNH;ugF<2Dh|sZT+kD zu3~HJEyZ2M9ffxT!sx_?Ne$i&V~YEVzgx!?+gk4_P|)|_H?$8G*3h{XX_jCEZ12nEtHl@E9GgWxuMsYuUnnhkjKtj zop)M!TzN`)QpwIcr91|G0?s@F9#b~=DteRqntN0F#J$bE@?Kf*5v9Qvn4eU(^tSi5 z_O^kPzLs8UUvgh+AGNO)mJvEpP3cPm-TG7e-20WQ*m;Kb>i6vT=uhkO?0*XVtUnXZ zq4lNrWq?onU-iH29~yYoKRocFe-g9@II-WmKcjCVTp^?H4o|tNch%~=<#kDQ25VdE zTC@7HVV>1DsecNbIT^ggyUn}9yTz+*o!o;K-sX)L-dByOCilFCqi_0O^uGmP_rL3Z z-|qu$@VsJ5fAiY&ik7w4h36F)6rcKU2;cW#7v2!w6#k{TAso+MH*iC!A3(9u?D6bz z!)SJ7`_kHoc7w}mm)D}$8wTs#LG{4fe$BwpfObGLz!|nOLvxc3aPYzWKmkn1AR}9;$TvW~~dsXGI zg9@*5R5_^jg9lWHV15{S1WZ$psM6JkR7X`uRHJaUBPyEuC@kufrp{7ls=tEY)HHRj zItTif`ltE_^iTB~%`f#@%@4JS<_~m_2L1`8#su`&_Go5myEJ{8Ug+7{Ky84wPZOwB zYG!MLpx@*NL63u@3jLe>R{iVzH~DY#m6|h>0ZqSVLHmH_wB(HBtmJgvf_8&v>dw}| zq|RJp3P;T~dFnHDMe0KJMOBeHPkm06ub!g12%poFs&lHdpttIj>I}TLXTgiA3##*~ zN3|DJ6TzvfDXL|iQ&kUZAJsmth0l2BP#Ie?$LKn`#QwW}4sXaT+tth5C#2=j&O>b4F{BwMZ7S zq+x<&#HOU7HPMXy8yvA2wK-x_-Y{y@n)uP?6LcN&lT8H@w&6flAXkHN$QWcSIBFY< zWFza54d5Hw2IPqCA=|^YBeq)!e-TD(U)a8cZb?)mwkEbD>V$c66SgV4HPI5ZV1IAY z2@U>evSp8Bo5RFW^rPv2(3{!+V{c{uWi)Fwef1`oY+;+QH-PKGjbQ3(8q70RXRn53 z!k{x(XBpeF5!sjtKYXGaZ5k2K@9RI*f2=<@@S*{AEl(tm<4@;Ui^uU@+nprN5<|~`8_5n-rBxbyWy!BP zP<5s1VimWFSH%Zs)Lv!XtGQBjpoUwuzve*APUx$w;|=?3jx_A78Er7=+2GZ15GGy? zg^i;Pd5s4fn2mXjpV^}gyH_7<*tL51>hlt2<5kvqNy1R#&}G&YmZ2+aE=U?`uCS_V zDrzcgs%jc)rg2UwD!}QS{EXkL|E$i>D99+xxK6u4E6j+`O2{hA_+NTK1~Z3~l#s>D zq31Aim^qY2YGZ0+Ko7MsuxGUKNaNAQ(Z;LVYg$+ghqHoH!l`SkZ)@eWaoRaOLZz@B zZYd{m&vMRiPI1n1PJ*XFSFRg(K;+6D6iwz$;Z5bu7X}Nb@?vNV2PlBSI8UU z-YFa88oXO}uk21)3s=E4TQ_cPIW=0r# z6L&LL!jtl3JUOq~=ttov;a%Q6-hJLA!9Ct&flE87eX`)ajMN^gWekzp3x@KCLb?lv z=5&X22Y1i!e%KM*{a*G#_E9#!`-2S0x~TmiyE|mVLa>l58`hnnyF<(P%lS$C=iSTs zFS^5e!h2qHKkxq1^P}fm&v!5k{N3}j=NEWD`Mu|$(oFfQ$5gpjc}RH>{L-^eDd;_< z6!r>wrM;3~Zm+0U2<}(%dUq-JEB7hIy`xG=?*ZkgazuF;9&7N3@~HAp&!|xorK!?d zX`)Q*i0??~NbK09+zt0Xq)B!wgL=5_y!H$UxBW{`P|xfhUVBha9lxI6z^~)aY7b}+ z7K8}q3W5Z4zyta@f)V`zeYF0dexLr3(Fpy1eHcul^uhWFeK_<6So$Pbuh)g>=jucC zA$pxouhZzXx(&MZpdIu&9S(XtGzxmNZj&xjzgZWh->4%RJ4U}ye^?)*9|1!JNAwHy zf9V#&(Z6(Cbqn-xi?)6gJOUoqAJfO`x4|vkNA-!uPShtrpVFVy$Ln|M67(nZOO3r$ zzXbZM{)~RHevfX6{H*h%{3&=>UQ^~?18b<6eV^kid`^(oMo^_TR?`a`-D{Y8DM zu~YR_=xh3`dWwEjN7Y}^XBay}pALOpe?y<9KcY+5AJ!ew9n~Gy`RGP;2Xv$0MChry zDY{ho&4=B%2b$%dm0%?b5c^%?bPwLf@5Jwts`Jq_AV?W^uk`Ken~ z9jY~|R@IB)Hq|tByK1_+S=Fv;Q%!+04gGYu1zMq+s+Ou0suq=0_3yAuHBs%Oo~jn9 zdER!YQ9RMGPFeH1w96TjpVNOR(q*ADxu2ILe&K5yTeT?lG;N( zLA?*$4<1$@QXhmf52-1d!)mJLp!$euKA{E)_&2nXj`@4HEr5vZM(J&daZU1yn4ShYqVcAzu*=7s>y{jJ#}lf zUOG?RWZfkATujy-)a}(B0^N1qIxlE%-9G4c?F8K}-F|42&O>Kt58ZCvcHJJ3q*G{J zbyBTD+oE;Sx#?VC?xx$J`=4$n=mdX(;|%Sh`&(xZI_tLRwn1;vIl?>EUMJBy=IT2p_ZV-z`LEG<7kCiftIg*4Szw%(Z0}dwa+xKHLo=PXsvvc?pta6MhtSn%EkSEtziwD(p|jLk>H44tpp{^s z&R-v>pQR5l`j>v2K2`iTI9va>ekT~DpQ9ht1sENIE6mlab#wGc-4J{oQ|Z*8na5xH z|LM&<#(9`~%+M?3|I=>vXI`$Y(pG9KwD&XytF<8(gS~(QHsJ0QKrk>W%6RY796YdJFVs5DWefCU`Xt zx<-XlSF7-9A~XT4RT1E`U#+TF)v0P#SBC3Umxk+AZ0H8ClY2pMQP9b~&Q9W9V_#<% zu-|asatqksS^3c4SwC1~mG|rKR~E4ERo<^0t0W0sg>J&=o&`N_!k5BV!q?zC;fum& zh0hCL6fP@UUiPAJyvR<35seq&L=GY>h!?FBtrukqG6b-^m>^(?CI}qz719J&LSG?5 z7%N;YwFC1x@M~tUfTL|vH))!*O*U{8DYOy(BYY}s=2${o2rY$H-~-{mLTlkT=w?m} zN5L_JR&dOPCPwSk4QeytYyNV9nedVDp>Pb&e<)lX{zy2i7!ziRKQ@mEmkBnBmI{^$ zmJ2qBHi`_LC2k7eAfk)&#Y+V`kzQnnp^NpRi^5C7rtsC_jp0q`ic-X6F-3e@*adxBct&VOyp(o1&5W2LMoF*|_?5fSG09^IYz!|!vBpWp zBoCme^Bzbj^QiMu=Z%xtvQp=9u(m7|Yd*$}k~(ibCKwZfiNG{sQ|EmhAB>5Djs!W_ zUJsh3?ZEBC?ZR=eCxj=3JK)BElfvD& z6T)4%-Ozk&fH+Y6UGPmX!ZYYEo+&=e8{v)eW{ZQMx5&22MtNIgLEXF&hjGpw1lu`qcbvUad@@O{YJkar>PL*}vGg?wbsW6fs;vsMLRY77=EjYG$v zW6=i7gH{GD9$GTAGH6v$c~C`A3ro(b2$Hgzjg|+=SOS6f|?{0%Nm?HAEj(2&;z3oEpLkW${>ikU2GPYW`ICijpl2$DO z6IkLZNtLuJmL;i5U{$xV+G^TV!|LIhwzX}YZEMcQAPmM?ZkudOmb-?|Ik#x%*T1 zM>zVaduPw*?p;0GdUp5h>Zw)k?x|Dm?Ah0|7kaglt!z;4>tQRSdRHr>VNI$?r!0mu68_hI|udvSgD`s|Hu z-$#Ug)c3HD(6_jk*!Q5%$=FVPj?n-1{nPijj|4jOErVtH9iUzM5_*^QF6~{?D^)J- zP3RTD0)TP7i+dA$xk`~zs1zuV!jCqGdXB;>LtN!Z4-fiJ_u-!XJtIAbd%k!7f%S#< z_x$WW0G-(Vqx(zuPcRlb0qpIH>t4{ks5=hki@LwUEAtK9)AOx+Z_l2dgFOd&8kGm( zhOr|IwxOMnc zS3*x>&*C18GO-7%eBbk-=VOn5&sU=}duBm@>iOK0(m$6^?w`Y-%eQ7(vaDFvEUW^j zux1qu77i8-&Q%o-&QmD{VPT#@;c)AqXt;U}EKfC9y{3lCS~Ih`hC8d7#jWAia?dL- zC~LVaE?39XvAEu>2JQm3H)|oAU1=gPSP$paaqGDaTz2K^%En4BmN&~_dTniG9k-^k zL%^!6sjRJJRaUcDtTsWrphGaVs?OMTtWId3DuM&f0q;O?_?zD)=oI|T$2)A}pW*H1 zZ{vIDy9A#4=i1%;7ux6A!xB&Zn3f}bq2)+8(u zKVcoXo?vcfVPY&l`BlcmR8?i?pe-kej!)5J5xQ^fUd zX%3AJ>)pyGH#(#`!0o{fZ15D3?ZAajb*4GPH;(kIeu z(g)IeFvIyQsnq=gX@&b~(izfO(iHbIq^a(2NN`ry3xW6SCEOTGsUguftUhi4w zdBAhO=RVIecY`y%4tXB*ta3Lv+iQ+jse6@srF(_@XHum*3%Uln*1gU>(915g2Au5` zgP0ZZT8LkImawv3P=wUDi91T4fIs#5}t#vmz z-F1fRM^ddjCSniuP#7lSBWb#8T-ryH+Tjyvt7f`ua(Je*+M(Gw)0yKyb6y^v6rLPT z0W}W$!$KOjHi!aCU^sf#VRDrg9KDavhqWxenUw)S|dFZT3j$;jsN- zhr$f{haCv>4Lb-u4cZU-aHwC{!BGFOSl*@H6-oCI{n3;}6G=fCu6a#vh9Ryl5}DCw_1IK9~p+Bnf-sxe3AqeuBVgMB;+P zsKjWHlfX^jC2$hvCq^a)EI&=*B?KhSPYi|*TppY#N{CL31;ucMg^4lHhvUTw@&su@ zOk#YZG(iTP;y`wwIHWkB{A~S@eoS9mzXb@UZ=UZ0#6m<2BE?|@8HqTI96`n)B-RlK zV|$KzO01>UGHZT-)OytOtk*fO^IjoY=e+#wL$X4%eEg@no%8bXALnE4W8w3y+T7=R z_5N^kp9A4fe5*X4`c`^Yd9HQ;N~!YvM)^vanja36FyCoGZ}{&BKlnLCSxvR9!wPUd5rYg zfsEPE*Fh2eI^zZ$z0Qy^rOY`DIX#Fm2PStIw-~p93}@O<93#ono*IS&rOED?_$T*-6_)+fBR0kT7@C#7wwNktt@z=EdZ>GeRcBpn1HaKZtP0hk={*zA7L zWAEgF30vIvPTuUkZ|)}d&F)*=qXQQNE)2X>cDZa};IXjdVG9GJ;-cdg#6`uS7fq^* zirZgcy9l)iy~uVEVi6Kt6TddTGydn2wei1}Jb`{1e?CmQ^!k$XVU{5m!V(rLqc4Q@ zL@T4sBF=}A7vEgc6MbWeL5C%j#VL!)iz$n>v>Quww3NluVhygN>1hG6HzdX#ZD`W=>UuXcd3JksZ)j3;;YV1mnj0+Q@YGx#SI=$aHSsvS zMxKs)M)_H=ANNIY8^0fCM!b!`gTIU4gS!Vxu={cQaC>ljK?zohm0{)By|_cTMHnfz z1-cnrgo(!_U=lIS*fy-WT|8z9^kQ(Wb+2`w^;+vr>n`ht^vQ@W=)CADh)Iaah$)Dv z2p@2*wGU!COs0VwkUofw$VrGz$SueX$jzV&Y7>%#azweJNT>}+SCl)-1?2{E(5@&h zdNrDd=AvETHd_IjgXV*G$Mewl#*dBXqaTdFJO1JL2hfkkKOQecKLp3dPsB{dcwr_P zeK_75GXXOZ;|&ugHXlpJ<{6!cVPLbdOe_N?YjB;ob{rGifm7ht;5u-33HJ#12@ePl z!7;)i{C&bf{2}~){9gQRnC!*xgPs>QKP)(`DUuTz92OB42|bY!8RpFh3k!!13p>W} zW-QG*16&VmY6ww#aA29%)Vx;FKX9Yy2=k-Ob$t+`*GXo;am`6=Y$t%c5 zP5!p;_c&@oqLh&x=AJPrBcC=oV{+W&sL3(VVXouc1ef6Hf7>UxT!zVc6N1MvlhwXw zP0m4|HF5CR=(EV|oJo`EYEuUfdymzojiybe1P>zgVzWlmM6-A^qDQ1hyjg--qFD;K z%q-j^0w%DLBlHrp2#*CGWzZ|kqCBFZOUz24OU$A@5S|s#tIVuDZ9Ea4Z~_U!A@= zeRulmbkt+Vqza!(pYKj$_oE)iJh}podQ1#ZkhZ%V^QiD?B^kPv)J9T*Uz~0^es(fA zZ2!gMmg8;5JB}4Ter|Uh525_rUb-AY9Y&3yhU|y!M^M4j52MKLL-z452`(w_@h)Wd z*|H$n9NGN#AQ@9NzrCy}xP5MWNPBQQsxwH2?nHDFJJFp7+k#~CU~b(sul*U@y6G+Z zVB2f8yo0_M6s`){?e2&~w@kwOMtRv{}Qmozsr&wCc3&M0N_zL}p?$ zq1mrVzbEBR)04zzI+CU3?@2n6p0tjnBel;tH*d4~-FboGcjn!lcW)j&oDpv5 zLs5sL=;5PLN1~2KjY6M{I&N%K8M^Fb)T&}Z(UgQ$#ptp)i$xak7I7BWXbBlN(-v8r z_Pm)kBO)Q=vQLh^!5I<38Pg+XL>%=*dLHpKc*?VC!TGEso*n5Yp-+3B^h_zDq~1t# zOFQjJPIXIjO(UniN~WZe(x|DfX)lvsCBIHyOQoi!rgl+ZC8wsYrFK$ZC&QAnR7_$I zG$zp{t&=KC9GQI#X>fG*&S^c=#dCH}i%wWPN0zvK+Ky>ErzOrgZ*=jTC3Chl8=I!i4CA1qllil+*?A zW%vf=CQOvnLFxdtpL&xrKwW0F9PWxtu_A-ZtbSUXz@3L=D-)aF)_(-4`6Ea=|}g&{P=ABMpz$m__<$ScSU z#FDV3VTB=Sh^1j+32BIQLl(QdTK1V zfuf$8MOE)u=3EP|C3g}BY4j~?GUpBJE$bcY4a=flUbCv&qF%^}t1=S{IjgEGsw=Ba z#b$72b8$trh1gUaF0~LJLmfw*K)H~tyicI62U&Sfb2^5q@IB>n(q*F4DHjj73g0LG z*MllupZMpKDqX8w^GRk-kt7ed2+{&lI4Ob@Ns1yxL!WesCb_z~xRKlpR{OGiqeu}x zEZ<&_2%kuwaMA%(q))F$4yn&0oP_sh`EClp`}cXE{eOA0d^L0N{_W6h9__BJ9-zlP z)P2+#>YdYl)O)A%qzj}m)OpfQXM4AIPTQS#IQu#81S5R6J4gEZIr}@$gg$0%;_?UD z#AO6MiavtQMvbD6qmQDGfg@<5os%8Gj%a6Z=V0dueH86zN3wIaa{(RfvM~&dvmG6i zkIBW*p_!OGW2>+_EEA)}uE%Py@QY!r9=i@&kG&3eCSSu{$KAkbuvfs#xGT7;xMA!? zqbjT#djWS5cL|q;8HCQlWMgtL1Unj-fuUhCF$35^><~5s(+3V<&%v3!*gkAO_AKrk z?mYBq@RrMMmpd-ETxxwue&5}0yF4O2ALrsn@_RsfNP0wiKyvY;`?uNjgTLJ#lD@e8 zcI%nBKj@R&XSXkIpWOQW2K*TQO#cDD$EeS4U){dBG5t|9zqtiMBWK#qM9qBfW;?TJ z)_b=PZnND2U~cfFX`Thcf@zUw@fgLl_y@(X2=|Zh_i*i*`41`=HZL@^r>mE1x_5>* z%{$#&$~(t9%Uk04$~Vy7%Qwec>?!dq za}2a!;aKL_;UV!1vJbSMZ69P$4yFWCgO>y=!1ob~;13bx;Ev$-;MU+a@Cx)==r!PN z@K*4R;F};m0 zKAISfjkb@r3bzio3BQtT9sYjVmE@yw;U!1nj>a8}I}-P9$@?XPu`6QUFDZ>#5tA2F z8gn{0yo4DuIXo|>E&O!wl<-O6lf$Qkp9(%5d?t8Ocvjq*;8VfPaJ9_1thnab?6~Ie z=Ge@*`-{dFxh`rBA6rC>u#a$vAVzG2U3E4@I2k%|V+1?CKHe!JJfS|mA)Xz-FJXVe zfdqbHUE+a+eF?V{x)R3{>JsY{Ik0kCePT$)?SzPo$c&fK2JI4}GR6|@67D3}z?lXS z2}oF7%?=D(9u9jQhQSVoAD1^Q3tt|+JaTyy_t5zdh$lHj;x1XPu^hc3`!Ogg*rcnr>J@p~=F?Edk$S8sOfO;1u4`8B!J=E}2 z0+mQrr)pBQsduTvpgJ`Nc3~Sz9ZprHW~b$(Zj^3$aMCGSZ7EBSxPe}iQy6)D@2x5H#t@@|lovOBpNCaY4aQ&y&|f}<-_rjz~2 zl_^y)sY$5?eaU{ti61$D97wKBF*uJrmpqd^3nsJ4LEvkcya7Lu-;-aE-$K8D`Exku zKTt<`OV(5Vg?>WzB|irHDgTlCC=a0jAwM8@Qw%+gJVsVh;Pyz$0A&zVQkGN6R0?&F zLZ&8DQ=pTnE~)OR@a-q`gw#~3d+HtXeR$LzayzAy;zhm(-9~ArbWqwTanwX=EH#e0 zh8e7l)>x>b&<|v2&k7gXsI090Vs7a|wlq6bGMp9Z5AsPNho|F!4Lq@=E?>4Y6{9*Dz z@*&Wgya;|ku!cTD9wCo{aVd*n7jh)@ahRjXwqzuEaf&TDF=erFjwX*MC#0Z^HYXeQ zD_@+lG$kQr2{<3#^PkA?$REM=ln>+$6dh$FWdnsy-AG|j>C^&hJ~fZJg_2KQPuW7* zOxZ;FNZw5OOx{BIixLix`bz#x{sQi#?xMb-?4-^~o169~ts-@9+T3NksIMt=m+hw3 zq`sm^V_s8UQ7Td^Q@vt#Q!8QeH+38JIb}B(kRF&mJAHLpVEWwjp!7LlK>EA%Pw8*L z_nY{}RPuFIg%(rK`v zCAbkbxy+<($)M44XaIB;E!)`mOk!phjgaY>iOnQH+h;l$JB^0R9G{8L#KHV*=0%ua z$h?wy9=w=&Df2S)rOcMB_N?=nvMfbbb5@Jd#O!6+(kxk)JS!nPF?%ueA}}G_Hpea} zE_+dSd^R%2HU|Z510r*d=A6v2&aufs67R+xwW}fKJd|Uavm4qp$1LYh_Acl>IlFSob1QRK zPS0nILLa5m83l}d z2Ay$)&R}FSm<)r5;YLRy{V*IQ((UOE^h3}ibPW9fSdxo}35JfR6QE%uzufIPrSQ?W z=j_PYne!`q2Ryg$*?&WS&;F79Gy7Ne@9aO>^PmmFGLzZ$S@W~Qz=kY#R!DXzv`J1V z96glTkkyoRDD!aU2;73&2)#NhG&?doJUap$&1}r#WsPPY$vm2ggmaF<;uBn$aIzw@ z7i1sH9hQeAg(Qbu_W3t0Ipjgk!<?n8Ix_T(ya z??8{`+{x*NcF(y7?VjVA;{`|W<*d!^%I(fwn|l}Lw{tpjVZ)u=n>lSpZy6`^=%MsG zIUdlYoa;tibKG(!z{Cx%lb!9BlbP)SS4+>%&d$ot% zcWx*>oE`z)nHxcmf=MLUn;S`ANROs3F#3xAj{b)J)@Tc(ozco@GaAecXU=5?Geej% zMhip1kTK>%&tuMK&VhL|Y&Q3t-VF2S^jGxPaOIcabNE=#=r5q3(PfO6bSXp5Xl6(m zPv}o!@`Nsi4yOML&11jszQ%+uPL2hAgUT%JFQEqYWmK<0>EVqzxieALXV-z!r7-#9l zj8aA+qXaxdFJY83RxrwpIx|U3N2ZI>5{46#$aH2JEN0j9J1NP_LVGiW==c)3B^OSjmc>~~0W=~#izACRKUzt~#Uz6XP*O%9mSCL&re-*ekuPpyEb1fWQk-w;5aX~^sB3O~1Sg@?%GLyi(!n_P0_d3%K8V}FpDm0E+ zz`!%77A6+>6izCfR_Ie`Q8ca4vdE$cQDjr}1bkYwq+nX%jKZmf)4?SLOW|tPMbisy zimZ!JMYcuD3#J$P7y1_Zfyg4iLc=7fAi1DAf2mOxJm&XhbZHh8h*LdlNOb0s@V|1RBCy0f%r#jaB2ik=k%EBaULDBWASr?hXy z-qQXRyGt*Y7T%pP+_zOlyfxgl+yk8b9CpJ2&h098 z!<_mzRd1{AR^6_;1HM(=samdjQ}wuaWp!C~dG*TbMAhTo#j3ZecdErIVe30piZ)Rt zX_cylt)f!?ryhABm@X1!s`57Kbu{_Z2faOJ4*i14WJ4`=+aK@+YiH>J&ld!Rd| z4ZdM+YiecHQQE5OD&?l!>N-|kOPor6RJKU%su@3Q zFr6(`msP_rD%ezZDti+6las;rW>19v!THJg#reva$o>ZYhJMBQ&iMwf&us)D73$%RV_mliH7Twa(2T~m-$NGVJyB!kNf zeTsaGQVM4j%`BQ;Gy~eN$RFAdmXX62ql(eRyOAeIiN)MLk zOVy?8N)7HS(Uk5j*;lf=WKYSZ;@u?|i!Z?yP8Xjux)bKxOLl>$i|-emD&Aglws>2~ z|697-pe7DHj^jx#Si$h%L!Il@QKy}X?Nrn%T0J0AY^_&$P*K!FD{9BP2K9u^CL|%d zNjBMRNYG1mb0oV7yV)f8gjTRT_yC^rAOdPn=DhlJXM1OFdZVR!K2!wmpY(X~nJ>TH z$t1iCn@zuJK-H(}Rh=krF7H)cf*w}MRX>7HRR2{yP(6aaQ~pGCxBO=LBh@YN@8x&P z=OG!$y9kD6AUOIdYC>bqMYf~!kRij{NIEhXc^gsqhYWSJ!v9uqGn0-CAcM#zW&qjD z^Bx~aNN=n8civIE(PJkd0vJCO+5gjS;wG>Ym`9U4LO zXc-bgqKHRN>!V1bpVlY&YlLaKB>z<1G~FiT_uOtS$^V*WH}^ZP6#0ft@|Pl8kxj^J z8W*BMK8IEz6V-|8B=tn~9%3(X+Hl5@q`q(6L!7WR+Rhk`*&A)gZ6|C!>dWeWb&tAN zeMv1r`=B#4z3TZI2}-a<1q&$PYjOwEe`r5_1A(;Ce&%L97?3t-t3s5TqTn0Y~9 zVE{9SP!AnbM8oKu1P^_fo0E{9FgM{adIXlkXlK>=s-w`y&_*;pA?76A`Kku!L+DYo z1wDi+bS>!ls#GvV*N7(TQgjO4pA1EYLPN5y$e_@%2F?(Lj@e-F!(Mc=c|;d=)*I_qA)~H~>ZW=q zMAJ=W)M<=bW0g^3ylNZXUE!*9RT;NMD_z68U05x40DA|og?kGh#0v3P`?*`ed~+dw zEBM!7A$}wH4&Dgnn+wdx@ng`(@gjF4zSf;@9%9$JkKuKkj~hmYSRZ$t9bzZ2$8e=~ z0y~WSh&)2pR4cWQkQ}X2o2?y2vcNUf3R9{n&6K50HC;1jX$Q?~s#|jh&1t4d4ccgn zr8O7KZOv`VO*6Gy+HzYg7335AaGR!`pA&u7A2c~+B)}?UH5@IQ#ArITMj7hCHOF0xh{_8Te;m4@a13PWA>sK1-7G>rPk{Nw)R{t>W??Phz} z7tk;LFZ>sv@7unE>xb{#j*|`emt++Gw@t*Ocmw_gc{0A7Bu|kd{)27U_Q>{w?JgW` zCfmp+vKjU!vfTa$dkfhL%U=7wc<-}U+V|Sur4~^8?G?}&)cknQrxsBe)Ce_BjZ$Oa zLh3zO7DCG$i2Xfk2_K5o_7_28&gZ-2!;Y8|tV zThEeeSk98?$PV(cZOnSt_SkkB`nK&3{N38g)8rZGRxnZ_)hL zwU}Mc&g4qiS={SfF*^gC&CTMB9LC{bUSL(Ajm0<%_hH~8=nn&l!Q|kipaT3jpa`Y~ zP25L;-vmAmtOiY-8O|iQ)q(uL8P?3%psiq#|E|8CXL+8l=ko=gFA##f$cK1=|GqxN z7YQQ2R>&9D32TL?;4|T|@Ei<;o(sXyQ(;7S0UZhnAwD!B2%+_`j0!&qFXL{2qdy6u zP#BJiV3DvvC>GWWQNCCZ_$VLY|5G335Ak9CL45>li1!Ae1kTwAKCExxkMf84BXKth zTLgIfIqpmND)cd7JgyjO2t`8CxJofk%oRU~dt1CK-W2b|Rf@O78{+M_IpW{MEKw=0 zfR~vAW{DyAr_3@jN6Z$x;L}yzU>|%|>(62j^!9L{SQg$I?h&_vJHlmQg)~{3B2AM{ z2B%1;#(SFdRq1r-S7C3JwadPgwZ)w(ZILy}T4gP;6vADJnq;Y#-Yyv`*jS7fE+XLjy7UaC|j_bO$?vz+P8))xG^JZL7Gyjn1N+WB)IZ_7@<`A literal 974323 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

wm{%J#bwHa>M_Op#nm#l)5v)?j3XE^I8Q+oG5 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%0Dc|{qFl~=9CPs{t>3Z}=J_ay@=NC8reSTg*SrwE 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

4MK)n98du&|VQk9xt*&d}WLm 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%0D&BZB)eK93>x?y@@ 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

o(n1 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%0AFKOUafc?aVF8Eo2p; zmn1DsS_TT&UX8ajNiDiF*jJdVqSU!FM7EP&z%h1$O1O$X1J+8<=W<#>g_z}o3KCWB z&pF#k@^iOy-FM_h`!3LJ7n7fIe#%jjZo}K2`(utG_otkHeWHE0<^Jn)p+mIqZyhdl z_}6C}`|?=ZIl=><-*E1O4}4mf+J^HlYxHzIgb5L;oAvoVywR-_Xsui-#{7{%GQ2sy5}( z#JrT+ltsfg=RTbHaN?th0&C9AL~YK^U`Hl+I`a|P>CA@{Gjj9T@i_Sr>Tz;j%H!n7 zl<6sXDFQ~OM5L6)JWf8H8HxWW`Ehb-%%kK8{D(|EN`8nwomm`H3})m$LbW6p$CSjB zvPwjrkvlA-gnU>=My>>&!KDkmJh=o0u$po1(~l^o zC2b)OPYFvoqR0WmQ>G{9B~MG5&N1_nr;-X2Qc4sa7D2Dl}bcVl*d+q9(eC8?*Mox$3SABXX9k#q;vWE!3<{H;ORN3 zT*rN&;JH$6;9m3(+>X7VkT_GWprFzyXV5qIha8WrA7CC?9$8N4mDy<|E3-YagzlQN zD%+V_neCdhI(rr9Mqdfr>Aos^b@ou$P`F!86KZvKENXRj6WuMx9WN7f<636XvvNE{ zG>Cl-Q|>UKugM+;4r7-`&RW!(>^Rh#?6ve**eSy>*jezb;glg3-DVg{(uO)~I1O(z zq{i%YADW#SBY0=1)1aUR>CPAi>e{G5;2HeX83XZ5g{d=4g+gX3{IpO|pA~*4veO0w zGoKcQ=mxSv*q4oSnoG(Ce~n0;VK98g{I3xP93Q!X`ZeOL;dfMA_V40cXo!zIE;}Bz z78Klzq!$gLA=%7bfW>EDfaT*{MCXgn+U()D@!6NC;b1<=k)#WTOW@k%WjwR1^NqAJ03NjOnBlLc=UMYjKF`F^2}Keu7`W# zw>$;K}!Mju$L9=Mmfs+>qTN zXH-%L*r=rSsF7UGdT;~!nnCE-45O1qB|X9)nSIr8dDy6=(IlgiE)N??_AKivQ_r$4 z4}0zzUWHtmj_O zyaW}KhT|2JR!kO~7MoULh)FBrNX4Ar%Z4J(@g=Yb{W$A!RxvY2l8Ow+#~&YGgflJd zNYe4~`Akg-hK+WS&g@uOX8`8p3!-Q-aJ&oln7aj$nA-?j0JRvK{ z^OdKC@n_cMzC2!h%iolF^bopx5BDCy*tP+>MyW%xaNwg^3ml{{j0cy(dB|Sp<+TsJN$(HQT@~U1y!W= zn*bNsCoWY?e&Q07Lb49 zB8iMH*%}dD5(B0VkVN{Rr*gYJ4KeiPMbRaa$kYMLizJZ~E2c8Hyl7%YbV=HP)B!$` zY1I1i2T99|QU{zUPaCkl`~;W0z-1a~+JI>T9wem>_&za>?EA!NI1iF$rY|p=nLe>% zdC`NUX#?&h-N$*5B=iSK-zNrVP8$%Md5`2-=J$yw%AaKh)1PIYC_mQwSnm@Y`B`Rn zMR4Y^-V0og_dX7O>e5;M4Bc7YUGXf_TYe0;Gw3Zp-uqLRqvad$JIjx94xUp9{hyaV zFHh(nRMA=9Nxp&VEccc_FAu5+tmp*$F#QF2V8v1J1wE+Z8QBC-PzOt&l~1T>qRe0* z?xE6yrGXWPN)M6Ps3!0rs-CieE`=}350=iy6S%LJ>tXk`iLLcZwKom+?bk@IVDqI4l=&25m6uE zh?tV;TqwntlFU#4Fx>%m;&#Wi zQ*>8skdG^!&n^e)xKeHTdgis|^V7$bu9s`et%cUYZi@BHB#`}9W-Syx{vn}MU^|_= zDRw$r3x6x?rg)v+onyUD56;}_tQamFSuy-|`s?&A+@HajUATu8!(X9ar@zAMl39^1 zJOb_|RiJMh1n0J)B3&`uSoJEsBE2&Gev+|DF?_f4ZjQFoxgvcQ-fhDyG0T?RPs*0e zWahTvRr;hVW7Q;fWlIcrGt&){i51xrre_!=&EXR(CRQ|uPmM50vL!i^+cR?L28q5; zbGW{b0jD{9GwIZb&EcK~eV_NFf^H6fPpa>eBXLdE_i;^rPr5nW%vTFfgPDH`-;<6; zhv>|O*{JNoL9or?8>g5HH%`fhjh1el!oQP+cU_@-VffTm{P3x}+}#V?@fxSqJrXB; zsykfJ?!4-0hZ~bEBr(}5vfc4lWVg$T$$p*fl;fWD8fQiJR9;2CCXLCSHfbtsBClkp z=1dg5)JZ~5os>Fh1?fay6ThF+H)Uc@>ZCqk-;`;S`lh5#dMBk%N?%?z_ept&*UVFL z-brzuEMz|w|5*G^ip%78Nc-ZsO#VsK(Xh47g6}l6rl%@1r`RtoHV->H&6kEH(3JH;|rM{{mqm} z_$X;4>~N_b9#|Mzc(}B*AQIO#xwK%E^l)ip;V(G9&<~gX!jx?(U6;p5@saSQe|;u%xV(9a`o6<#O5 z&UL$4C?WOnka%2YkAzuY>RE&@&iR<@%oLT}C_EoiRB|1Zc>EUg8|dp%R8kOiqp%># zNpqvnNmCH@T3rxzP4-%SO(vZ8qLMUOK~$RT8o1BzfZsJ)nrt8V_0Tj~QOWt3uZI?u zq~fIEq>9;oruO@}OcwB`VwcImMf?5s`K8K&i}v}wRs2)&e!t+Nx4^fGm!p>Rs1UHx z<;UW;ii3;JmoBF_vfe5_U)t!hym*Dn3a}9sT$I=&xF}VY*h5emndeIrdt_ub7H4FR zpWRqIe)bBN#2%@#@zmEt$M?w0%*agaF}}ywLpMzNdg%F>4U;xZI?rtuyd-MFq@*5+ zu*}R2lYWcIjLwYyErv6OD@Q34vu~W@ct_#4IlB*Q!^wnVGL@v+#~o z{aWQS>Fv5#wZB#!sd~Fk$X=5q)g2N2t|VRSUe~^=oly5SUQ*ozFuATPYC>Hy*lAKy zozJ9BlYF?$TD+vX%;=2hPLq5+GPq7P=uVSr>T1QF5uI9)T2O-%RhSX&%e@;_=<6{J zFC#jta2mL=uBI-v;9F`MxRD-J*ibpGprP{Hx@iRog;9miA{r{A3KI(RsAoKio<`&q zPS4LPd>S!bbf@P}Cv#LbR3;QorzaFz=+pCaB=r2-Gc1KXcJXGE&nS0PPA|MYV)sPeYq zZe^|QPUWM@t+u;VEjX#_mhDmHE!$SG)>cQl)z(7N0>Ob%mum;> z@y5aG!R>S#*KIqv1IG^AA!ZJy{z7d-x01Bl9N^!m?f8F#|KRO_{R94qw+-CJ`M6DQ z;SX~BjiCT*Vwh>TKhlje~(mcABCf_zeg7`9mzZkUW!u!j>b75>M`)q_Ay+emG)I6CqQAY3~v=!O4pN?*~h}h zfO`DZXdUd1O-KF1y2Dw#W7`R~f)1PBeiwbmb{D0$2cX7+g1ZYRzO8^6KKM=h@IKODYBcj1Jo+J?rB>6z>fAgprZ{t@lSV6YG>prk0;g1J{ zIKpnG?t#Lw=HTrHg^6I&d$#+co`6oWO~Bi2+e3aI6z1mQ?E&Z50`2#i<`+4*?)PmE zaL2&|I3wf0Kzk5*ko^JKIC}y*0VmL2PCAyeRSvEO1y+GqK|T(r3EhMea1FhUz8Y2u zuK*M5C-GK;t2yuO>f2x^s8x24`gZjvK|zPXJ?h=56Lxp%xIMH!3>7N6GvJ~11@$vP zH>Qr;-Kb;sL1=gU(E33vcd~rcp!y~-zkW46zdi&l_=8}suw(WR(3N$J$61~@u^P;) zA1F@bfdlJZ$dB3wf-d!|I8t8yX>e8jba8GKIKBQ9-l}>J$7$F~F*^mWBpFygfF&Ho z-QnRl#S3^3hdb+3eH%-d4(Fw~yMveRj&O$?tPRHGnPl?iz?4C2yYO19!@A2ipuAH3dI}baHfYj zTq!qj5Xyye1qV^iFgM4^dN=O%ll3mB6ZNj>6R5WO71T;lP>s|I(1nTP_0H@)j^9|n z9CZS0B+a2#*5`t`aN*IH%bL#PuMwRsPG!S#>-$p!Ktc7R`h)#(oGBMjP)?LH=!|p3 z?!t56285i=?MT-iiC;SbYfS#JwE?I-!rU zgt>vJH}!9rI$A$~{0;un`Xx9=>yNOG!Uy2KX1zi8=h5@JJ{#;$KT`iI&g=SDtk-aZ zBOAXT^$ISqk8up(0(vX>vEw7k;Mjrs7!>q1_zv(o-J{_;>?0Fq&+i|WsuFyYne8~EU z;|gjUYrE)VIWk#UT-G-9eAb8P%S>%^v{3Wm0-KMU;c(@smqFp^f;W#fAHOS(YeUzD zZgdyeWyjkn*M_$#mxeL;T^mMIZ-Zm#V;aWdjph0aIF4Qhjs?r4g*@I?(Jurc5mj<^tA3YMZ<$rpi(&==vY;3fJS@M6Ob^umSEy~cJNI~s3{VKh5FjeRS2)`Xc8-irNm@~jDa3T93iZP-)rR_x3Px1;}@ z{8sGk===0PqTh<$Q}9RhZTc;o+tIh8&keaBeG~Qvc#ED_dTz)qa20)h!7beN1$m{n zqRmySO7lw1Rf9~cN<&P8Oy(*bl~<}W<&~~4(3(O}TG72=2{CC+7cBCc5R(R`GsQ;9 zYc5z~qhvMmn%^xKELzj=l*aUVxl(Sd^vr?^tYJ1XSvV*x2*TTdzM?H?o)q)wKexF zZ&`1Rx{bO$>TuPcql|U8M%}|V*4?vM&9_J0!m*l#iJY3lRXH_%!Ua5J?Grv~LQc)? zQC9P)3Aaa0o_)xgQ!{G9kjlV?vtrGS%Xzc(R8#L2TqP57!V1wC@Ys0mi{$O-S! zbM0T%y$1^JcQqsNzpJsDjdg1*x%QD0)>s6$+4@youD#hhV&+$MS*j5;o2^ZjW^1m! ziJ3JPgDOkaY&B3#mQ1)ob;{giS!2<3&V;K$P3Oaj22~S|L3KFsaAK3?l$j4I@2u(E zXjFGrbv`#(m{6h54OW>NjjGPejG*a8q>%CFFgo9eJU94o;xDYjiKoov#$}`xre(%* zmdd1N3Dc#<3RAhUleNNBYV2a|WGyw8l9#c{jcQXDbP=l*eaF(pT4d~-)5UtnQiLux z##{U5+_Ch@>6;TTdWFV9W(EI_rG<6JQfQ2`_96WXjI-XR$FbtAPb^O?@zxg0ZPa7S zV@n*4SIuqs71M32SIuMcri8~S5QtUcELSoFPWhO@kCV(pd23ga8o z%cu%tr7>*y%cx5F8lspnKwm-4Uabs8Xh)$Q)E07KbXFY z90Xry95np9NWn{C#hV0wQ{-mWrpOf2TH`w7cabAZ>x^rSM@=KpYtcb*L2=(PaTLw3 z2AJ0xgW?X8yPEHqj+zeR1;tg3{MmR1{*UR7>1U(h^)mJX1^=+IC+jf!Pt!l7)s}xu zf0~9_sx5!ge>VPQ`U~u79ELu?`V$>$8D=?P8p~8D{V$WYdK@a$G6oz+KVaI=Iw1O? zmM~VRWxuI7Z47C$X$D*?kS=Pku)MXX}_6OxCfxnvLV_gLnz_TUUK_BUp+`Wxqv?Kf$v_j7wR z)eqVKh|*L)G95O}Ve&9LAEEgLe>_cf9Hj$)A$i1}5PsEPTm6?Qgmc-`7-IYdH_-UV z6bFWIW_we;Kpm5bRBtfOq^s_hs;f=}dy`%a?`5nSc`-b(y0@_)tT(zKtXpbgb&Ddg zx*)7Y5ohX_+BG%M7-#C5+AXz3aeb`Nua9j}6ohS41Q-L2T~mMI@&b&4w_VYq*amiG zA|tsVYz8w0VHd+^gat8|ksQRF&^b!n^|8#wjWY%rGm-u>ED1Hi^a3@(ltd3V2b;Ujo)I>CWRmG(`0SB0 zxD8b!XOFBJxi?S1pt!wxL2;WS1$BrWv+)m^_U3Jl+zIY99Wrg^d9{<|km))2oMRqB z9|RAgcJeIT2kt|q@NC?NchEF3uGtSdnLn;^G7qo$ z7;k^g7sikI3Ne$f0kQU(%za$59%rU$y>UP63*$^vtbG>s)G`Zirm4y_(=-eG!noeJ zfvPfXFmB=~lTs$8Y^s@*@&&HkBy>4RmFbyfV#=hH$ti+*$GXAz%<_(P5-Qd>89$b( zcdWgwLho(e%r%~z@|@eSx#orGxoLCFWG1@CzJN8?1e;%&nrj5_?O36|9s73dMu(olWQ192`#4__dqlHR?ow3X}E;G+J&f|9U&N{u+;!>pNM!vp});5uB`d zvifAbW9@_Uj`f*E=p{y+tUlHfE;HLYFKrZHQZrJgPXYr945iDgj>Q@!vw#<)L>+pEa7{3lsQZ%dFbsmJB%boy2)WY z!DDoWpJX%GN77I7Ig@?BzBv6PeI$MHHtRnz zH|w92_mMoX_m%86Z`SWNe*(Up-j|6d`36bK6jVvdl#V6rv9u>|Z@FQ4ETIlJ}?YN(%<>)p%P2nD(}|x0p@dRzX+W+H>4$ z+YPhXG}r2For~jbHNnj$lgTb>BWbm5u2twp+cmE1HLmSdaJPA`bq>BA6!L-b*O-`N z6}p4;nt5Qn&>fu7Io6Q)f$?*!cCin_9~d7JFLXPp!#pV7Znj%%%^~s2Otr9(_yto3 zF;Qz?Fm;*fePgY8DJWz~#syQ~Hzwf>V&)U3KACD~D#`dk%7UpMqtd<^F6PIkwPt_QW0Sz1;5{)l zGV2F_Z1OkxfsJ^}&C&UO=tlE$^K>qwQN-ySf4XJ4d5mScWehwze+W}jQ*^$+X)ruG z|4emszSMN4dN6!>+?i@A{%q5b{MXfIs+Y(8U-fJ773mq+D?BITY$jgO2j~BX_kYzd ztN#Q4NBSD}KhW3oAFhwd*YvVF$n-y4UsDj?|Ek|G^@hE#s>?}zOeLmraJ0ExWL7*Y zlfF1(@Wz;};XR%*=Y!<<^X<@uN=B+-qqx6e8V|(HaZz?rf#Cs4KKrN zC%2jGcp2tQRHnHeWjEEEx`W;E>rFlA-9dL_H@d5_JIodCYILT%8{H@m&u&A&w+aq?zjxkqf3Dy48`u3jPo|2ej~zIB2blRk zqMQE{n%+CT5C7^_AO78|-sxes-Y0!4JuJN+*bg3--j^PhzHoG3rnaVUPCeRbF1T>? zRGfvQ7o|@feYDf&)MNZ>T1PtxJk}|LI}04^)Z8PZXLFB>J&uuXA>WeP+@rb21)Sy{ zTT(B;>LM@p*qmCQz9n^Y>eh78*QQ?}t4|kwe22Qo3q97RkMFQG{W$4Xu0!+&(t20} z`WU?*S19@qILBc>kT;}H?zWa1-=P8BrCS3vx!bYyd#JwY^`nn5S3mk5eCp`>(LdlP z2mC;F=~h3w0e|Y~DfsnZ1CMh@`V=1L4%|iQ`cXS5oej0Nev))Yx^9%{C)4HZk+VxT zs(t!N)`(a+ZhN|RR5kNDuzk9ARA74bs1{H=s#|(sdJ8y~UIz-62@eFTM~%f(;wVvd z=_*^Ffv-%Tfiok$9lUx}JITQ2TWIAUhnppy9FYnH?TG zBG!)7fpP+m%7&wl%Ix67V+Zyh5j#Bgs7&;M{lE2>j~)^Gt^ZNk5ghsGZ~edVZ{RV0 zaI((V7VE8Q-$u5_D3IXF(Di=$t{o7An6E^rcOxd^Z9Rza`it|k{@&M+5x zC9E8;g1ewxfH~Q+a?pvyrQ42x9RV&}?e+j?xbU{)>&1ynt zp#;zIf88~U{;KP%uG#Qb)GP26_aA!QHOK!Al?%Q?EyjBVzV7=N?6iz&Bl& z;B6bDWshY{UjnVTbEQ`1MPJr6*xyPI_CM-( z%&(Z)qo7s#Dnh7Zey<{4MOdY+5lOv^ZCtP-5+$qHFR8ax+QYv!q6fzarY|NH>UBhG z#A{R!|6u=dkv*u_5yAeSM~;j9JTlmSSy%h0&m)(0b?$2)wTwsY+*hDeU+2C@WX^q^ zaJ!IqiL#G!?mLkZ?nJyUQU7KC=aK*AI1{5>ZH_D65!o@>#Hb^(qx7RPhoECJ*Qkk6 zZqzYZ8CV8C2N%gXlxx%%9K#h?^e-Zdz#@+MMP#w97e&5_D1yJ?F^mJhh}?^Ei`r|O zcpLF1VsE4prx<(-cZ=Ew+Z(B(_JPXCwurY8Zc*;|Zk*3Osx3kp`HoV7ZzI|w>Nv(* zur1mKcv4)^Z7jgF3lpzhW{@8O`6B2UEpuh`{aK}GpQ`_H`G`v6TFWa zLyZORQyJWG?Y<2&xEtFT{L8*$nY`?qfx6^-$#)EVG!qwnFXCPD&6Hm8y$oj2FTvjP z&60lOdj-sHjkx0Y=BJ-z`5!>5cMrs z8a@!Ekd}sDg)5|4Jj*5FrQumT<0au~?}>?08#@v{fqo?XsI7M)D}i-kf7*L~J_9(G zpHJF*UBdSdN_%gwkDt$8)c!$I5b9})18!Up(CeZKJN&-n#@;qzaV)JObJ%7jqf ztS``eefHt(_1Qm2bZ2k=*#Vrt2Ric)68t@I|DY`VeLh)({vPN;=IjmlxOh8z|2=Ra z=-}<*y%2Qv{+PrC_c?ynpyvbs9{4etJ@Xp9xNvHldq+o8V2p z=Y7-IA@DqRH*8|6H~qYC2pGcM4$tF-f}yA;vQWGb-)$VT52_FIVL01-w)*s<3*5@R z75m`s^4aAR#@V-!Idk`oEub^ph1v!>p=NR?4kyqVJZY5&+>ll zCHiZxS>7%_v$4(Y_+LrB#6KwcT5^ys{I4Zmcwd3S^9H@)2PKCjKA;cElU&SrN+jIZ<4YS# zxF?4vZjFb8UgP1#+!Sz%M~w%T#OPt9)p!_CM#|u!$EoqS?_T3E1vH?3b^q1f2-h?9 zi~BElzq(KH_|5%3{(bj2>NoHg6#wZA80YRSnab`d9#fg}=GsJ$$Diu)JF~yJ|BmvJ zOe3G_F%8d0;)^;23il84Lz2U&v7U!{e7+JBQ`0<5B!?wZv@dA#80(oyK9*-Rllsl3 zj*w(}9%1)yp1Nf5y??{7L(by*|r(2*B|IVP+G5Q zxR!T<=nrt-c)f+c@tW-|x(-+8^?=#8UTx?$oN6*F>02+Wx6pcW9f=;lvyYYcUuWKd zF1&k%n#0UCpGJ6yZ==oYg4-EK^e#SgyhHf3G@`fTg!*o`CEI;mQLd!h@ph2yK!x&I z+JWclGuL~EPjBCyR3Ffl)Q#E+x>9q!ck5Q4PVEBcdb|0|qujwc-gCX*am90N z_>L=o=QY>69qv3(CNbf}6 z!Q1H7o-%j|Z;Dq(+$r!HFQZoteF}-u>yf8WkHN>Dk34IqFKf zd_7n35PZnH=>c92l?y(gvZ-9p2Z!2KtCqwN*$N@gZ}X2 zxc>NEc_*KcbVHrsI=bNn@Pn|El0f)L$tijO>;sPg>OUUc&@;dp9v^u4GdJC%D?6r> zeBklKUGyjJ{1vmuQ}C(#6ZfuU77uO`EU|bzCV%4Y2Qzy}IjcZ3pH2%$c|`Wu{gJyF z_0Zjde&}vu?g7q2_XqF??tjo9x(~DUq3~huL*YZ+6ZqW!VZ#KzA0E0Vl04*CiDbjv z*SICnSGx^`t#*rNZUxS2w-xXeZp+-_*t5(nmT#G5c&pt`xz?eUk*sh#310@Day{v~ z!YzhxsXFi%`YG4dZuLyB0e{AcasQd`xnHQC-G6e|@oo5%`w+Ys)Xy*-`bYO_?sg>b zNB29ZpWLHaVos{;Trg!9z73H6cNM{YxKBFW~v&ByzQw9aiQtBz|Es+P3` zJ)hZ+Ss$UT?3nL17w==ZU=f@r(mjH*y4`|Du)eq5-zdWUHcQ;kD1vM@>o#mQ`?!S> zCA=ux#BKK|_rWA{(6ikJb33GY@OiK~ZnZPp`9`__IH#R&?aW==>8N(*VE4t@Vt$_6 z;_Sl?wKJp8haIBacaa@+IEr)FVH$TqI_j_!oW}i)c7lf;j*uO3IP9=Edm5RKOei1O zR5EXww`|%RAK6G|y=7Ctk=#jViVa6{N1c(lzB18$ne?%7U)lXJZe;hz_~I;;9&uPI z^^x7;!QCI@${l%bS&uj@$zCd5oV_Ibh{H{*D^8a=u5)f$7iZVv&2y{GUYvac?r%I~u4loMuC>xSoTZ?z?4;{yT=5<}%{t{;@8&D3lSbzH$|7^`k2ynj z+Vw=#{V|cbXI;;@9(O&4a~yWsRs8QX^FsY6_zdbl!Nuoh(>LmkdO4m;txHhV4C zE7)<@?RbZ?x8s~}JxFcOK1jAU`&;TDxR9!2eVe@uT*f2#7XJ`<$flNMkIPv~)k>G) z49;0bjmtThy%TkirrVJ!d9rR?aQ?I{7U4 zExdK|_44jHL8w5md(H{=t;Jt2Un>vHDa#JZ*_mC&6$a%5=FWugKy3$wTTU93Q=T1| zyCeIWOBv2JmvXZ0*~>cbpsu-W&pvGH-{qFm4`;8W{u8{i^RmvTU9P#T?EIhL+%C&H zpK&=2KjX3t?dqD_<+RIV=WBRpZ2hXscez)Ye(YSH{atP%M@q~M%oW}Z@CHsGwV%3? zdjLEDzv^-|=LY`%+&gj}nGNsAZ^^H^eC=>GhvH~Aa%oIKQSjID1cgvTs3=gV7~COX zg5tL^Yvm_+{eByBf6R%f-^Sds-XHVZn4$OyiUdWBe5j()ddvFTm_}--;wHS&y3KkM zya8^b4^>!f-D2H}w~bHv4cIoT#cH;7vo(5_g{c^M^sJ$ZE#zCNE!>4`3(Q2BL7}Em zCU7$~6=t@k(WhBQQYLFEmq&M+7p ziarINg8M0=ZN8r(H0L7Dj|uVe6ZBKyj|qN?i}EZ`Ro_l0VA*Tp^s#6}9kS`R9rr z@?e`=N8Ure19iw@2ka2{*g#*5J23LcgvI#-BcBSlAY1Zd!obLEUIEdc7BsNfQ!oH;U}Qr<|Hy%n z{UZl}napHM2B3zdXGt<8{J4o*?*D(UE+t!1my#(7;x_!k4ay7U$5ELQ)ofW#XiiX` zEGL96RRrb*gjH6#B*qL)%U1IlTYe)1Y>m|;z-rB)7aS`tlyyKjU)^#N7trx*{ z)@afWbE0iWyg+`@T80|T9rwy?IGDTZwa4iIc9?U)IvC!LY7a&+@eZdQ7>Rmkv`5Y^jq>aYdCk=duu&MavrA*_6F~*brAQ_ zdt*I|C!Dvib4;wV^;Oo_BvXTWnp;z2p{I)wXOAs3sY24Yw{N5x&Mch^4_%+2$64D(gU!L3B0j zVdCl>G5s*nzf8$K6;4IAKX;V#FRREtKe4L~E3#cCR%Aa+thDvY>`M59M3;$`*$)yQ zB|c1CXng=aVlA{Ptr7Vy6CaR2N{q<=-vpP55&5IJzfVMdME;}15h)S*BT`1^j7)iy zsI-m%N2ZKO`7wEP&X37IfWuKEQ~q`NAzA2uU0%BU%Uye3x{OE}rTsB^M9Oem57PeY zGD@3{ldcT{_vra+ZPxGR)nKpqJbos8PR-v{9d2ExJMXvg9U?L6^u)Dny>hJ%j!!NuvKB_)p2p zlFWicRA#|H+%M>#5{Ih)qrS(3;_l!ME|qZ6cW^J4keaK;P>$rP7ySlaC`|Mq z?&-3l=7y~Yad(%i#`aTgpuaH$k++{BdUyOF<2MG;yBp_n=a;$M@8uiAC#ZSw#+pUw z#+vTNf+=(HKGBQ5t){VNE^J#(H}b}sj@%2T8{W2>>J-tdQ#x>mm~J)gxfe_aqaIH< z-D>nH+#km1&3#_Hxyy?_#dmxMqwjcc@PfvReo^B+Ug(RO3mSdOigCV7UC=aZ=EZo8 z7uc+6!q<^hgJS=RahEi{<1cA0YF3QXr5udAL|>>m7`KpqQFBT25w%eBG59h3BK0B1 zz6gGVlL`M&vw$;P0EIV}$^?ZPLyZNSQS&)-Gq?bqVe1*Nu^LDG`I>onV>AwwBRC&5 z8gD+Bfws4Gd(C-f=TYamJIz@Ac}=E%9?2;5Jk4CzJa{JlIo5e}rv98}lyMaIsu66i zh8vTDqwvmYu7+I=``$3hcs1-C?!oro8?J^OYJaf3@aJd*JH#Dl(#b|?($S)i*4R<@ zU^=Q3We3{foKuT_PHnGgQVVpTpT!gYU{gBPNpn^$`l0q`nfQci0v$BXbO#=_=qquW z)Xnts?EXaUsJVbTi#nEbmKtpOM14F*sPptsm@8tc2;Qt-g=$t`u=QfRm9S!xB6T-Z zG1yJLE$Mj9Dzy?-tPVsM!vk@P>92&+_}F

xD^p-hLpREqvW*+_p0E>)#4nGC*E{;2wi9ZOZqP(OhpYhkLp z`X`PRr0&k+Sf(0|n*z2dRX9OBQ!22#x(8FM;Yyz0)!+qi6#VuNo=i>ZSZ6+CsbfXvf|okh1@^Hf zZEWh;g`mhr;iZmEqaTP%v$+T2M$r$(9f)($T;_O})R)!uU_D2^taj1-lJBA!HTIYM z%jyQa%j#e98%XNa8ma+QqXcSrG!5$Ubd5R~u7L;Rtfl{wzZTX5{j;hE^%Lu7p0%G< z%fV&fa8T=!{B337$X@Edl7Fg@#E%zAz2o2Nr*XgJKZ|_Qs5s&xd8mN6U378B{gdg1Gt2Wzefr>WvxlZ8i1A>XdCYTj>Q; zw(_f7y-|z5wMJ_c&IY zp@tCj67&nhS-d6sv#@3Q#kh;{m!sqH7wbPlEzvJTe*}uTb0iD(=WP4p4gctdQX%LB z{1E*=I{)ery?=EO%bzQWH}uAfCl$R1-aoqD`aAJG=y&4%t9w*OYI;=Pi65*HeXu4Z z&mV_l2h%QrHk$)KXjJhJf%xmyr+-3P*UXjbF zEArNuE9_|HmAfo&iD>~_W7;|Gh3%zFI<~~L#6q!<>NqHLHU4U+L7^Q( zh1Wv0g5jvazAs??y+!Zu-GYC|u7&FF9pxJyI@otmXn1IpZx z`&r(Ry+6wncoe%y#l-G@Kg)Ob+tcrw{WbeN{jS@$Bny3wE|OQt2~I7^ukc*jU9-Q= zj7z(g;i9k)nxJI%S>B8_#N zb32!IomnpJuG_~eI)l#b-Xt#4bOxQ<#VbxFc5ZjA*QvyK#p}d3@XqZ{CB9C))@y+G zsl@)?19*N;C7#6T@4c_{0Pj0?`#KBvMB=H$6ZoeR_jNviKfwDy=M#x{?Cz28>%1TD zp51=ffzFFvgnyT$)$y*~9o)8{1Nd!0i(OhBvz+hRWjbf^>SsEykIkY!v!P5OdRLdb zc3IA!#ddX(DN=A`ioqJu8*x61O;I$)-nHxMa)7A=F8AyPYi@a^FmWed^m!SLOx*Gk z{Q>ihvGX!S-_QJm*!?bI-yyGi?A%X3x% zXEBGo4%+(Dn6|Ke-cMtm#SDl)=(V4t4Tu+e_ImI0eh@o9V?g}8jQN~vK>TL%&GCD^ z4|>hd&?*MR4~W+)Hj~~)-}1W6waw44D71>(UKWLLzQ?;0|Gn2Ou($qubYseGyv7uZ zqPPB)&3UD7Oi3`j()XqZR$CMa1}*B9zRJ*;qBT^(8&j$bfz_w+6Zqyj4QdUONVIU# zCzDPBs|*%JVD+1+7R8&XTG(X6RAXTERO6eelbM^Ym`qJIYDuSXjZ?VtH&dq?R~5XO zx~f2^DGIxU&GB{#d%dS9Ru#-+Vjj*^;|Hjz#_0;t?VaX=NcF;)l(HEoW{y z`~!spH{rHRh#yw%W0z3vv)B6r{?lm(r|F>B;o#&*?#TRf#V3aUC?**`;fnsFkQp7E zCK=YEPJ_bTNV?Xr9`*^i(NL#fOSaK)2LFsfX8ez0y%q0?mEbyhEv!!e2DK7giI&%_Ln&(3q7^lAy1b?*UeB8K?D#?}uTj)|sqIPfh4xES z&ze@_di|H$U3j~+twy0IaGv%037m76b|>Bh{X}>f_?5oZxEZ}uyV)rGS$La`vzVQz zzf3wyUjmy5UdG=-@)hj7;VY_{b)IKqk9G^k*s0yaG0q#BaL#}-<7NFT^7DpQsLT4- zs1i`P4aO$JYyBmXSB6Wd68(6R*ZL6Dcu-^)jSWT(ehJs00k@!Lk!@k-5_plTnTDs) z&tPhraRzL>ekKz$!14Oi+G$Me(Vph&rWt#XPcxp@imoE>VN|hirasjW!b;_MD!m## z6HGPqFb0#W^u?%PV=+vvpT<f`nsBW5}CrYXB$&O}YlTlLLOdZvYG+aP68U3my)lJ3=^qz)bCP#u7j7t4DcJwp^ zp~mThU`04euB-?gr!T}C2QSoLB`M}=uX2?|`U0FHJkh(e`>Np@yg;9WF3?{y^@e9H3%*{Xt8M+&Ku&)Q_y=M5ZdIobJG8v4s!5Bfv zP=3`t3R(Ug$O$4fO7YZg_HiH;x);7>U=-5C97VN5bWLe`H$2yOHFT|h0rvyDR{I7&hY%zQX?oMzg-wg?RH~nsKH~Ijz3*5!`$7Fqieg`Pr z|59IqUuwV5{;Qj;KL84Mvc4rMftsxUSC^pgb8<47;mqi7Idw`UCsB zy1Tj$>=*0$xb#LBIQMoDY;0I2Yb^QG@ZK)MeHt#*OePoWX4)^&jSZV&{{d?T-c0+h z4oi5xx;oVAX4p#|gd=t6>M%B}GI|C_sEiiVccP^ZmC<)_qz-%tY_i*&XcN-NGqa`Nbhpgd{QxyuNC@;bbi#`==t1OE?;|8dPF)eYJSuL)B>*I zi1Zlg5$RD|f0D9*?3naPil4)RsQT~)QBP82E(@Y$F7@Gl4)x&;;azzw0vp0>dG|Dg zPXs6Oj%o<64}X-^KnXQbw}^M%BHn=$b&s;jm?*=k4}X~TD62kP<|2AI-lMFC^hMQW zx|7TAewgj%4VZ|n16Ub+){ zKR(ek@OZ_s_}`wnwk#=8dHsS@<6JSJk?ljJVtsV&e!YE$92ba)kYoNPJT=m zl5tFTT&K<#U7g=aZYQ^A*~vpPW})mkZzuVze0#JkBT_pve^!137^xLrQ%+Nky8R8kCjpXVgv_m`}6}0Gvc*b}}YR}_GYGZJQct*2?8{>IC zN0KMWJI}6Y)F{~~S&XM7ugULGLA2+?f=2~Se&6Iq<2U(5dw!EUN+!wEriiXhIq&z7 zv}^Ulg7bdOeq!!C*z6a_x8!+0Pre!BbT?wy(9yiK9)FCt`I9g^8YExW?pYJ2d za~-Ztk>oY!xDJo$bH2~t4l&eo2iM^*QO!9)!(CZHHkIM=x5N29FZ*P8H0Rj$3>q%W zuF&hMk|*i)T876g~7sXUK;bK$E1>u1k=Wx9uuZN z1D-*3>X|lX?(j}M=W@=}F~NChV`RhU4j&LEqrAe>#ymu&;ftOZHXv;7@P~9Sm^YOd zHV_;Le>mKN@`APSXuWLM!lQmT{0&KP-W%IKOISWr`RsTz+@r50%n~*oWeM}>I~^}S z?BtkyocH7Nsgq*{qEC$RCOI+YL{&?l(zr1m z86GWt#(10o&13Qi0(`M0h}-O zO@;%oqq-xyCVt0%K!1_n6Ccnw@VjGjpK6~q(!Ji*K02R$-g~`u^fl5}zcpMvee;V_C|F*EZ*{yz#pkvtk{agKZhlH{_RO%Sk zhJFW9LGSl>40A#|p&Y|Pq)uR{G(_4K^e*gfQd`j7q{S|Glir1G$h@1h#AUI|64Zvw z@rn(Z@7UoKHeRvBWkcpN%`%N}7uhBjyDZ{o7mHj@@{^9`nnmn6iCV5%s#)T)OtTzZ zs=2H=N%oqbgj|L%*VM7Z#AQt_ZY{k|v&6>U@H3PpxOE!2X0hfC{7vFw%_7oTO)jg} z<}cCYu$G_~F_i^o@spfvcn+0qQ(2lL>LcpA{M08)(;1$HFZv3+BkInY73$@%73yqF z7yK3K_2}iGjO;2?E7Vs}ok>M6#lNcF09y~1s=H{ep|7g1p=4-7k)i0XWWhq=eQUf=gAw?6L3qxP=4b5Jo#^a>irk^ce1hcr;48{jHOpA{>J}9brn9P^o{ar#gx*$ z@W1i)k{L^D@Qrw)zb${G{6qD)d@oa;iEqoNka{M5u6(0>TmBmSTWj+QcjLRC>(a2u+Mzhi2IRpC^_w<&ihtMby5K;>w?P)p`k8LT38b8Z<}p1Ns(QMqYA@Fb(MJhd$KvjOGQ zrUBZRGA6V!pA9HW)y8bj-IBXGSCY6T_tOENk$uXnoj9}% zr>%TXk>GoZ%1G^t+RDp@%KMd5Ars1nb}F(jdR+d8suTD;xl_>}D*K{c%(Rv7D%w-j ziTCU8WOhv1p?+6APkx~KT@|W+0Q+6FQe{{402EGdya}Ml9^&;@KU6&cC#d_tdaEB% zeLynDl}t`VP2h7fQN7afp=ve$BXEOyBhEEYBpcOb)HU^|;HU6w>g)7te9o?umZ`%y z#ze4-#ucXvpJi7n2ke9Um?QQ9U2)u~T=2TuRr4L?2D;(6Q*uzK8;`t!`Y-R=d7QCn{X>^y#l9P-Iw!~f#taUY`q^&U-c8!V^tW~7x$@3^rxzR z%)G~SJyF%GgnCB32R=bHP|v`6RD-HQT}e{GxhmCbI8r^2=&@=I&(kCDGxcWt&$z

ec8>)eZGc_zktY=B9cqQ<*&1t5sv^YgAcOJ-EtorQ=w7y(*h(06)ROWfq3AD_X@w zd)O++!{MtO+p7+Tx92DwY)9%~Q+t&iIBG{K3v5rePq|mw9_)bLuM~a1vLk6HDjO8) z0M!ZHr`)fcNgYtmvh`W8PO2}JL!$Sg_mU5Z7T#>?OK>K0Lzu8*rV~fAQ_aGS#hV3Y zt8#F%c`P~PcB-$G4XU;9XJ7+Kj>;ai$IrpZMdzZ{lCJ~Tp`NM!q(4)=r~VVQP9=xE z4}Xv6_kHy`()GCO@&8o4ul@`C3stF}L|Vx+E_#3b_hJ3fTj-m4EkvJ;GYK}CyubQ6 zHCa6XZvcFYdaKQUuG+xy{sOnCZ{ghpx2V^n6`XTDcvJ16xy9@1!7J;|JJy3z*szXX z$FG_~Ntp3~NvNfoJTMQwlwXmTAT-^6@-1x2b&o zk$L_xd3Zj40lENH0voRwuW$-0QIvoo{7#|3=7vaRtPp9a)Qd@PN+$JYhqvaA`ZoVi z{T;PTs)_d2gn}~Z9ksXSE~SaSOL|A$sMbV>N?ZEx4r%EhD%~C89NE&prGIOGO|*05 zIsBIX=cKLuog*JQi++#kyVN~(EB<+@=;x&mon=1fr01kEAHm~-W&BPx#E1V##3#fj zly#ouoiY@4PkmmxQ@s-m#WAQueRfg?^$ztt+`HfoexSKiEu5V&gZiB^O5IKsMc+=o zgDbwP-p*Cu0k@-dEU~8%Rn6Lt7W*Pu26dE8MW`e2B1v`XaF!0OWkT=T0pLLN|5T#? zPbJRqe=5=cPxXJQaL)CdWFzmk=iuKYpW6DTu>VtSLj4cifS1QRaRay!FW=VlVVhJ1 zs87L7%zsAx0}540eFo;ET&O}-XIt;g-h7oaD@?#QQAu5#ehoC`Xj4=N9``;gKe^|kVArVc8=_b0Q+c=WUST_BQ*jgfnn~{!{!sXqeNDx0i+?~haimqnbydQB%TybyuIg>^S@fGj zZc==Vx5hFgdXplC`nWJAIy!ntbWHSKp4Vvl$AxDsff0L^(b0hshr{$JiRjEIh| z)7EKYqR&_khX+OkkOf41;usiFr~SjSA|`-;*mFfpV8kDmI_(+DX^ZHmEoUqr7p|t( zSXSemv8r8@}6ZpxQwL4(rSJWzm;<|nU~^~kSztz z<29MjQ!CB=*wJd%ki2Keo=nOWBmM*<><##hLvQO4#UYW8CH_X_2-u;3#~G%Y*exkiRx%>COwaCa&2}UWbR~3JDRVXI>N7;O3mTy z7zB2rO1b86vz?7cnC)TVU?=(wlO61)N%Whh?@XO=I+?#SU5DQ=?XdOjrtPR5=$odU zw!YJ3Z+2jQJIZQ`gxhn5NYKH2i>aHYTTD*GiQxH~2=b|dt>N=EkyS=g4~mH>_LPCb zX@Fe@>%lAZ26H)185o6LYjf7xlq0(w%#NI`+&q{x3Up+mg0vhQ%=|a#_LgsKJJ;cT zV_s)-I^acFI`I7w#kX_^*0*Hen7<_-Z0TroI^qrH`(5<)_|cY5@Q#+NOm&2dew8Ge zZ~sn~b+AgNDmlwl^9ED}JQ|GVO4gevq1NMzJ_N54HiRVF>;yV-<HU?cpmRKBn%Xb{wd`O9N{yYL$GAyo|Zkc&k8>8S(oUufktzS%+FJUuT;&TH;CK zIl?OW`^BrNRr3DDaX5~6j$EhFl7Mo6-!MB+-m>pp^Np6@oftz?X zZkTVHKLbCrsZC}ro|b2F6HYZ)ZBtrv99|r+SuEHEFP^R?72Opl4ko&*`A1W{*^TZB z{%EQ;Cy>O0ZcOXwpMk=4$N9{>8FdpB?oiwW&>gKu>%gI;x6n?OTei6^c(=@3Y>qQt zg2kD~bj$obp0nk9TV`M;!7`NOd-GQOEuewa1w9lL{%t%L%Wd}6Fqy!!R|BpCjp$)a z)mWy$roe~duSc&()u20*x`4OMQ!G=_!z_uYso*eXHZZjTHN|okwT@TtEO-uYJ5{(5k|O-(9}z>DDeC*e%Sn`~1N#jlHQ z<-RWZJ~sj<5-$?xdz?2#sd?Y$zA1WLRBFS>;?mrSJkmGli8zystC)=}j>3G^bWt6pI)fkLd<1?(epK06bqqX)>a6Ml@64Y`yQn_G z`B+(~8V4`rPpsoex~Puh9>?#3b|rDe`AoGL^%;M{6}<>=9IOcaFZ~}?g!*4965Ncl z1>8dVuPRdg0(^mrLs{^Du%UFwXoXp_i`;%EAC6x zHmU_|QMIZXZM_kHn@Y)!t>89Xm948_t*Y%*ufpwkjVd*@9o&wygBl>;q1vGuATPn$ zq0-nA4Xi{p9<>83rT802>I8p#IRU1@@vj119n<@Mp;Xp1>MNq zc_xchZoCdfpd0$6@+7mTl&+`~$`eeT7uotE`bqqcNfy#i zDVI>E!6jfV&JtxRRjW+1^)%&3yi|5AhK+=Eq0+z+cq2K+BG?F6XVysk;dmoB{z8}w ztTTNCECp{k@5GN`$@CP~aHTU#%q63oSSe^nloQ=WdA-;Xc9qYYBPhIU#iCy;zEtNNz(UcB+ zTQs=%9Tg3}EqYhf#+tyl#k->D;&#Ooa@&d$aufJA5$s*jck*{d?TWvXUzaDKMQ`4Q1}6m*|fy4=qD+L_bgZ(DKOE z&-3fRX|KmNwGqC-vXNga9$A`5&x0G`k8OP#{#45}epP9*e2TvjoJQ7+ZUR5$IHx$$ zNl+Z|3EnBMC$@=Aq$j;Pr=9X@wp_4mBD-MQvB_d0F>#y=me25~!IQuw&a%m3Ms30u zJsHmgOD0LObOF2YYg`iA6?C@E(VR#nfd*#L425}s z9{iqR7^wv0c1|!)dLp|#Q4;enCU^SJCJ)%p@SjaTncUbT@F&xcsGm&-s9!*#_OpJ1 zOU%FGNjQq=U*h~?`jx&PwwU_Tw8Ykz;C^LOUz%#^UxACsDqz2wzJ}GBDp5SDDorW64qnHF6h3;cYMWyjbD`CRx%^GF%(@dePH1tUFR8t5Q3KuLC*Ur}MOy#5_ z!NqhLEX1@3UJmZ3kARH?N0OD{m4oHzeWZ)PAL$EWW#B&g4>xd0Hdcz0$Vx(&aLhz7(KL+5R00OUyVDb4L9n)IZPU85KhT!Fofd=>Nb+{t zc$}fEVWvQnhTTKK`Sf|9#-yfe`19#Jn1(FD))P$K;DM;2FcrBPRHNt8m8N(wfv$qh z!Bc`e={vwV`~+eLI0v^FJ_n4m?I{N1OtbNd!R_=|TULZBHWg8^xU)^Os3OxiTOVhN zfybhXV6p7?vvogMS9ly((A6Zx^Mm=@ysoB~)1>H^)4JlcfGyKrPV*-Zpc23Uup3!` zsTIF1){J8r!jBSAGfZ1aCaFyLlT<6Ut4Q4xGfZxZt?V%~bx$=(b&tGnuA9OP znsM9|O}Sf5eRG@ewwktagqh$hQ&aA)6?2`)d!4A%+DECau7oAAW|mf}?(&$#BNOaEd7s=$ z)&BCk)B*57dAeJl+&;PKZeh9m%dh$godFNa&2U?#JWzh!FWv2`-*uZmn&i6QXg4wO z&)`+c(QeZv8Sv?ne+FOodz3Sp9sdmGW+O7LGW;6Ob-$~A*VsK9Px!OLV-v06Gs9av;P(8q0qym>4xSE^+g)ZL(Q7+hkE= zqsA(7;&>($Ir%x;WNm@MX$w^3D01>}^1(l~ZGr8Agwrl4kC{fM+5+F+65)% z<>hP{)+pO1+dOOw$9@+$HL6`uyP&C2iFxbPTZU~OR$aDEy_tzE!`8%DB3l7%wBW7cTH1o%r3I^* zed*jNTNAT7=3QW;Y&A*~lkTpGnGv7v{w{EJ%#PtxquvGX7%q|*&Z56?e(9X<-hz7R z+~PbnYRB-M!*>jS;XEr#^jTRiaI=Sqo;@U^a%$90j*wBAn75Pce+x1ycMku1!QTsZ z4*%bR#Jr5kzZN{l`~*!D%f8OE|Oow$t-=Q z?TvqNL2r0(ZBklhX;NBB+QkL`kEHVeYwB*_KOnLMRFt|GqGDZugDGKGtfI&i2Lc%g zk`OW!vZ;W3+gk0f@B7w0vBQmZkJi1~sulO%C~9%^|M}*Bo$I-udpzHhljM+`8cNpV z1Sr>6$0j|mKFRC}a6Kzu*n1WJ$?6R_>%l7AQ}`#r4b+S3)6`4wRP{!j)9^D?J$MSW z3HKCu8ok-xH#4=dx*DuzZyWJuf-_Jv=ri%EtMlzj3QFNKs%7*UWHQqH>bRuXq$)ec zar|*f`PGq1(bKZhvf`2iPs^&#%&(5d&u3+Hby`-Wa=@@iWpwp`Vbbat94Y$}y#r1( ztV4Aws|O5|RmY-cWTtV-r)AB^tj?5G%kgG{+&Wr#RebJITr`6pj4E_-QB~%{+&z3U z@-Vly{Mn=`oM)3B=8B%06*w$#SSouiF6t(GHmSHMa9B6lfMHt`1BVS5)}dPTby?kH z>zLb`DEj)WjKplt`^((Os>vo^4aiOJGuXhq@eNgJ{zO9fLD zZpgCA-b|h>6)Y>!D$7dTz~r0BiozkeibAVwNbY3mo5>AqZzd1PeKu*b^vR?rV8i4m zlb%izNBoT5F!`;o&<}DSvOVA)b#MEWx$bSBOnU44bkb$jgWRX6%c|P)2f2Hx%c{M6 zCbXANixz^5s9)`PSta_fd|Gu`)xGUa@Fwcl@_jgq!6oH4%Wt7?!GGme{F&+A_N}jf z+c6op$V9(Mwx7u*;8G@Uqi@57djMxYO7sJKrgwl(D+S)6-v$M{3r`NYZC{xja;JPu zMsmn4d~KV%_}Vst>EWY7l0!r`3QyZchc_xjXJDv^Ck0LD&ACuwVR@Wvp{O7RH z@O5E7hm8u^5~XXiB`P#r$IKhwQ6X=9w?vH!dF5Li?%(ze_{#UK?fT*{= zFHvuO8z#T>t@nKc7yXs*!{jYdZ+ruywnRNluJ_H$euMkc-d7bpOwP+*RrChkFuA6% zfoHC!@TKqlNqN~XeQOFue^I!q=tW^(_WenNGVV{RDXii79+c59;{~bc_a}*bYhiNh zK^a4GR~2n7JXQEGc~#M=!a*6ytpnQ+$_Q-V4>lxs6lIl-YMtDAB>qVHC^oAsev&ww z;wO!29g#m0Cw@{y{;76iA|l`4XC%}9KBwBnPfElOY=5fV8L~6&`enpVO2A8)6hA2| zF(N;4QczAreo&6T55JV3n3RGjIN>)`*oYqC#rd%%QSyf-TZOXPO^_7s;Jt8`U<`YT#~pEX9>rUk+?W<2}ib-o{@NgdVI%!;2n5HiKTa}?t~W$imZ{@PSuU9 ziLH*qlY=7bj28!r>=H8UDqmObNAE}Vu4+KNt~`KxUD-h2 z2b+WcImvjich%*BeU_Tk=07+*C3uNoX*bv@y7!HtC0MVAY%CsbF>z-wJ}Js~(J zD5rH%aL!hoYL0v>_!n4H6_gX4#^q#UU<2RFR9{;#tQ|>1Cmhru#PO-Pm^v4Ac zlTQ`)=2homa_^{3<7;v@Q@x`$kMD)oJE|t97Z@5I5Y-Fp6}2wxo1B`QP5kcdH+JOr zGIKU3_F_)-8h-b-QT7eIQMNg;>G-8?jj~Oon-fLfoVYHmSJbA&rEZ-DHOd-god#`6 z>@;Xy*rvpegF5khEbGEL@jER&Wzq;)gfyb3EUmAU-#nH@v>PRjNaLQg9o24Bc2>Jl zqMt~VMx00#`b6UM4$_G1tfw7LBtGr%92^T5`Wfn32d%%r|M5G}W3$@!5$@9tZTplA z`Cs5Odly;BkSl>>vrfy}_6g28EgPE^oO3-vsLSysLr%*s$G7csJ)sWgw5%@Sa(rFF z^@JPrUU4NuN`~}`yAoKJ;DWv!?~>3fuIt!3(yn7&SaBm^PNiV3_;V^V?7ZvP8KfDN zGgvc&WKQK=lKtQu@Bn>oWhPDrI3wXeeB61J z^GV)R9>PBe&L{0dJ^>VSZ}Iw6y=7toA8qvEyq?HUM4zg@coRY4%*6W<6j=`5Oi*O+ zSe;YV57rlaS2?q47RlSnca?`p4zuSUtA1koC;XXJhj13)E#Me_th$W*7x-h!;hsy^a<0RIBJRDa~PsSB@8oq3h(LdDxrZtq=5yTH2g8mOSlx!Mvv0Vf`oK;E_b z6Z`taKD(m3k#xgRR2QITR?lKe0T#eF(Km6eIg6yAIuT4{c2@Ol)GU0_C*u{sCZo5| zH*<9=`W&3uusP_n^fO$?ie7`W1t$7jX6mb7q3WxxDX*w8VXvyU;?E)9YM&@%W^#2Q zx3abRN0P$oFW`w_H`F}zkD&02@aBPH!jH5Y_^GO>dKmf((2sOJc~SKg)O=86-SK}y z&0{}5fm5oJaEF22aTlPcR2QQbfK!Y~*$Pr(v z{)7CF>R-U~cw51(+_$&PT&O;Ws^Q+B1K*&}gKy~#uyf!W`fJ!(uz~)Hezy9s;~UiG z^4I7wVVlceRS(T;AlY0#H19S1uwz4Y3jUa|cOEHWW5OcxhURT9PoZxvj~bJL`(=x$ zG4DLir$^+aghh=xpDwaUrXpE8G;bj3mo3ag2e$aK#c{9m=}}__(#71QjEKBR8IgGr zdBH6PGVw7Z7(D8A+-qQq;1);0<6e@m^XZbXNg3zUQ)7c$e9VxJO^yASF(&q?S8$8e z*fDrVy^gWs7?a1n#>9Fi9QE={IOcWKD}^*Q_JO}=!kE|;y2wJ~k9jRiOu=84m>Me` z`@p|vm}f%Iu+VtVge#fL5~X9S1FmEWtfKpCmnB}wtP1F%y^`5O>kn211WS5oN5=(A zssjAATN0NgZeefB5=Y04!aLt?RNUyeEs6L1Q)2J=KLF3SGfo>7XPkDPe;v5ze;@BY zxA?$+rN%hzT)UN;bM1a9Fix9h7!@}>dZp%6cpy@4aR9=LT{L6_(8K$Gd%hS zjoz?Q^JVn#=)#;N)bQve_?OZDnDtEbiun@1kbn2+6%!DXgdc#@E2h!>gC;4u(fkkn zy*UZ@y}6ODH~eFsYS0^|vj5$dfAIb>Z#PcG-EG-!Opa?bzc(kx?Y1qpwiC4zl^WT!#Ieu_z z7wXEGF7ZC*&hg*IEH?OTr>~Hts@)OC2u2FLjt{$Ox&8%Luv9p*HSf2mi49oE!dOJ;N?^ zcpW8l4|q>7H2z|T`SJc?ucPL}{KJkX^az_De>}lItlaQA>OzN%kaB}qGdF&Ie7Rw$ z>2=gl)7<#i`~mQCZeecxJpB3K@r3k{GDEqcjG1ynT1a|GMo1bp)9~I@W=Id2S(XN$ zSvJ!!%aCnJC(E|HH>HQXcf&7x@0M*z3wcmBvuu{(0p(-<;P&2aX4wboL0PEfL79&^ z)Z$}aY#3|#;P#+wEKaE94`rxjvEdKpVndAKV$mPU7{l90;l7O=YYDYnQvRX5Sab>X zhw@kRCHNcsw~-BzZzC@$8zSG(cN#8{?KCvtyoqcq7;9-P_~16yGS~8kxyFJlMRh-jRlv?bS55i^pDH9H*U!WrKQnLX?a{G+?SSY%S-NK zwnb@~f;R>AxNHF`*-(t5v@Ea`+q3UAFD;8v$%e($C3CT*h`h-1y=IDK5y>Ur* z=wNgtbvC*fo$+0ayGGA4eKPDE?Tou?^iEX6v`>cci4D_sjs9d9mKHwI(fCDL!?f^; zU%-c@9ailc-7xL-w1#P4q`jVYSk*x77`X2fe`}N_5?%lnu5uZc@jJ^dmG8p2RQ?BB z|LnQ(bL0DG&x^lQ{xA6-VE^o$WiKq3%8wdeSj6<7crPq}mWzohm;TvD4JYmTFZ92r zzsjpzURcH%|13Xg8fO%9>m`4ck29{9{8{cBe$sT5BlHbFYM5;C4L`!l6{X{hlP#^n zeZwW7a9cCg3KVQb=}8`)0oGRG{jCFd#9D>B*;WJir2^X-uNp>FTs0J@ji_jAY-gTVwgO`{jatop9G+2`isA)M5!6%6as4!ezr< zw#)3}>x8h>%LZ$hB`nfn2CZz7oPD!V*05@WIc&CNs@WPQ9BbHA^Hhc+EHez%hS`>B zs0c8^;$+dA#oP>By;+Yx&75tRVbGh$g4qT+u5k2bxuu#FP8K;>4R^AfHfI^eGV{tb z){tfRXrImkKN_l-s3$43z#ubb&*pst6N8tE^1=a=D@dXR5)#g1p3#>V;$TcspE`;TnbJ>42 zYP@+om}4Giu7*t{aW#$yC$hP6^y6^*n8s1-jT7t>B_=BqrC_PaWVmB7@u=Og+_68hrKUTU+ZK`B#_43e zi@IaEYw5>yy6Hdqes)YZ%{Qx=xNJ$szigRrPB(S7ro%d0FSFtbbr%%sDpOa$`R2~n zYnFxP`DTIFEPq?Bkzch^maA5w>Zq&MI+8j|kR^~VFvt>&zG^*Y4x%41*IAC4kC=n; z_v0Kf?}zU?F(_G_2^BB^H zte9hb0DowHVBSZcY_}d#!8G9cFS$ zR56bfj}TZKrH`2sby&ApSB$@yyg_#aby&BAIsz8s=HtFWHR!tO-{^u8ilg#%`k3OV zpoDy8rPLBIC}A+J@P_CHqlTac>(0iXiPy&nJR5&idp3Ts&K=KPcU3!>Inmv9e^Wzr z9w-m^5NX@6q& z8rV$diQf!Y^y@fvT2I||(x0@`wO`Q%PS=iSo35PzPSEy;{iLk~EA486b^zW0?Z27{ zI1}+EqJGl;jJghr*($tBcooS+Z6LD)v<~n<@L!FC_AkvuZ4PQ86FGQ+T1Pww?Pbal z{7Z9LvqiI+E^v#+%C<#g18tgAHk&35eOXfj)}U;f3LG1}0{062vc^#>`c|A8oUP;) znshK-)0Zt>(+~X>y@E{i44ibB=oy;+V1JD(TYrrk?sU6106sty2#y5@;AN8c2L+!_ z&mtLM?*lZ|@GNi!JyTN&pAKefs_?R4Rp53~F|l1UQ?m_L1#YKr*X+QV3C_~oL<#pM zYKLYg&Ma^?`j*|fg}Q;-M!9QmQ8&@IG`I2HwH`RPG#*-^cCl(FzUaF&bHF(o{$vA~ zgL}vB&4uS^=4vLPc9YBj=fdyU`#k(fnt7UB)E@k~;5@Rs=-uER_R~yzhudq$E#A?1 zYVV>waqepFk$PyuNj$Y)_;)p4+IyrC=x|W@kt7kIr#1}FL+ef#YbN7{q1@QqwKp_j z+5+4H{BUh3i5ol&Hd$N9WCR$Avj9C=yAZVioUB#gg~AJ9aw=3iAEf|=4xvK9Q1&(t zPp)-E30{kGgU#fmaO*=NH(|pvbo2{Q_2NZ_tH%19ctznZBL$y4Fi~gV!K0 zUWIOGZ{ltPx8r)_-_UyNZfe6xJ#`T{Ub=9)$eQDO!<*~E@H}}%3$vq)9;TDy$v}}Q zn399SSqfW9m+~6D6kMwN8b=N)bVpIbJ&HO4E}?&e{}wLvG4xTC=*LLjz>koBqbmRl zxRvhux404TNHCIPd#iiL>{}Aik28A=NAzV(eFGDHnQk&TnH9%%zoC}tzC|sAf6Meg zxW~cY;Qso5*q6UvxQ#ge`W`s{=z8cIb))e`HX83Y(%;E{XAeE}JxLpN?@^7qp8EHA zzw4G$?{z1@6Y!q;UUq-Eu8>>)797JWv2qN_Wb{yuZZepH(}UYc0VB~ZxR;UOXuT1y zIqVkCUvoR&;(0VOJBn>I$7a-Kf%NPRL> ze)jH%E`yB(li{oB2GV5ENH60TkCQ0_xLUskT?Urx*OQ8g_1tE;el2_rSgv1(V}Pv# zSL;vV9+sT4uRM)=N`Kn!c*dR57sYzUiR>euXWU17c7~a?`ZKKlfwU;LD0W4p5?ZBPVI$rR(}qDj^kfP<}mdv*lVi8RL803$V5L&c22(m+`zp)r+1us9z2h7 zm>NLd3v`%jLYv9WJQo}E8|fRE*@!ahQ^8c8cQac2XP5pySlucmW`{i2lIY*2|6`IO9I(0`wp4{UrRO?j-!AZUtxJ2{1t4 zn>2v^^wuv&7jgbA2Ujrj9lS^v#hF(K3U3Pa9VnE9ngR|*wd7nJ3Pz#%0&cnwPD|Zw z?JaE!uqFDAR`feKx3xPsTW^84wRf~T?R_WC4(&`{rMBB~Ca-ccab{6FL80=fSzs_-ySi^iFU#c*m}GlkL*(w$JThYPWU|&K};^<}q=X zY!|p2?xPd^9@$-RH@X$hU2QAfJ-7sQPkWzq4_J%a8hwwicD}Eb=%PtmfvuUFV(-5A z(YhF%)}SwLF@7`{L*lD@z+N7(pBP;%X)Sy&YA^4$^T7p7e8!9~spt>!9%w()iT*3; zUL4VX<-PqgT^sygwfo=?wU1!Gg8Q^>b&t?(bZto=X&>V}!h6irKJ6lK5!VL$@b`oJ z?P`&>2(O6ihebGx!Nqn}q#cSklhl`s%T^o$d+8-Hs!lhdUo{ zKG$GvbqRP0+`BfqT%0_-JWUvt57uh-;?=S@(HG#(hb_=7B+aw;JoqBiUd^xQ1>i!a zAE57Rnrk0u9^&jpKeSKmBmEV=kE{jh15FFg=&zad(LUmK9%>$OTVHFx!Fi;4Z0CnjhqQ;8`bMk5 zSAx-ODs2oH!@g7`C143EMjMM0%l=xT)o3*;hKXh9Z&4+%Z|zwr$v4^~=)>SQxXa0x zYfHgnC^2^oeMEZ{eiSYyU!Y&m57A%Zz5vBUJ^4%UsP;MDA*!?PCG`URQrksW5ATBW zoa`XmAs&YV^d;I(y3V@i@TaIJ-~sJ3rVhfMft|>n;kVa4<(z2GS@BfcLH7*Z0jHy` z6TE}2BiK%tNS*+Sxi82QK`}Rs{0p#yZaDK|&2VmWm@WyP1n)?FiPIVEqMM2m?o`w; zoer*tC&BdKRNXXuEovD1)PigA#Kc+>4bB(buEw6NVyYCL$WfKr-Ie4kb*sQq-47%` zpfox)Dna)@R4M#_U_3nmOyE2(fyd+WN3eBqur^=`{WE$SUMb>W;tyiS!ByaYnJocJ zP)aJ6*B&KU494jGV|V{UuF`#vQw;ux{vX|0ytDN0>F3zTS@6HQ|3epp#k`h%N1viQ zL-IZNJ?cB%Dexrt9r%%cN_QIPH2MFbKiQp6=#RSIdeQ$S`2>my2mM)?gZ>QJ=cJ!> zpX-Ho#6PQZ)Sn~mqjwN9bKn~CbJPlu<0z4aM5pTjcjjumFnTgfcE ze_PpXIO$*pdb8cxjM}8Xh`Im@cMHx1eUqsdd8co}d;LZICEU&67F=iii+bm&mqYh zWUwdNfNvldX*s$aHJY>xU4|MpbwzX;IyQO*S5;+GAFIl7Vxzxfi{*-IMf861{n3wA zWm6BJzC*8wK0tEF@?CVdnEmkgMTac$T&cY;Vm|$S(GRf)qVr?B#jHp-DBl<5#^$5H zi_QfPS#o0q%fs8FGALK1ALKLI+}J~wgCqy}ls1pO7?p=CM&&`vA&Wt2WDiU658^BZ z4az03C6=Y&9#t*-s8ub&U1+RT?NJ@TuVuPceCn%OXmqqJG!_~hElVu5svWvom7`^c zZYip*bqTDkbt$YC=4jc8+M(N}+o9VD*5dD_cIoztJy{+Z*dw^t^vLkgu-CFn_tf&x z@W}8O^_WkMNi08;|7>{-dkTMS*optMWjpzH_+!IU%M<)3I6t$#z4a-$lOBTi)FS#* zj-s8lJzG1}PMw3Loz>Ce0CThy8XTzEMuC&*lMQo>v)Set=i<#a{%f8M``7GX`Pbae z`Y->k`iVMV{$y8!aX*;{v%kTX5X%AcQPdIe0C>!xjB4VIoI+%ILETu_&xYNpI$Dq3`=uFUCI6)_e%D# zwC}mqE7_}!iD|>qu4E^seL=sReIH@1YEG+VZWKL@NenAn~$Re7wkCf zkohYAu72En5GA-^2VsZJSNRw9gFMOy?Od?29`A-^dt`$RC0QP0Vc8xHB{$SJ_#6FO zm02jiwtj81J%qDWS;MxKzv}PT_J;Z<+YNP%a%bBtW?rOZdF*VPm*m&>rg|qU@{(?n zd6m>K?Oh_ecZqk&kID?~Io5fVi2R(|yCg%qku5{}0nfYSwC1$NyF@r2)B&Xdr62en zlhc}w+CSJfY6D77X}p*@$LuLh6Ouo)r&!TM{RdgEQYCv7{vX;Vx+c0mw7p6l>{6}^#=FwNe9Mrk+{G{9@aUUu(^OKb7%1kBM+09>6vF!D>F+=&ZbTWHTGV~H;|4RTba3%?>E(yl$MMdyHb4- zJ{&ciix*8voN74w9p4F{#d!z5OBplhMM|71fB0~9{_uAx!_|4i#|(Oxl0Q5Tl{b8> za?GGu(l}LTWvnVrm5ZN0JeHn6JX1MVna5XAW`dc@EYwkTEOYNuj;cE=kEnB*JE}f{ zcT%0H%pHD2eG;#c^nJ=dDUE!at3h)_eN^2@KdN4*ImxU+vkvd1I+PWm>MUiZa-HS` z`UH+}--To;--YaLo25LVHla;8q3W~DtkX1VOw667i|lR4yO6b-v+QpzWx(yFHK}`P z--ejf<#+~7xo}e|OU|N3q8d|1Qvak>m8?Zol~mGqmz0z3E~%pTg#DA!liH$wUb4Gn zq~IM>K7$@=rQVU% zg6{}lFIz9$5$-8J)M{IJ_QdtF?1>@^Vm7GNE4{nwP^;{T39Utv(0Ty=p;n@ciR-?v z^w)h~>tE>yvbU(eEJrFFiy(6?~z_|~cG zd;?qgt8Ot@r}kHg>}=+3-`C1IbzrO4%D`3wNWI9tRA)19`F0F>tsKy*W5@uGqhm-y z>rT{qSts0%A)P}yhI9fuhdh$LR<4(A!0!|?Le?4FAR8fjB<&pXgc>1xB7MljBd|{W zTKRzfi0z3~Fh5nD+E2xis2@m&s2);&pr5KcUU!bfUo}MaBi@fFKb2WIMD;)#T>2xf zSs7d^vY$xI?DZ*oe9At9O9zq-(8&)B?K^F(?qN2sUt zA2PjF&)CCA*|D4vvXLC~v7D8e&!j6ee*j0wHsWmnN63E2Y{P!rus3hj2AQ{fqpXdp zHOfowE#JWN>jiqsz2xg1lRcb3h zm)a6I_cUOEd`_H56Kr$h5^xeJEhtob@X0qpZ1n6Zdcv_q0%6L{f+^dJFvKuom)> zq{-yTJW88nE##Zgn^8sbDWomrEpb}FTgsF1N8$gD`VB0SAInLWJ(niqKIgH0EyX(*+7u`Hxa4(GQ0=DwUas!v&j|)X2UjCbd>6GY^IfJqg}gH7UtgbvXPG`XDI$9Fjxf zIZ0w7f#=*;mB6!|lN6Lb2`4B$L6t+En-!Fvle9THCn+~;b97!-Zq^~z9}E|4OZ4XG z+^oE;e0V-8D1CEu4c-HIQ^9}h)PfiFFdaXH#{#my!0k5lss#7%soAJ}s9rQxqpx3Fc z+q)-DGnnX}yf$1{-9+6`rMY>6H|>3)%h^m%nCJ^#lE$9ROd5Ne*PW!Xo~3DSi(G_v zNA1b`*B$j`^+K1$=%lfWUGBgaq3)=!;9mx(mn?Rf_7j;G53TJvrD|KbbU3E{D zaC)j*sTaE>r{7gC0>$)8eNR<#`b)i-2q0~xzRtUDD|LWM^y^#^TrX+l+TnW1dU}9r zJ>L3~UfM=YPgO5gywvwniIr=G3yO)UM$Tbb@QTPXwIz;E)*z2TXuQNMxBR!T`~)LT*Y%B?)}Z&a^wx2j(=^;#uW z&gLvRhYrs>2ivONNODfOkrl61O-rP(rX^x7ELg^#!h#otH!V4zA!WbkGs1$yf+KJi zg+~N04nLm}jt&bB$BPKA=RR?-lDtd9gSWW~XPaw%QhieMQg62AJQCYnci5dBuFcUe zQ{O7zDqp6)O5Nc)KrNgB>X)h8T(>i|!_~umfOjdU`zQH+3TzZ{5N3pqSslj(gxTM`OS+O;G+MK|DG9()Rnzh*vAk2;q>>ijQmv4 zEUm|T37Vy;_?{ePD)>^GBCF>JQaFZs=__VN%W6o)=tgGUryo;hJ{RC^fC`49>*F`Ziq$qu6NMU+WdI{=x`OJ_miV{U9>UZ94JK3EQ z#jKD{3Uvuzx&{jVo4m7_DN&bnQgpWW5!P8DOq7hU&Ip+qGAm>T`xJeI^||w`kmt@b zLP|;sts~f;IzM+FVJ)PWlzdI^toYh0vc-d+I{zkLSKOJsAEzJZT4P=DTJ*Z&HFS}z zE&kfNrudn4Elzuz=!dLdgU_s@f5YCshKc?S`)hCOz)X9ta72Gj^32-7Ci-FWLpX=6 ziMB6D6S*Q1y(4J{SVy#uuI1WZN3FFhooyK2Fj5_k9@L}O^4|k`ykWLZl-`yECc*Xi zQ^BdI=hlw47gQ(kx%CCN+X=Tbs*~*{)fqgDe}sAo9;TKI{)R4a$>7CoM>cytAzfe!cY-s@~eg_R5-M8_sQZ z2D@+^Q|ZHPU&5!_rrG&4)KuGg)H-k~c!k~tw=39{JxsHep}w?@Kz#`xLB4_cXTmpk6@%adEAr@h75R4MMdk?;-K*kn+aUbG=)pMo z6;gX2T;YxKCLN431aAmRS|OwVZS$_UMh&TGj@KMM1V02Ff|6Cp>9UGN^hFhm!RF`| z^u-klY6%#E3Z)ca2-O0%q@sXY3WlP>r~aVTa4Z5Q1Q_A(AJ^ik*yv2f$f2Tf-lRUs_2Wx}ZmU|(oXj5?y zPdII1pW(IP5s0eztl}=7aN59p@jl~G8d~97aR*O0pTSz=`SSQjRbC7B>Xyxishc>rZ9m#>pl;e)^4#7ay=B|VcFXSHwAHZPL|-SrVQazJ zaox6s6*V|FV0C!cZOu8q>TK8ObvV~;o7u$NHPj}yI`l@=CVrN#!8XtZZse!03@oQM zfo0SPYLm@CZ3cxJNf|%`j*;2|3YAP5!4ar#{A7;+N22}g-4Cam?KQ6>UBPa+4OY<` za9&%F^Xl>nd~I#8{$}sL;T*Sq%PY_^@Hp;rdtVM~u>Ow!t+iGz)C%f%@LMLP;C%}& zM;F_Bv9(voGTf7cm%(b~Q>@P{CwS%S6>`G<3Ro-OEAJJuS6(X@ey@;h>n+Z<;$$Qk#yr-Tdjzfl%h-R zs+;08@9U>|XYYpNhv$bAFR4YvvsQEsUa6v%ep>FQIK%8|c?op}H1uF&FX!0w7y($`We*H*9WXyppc73L1QbLD0wwV`cx3aJn%el zUP~KLulWYxaGSPp<*_-E`|7+gZ{A`@D9JA=nalB#8(QD|d z^F5`akHg8v5xoU71QAuEie*j%V77`8D}o(zWpEsINdz@U2~W<4>1X;(LMK zxbN_%gO%`1**l)IOrEt2o-d*P!OxUs!QM%;WdBIF$+qKXf>}(olW*r)Y{&DsUA6@zC)(vmp|LF>F_l2^W^71F?Rv)JSdzViu0W1Jvh(L%X=y=pnKXK z9iCR9<2>)7(BtVqk@aFmtJr7PQ_(#YQ}J|){p9;VF?RrOKd4vyil^l#{Z-TczWMM^$u&=tasS|@AEwGDSC&k>@&|(A`!iJm_#y< zS4oNFo?>O6ANt%={LshKTOt|lFVxCDqx~h4L8cUc(Np{fnY^qi{$AEWrstN?{we+w zx(YQBoY-|jS1;>xi?`Lw>W%Z9KgH&aeny|z)!W(&Hj+Qa_RKQHI+FK}V$d7i9BfWH z5IqPz2sM&48B9hMTb1-;-f@(uWa~Zi3hQ_96}&5bhgMogfur!1Xcbz88ia1ao(5T4 zz(!f`nw!IFLVH=7gZIo^LxpN#-5Poqe$QMJdd;PmWt4R^lcU(fXzSl-;r;C*?%Bky zf4k_M|8}|NBKMmB7fLX>Uyl}}c@%oI=+WW_9;+TLe4C2L?}t9VO?$ME`*m{iZTeYL zPj64}&ziPy6Q0q*x2e(LGgv1lqeBa~&zkP@<3*oIxu4Ei;rCh7*^c`_ql4(P9Y_1^ z^Bc``ZFDf;R0NFnvvD@qI1^?&&LN%cXmAkSiZ|MCj-!>t7I2Vr?jYx$Ex;NuKEg%` zbx<)4oW@ytP%%E@5O@e>4Hy?Oo-ILg2zMNP8h#o6;O^rh<~R=SZVl+gTmV%D&T*WF zXKp?v~YZv7Kic8=nyVA=$;C0~VQI9hfZz?K4(VLk7 z_AL4zc$eh86@QRSm3O56kWT}r!Fww{xBDICJNaqv0QOdtAvlNJ$~+e~S=2;KEX14ZxDY;<$I9Ta zu!+v~kXyOKTzEOpqtT(0Q#rWDZ()-ryWL*1j@gbju*Yw;!)pgI zu^Lb3Iw8R9yb@jxmOD#18nd&>`H-8=RiMea%yU9Oi=k%c2>}fbErynPnw(!HmwCQQ zo-Q#to1HDpT5!zHWKGR{DT~Fq!Qr7}i=i!s9*r$)+G6NK$D^?p{NEiL9KIu24K_Hu zO13!fVCC5@jts+ceE1g?rXq7cdcK|7pxf~#U0CHn?7 zO7;)hH|U6BRm@Rp-=L#BLq~aj_6^!U=m2Wppkvel(135Gj)4ZM56__iG~$@xeH4Fk zCVg(lKRKI3(w8!Uf1>`P`hwHsf6B|Kzd*hoM&60@ZW>sIQx5MW-^F>>5fol$svHz* zH`N*3DcdE><{aD!?vm}6jkEW0IN7pB-p|H@*|_heqQA#!lveRB_m3T`cu%atsixk8 zLN%wVL2qgu@3P)@TqoXv@mrvpOV?8^!14L(@+VO1!D{IYylVC{gQSIYL;ic|2l#vG zIN1l18Pb+uOZ*x5Gto0q<7DGW$8qGMf5iJB9WVPR-7VXLvs>0#F8TzV@i-IEU2r<{ zIEY@0vq#oNUQ0ef_KEeM*uw<;i6j$oy2!hd*2?yxYGqyJdzm)im4hPdhGUQ$VO_y) z@+F^cnKvoS_yZJI(f#RSA6Mljk+5eA zll_>mfEI-nWo4$n;&+r;aROz5pRi{(k`s!PcqbJ$P%-ob*+=EK z_vL88DkY~CAK*fNkW@SJw3u&dqic<*}{Vcv!;uC#F z;S+t9DT|~pz7_OgUmc?@)Ccxuk@Ugq7~O|;eI>O~KCnGeec^keYNI+vck$@MM2g>@ zs4gBUej>Btr}zbQ-xIYbDxkX+zs^0yFU4wMP*t_x%2LuG98p^BmNQTwCzM=gwz4P8LGKT3wnpUjL_ z4EslZ*0GFRv4qIqfJpJ@HfRiRvV)huyS9N0cN5bVWVKbDUP$k432`E z=w@Dtj>C>A4h%X@jfxUkGPB97F-091G?JAgQKO>v!w>Kpx6^qf&L-#NsGZK6;K@-N zoek)XI2)bS$%ZI(vbb%t!$$Ir&SnR7vc+K&ub>tOGhLmma^FX)a#tsxbhJ3^H@4PGayOxKgV#_zW~`(qot8oYYP zX1eZ=?F~N~``B@R>_f-L_K8BL-snOnk$JjivU#%ahmMcPzjJuxDCQqyPFj>(ZhE) z+ucm8zvfaCy1QAK`zxF>cN_cM-K-{br{7M$GIznY!l&W$^+E1s?mPX;-T4YF`qt3) z-P?CBhfQ<0aEum?*5(@LU+&(%``(ULbS=2IW1N2Mg&!>-1KU6=T zy&WygH*MF)$E97IfBWuDL6>%0LtWYl-j}&PK7E;8ndedLIKJ_1uvkt6nY z?B_EgZ&GOIz)7K<0y_up?HD=Y*N(Lv_jdf1Epo)t$X`2l>`)6|8Yz0m4qII#M?4K$ z8rdoEX^_aD2X*Z5H0U`_#|~Rux4L%h@H}XX>lW7<_*T%Jt%mcf#x)h(;(FSphDx=2 zsr&;*8pZjDcNX`oi%?S6F`T1gI7_8CGA3j=sW@J)sgx(WkH;9!XfIc9lsD)97^i+7 zUby}6y<8u7d6V_?c;IDn@OHJin;dNJDtB-EMs7bl&=gtP|o9;r-_b+PlP4~~8=ljq1 zpXXH6q{gA#K3(G=ym@%@{9icEbNbx5zUzGd;W+dC>$?sY)BbUhFC0I2-r`W-wZ>r! z^TYj5JItfvBIo(%x(sLTjKgV%;qWuy7KbFS`mRY{xi0lxlO2=1gidzMb=l0?8i&me z$&OnbhB?(Z^z|6#)R&`Ik<>V-TxxKWoQ65|@kpX%u3tE*T!uM)fs^Ev+&;-k#`B%r zUgla%lH^qED%`U!XYfvgXI)0NFLq6Ce}Mhq4c_j?|Q*y+2=cT>xqzW00X^4;8WQ_IsX zo2f0X8}T-^+=#QeWm@FsmRnq(2c<=Bas6+|Mx6hK2v^y0r>~e(cD&!yD|{oaSGckx zYdroNk`}qiBaNSljUHa%tijpj@hoVQ$Mc}4LC^Rp+2FC!W0S`Q>RC`w$TQrakPYx< zs-Tdk;M1T^f$toHLYApSU#8j{v%w=Mq*LG<$9ImCLf<%c3JeN)=Qy$D#Fl$wfjk&=-Zp3WlRhRVvKXQ-L z8Lz*|&Ul@s-x_$;AwTlgz%yQ=zjYkn|JK0#$Z`G0_aE0kKl1w)XS{9=ygBgJz;XR= z4*b4_=;QnI)o7@3{U3&n@Bfzj|1j*W;{^N%VGnQ~hD{3n)$%ZGMBcBKNudwI9)?-N zf3;Y{g)TnS#6=96xDa z#s=d#@ZJ#2yMxU1N$bfwMha>)DBLmRDWG7U@X^*15)~*W)VL*}aQ+YW9VoKz@%|4K zSt&DPKu^*WxW9v9?j-pMP|W>@IW<^H`UbZF{2lbOy@9>OIRTzTcegv;ZExYpsJGU4 z_{p|W@MJz`5#1lRJ4|$c+dHe#WjCy) z?PzogIt67WwSX4XRz7*MP(Ru6HvP8kj$K(vf3jKef5Q2hx(ixSHtJ{aXPjTCd!SGi z)Gy#KINPZEpio~?+rVu&+o=bjP}8aH;C7rH)I(6HN@@qV17|1o2;2$o!r5u7vL{ur zUAAh}POut21Ha0aMOE9z+WT183|ls;8q6fmV*iz}EWCcU3{)mZG94zozHC``KhxHS zEfbwip25BN3idgy4?P2xhL_I0u7LHnXK7$>TPj`}kCF`*V9!#)0NWV6RB8;5>KIrr zHZdVoPqs1W9;lx50NZ02Tqx(N2O^(XDeInbZVwkt5(Z5B8a90%V^-)ox<&a#cinFSYpJo}q%n?Rp!n`7^RIOAcW2XYH@ zY!gv)Y@IVFQaN@NL^1&;dJ|>>VNK9EwqP(Am17%7&#{g68AvUNABY!ha|WH63?^*~ zHbo7zEr@pkT~G_+UFi$r0|&d>0tbhE>5AuKyKHr_x!SIPSFD$ zv){8M=WD;Cz6Z}y>qyRl-{DMf^a)I!tvyrg#BCCIhO>T_g0;W1qUt|b`@j)hm_)$lx74XdJyUp1_$)l*}^DpU?zH9QEF1Lp9~(i`kU z>A~JqnMq%3ppONG*B8eC3O0&&r?Iu;NWKLH`291CRlx3AlYiRHEO}t{YIJ8{Q_%OtJVE}Oc3vhqf9?0 zsQdjlLEvije-n)HKPDLB|4WIUA8CZIR^RAnh~I$P5Py|_B=x@uKau^EupwSd-smUT zR`u1M8}PQOx2l)>UG2GA-4J)9Uqjq#j=NR84X-|KUt9xxQ^Gd&PYIittdH|e-xpUO zw=2&#y@B+CX;)rbv+#V={n9U(_Qm<7`=+-wUo?q+k#w-Rt$9N2VDqlL@4*SRAEF1F zKV+h<`TN=*;D3PM^X!Su{J}hkWUyIuF%!bnAn-%;Mw}nav6&kk*(kh0c%#Te%$H2w zmW^Z=O_xk-IPOL8XHsv=&rEDI`=zfjt;Jt!x?mb*{@Fa*d;uNe8bTUMjRr%gORU<8 z+RBW#B^1`qp~}EA_$5=Q`A@1Hc**pq>06F-3H;O4&U_jEttr$s)O9UvEiA-UBxcJhkYAc_+Txg3gW7SN#W5mV6yulnYS7}C zMKOzGDohJw7XE)$3HM7o#Us2a;S`VcqL}yDhhN(Jcnf2?m=;m*rwO--{8T~{Gkde% zPZRFmtfqu6tdB75&FW%uGj%aVfK3T|vwSrRV?IPJjHxtzX!6x;S2wY8JI^dXjjv{J z*4`{PlOL|Hro4@>#t+=4-mX6Cy^UJ#x7_cj_i^u|eEL1^yT98f%*~$z_xkUe@Lp^|H7#$-k(}P&bTclKnJprW?jz)Mt|W z>dqwJF!t5`qOOZu##YCkeo@Ej>f-w9Vjb>EoLJqD+B&iywJYI$b%BYo)Q{R#aVz8I z=B=XUu+8O911sZv>2veU+9le#dA^Qr)-FXY&h~PG)T` z$x=|L2dYQlBh_AYuJ)no0oy~Iz3NA*di7p)J%6&Zxz(#TDjwmtZvBX=$K8WduWsF1 z^gZf<%^s>+wQk+|p(Q=4agS`iD-8xr$3%^zCTiW+po3$2>Y{ALZ`sP`* zW>~)Fz19}(5X~(rAN0-hBk{`{qOoYRQ~kJ4E90_Lee-@qt&H=_iyS&clbu=(tB#8t z>W6=-O?K+3Hq}g>YV)J^M4J;}VB(23C)=EA6PS1seX31WTy@+@P|Pi6T@@(S=V^wp z<#FW2ajl0&vbDy`(+tDO2e}_Zx5Wr&Tg))@;qdpkUx&kwgl~&E>Tr(691dqwAHh4U zUKhFtCU6~pdOxf_9A47zu)3t*y3nIBebdEc-}I7x1DmZ29qu-;*>JZJZYBMKnOzqe ztRC(*+)d{^f;z4k;TEjE(POyVjUGDZ;qa1vH+mdb=$w6Ytat%}(_p<1Vs8#&_z##Qnyd>b|=D#=yj#>I23@#{I?v4(BH9hVdq^ zrv1jh@NR;_aW~yGy7516Z-5cvf8v^yI5&+-(_h92Q&)%66)%G8i|8u+uBL7R`TVDl?bkw+A~gv5meJ6s{F#tJ%l0jdvIyi*UE&mV;JYU;J%m zU(0s5w(Dtz!mUEB#*(zs3pc_@PmeB#wErTICXe+%sjR%Gd=;Ipq3dA8a_5JGk$D- z!sG$?eo%OwO;0Qzn-3T|n+_QE8xG?hhVM5Vq8H^Ha(IUf^~S?gXVW3PdB#JAdB%EU zQO<7tJmYWr-TI=OdgDCfKI3lvZ~8rWyY)e)-LN3jJY$e)A2WMVzv*upMBj(M2WKBT z!nhY!58tbgFxKlg;M_FaFl;c0EDtBbxWSNT+{a9#es<^vvR~Y1hu$#kLqEfR#u4iE z4XAp3p0R;_KQlIRTY^lD#zy@aBQxmh@Li}zCU@x@ac$HYu+g|!q_D+IUN<&y&-OX6 zf&1Ip)L?vS>1=w+S$tx7%9(6n<{9`5b=~;4<`<)Gt3_p-mhlSe>MMV4kY~rCGqV01>AvWb95VyWDesMV|8E{udFbfj+6})>KfG% zw6RL2c7h#AJ5e%t&D7C+o$3T$HC;2U=aqWZf$Mo)ugBRyT?d7#rZ#|8R5t9oX(Mcd zsfOAJW}|Yb8Zevc&Q&Daf!(><)=OI7o{#tRcHh*;(ER)^=Rrb*fIFg)Lz=x+GDBLxyIkf zzs`03XzDBUYwauca6SK6>Oc9v8((w0BgWs^|1r`NiesrK6#wMk!#Tn+?t#A>k1}=7 zcpr8j{=3n~bdT()vCRFow#@w%NAWTF;`y5Hv*HzAiQ<*EL~%lK)Y!AXP-X7r?mhdL zyO+7&H$GtH1N@^#Khp#D=xg$0-2>z8te*Y-O#XQOrrTK$j1d~K=5|(urf2^WMY(&a zq7;nKl+Z`A?-H<75uy1LK2k9;|DXI5pztnJe}Y2!QJ2Ag@+ao6)K1Lz%P-J~UZC;I zzpR*-*ID}y{&n)sTH(F%@XMc<_r~L_<~q*x{Ik55cGj-c)@d(m&T7u1&hy@S1+2|H zOY(>253o*qR&x&T95a8=CuG!S3MKl4jAQC^xH~e>X~t(v$QYk-4n85{xcZn{DAA9r zFRG4FH+tOYaZwfTJU-(n-f{IM)kW2D^-+4f^F@`Kx&+2MtDQA`vWN%O&X-iNPD!xt zZkJTK>R6|v>Rjg4&aqDMP9l$Yign6W$ANJ;x$NzVcP~Sk2fA~QLjCUGG4=qSaBuu09BN6fMe`e zFXJ{fg8S76)TzBhPwjO;U6kP)yVPTu#}H?sd}0r%ePexMmwBZ2a#IX(UgqJZNbThl z>#h*pUD4BNDU(Y*dUC&eIQ8V74RLl;sPKn4=dlfO7CgwK7uC}#59Ov%QtqHowy+?N zJm-WydCs=5gg#->L;?(qLpB=M{`4*nm1k9Axj@c$IOI`$&z-7!UT3@%oD6(T z>nzt^IJ5b?uvxAtn%RoS{H@+>#Vo}vR~MIeO!+#$b4I()!JDm^!#2zHo%1aEnzn1& z&QXMSn4@^-9Nu9~+wcyZJG^uDg!_WR`%c@rgQxR%TH&bh>Vj0xg4G2*c2zlh;HaD* zyNd3?)OXs3q|WT4A*nXO!+AoYa3&-+Bt3S0!iENxtTN&6q#w@xPe1a131Reqye}|s+&oyQJDr_a~Ya6G4YA( zH5ZYkCJ#)!;&RR9iR)w6E1(>9#pN;CxMo9>#x+Y#9-4H;*j1M+ zE;hIf8{2GLGh3K4#Uo6mP^Jji6IYqy>0o1Rtn zvtygJR*YjGtre-s*r^_Aa6D#z5*W+a6be~v19G_TUN1x|9-_enw|lC7qMn!6&%yiUJ%xKT>z8*~;n8d!_$U2|`l-(LX26$N9Y3Q*~NiwC1TgTJsF{ zd9$Rvw7evoyk?(~e%`FFQxfiHj{b2=;U{Q5V=oCXgVVCHjg1}$9}muRbyd71d8u|K85{jVJuX_P7wT}0i^5saNfXZg zj-|g;yC}jn$I@MJBICm~FV)A=d*~(?M#gv2OfKxiE%-DV>$h z-rOI9lhXO)mhLEnlitZ4EV557R63tDE1liJBD>Ogg2vrh?{w1a4x3z9WbYOq89%wO zTYQoIr1{wBZt>mGkzlw+cnc;K*^iB0FsXZdw|MKMZt)8ySto^Sy2lTmbSynwGZ^1G zDSMLW**JqI4an`GJC;5mcQEb&XVDKhXR{_}QV-pL+^k%o8mSy`0BXN;BXz(zD|bNd zerM|>iNrc-0lkMVD>p_L!@caGTQKP(oCTAPjs9rTKk69WapQ603-v$htlX(iF*=>w zaif@=>ZEgfp+0Ur9XHh}E0-S~VUKMz-O^vEPsepjAIJGVZfuG>9oH0h+^BOq9hc+W zExlWMj`O%^;Z1ivP31VhNNI}Gxi!VTNSW?>&vjh1$nUw%W4q^ipI6d6@E&v7&Z1{K z&qsfiay)E4cpp79RrH~$+0Hr6dTP3>9xvNDn9_q^r3_7N+iYlRaB4_1(L;DOf5opV zC8m6p(zaP@BlHMu$XnZ)HY@%np@q8B{ApCSEUPFJ)p%Z)IkO7K%!@7I?js ztzhpdS}ES+8X~-4Fxa8qQ(V@zrc#sN!yTo2j}q##_9}Q)JCG~sRc*77%i1eAm$jpG zq9>}FgUlfQ60M{2PiWe|7zi0t!c<~7KvY(_Ey6ca(Ddy4mxEGYU2 z)vWj<$BLk$4TXW!`ofQjn&Sr*Z7keS7zE#lx1n%2wGkYK8qU$z!!{O?%p%tp8ZLqw!+c1bd42H@|1~Y{XM~OhKkS(=J$#f}TwDV7=%)3wn{nfV~U) zI8;x1?}EM#oI~#g`)%-?g1PWH+`_q3Js6AMm!uD@FFFp4gU=(;Cxh2VROuNSo9++e=ID57lJKug7Jz9g9Qio7yMZGlh8#!Ip&J-ekv?> zOlXYz3yKR;pXjSwc-g`yA zW^5|_6hFA=Gn`gMpVC_ueL@cggSmxn#h;=6gKEhw{txI{{3*({*p2>ikyG)1c)d7r zzg&txA$KWur8^Zn<2x6-fCZ#tq5y9M*o;?NfrAy|6rc)=iFuc zph`HFYjFdrsJIbT3~vPYp$owVdOf|6ebs}VOBzt&CHqj}C7tP=O6tivm4wqfmvkZT zQqst}8KmJQGjTeX%%F=bf@C@>ykt7n33nFmEc`AdH&8Q5ZlY$wZ-Up+)4?0`X|PTu z*HF{J>FC(f8>qge*U^1TW9e66!jB_~E4|6OtLUjEeM+yv`jqyi_b%Kjk!f zZs|OddEACr{3di0YA)#-@--<j8V`>HZDZ;I#Vp~!du!Z6+)l2yn-BNKQp(Xl8!nUNP$r0>jX)?!5x{=@%vNU;HlECd8 zX{&ZS$61=}6kDJ%U0bgh?XG$+<8wrkCarbL&J za-Hbqy76B1iUwvI6sx)C4T>|R^$K%h73?f$ZdeCZ$b^W2X=sF^yU{wV!~nyI@0 zUVzWk&4SO=mDB%&PGsGGz;c~$(kxt;5Z|N=rL%MwOI<>e-F%Z=codS|W|5vwoTWRR zc(K$sDcP+l(Ko3n@pPhdNQzrBTPjYnTMGSjVpHN7{GHkqw;KsNwaz@QZxuVWZxwx% z0(&X@@TspixKsO1lj62h+ei6M(+8&wUK@Cd+dGYd)e3DYtc}u{IcKdx+glmhtPOK* zn}zaeGX!jd^FC|dXC@SFTW0J5P5N-4)+iH`CQsH{Epx&Wn^8t|FP? zDl;cLyXt1(1v}4h4R)5DyYzL{xv)ldR)7k)>>TXeilh}zm%c7Kv%;k4($}nTA$8K3 z6lR5mRqW=Z|FUg)HTF}oDM1PiW!T+LvOXUUXS%Qo9OVanb zZ!TJA?fXiBE?QU4lQZa|eUjKVMfA2Q3iRltRLW&OxEf?HnX$O;6aNyHdJC zCudzLy<9py;Yw*4`@38!XI0?*iMm{RCb3NSC+U^aFR6;GFYzyze!+Gb=Mwp!rKfpj zUn;#wzl8H=>E~>JGI0_08QUfFr>M_(rCo%5LjM%?d1*5I(^8#7B{_OhX%a~?ue?vt z$;_lsUw}!dhb1ZSRO(AG8TV1i!;)k$1^uK%^d}_`N|Kn=vEl*gqmq?T_fQW?64~QD z(uXB=Q7fbBq8^qAm0`)SJiwV@Oe9U<$TN%?meAmPB{PioN|E7l-}hUGs74f z{L1}K$=#B9sCis-W*A?(-$lQ4p9g>C{?dIees}7ndn6bMpG$S)S~b^!-MGGW!#P+i z`hntZumkV|#rumR$OP`^lR_i9gerC50Y@+8GsS`8k?;e>2OZrVrxYf-JD++E7LRhM z&-qOBS<&ZwJ{no9Byk5nhmUgf*7)xgwdRwQviJ+8J}>$LHL6%essz7aKZls@UUG=z zbmv|iLXXB71*(c8OAezC6(2@LmK>qKbU)&7%Wz)6U%J2GT)cvnlO6`k@Jrqk`bcrf zd!x}F%zCi5@?!n)GCcioG3AL@hT}=%QT%0*iu$6+1OIFA>ms4PENTO`;WmF+^mWl! z;8zaSrs$ZlHT7%8S4Cw*+TfK9IcD6M@oR?gcJdi=G+KD0hwNl#sj6(q=pki8Rs@s{ zS*ltQFnY)&rY149A|O?{3!cjV;@g$6KTx=-%AK$jWva3tpIB4C#=unN{=j}Xje+|E zCuK~|5d8q#{=mr@A}?-U+`JJznf1#9CS|M$SRNqMuW`!*Rs_@qELGLfCzE9=e~p`* zk*Qpco23*zOX*}f5cq3caq|O#PNrYuGL=DHMc={pYg|xQWuM~aP9{|!C)18NC8+9C z#L<*sKV@-q_dd!#sy-Xc{gg$`H<&fXeoB+Mh}2|O_HpmC-n;>|o-&!e;x)z%=JoUq z=KTd4qgVX?0&+(Adb8D@K)Q8gLc!LNu>~IS zNwQF$^d#9MzDM&O%{`djIxuk|qle+hLi+Yp&md(9SOUa${(o%YjYAv;tRDEuhs`~7RyH)x&yQS1Z zYAwCZZh?QR)E&h%Y)9N}DyZviyj!I%)NQZ@S!dZ@a*;0BM89Bjk#3hdOA&Gl{MO_V zvhXfa&R}QMFY@iuM^3!=xocr*5)(`BxWjp==rg}9!@UUdC% zFRl#>ix!c16)!4USd@dKAD%N@KfL5Uvh+nbp6Mc6%*8hBvsgdvNxARZ!Re$JI)6r z3h5n>l>)~}iuZnJRY=X)6!1INch+XoE%1&t-rGs)9_1u82X9+%;amo9)0;_SDu*a9 z!~et^q7+^w|J|_)|F(7Dn1N$%U8U~S_i_@vyHrauRlY*E zlMV$Qreihf3RJ;Uf_uy5k zmHOR-f1^JmIbnTfJz-6ijKNb z8ja7a=ggV*Q_^|!Db}0=&zsMijmDSOO#3!r{oGGV=}KRBe;lFw-P4ul%`dDktmn-yt$wHswshqS z_-M(W@^jBnegyki`bheiZ!TQ{rrAYOCXJRdlx1Xfcy;tLdOyA`HO=0SZ%!3nGVEip zj%mR=@lC7!?8%PaiSJwOB){T2Se0NGTe7_X-AOJ$l}T-xDv*=yeW^Z=(6 z46#3u!{t)x1z*Pb!uk??fVxAKfF(Q*xzsZ-S9-={S3>_;&XrO@k^d||pc~o81MrUg zvutp5gPbaDNBt~s#|g(9YcRsb8v3Fdvm3L+;VD6V;RgADRq)2_bZV?&oI&()hOveN z)_SYx_0|JcgWLc%;G_qQGd%Phhx^boH7F%0Jt!GW4SL|29weM}*bjq~arWmV2mLU3 zgS*In7@Qik!M!nOf6fnsUxAG|N$w(RL?^kw z+wf;N9pq<}UVfVMZ+J(rqbyVhdCC|)WggQ(?kH~nH;kDw=HKuz)W7UO^mAi2jOi$c z(Wk&(SroPsxk<*H$k{C@pCmC|D=Yd#U$QJ9&2WjI*iHUXq#>TAPMM4Qg#2Jv(`Z zlZSiW9;~rFLv`|ehEm&pE!8k_Nq*+}Yw0CfWPjsdlK&>ZJviKRwS0T znlH(rx$ZWl?O$_fu9*0e{Ehiv^RK0$xgjJWxnJVGCH>d@#{8C~Eq-Y3TY6}&uk?mV zU+LFUHRsKjGxyf|mN_4|m*gq=fak{ez}{Hjn0?W2tgNxVMV%YtUgaaXSG}?NNMW*j zmC!v=J*!BqVR9i}q1>~|z3OdvAPLEXlvtSovRT z9PEGAf34AA4A1_$N})WMi<3Q={nz?G>pzBnDG#}>@`d4l=of~640V<1sJcpLReI$= zh8KpH24|JdJss^rcTpv|3l(U3K^ACwY0$YRxhGQ_!1PL;`vkiVHo+cfO0OJhNUxk= zAIjWN_LI!aMzW2h8{8jwZiG#=PhgwK%to9?o)0`9f)ni<-RFmGbbsVIKWw7?Gs{rJ zMEm@(&nyo;r@B4zthY{edr0!gb3s_WwGq_-3b&T@k!P*jg0M#GnchNAb(=<=={*gv z)~!gcMHk6udN*3v$4|pQ+xtxK_3>wW7s=DydS*{^JKMWwcBAzaX(QLeQ`WPj_U!fX zr>rt4XWO&S_O@qFVd`w}DKI&^8m}7Xly#U{Mz=6mgTu@%%njC)?BNtR3|=jtbUh!c#wT7pEZK)LN!rA_9ph*#D0S8SNH_dWDT-ErfTKKcuiIV^%#6?t(7lQQ^AYY zseIabOwa2hlDs|_`81T@NA&zY`F$?&xyX=^*C&t4?=#fVhr;@2q-ThpPVb*_zj^XyN@1JnVxZv9$^bf7QJn9+vEq$Ly`wo z-fP}Bx^MJ79N9j!&!Eb@grR+8d!Oh*m3^aS`=H7`q-~Qw%CXt=5`^D3I+m?(^hY^6 z3_{!NvVDhvKR)8_F!YHwD~$4rJ3b6mwSPP;X^&32vb+T=FJwVJ6KW~+OT zrE0*QJU_=RbHKh0PE9PtIqSPw<5EQP?LW{y8o-|D1K;XO{ou z3^NQhd}bMD_)pG7@FLD9Ir(_P&*!x%yl1w2`Ze1y!!z48+e`fCIM-~?Z5J(DY|p?? za<-5>v+b>VPTyPg%(lgrQT>eCTlJD@mHZF;5~$)Dvxlj@RVw+pZBLbltdc(gKj9ko z8{Qu3w<@7Nsq&MCQe4@rpxIAq%eD2BDu2n3%^&p%EBs*r@V2=DQb_J^RpDrVDI70c z`mIV$?E%B3omSzf9lafs0Wi_qNnhI3(k|;xw%s^8t-Bn(J$^fBw^j7^QhfH8w)pHg zws_t#c3VTG_H5nM@!9RAP)CnctI4{lMUPZpldekYY=PH!C%Ps@ssrrTqyYPMX1g;J z2?p4^sb{8lSBFY7(}g=bJ-|LQeKrpJcMs(@g}OVACpv|N-D=k!P zw8fzw;aHT9Y!;l4b7HwFeVilIL+az4hqi;ZN45bqk8BTZ%WFhmUh~lQan1upqKExYj`w&)HILy(9*(wXi6jo7(q$<41!XK@b z=pU_BIH|Tn96!}2)K65Z?I&w0x9>&H4Q|DY9HD-uUgZ32eUbBf&N1pJDAZQ!82FR* zXX^*@&(^KhezNHOn{)EnCWtVR!phLK&8tc z+J@OONc+nJDh5>aclhaYWJP2}I!+dOhCGn_lqEM~MI=rJERxxQ6`3T$kF1Ddi^Mr; z7dlhUl26*5Dw^S*v^T48su;jzraV9%z?oWO&m_&_><*B#Z1Xtt^Q0`>py+|*?2%ey z=dV#n2jL8q2SsPu2BQbbgXICygQ5rX@nsPHU@%)gku?BkK=g^MlUX0)31_hUA$_2{ z+P>O8ki7}zQQ=XMjngsr1asH$JSsZo3U)HH*#_5#XG4~pK=!7$yG|@ggJ<%RuXD<1fJcq(zYBTs$ekMPaXD4sAZ?<>J zy-r=TU$;M%H`^Cc*FljlVS6eslCRsZ*+<&0**z*o+B_;&!>`*%+k`*THrlq@zLvh) zzQ)l<;f%DcwT~hnZR;Amg!Ns6*V@05MKa2^nEsW#m~4@yYw#k=Xq>h7Ch|4lTD$PN z1vjy`Q`AZD6zEjZL@$$1!OCUP%jI&}sbaC@#G|-a`dn@zZL)tZvu`P?Viq+J{7U{@ z{u=LVj`%t2J_El%eL??>txUF3<=_{ndV0CMNGfL^i=@v`jd-7dR@?)QegL*unnTS3 z7g0xL;T@Id;LLXPWANG1F?p6WlRirtSTPedTRJTdtf++#!lf_gP=}ZY1 zJpffpx{iDu&XkI8=~F5`kiVt+fdiy<6@#R2EBeW&sWfmMGfmWKa2+*BI$e<_{|h@^ z@jvQcaFEng@gem;aDX&O8pv@5fPcIb1i2l8`Q@O6Z6Y2jd z)?2@~{*T)xddSF5Wb5hwR)kfqhlP#|8M)pXRw=p{EB>uWmBT92&TxnJT9+8CIDhXI666VKPE2ZRznD=*)Q0GvgnXwH=ue?^WJ*I!?8qxQ&VtGv!e7|%HzF(@U5&bXrdIje%-Yv)A zRMkANiGI`em+h7`rsgL3Up5uTR0gPEH*IA@|Dsd@E6dz*-09QxWkctbsRHJdtptBY z3-9N$jQBd7Ib}bCb!A77-zmWb+d{UY>}KgB^vzPQ@<$GD zbJ=E+6=h-NUgbAS!+3spm51@H>QsIMb+a@P9#)=6-6%D~6L~gvp*|LRgv*q`)4i23Fb}08`c8jG0=vlsn>}?SdNsnFBfwj z)I+#n51Be#rp0ext}RcX3-1BjL;QBQ9_1?P0bH>AB!|mX==)_F(stz<*0nDWg{jKb zsCHmGv;kjJuBX(Xfo>=_;u$%LwtNgq4>zGq+%JJ_zRDo$OBRqnrIC-d^4@zLrnQ4UX(2*dV`Q%E{gUzL7s6 zKPjJbOe_}4vdFR+`~>GyNAjsdeJbPgj&_Rmui3<2H1<=lPg$+8zee}Bi{9VP1a)3o+@6YX-hv#JPM(>ZCZXaOjZ%>EKlNXRIkkiSg*yhPoY~8qD^W^#XLd_>x zAcs{&k5+hb=6tAjxjx>t zHZSi?%h8HjTc*VeH_IY=mc@s(R?{xGJ=i`spsZFSybA_aXf7B6%BE^+H34NObEcwd zHPcX2!IL?saK0=*l_QcXnblxuG4gBBB zZ{Q`C?KDo)>@r?3Ow;T%-X879Y!?hWjailphD6)1#+}ApY_~`MYP>r-(Y6!ZY5dh# zQITayv{h6j+U}0dv}9Q-Dv~NP!J}YOMRG+&#of_KU^3g?(RbMHvIiYg$rbj>1yf2&NynPi{KX^eJLx;Aiv2Hh=rnLy#X8B3zl?mH)Q{PY ztnLSnfiI({!Oob)+!*v3^E&o%)-3v2bERYMid9ThGIzy##d^lv#CFDf*8IZWv7(Z_ zb*y+{5A0k?`VY^=7xsVbZ{xx$7QrgP%8J0w|JYyHUs8)I7FLM9u%cLAgujrySPtxb z#TwK(2y8M76~GpV4(i-w?qO`=NIi@Js2F36F{pD7W5%#zIiU0KgaDk3VS+7`i{*@A z3uUq2%wZYBh9{(>GKQtYGlzZ6Q5VVy@b&2 zR{l3f^nY`{u6WMve9rA&SW#c`b;aA9=k~8*uW+8*UvV#Ag0JKLq27Xjqn^WG!CuF` z!F$82@@-rT6y+B%Q z`Bc7TAIaP;)JW1>@Wqw_>8$mvwLrRM?-sn+a@P8n{TA6@_On*eTNqoii6eEZ`U~By zsyTYJ{V%kb9c_PB)2*td@mbAioNsEL)wDEzLp^aME#+r5-_!)lq6f>*?BCQpp`O_v z+Joh9Y9893al0R(o`Fy7Pr;}3=iqaDeT7iZE1trhS3F?q5vsnTL8|B6HAq6WseFLj zrt&#%S4Zz^Z;;;R{Eu_~FDO*Qzy|4mISm6N>?km$vMbdFlq*vzg|261z5M|wSI$At zvDbsM>~olyWuHx-ZQldV0qfcJGP?&9>>)f@ehAxR_m}tDgJgeskG+K)4EL8?fGy!I zFzyL$$#5Lzgkt92`wwWp9qR%3elaY4>AdrF|9suyr)vVIHf|_R;ZW zc%$PFTg&Wa@uTCJrdHyN!W)HCMqkLIIVygkMX+wcXTgZzZov`3T^+cDKW#0SBZ3!N zM#V3e7h0C`XSfKQrQlNjRJVjb1wKP9qn3k-_NDTd>gDpN_%GGVa1!my#3h>N@HR^>t~5yb@gpUYAz#H%*g`b@CVLl{k})U#QFC zrx-<_Vw_?ui|0Nw7cwkl*hk z#$7nO^y~TNj19(}`qR`7@C=E}H)xyz*OOE_dL`_%ae+zn1tuGwovJjBar7~;1tzUo zbgg+2tL@YxzDr{<_}sDx{SWvL-=AS;%}e?}met^DzB$8ge1UpFe@S11C)65})fNkA z;rlbpU~_aXeKncrEpRNb7EG_jTVol5S_2ooC4MffCHjTsTk0ja){=*}7M2fN3x12g z4lmEr%Atnhtg{S7=Ud*x%LDV#tsT9!C79V(R4{vPg;#G5rtdZHHMfGd#NT7ygSXfG z8)}ca1#`dQ>@`=JccXqYH|Lh^Cf#G^ufV}7b0umF>2I(x=mgOWxr^`V z2m&jZs>I(7+ex>x30Fqh>6PX#Y?bUmsLpH^Xc-mGW=D5Ih10v3|1x!g-QYVrI)TEw zX%hXW>87bO>2=gb>Za)jNB;r#m+8N#o8VujF6LWQ1o)Tfmgz@__aiLAd>g!t6JhQO zuL6bl6Hb-68db&FsHW<{+orDOJ51jpuQqoh?F!z3*PCm|Yf$y(ee`E+s z+Csl)x=-H(n@GONG=Z83{zQ%E-24Romp?#Wgs(fj*9TJw1wVOVK+pif=|S;6|eipeNmniUvKYJ4U0)gqi>v!HEtPLt-+; zIHtUri7|QOc$@C>Eh*k6AG*n8CZ7n3xgKOa@V(JJ9J(i}C*ND*gJZ$7pn5Pr2|WpA z=3GodZ|1yAVw;S&1r%8>vy(xwrWgCj1qJhiZ!!H$b|2h=(;Kfh-)iE=%nP{$7SUtOp59+ad>!HG zy)Yu$Jf6Ld1Eax4`grpMoC(atp!YkR{phxq{pj~CZF%S%2ma#dPDWQI4(pwG?>dC@3-4Z{AHg|{b42fI zbTT?K<;>okjMELy;1T_FLp4qfI^OJTj5pVy-dd`S-E+I=R^z|5bkALHnQoXtzJXiT zJ$JgH4eE%#jbXZB1G*bq_uLxeddmijls1AHfl^vx*yN-QmTtKlER&Oj;z#_#62o*n z0=6_MO?WmOU6_Zrip_(^$irI~HY?S`dseC^%$Bx;d`H@>)XM&z4zIHR!iYmtW~J^( zJ2a)Tzwl4CU&ym%VZ_Pyho%f3UfF-}@RRK;`|n75IYsEwDJR=c9`SO@4vsW=#E!JV z!w*eaJ!MkTtX&g7(Sxf8+3BPJz<)K06Nh^{eCtL>IMDQRL- zeC;GEq&Chxt+vJ($GM6(&oIQ9e+4$6{|rNG&UI_fb{3BCTN_%%w2H}cur`K%9<8ZXF;{A{ z`d?-JRrb)vkmk|PBh8}?k5H?aejb?~NAw<^X&xS)M|c*bIC2(M=Jf0 zUg_!KImD>+Jf!~sSLLasgi}khSzpVuX_{WRwfboeXA@rV;7xjwO~u;;3dbjSlfKE* zCs<@-a;EBig2&`+(x1i=?rG04Ij1~Ndp5Bx_Bw?+?YZ1*32d=fWbBxnYbnVxujQzvUdzD9*yUam+?G+xy{76TV=r;kOB{WI+jzIg*vQ!NZbDts z-x#d&oCcO>U(%0vE6=_$So8^Q6XD~*tK2)0UIo43S2+(VPjAoi?6qE3!HI5by}UiW zaJ@WJIa60XuaI8B5v~uOk7p)l?uzF%^feqW&oy3G*w0$8HSFPAuWL-N@%k1o-+PVM zTCbtr-;(5e4@G_JwT?W`JKuY)R~|LdZK(G!@?qZV$cA|5c~5j3LQQaM;ggTb^&a9q z!7Z0s=GELM57peK1wF`T2w9L%bGik#%*#S8^$PR}^2zlMq%7WiA)xnCFEh2oE5Ij^ zF8~an%-*M&3G_Kd1%RjNP3$KK)&w^BoI#!8D9wFV`ZnRN@;!sQ(svc=jL%t;I^UJP zr@_;#U*-D^`8U32$v*H~Mbh8z8)iT7>yJwFTj^T|en9W2Gjjkv%hbASF^vzeoxTpei?Y_aM90k{0zS}RV~1L@0LD8 zIlC==g6Zc#!G>|}&-t8(o%31aD|#!u^PphEc?5=e59bj$?=!1wD{8oRE1z$fTjM*c z>v`B3-?hF1GyK;24)>nbbz16L_%m+PGj7#z@9%h2zw;XIJuOxA>z?bVYi!qfc6{e` zgMQu97k&e^k%?)k8=1J_c@y_K=tK8o^M(8I>=Mr~KTq*`_w&r^f5Y=!>`m&1=SHua zo+V~KO6aWqex9Y~5_2g|R{v7-)!K8hMN>;~`c5r17ftO8FE#s2y;|FMst?Y2(sQxr zVmEpTR!n{#J~ee(>Qrve`Pk2=7ES#ezi8^z)O}?8Q0HSsK0WpCsrzt67g+xJ&qQ!jMC#P&BUFLuAs zU3eGK-}?57oZ0nK_x98Np4xue^QnJNz1+1|#4Erj=ubd7SyS4J(2{5sM-N(pz3D#0s>a*cZCHxfti zQm`~?B>2qld1Oh{!GKcSg8?N`&m%{Y9Ep00FCOcsJlap`kNrxc4hI}z<}kBU{h#7Y z^?%GWxYmEFzraU4v#0up20Zl(4Vda*%S5|?=aHcS?Qot)whP#g+8=N*paDm?4LJJ) z8XZofgB^k&3^>FQEP;*Wjr2nS`(U8~e8FL01K5DJ1m@zK0?mQ@zYyIo#ZK+!SDgL5Qq1XC9^lJ;741ehNz)$oC^oP7cC&TW;)BO55dOv!aU!CuL zdaB<&yi{17?+RbhSJ3NxPx;)#O<_yLxyw|F-yOfZ;0m&nY^S*9ENAv4DBKfx!a3=4 z!Y7$oF`w+0L|^W^%r}|7jJ}+?B>bf~%Y2vm`ZFEi<4>8rmy!J++X?hiX8(_F_U1!2 zSGpx$ekA@rew4}k|LDGKe(zZ&rMF?t)lec8XakHK5-ZJ-++eW4eBB=BD3WguU~ z|2;8)CT^eLi}?R1i?~KF_Iki0YYx00_yDwkxq;O|4;=a-`~m7ARRg*nclj$3ng_@ltb_~U{eljp+ncn0Nyhk3r` z1wMfdVd4oG5`7p)cp=dt(MNdJKOq^>>PQp`uZ+XIZbG7;1QxUki7se$IO++R=%esQ zf=VU|TKx|Gjv5uE!cl??BY%$??Qlk;3R;Cm{|=6D^rIxdM}0M3jWELZ+`P0fGaxS{FE5t5%k+TE#uuTHC7C zI;*x-+_R3l#XYKZ+iKhQb<}O^_j~eP=eqy*f85VGC+ir(a46~oC?>wZ8yX)73jn`> zpNKCZD?u%c`y#Fbc?VVn#xFvpz<-TRp{~Y$!P|xoc#Hh~dhD;U9bnf*IDf)@+a79n9cvf{SCAmUO93)Myc+S+bs^_R{DW;g@ ziUY9uB=fl%&jSbGe-vYi`H1zWW9C=Ai*q_=B6@z+0@OiJOubu`3Z`=X?*P`rKSc5z z6chZZ3bu|U@4`i|&rB*z^!in|D(g`<*=~tPdnH-nQa8&usv->$ra>R8o@*@2+gV-QIvP)uwk9auGpB&g~xvv(@*;&rM@ zLk|LlA54-42338EH;`NLDR>B6fF8`$r&XW9K7$X!{~7%=>eH$h^h4bC7k>9J-rvzL z(8(2lM?bGJ#rz$eT=AmnB~ve}4ugM3KOuh-{gM@b^C!_BM?c2-JNj_d=dAq<99*>= z=W+DsRYTxUqL)XnKz&PJ4z7rPgfhiEf^EUfio6g?{T4DO`Z zDBP&nXjF9USyoJnos6E06BT=dK8a`b4KOwC25fTd6q3}qj;I^4H_;vAZu;32_#*t& zxGAwQ%tV7{V;04Ii5C-lj&nL2bB^<>6aOWzv%vT|yb4ReKy)W&I)XQ2>%`af>s##m zX6!AF_GR2xBz5DzVo#m;G1ptMUxA(IpO8)gWBBpc+sxjIy^Z=LHWnuaJQs62cBRBT)R%j>k>|(b$+K3uWx8&g2<}yDna4= z1?wC7u;E_`eI#k@(*Pb>oc0ag8z()s3rRnK&7V)s02} zACv!0$V~iSLUrRsBo7l8kt|C5($62G9>ays!pQ{xm(V@wF>~FLx+gs(eL_|P@0PSF zsRrzx)PuZ7(i5_pq|NBfINg)#8EcrRYpiG7lr#VotUg|S<7U13z@LXd zA3Yyc)V`RssQpHNm*PucQuHSJ#`XFCvey zMyxxM@}oN^>(2uC;!9!dE!a;U!#O&JPrD<6#7%B>pg$F1Dr zAtc+{Z>4W*-&P(j7n9-gZ6sUUZ)V%tUhvKB`*GjYfWax7ar)r|rv$SmT;3NYYrnZc zFzbR-Ml~U8Fsey#iVR;)jcOt%m$&~kc|o!al;bQ+7JXsz$R?wjY;G_TJ*tU8zPUlT z+`u`sm2aZAmDe=b+`s^iWM)dB0e4DZ4bHWIDS?~hR|BpEY?3c?)R0{b@EWfL{Fv)C zUIp`vUgLh}l)!5N`<=@iQv$t4nd@4B%(dTnEx%A6+W%j8qm zT9Rqj8F;neG^;AN)+*MjSY2y9ji<_0DJtG{4y|yO@pHbPg~1#t$xRfDrc$!tiapK zKDL3|P`~B=PXCP~{Epg|TM26oKVWUmd2J(&QEa0sVXbZV!TYGzwgc8S%(cNeV0{h0 zpBt-)QM|S$<+icOIws``?*X$(xest2klxRgb#zB0<=*b#j*xY{-QgBJDc2S8AlDt? z^0Sq)2TZS&#VYD4ToLYwdWw}Y(QkFQjpL5Et+=hY)!~k!BmIuzH~JmL0b57dZABUr zw{g;_1GY|JC-?!|N@pjinw7 zd*~N(@k8}5!6*F3}U&U&|=AFglVo@>~on`ao$k>(oa z8|E4GIP+jTZR2Hg@psyG*#5PNY=>>9Z5L`6w`C{JTl8DhT*JTgeUe?a2a5ZOeUb-? zUFaby(TAwsvN~EOdbI3c+kC@*ndtjv`(^VDk;?fTFH#weijhSs_3mM6J?A(~y&n~! zjKPnfM=IM@kaVaD&`)cXGms9dbD~Y zoi2H#5d4kwAL*)A|1dEfHIr?Iu=S*-S}QZWYgY!TymBO&Xe1l{-@stEkG2 z<5d!?5E#d6YDiL?-y4!7cvbFDe;=GQIB5uL(i4X!{UaUhXX0q-i8fxJgOe&i8{6Qd zI=OYg^u%0VyEZD9S9c(+4$KC#(zT$LD?k7|kP1KrGI7CLCpSIu0w3`Q=AO5nw+7;9 zNzYm}Oq_wAwVr{W;Tjo`d(L{+dX9b`b;ddqoXM5*4DKv&mS4@ZYI9~#nw*)|9`u>` zJ-F^_a}K6xb9z`0rW{Q9GFg*z);gO+>`!zLGqYf#hcMFv7D6@$Z?@Honhh6Shwp*u z(C4gksq^3*YaZTQ_&n+YI0u!FI|rPLF7WpPvWuwn#EURnLIM0D>b~;6GCgrst5vNY zz%E)x2hXD}TJI}I2ip?n(H|)9N$yET2MhKa>^=O^!J~r(yC?Zg@;lz|@ZTi&>9&OT zf~%9OlM6V;eaQoycFG6-GdCQ3A{nM`;eIS>;eO>3YPRZg#pjCIs)dTjl0VUpC9hnf z|Ci(m&VSKkbbo^H>Bi{Z)4dP=DH)^ti|jAbF*q;mW2nC*@9VyIzp%frdn*0j{Z#s^ z<9qjCk{9+UgaE4pzm)B(l^jg za5i!E!VS^~Qv+?myC_cv;mS?5~=wx~z&(&Q)Ai%~c51Uo{n+%DvhjXFfPz zF_nqJ#JP$X_AB~4{CSGGio(Q&WZ}kzig4rf>E02}O%jYXLCDtU)1Lv`aK}oUln#4_snxqA)n>k0u>uZeY@fA)kH5E#}>yfzE0VYvBVzO_v=gVg}O&dDPY z{B_PNw%0l1jCm+Mo5A`j$II(m&+A^#)j*FvX%zjW@ucw;lRDTbV+h$PoN>kz)Cb@R z<8ky!@D%(5;~3ZpFoe0-;vIh^lWkRzsxy+PaL-9Tg`I_e z3O_43BZ*Xww(9R#>2*uRD^1jzmI|)F^)EhKH4~fd?fq%88#BHxp6pZ1baIK6J9g6k$!)K zF_ditdKmd|z8*XX3xS2whr>$ohVeD+0ayvWlx>)?DVvxpK{a73MK?w@;cMa&SR;C4 zR8!+_{)kx<%}Dq!1z z&PNp_Z3FY^zND9ld8m9o1=yC9=l5PDzDO+a`}s-F6QA?rI4=^t1Q{&>x{5COo2_iq|L9 z@~KlTpFZi)1`-3#N2DL4KSm8B9Zo)+&#Y?W4GE{g(&jm&2ANI;rL0vjj)tbIJ)mO?Z~@3H2PDg8BsJ zOnd?VBq0Kf;C!AZO!fOO{5=xy6IdikM8cW)w$y31Gu*ck31{gMWTKD2ITL@@-$%qZ z;BgoZo{b-gQy;d3Paf-o4bVZf!8akKHK#Z2WB-1B~%%IC?Sz|yH{F&5AQpB9rr z7ppT+mY8SJ>D1F`3;H?uJX)w{(JR4~e4_p=`g!y!aFt)JjPA;|0)Hh=H?SM}dGu=3 zs%S5272J#0E&A`MZm_3OqCbu58vUSR1=ST_bi>3I(T0gn_#S{^;>#+-#8-Uh;APb- zzI*VXB7CBOEgUa=;)9A;fe$MFj(QasKJhjAtEwZ+90os!zpgq8dj-B`_9Zi~0$&Cm zsai<-IXHwmQuPIO6kJ#}6i3V+qh1Cc!#i5Fh&l!?M3peH5c~pN>hGnnV^ue_qE9GT z1e;J$LY9GhQ+q>ujQ!lyTA0mXZAq1dURqUNP|9?9flzfOWT5LzNGG@8mf=q*xS=g8 z7+RHHW#){Ag6U*U*euKsL7Vul$Pho8_`XaUESNG^HS*6kf;YrzNN>d2#$aQ56Mw&7 z*%)@evLWjC%HJy+!Nu%7@E+e6`ibFXv?p1CBxAEPgdnDVz?Wo^ax0AXL{#LmI zZwGxR$@a>rel-o82H%SJ2{jemN=@NAQCs~uh3{TXhV=$}^IfeeqUBJTB{Ep9^dkS&@*H+*jy0dP3GO<*Um@ zUtRu7d1%>Hs$s=dykE-KP*=g^zN^biaMqNU`g{rxx`>;xOlA3@%!0Dfb2rLWF&;GzbdiKs+-Bu%)~?1G$183%SPQN~ zf5_x`xagf(>xPNmxuO}^jI|$DOh9$6_z$Wx{69>uVd_J00{c0QJ`G=8@h`oWSNgwx z_YB@?xaez{JOhdqW$a-BT=cSvE?^h-ytd*yziJL|R?(c}mQ|FKl;M}7?{Eulm*3%5 zoW)to-p=~htRwvnzK(4@{A|TJKR<_(RGwu{T6qpvQYl59t2mE;4o~z7=F7n@@beWL zzzwL1imo_az~< zVopICS=kOI2NjhIyhoY6SRq(q+0hD{*M_qIyqT9+mRNQ(?+dHVyTCio`-Syp-XeG| z$<4ga;JMzv() z^mg3NY%r&C%lNJ1v*3~3_AI~KAGbe#4*DIEcTm}tnW%`$eyA*XKd>!50*v6kZA-na zc+0ck4A027JS)QS-hyw@negyR1NCo(f%>OHkNT&=0_rO>*iSepCM`hQha|hPNs=w*+6~(>e#`iF!^GpUmELaHiXLIzS1=LQ z{g(#U8VEA9_*l7AwM4a;TB>@ie8S`t zW|yc$_o003dx`22YO(4~s9;OzPn6F|o+vNT)!pBOE>@|#FJ|wTly5>WE1j+0gsQt= zhC5qbQeI@{B9oU{@m$%{uU>#J;Fp!{)EDu4Dtm#wIM!w533WU53ANaZ2gi%&fYC|}cGf-jWcs$O!=->P1K?bJfO!v9va0`^k5LiGwa3O`!CLiMdGN*xVv zr#^{y0u<~NJPM3ff1o+(cR$daVmeyAlD({C57Fuv_)66(c#Jw09;;r3K8-K3(|EOD zG<&H9Ppi-1jMLPj$7@dGjnj-rokpEekJXH0{~u_^f@3vJwd1I%@1Hhy0g__&0tX7eUL`zL97#wx_eHSoG$9_b9=mlH&~O?Wp0lq zrY5GjJTn`a8p9S8HKAY16D+4o6ByTlf=hXq^2!UcyJWNaQeJi!-iQ?R_pi_H(x1Kb z*Sv%3ugUJxPty-BSXn_oO<6&ZRyaZ0ci=a)L3|x~6AaP@L*_?G+FmSRAmm&I|MloT$Jpb;QIL9MPZp*=v$5b)H7G;A?tsbc^UM zb#{{Pth1#~i|CzoUbE60ork{~6nRVB7I4w`lJ8}{B|0A`kE#6Vz34DhKDf8eo50s> zF&yP};2VFB;jH%7*+&u-r4u}ctOT~i40e!iR-)s8@{Gfdk_z&K`I{&ab zHZYF#A5cv7BaI8}$85iVci{a3;sW1+{pf$Lyc4jI^q;_ZrsMs7f1G#tVcGud;a|Le z*sJIXIPo|Mfg82`12*xT+r;y;DHwttfYU!9f&YwTleQVoCjK)L(VOv1PY6uJ9}rN3 z8W4~eD0*}JX4)Ehb8QQF3tj`E@EYxAP#4vLY7TFqZ9}pdKZ(60v9@PdQia34Sc+y50v?1Qv0HFDGs4EvJMk@|*-u@~>x+ z=QzCx|2XQT=LG6FSmtTsZR!=r5&a9irrsw0{w3*g&ljFAJvm;9_XMkQ_!s#Ex=~&Z zy-}VNXFlG1-aY1mpW)ZiYw;W9&F5Q3pMkahZq54~^*QfIYrX&CEV6!{x6r!K`h|6o z)tVKLWo+ z#YlRKiV^xd<-_%g!X9~d%17vbzjCuww;6g~7t$H!_YC#Q1xR?>hWO#?6cy8OI8)gE#46zT*YQ3XT`t%($L0 zBlt+cjNs|u&5U^S^^9t`(A9h$c|9Y|Jp+~It`5FVn&v)~Ssk3$F|Xsn%tM)JZjH5? zxjMb_I#vg3taW-F%;eV|JEpm>glVkt<||=o?!1n5dgU{pkFT+=D;BCwubG*3daWy- znYpf5V_j-lSG?3RGxJK=fK2{#AnSn4rIvW}rLZe(m+>xvSHeydTndXf$D40voZvi< z7YKb(a~c1lMoc`?4ahuRa1wt&<|ADRdmWHjVtu5$9QIiENcR}$a@fqc$GVG}nQ_7! zYAvxo*3FEYWqPceWg5zSiFHzNiFGJAGftg3%QQ3YqDJ)mUPG<3OzOuP*m`8#6gLzt^tfw=wF>!P%KTGkY$#>?+ReIXHW{MV)ys zY;g8P&Al*@eQQ~6xfeDldobG|)IDy+13t`8jCEj`Psbx3 z#xq1my$k9<0Bl1Pxg16bHD%|3W$XDP<@)Y?ZQR7JR-g*_daUxZ-%!*x-*(t`_z<7AFn~P-6mG}elm9oz z(iZ-mAHY#}dqoc<+3l@_|DB&&5I|PxO)W?*sD@V;1hTr)JJIh<^i~&e_RRhZ?gne= zwOqOO(5vwGz(ucOMWZ|~{7a8FPk57Xs=VI3NjQt}z5qow5oeKSBC`{jnatE=j>2@_ zKJ-4}eB8~L6 z`~Ob~`Lj`0e1L>+=kG`n*W6iMKJ{_nyYgHTJHCuL4)XzxOnvegjvd zR)8z~ej|D#?{A(4^lx!if>D${FUp@R2bZH8@vo8S%Se`kg00JAI{iy7d1f z3#Ci%l3e18B#8iZ=_RD1$62~?ortrIU4o%fH|$vyiI z_pLL}h5L`!RsN>tXS-w9a>#R-UFRLDyyq=Z4&~k1P~Nwd!bac>g$;uZ1?8$? zD49ymJHBE3N%Ijn!(sQlBa~-6!zr=i40~P6jEwiAYyB9nUd#K~1aPhDJCg5MC08Y= z6LAvN-{B^x&!f(P31FEI<+$FbTID|Gc_fa{;c?mh*mE$2;nBO$APvc4m~0 zciuC3?_Ex+2ld(t&CIBSOzE@-ab}SAj+%utGinBXW|SWP05vP>fOa}w@2KgNF6un# zjHq5HUDRf6FYp|CI(VLb2G$EaM?VYOtUZeo{WP)C;^9ew`GU68JnSg|8P9 z1E1kNk9tO>1ipxR$;=t>TvSx_3)~m=3A^lfudlIMLCsn22WP zRn%+J*PPEej2Qe^Q8Cf4N&ApTM;GDs0Yw&zUld&oiveTte;_G}{t@*9D6+ozKSpna z6@x;>u__i8$M%LJy^ear(fUUB^Xuw>^Qh{8S=>|A0SB~k(eX^hk%~S&pgJHvdV0Vc zvLoEX)dAB3j)F(EN7xKFdddJAc#I5q;o76r5x=U$3D;KgxK?T|^4M4S@gmQGi|R_v zCGZlwQWLJNVxkHsT-z2d_R&^*NnNG6%!HAdOX|!1Zd9*RB~jn8t>f9ZPPHBs&)M}V zqk040I@JceGoJOT?_uA=jp}5Q%b=L}0WVqo1KH#bXFT7lvOQ-!lRIQnIi4R>Kax)B zFuB9`^dDh4_^qi)V2-D?XBMxp9I&-#QinG1S)RGPCZ~hKn@zO=g_=Xn24|q+yfNMx z;9T^d{{AOywr4)C<2Y}uSE#?J`CuF>9xu)t5BtmWU(}yqH2a928!qrF}7y6}NPL#|ilUR$1x*)CkacEP(a)fH~bbAS%6X~MIEc2pNK zJDwx2LE(R>`fLrjnmTZU3LR7fw!K_s8x#i7?Rmj;JF7(B=iBQGDh#IYfsFu1a5diR z+vghvj`FJ!zF53iuHhqaM&gb1t61OJg0uX4aIQdMjm0}#5bIM|?*yfo&lcPXYHv<4 z-wnDGbe8lk*xr06=r-G(pu0hl{2OySC?1UDeJ=kRfsvLKyf6M1jI`Viy6zJFy6d{@ zc2H*cZPsLlFDKjO;9a$2SMdt6ZoI$V<&ebgDwf2)jagyoO45}Xe1|CuA7#pV8zYI` zr)QmN@D<#F{s^Q7QshJEIxmPx@&E&I$fGoKlz1V5*w zrssyIB+m>pGxwRF!k-zQ8-i13W26zRFhyblbHB7GbmL? zI*t5bWh^`dQ}=3_9ACzFbgz~Lq+BcO zhjR_qx9*LceszB#xmtE3r*GZxjJ|bcrtpk@_@7())&1NOka8m@JY$pWbIXmKO|tL| znW@$yGs!`rYN%REjjYxpH}wdXb5HdM7V5O67IvBnws@%HYL8!egL?#fc)NF8eGKO( z8PFuXe$8at*Pi!fAV#|8HPFs%U)W}X->h&to z9`ifLa!RzDWi_&Ty*7cHWkan`JZ1fhnI`7Fs^H z1f~R}1g0#s+_c@ai3y?Vumz^vwAD%3&a-8EnRxd60&Xv>gL}hf8X%ZyK%JBuw(7E9 z@T)1)fE(;%y7{JUhIzVKsE4`J%`?oU+8O4d+EOil79706#G~9Bwnw=lE!95lJ>C4Y z_oLhrtudpNiNuzo-|hXhcPY+YlBd0o=RfUzw|7a=Q|frWF(VoOZtqz|B}I38Cuhtm zVhyXCwoF1@Xr9zkxH~M#8A+%y*%!Ef$7Cn9e2SaYa!j`9Pszt*UuyoI_EPir zweM-iWPgDF9*@``uDj96FG%qL(X{aVJ8jB3+0YP#u3M$^n0;0#kW zbJI-^nXfk0S5BuMGBLxnPFYO}H7aK`+bE9lFr&WmGv%n9l(N#Il(G{Xzv-w^IS(^F zQ#Kv-FvC-pQZ_25=_n6)P~LRZXUZOBp0cK+4$6CgJ<5im4$41M2CHRhn8L&idXVx?n?v$DZCaQP$?Gc{Fc}2iX;WXh&flAvTCg=URmmDCdz$aGxznbn zxf$oWp0okj)4Wc3iax`1iWTdXmos~sXP9QAnr6=CmYq`8;x^5UK_$9kGKG7d6{nQv zNn$eRFgx2c2X8%kP20%sHN3#eLfP1_4hwoqMA9;_>P3)R88=atP>EmU(%%~c|4 zu3A9NG0g|(!{?ah!snP`GUu9Fpf}cSK^?3clX(p%CNt4>EpxtVuIaz3M3)hMrO3!5 zHrI45^9xpffqyO2=(@x79UPW^Hs8Q`^8hnZ~R|9Q97-B9k$zIO|K3=wIS2 zG7VJ!SM>$B$n>RYnOgK^>Mu>jS>JMw1J#4nLdi5=n!W`GqL$+g1ed908o5Svx#oYW z|EdP5=Y#*_zL*aVVq%d)^ioHuV-S1+?t!`o>i$nv>iDtl0{8;ek99ZVlsanDex#pC zJCk;xZf)AexX=TG7sy2~ke^AbP4j_1d4aq(t<-VeSn5~= z)}}e-KAiJLr~JHek)sB7OfGm$+A$KR+$~?^_}pESw#czu{keNNXD`&}?%kAJV|IV; zHpAr_3tX;|(QDFnryZBqP{-slO*)QD^Q|eJ+@g8MWx+XxcMATkX$5||<|Hazv%++e zxgl9AxHpGze->wLa}A;1{67|n{uSwvtT(Q&vfdQ^gY%~7R&UW$-8im)ic;MxOkZWK zWWOuf+gDks?uV>-i1Sa;zofT%$M*S$m9c&PWu-eMwoj`2-=chXsym-acgk5?Y#(>Z z7_I0Ji~nWrtnFd(80|URS=$({ilU##Icqyd|F`I2@mu!$mOVTyK5u(m{IK{j&N*Al zUgvFt`rPStj=4L%TJ{>$CnfYwuawYQ%^i}Ky;^~-dOa?_)616Cve%tnwHncDEUlQe zWz|?}HD_>YHK+aEj$_L@qp@e5)|lz1HS1f69_6%y=By}Zjm4g|R=>X0h8#1qYxSGi zQ;lV_Wqm6{=7t=7rh$Li^_guO7&2S++H85iS+?r+ptx;=NSw#T4~iw6^<%JYg9yA& zf+HHVZP3jU0ef2{DelR=^R}p`I|A>qIikU1b7X^jcTe|Y?%8~>o26~$V{T`kyVHsXuEIBmOmoB3+N;at~2{>B7}RR zY2l0f5LhVAi~N^<{xV;v(88mvJjxzk=8wt?Wg<2IDDJ4dRPMW(-j_^I_m0Y&>75QA zm3JyCHUGGGruPNU#p7Ub-f{19Fy4EdPYV9)IZpqtXC^g+shQpxtotvYEr>pi{fx?+ z<~4o>s_<%wWwhBpHB7oSUrJ{3R0TL!BJr+Vjm7T`yC7kJ7@rh03mrctM& z%Dg*JQ@!gwwNX>y>piEUYNHZWwNdLmiK;U1XPzCb`HWRNy!%w^+50^9G#i``wxQ4S ze2TLG{0zNOC7g{ap=Ppnhj*rDAL?`TXW&fccB(#SVyE9-X`PAQf%Ca%hiavDJA9{V zre~$q-DIZ6-DICCO})~(L$#g0L*;I=(t2He9Vbn_Q?&_qBe+x5L7k@F4sJ*NN}i^^ zMs)yxrT?nFiFX}zH<_aO754`GSM?Ol4S(j0cQ=`=nWDL--op`u+N0X1a>n0O--_R( z+6!OLZP=@7=iGz4SG5P`jK3A%&be2WNOp_KdG2}co9s7{xg_!=`c%z4_YHMxyU;h( zpJ=9PKH-Q{G?C8M_IA!lXFKPu_!#Xc963fiMKf75&lQO?&qcWxyXU$5=$@)cVs@Tu zp=+LNv3sE_34W;aV!z+f9_j38Zw)SI#i7p2$wi;4DR+NDP1XF2cc}9xnpmxHVzjZ^ zVd!%A&z%qP-=tYxF!u~w zW1K&o@8bOFZ0wq0JKp){&hNTy?swgPI&JRb@Z+7AF}uvY96Z+fcxRh?nfnLVa%v&? z4eB`lH{fB{53Xf6hru6Q1lwddP? z@KP|}epHrfKjbRJKg2%1ahKXxNb{+qvV8lu?n5}=amXC#x(~W~!YA2F z?S;;s&Pm`T`*LY1wF3OuKFQwG`Hgb9bQ1g{U&M-ou5Xk}$(Jg>l`fZl zQ0E)v$Mz*S-zYz*vjkksx+3Rd`v-MCw%70$nR)#EL{Uy|8yVbBVWJSm&y2x58mME{-FR{jIXemd_TPjwDyurD`cG*7N zIh{RCb5=XAz~9)z-Ipk<;gWq#NVr?*9DW%$hqYG2nvm6at3z@O;qJA8t3%d=tPT9c zuo^d#sZR`%{;avYr99HzTrQlEx=6Q4KT;>M(YogHk-E`1&E+kaX(>=)(woV%K`}Rq z+^ip^6LZC`=JMw9Vpj`!w*J1&tpDA1-zMfBI7aF2+a5T?+*`wFCf^#0UBBCgD(+Li z+Xg!C+e#G=977eQI1e0uFh5H7hvTiGR51+yfn%8B57H8Hy?m%*ptD3V6sDICbcVXV zlj`N6t`f!dpi=VdLBkX}c?s!v(o%_DUMkTsSEAS!c0FiYSP5CFT= zW1izPl)!n8xsDP^DXN6}43-n7ljnq$qE|^jlgxFjlFoI6xIRUHCi#?FB@NT$gq29b zG$rVqu#GyMe4}m~tE{%1Fp*hp8+C0oVVX}R4%;^JbX%CFjV9e@rQ2-|Qmf4lZVPkR zyr5TiJxJzo;9U>$>bgm;2X&JSQ#fo+Qio0E5Iqmyt8?1&bi)+gBt6J`Nd9niljP~T zOS(zA+3q=IEHu3Arz%(A#b5*spyAOYwzc(wF}ik5n^viEm1B}hS--XTPV)hLr7}vqDMQI z;-2yMXy>=mTKj3#8T({swDSyH^simtN~4{V{rzj#VcECR!?G2;@(#<6$|gI1(0}dv z+O<)CSoXE+2fgS=@DIy2>P0^yTNQGYO65wiDx{-*qyCahc->VUxsG&KwYDFTbyckj zSryV%)m?Q&cF84r8?LFX?QOVncU5&mcL#-PV^4r3_Z?pkU{>^wylY7Hb%Y%SKcrH@@wgxQ z`nytnVyeGOI3M~tz&g-VP#wSyyra3V>hE%d+r#g(zy7Wx&JMocRQEZ9ORnF*`>MsZ z{;tKgBhLQl-${PQxv%pc`a!=5y$R<>{ZGzK`XBU@ zoj-9OpSJ(RBd|$dL-LdJW7x;e8s<*h&E#gBpU}Guo5^<>eph|${K&7j!GBk6Gc2~% z=ymR0hL4;&x0nlaZ!_rJVK|Fz+YI~Fi*5VWN1S2q18SkR84jp*?z6HmCeF(asL#sI z!$-;Ys}HD0$q%T{%e2a~GM)P)r&cNE&XH@C0eAt*bF#Ctxh=KIkDPN_1}L@4xh?0Q zCOYS~{Kz?xv-+5`od`N4b6ZYyn&4*8A(`k*qnkmq^R&Izo(3Lsq&aKBqx7Q=6WI~C z&?>pfsggS+CY)-?QA#C0>X<62=9Qw7+awNNMbl8-LE&zetK`!_!EDTSmpn2|<8}DR zASPxTHp?FwX8RqN?UBK0bMcyeWboN$8(cOY&TPXRW;V;`7;F-!P2q6y3RmzNciEH< zA6kjyv-M_vwxPFejzQ^A;rnbVM{m-ZP9+nwoGREXxXjVVsi0>1QRcX7ziXE{?6$jh zJJ*{&&cUvk&O3NkTW@C{=Usbm>W+P|tB8D&R zS4vk&yRog3hPblTE2Ul8R-z@!ZaBjo5@m?1GfJ>7_+8+g!LD#Oy|dIs?<_s1=!!b0 z$X0j7$xyhZ7Da}_1$MAyD9$RnFm+aOj-H`-Pwkezr#{O}2U{v>h9cGWp87p?N84Fg zM|hg;9BVq-I^lG(rGX|}w)&hR&1NDoaa*(1H|%NTx9n!TTih3B+fBQP*_-xT^c(h@ zCc z5QN8hHf;dvT-yIE!abLEHm#%iUDp7Y=mT6G%|qSqx`w(3v%jJ45_(7T*|dTd9nFO; zhPn${6vA3rx#!(pbwP`>tUj0KRS$JP32S97Z1E&atZ8Mfc9giQ9YbA@!k&Z)_c7@s z@JZNw(<7Y6VUNOUn$uN`y^e;<+v~i^9dGu<>UzQS{NgUPnm!)xJ{gy*rC9c^#Ylr%AHqT*^lv4Fu zmg1GT=1`@e$}!uirsjYuhni>p9A~L(uCupI?HI{xVI7IgiP9EnG^LWKn&#MsyK0!7V@oxy;~`c?Z)V zcdF@}Y@)o1?L1f0SaSy^Yn-v>j;8anD*0&K(ehF9=J>JZk+9M5W;tSI2UD}0iqPif zSaU^athvS+n$s+&xmjv%j+UB3;gz8kp*7BTP!*x?z$;OMT$Q1NIK$zt1}z704H3>rCll?hvcr>az@QS(|0B;x=u5h>51ng?mVs5IVw@ zz>!C|e%2k*HEo^{dPw&(ZaiK*XVpLS)20cbKkMQ{6JYV7f1BQ+q~>=*7oa|E`nO4* zBQ?u&Lcu4dzfJM@Pr%YldCuRaC#KR&feV_>Vq4Jk)25}FPfU;5o|tAeosIV?_-WIt z`cIqwth=fg-tNY`8_&jh%*3w7yBg2JxvKwJw?A}0=h3wJFM6T(hc;~L zrEkwZ5W0=pp4~|$y!{#5v$tjM&sdgYN?+G$SpQLMWJ)*F_h+o@6l*Z2 zmzdUfY8+W&GBdTl(+2Vl_>Cj4NlQ$PBMYS0r0YACn6A>V;;ip5f%I3uzDEC* zE5zH@8}J8aUPTSej5TcNG%)j5Tw^oQ#h;;h+d7%r)GQgt*ldG2x!I;>U8ow+h}#~| z2qvSu`g>PcO|#DCnr8D&oy|gx&gz05o%KxJo|!Gw=&UWxo~cFeY~G#zO#PJPsd|IC zeX~T%7TiS3=&ar8Bc#vNTbiv4*n+z*V1#r_v*FUG>SyW^(%~de)#DR4n1@TpCO%b< zO&kvn!yh3XpBQJ@V2(2k%oG?)AD~%;|$~A;}gdwj$=iPVX-BaiosoM*`Fc! zcJBG@*^4dTur0QXOYEfDp8XAdY~ua&`{`p7hf9Y^@23x!3U8TZ8F)Xvlj<8wK~_Q5 zH|R7~CsjdKM=(v5kGITXtKSiBtKWfV!f{wZR({rT@C05O&k$Sv6Zj`c?k04g|Dx{z z>me2H-GmdW9@0+kU-Wkqb~pY--^pE^DY8!Py9vda9%&Ehag~SSNWr@scXIFISzHiY z5ZuYV#I?jFrt^b$;XDp12wvjKCwUyS#8sTRK=;VBt8sqtBVH4`8W(5wkam|Y&=qHP zr}vP0q#anlKqqE9xEJWUOE2^5d)@IbOS((>6#>|Zh!YVWX@1rv$pYPFiI}=1IT4Yc zbu!{4xXf}gVwvTB`tRu{BLv=0A0|D{ijxt?so&H83_1b(Gsw$+$~zs$DOY=?e+HGS z#gU%2|1;=##MAc2$^O9mGw6??KZBmOzaqITDOX5vZ(GPG)7GvJ30tle#3C%%aC7EtSSGy;M3by$jlGHkrF5jY~I! zQi;iIHcKS~wI;JMb6k3S(rW2ItwNxru zBfV+8B9Ta>5*eFRVm7aqUbU{FZh{iYp0w4{J!x01tEH>e5+?Sfu}-}w?H$)utC{ae z2&QshweC(cyZ7)NFXq)(tt$6ToYm^%a+O;RSGiN`s@=!stJQ1NtJN~e8j>~Y6MSdv zxcmf6CfRF|aqPVop}J66ag7-P-~033d#s0fPkW?>_`G3 zj0{5zBsn2g>u76RTkFJGt+RE{YSp^BoV9jXch#!67uKhB|G#(M*ZXt*)^(kclM@K2 zFd}h8%7NsOi3+yg5>Nsv_}jk{a7#dCWENXxCuY&z60nsVW+~jax=(6RjGENKKd~6M zCE!fIEdg1HXZnRD`X^3m5tjHPf44Xhp44Jui%BiExc?XsmKe?oBVGH(j{)I{oB8kD zTiiFZm#yx|0P;&{oPDV~qX zlRf`UOGaHwe9YXnMB%O{CVO5>ypFz}818;8G1cv6bShiljJ_EybGsFNJ@H!NU7u@- zH>2~=@x1zTtY)#0(y^`Gy-J0-9wl!f}!glI(zwPkperNh^gp7=`kTGmyQl{f^Q#r-ja?(oEJn&GH!ny#AHvTmB}#5`O!cZ^`OYd6ghl-aeb zrkm!!lx`Zc>wny3qsT@ij&yRJtJyUVCAglh*|iSt&XN90`7fp3bxEJ@vj0++^r>@g z@T_+|SUk7P@h^Q-qEez>`o8vU@bpX(iD$}7-e=)d$Wi+aV3ohi>0 zk8WjAc2AFPqE}8XkvDkOxk})uLI8%j3BZJDd!44I=<4oQa0qno4EJ50UP zsw}E3>YY~QQI1yQNF1#)WP)cVmy?czGh{Q8$DxMGX2LU)hsw&MW+oqu%8*T`Gt_Om zEQ91=)B&zRxf2gWU5LC8c_8W{br3v{yBIk$`8(W9wio;Z`N62~;PdpFlP*U75Y?Pi zn{pogUDWsFwJFU>^K!ql3m7S!CjWiRCGgi6ZYrCldTGafNGn%5>RKw-v6_Wy@Sw zaGjUAE{B)9mbYF3m$xoYS?)T~LvU_lWMX;iT=p{2W0FW(Px8o3oao_)%T4S+HxlfW zILX5!F_-0m^YiehI|=kaE8YD)*7jGri?jv(wf+AWqjY}~^FKc0|1aiA%!GKQdl@tS z9%b$=68{&Ya#ylcWdEb5LRFwA#FwK~?&Y|0TuYY;@i&uNy0mn;$$OP@ceOKb>7r(~ z!d*VFjB1fsL4G!_f|3tx=@LM$<^L?H=Irtex8ZS-Z1w z0d&6c4WOR2bMbBEvVn5({l?eDcZ2Un)&}2x$-=pz`z7~f^-JEDoS8B+JzVyWWJ!U*Aefi z#My4X+?PkZkI^~i{VB@V>!|k;@1rEXUbEf&ynMa_}k5_&trR*m8C7+vAey44IlRa)Q@z6!^_a2vgZg@}j_}(MG(YCj(%p=5^XLn8Wm$QAEf0#!Q*#nm#=N2Iz=To~KuExdDJDp^SE<<_3h8%L~<4#;t}kzJucXzzWw&N5Y+k9?Q!+(zjpGD zxb1OY$L&Dxh`YeKpHIDzTHih;>1!s=`lTdgb-j>!E;YMrR@ZZMcEqiy$wsC7r}<}h zP4^es@|p{&D{7Y42)C@}9DZ3%nt!@~2DPl_iyFaSkS(tnQFF3w8o9hnn*YhRBFm*l zfDs<@E+^Y6W%4c&9w*yo_?t3|x+-N69&25cvZAi*xKE0@icVXPwxH-nc!aYe@ayR1 zdgOW(bq)9M^IGSUOWxLFqK}_fuE&M}N4@>LHVhEi2wW~W0zJ{^sP~2e8S-P?!x{1o z14ekf>m&GGpLcym&^<=FBXvh=hWuThPr2uJq)wnS5xpZdTV4+f%$DDlkB;1t`mWFD z$aj4v;CH0P#O+8O9T^jMTb?Z+5SJ~Fi5q|(5Z9O+6E`|?Yi48afVle10dX;Lv2zZnW8>!KHs;o6j*e6?qlg?GIl<>v&O8zYYAfAaIp&;i`CKH>oHLeX&Z(nXl?%M( z4gGauKo{8o-7^HxrMrX{nUv$SNkEVpDXpx3f|K}~Gjc5+MRc9K{g#rDkk zH4AF8YPM!>LyN~Dcp=$#62S}UDk5j#X3*Ulw=HuKnQ(%$=`O5U1ZQ%DEGm<8$ihFV z&V-*-4<>mGKCW&i`KS7E^*`_v+~ev+PPeFfA#M?ms~PoA^pl~wQLZ^Pn#C$SY^+RwzxV+D@K3`DF`1Gqo*p`b^{>}cuPKGI zLZ_o)0?7Z^4 za^Gyf?C14MOd?rg^3DD%bT(77Kr#K6Wr=Ba=vx*sai1-GvrAI^!23qQB`L)zOH51Y zyk%Kx5)-SEL{^eg5V9(%AfzOvOJyWksLgXuJgMzc*`@MH z?E^gjHI|hh@}$(l;YN#Iv?TL|}>KMBpUS#bJxWW^+Xrg9p4$1TG3&9CpBKQP}8$ z#bL8TrxcDZm=zjp9$g?*q4(mjLhl1!i^F2g@nc69#E&iX9$j$K7(X`FTe>wwou zV_bFo*tqJG#`$mp{kZCcu|nZ-kaWc*C8N5)2r+Pe(5 z(Xx(bqesSB`Wr20ab@0Xl6qwH$XJtfmOUt$S~^n65z4$(bd;c&ILGYLksFM{uZUZd zv?ggq+&PQV`)Ps7dxP<5fyfI(R>VE!zk{p1ldCrvm-0xHs|B7bNv?icK$71apIm*8 zM}EGfIevpNxq72>g z!G$43A;lpZjo&D83pN^eDZWwMV78dL!O@H99u6)FITCz0ctzZe5O3>>IB)AY%MB(f ztT#diSiP+S;0iKt>jsl>$G~Hz4W@IJ4W{*`vzBuff$L4{a2rf*YXwKtu17_nBWlBI z*U}Rh&MUwZ-!~(i-r6Lxq`nyuwQXywT1QZ8lQx)o;x?F$Ir(T{RqM93J!_8!u1%_H z{X=lyjI~MYlGY~u5WJ4<)+ObKRJA@H_(O12>!X3k1M@@HC4Fno5Bb*oq;?%Md(7*S z_LznH)|_p6Qk!jhfQmQDE*^>o?*uVd)9h}iL|q6lW~)=v+1bWGt7(pSfE!}XRbsa`p5Wz-eT^nAg{1K zwO<8^p8AgpISNDIg^~(bEW~-i&O=H4yM&! zG>vAvSFP6seHFBZJ&Wvqo3z@|pjX(Mpy?*Bu<54GrdO?h4_*`0*)-jB6nB&}ToY7@ zTNCtqu;9ehaXedWGL0wOZu}m%4HRjMx-;f&#$CA2OuIPpXFML^CNn$UG@1S`;~xC?;ADEc zncZdFjjJ|&jH?1g`V&c&=_6bf*F*3(Ozk#)L+4|YOZ+#+kHC*jd+?LMN$mR@<4)XU z(By2(_Fx}S^{xSz-ckErWcH_221e`9}J}z0Gj}@c{_|uC?(2aRHWk*V;IkS#vM?z0H>TxPW1nVU{=& zYrUm@n57=H*5|@jTrYD|ir|Od550$3no@Et*7`*6L~m>TL+=FdTuY*Nv?01ecP|@;(WD5_-k-j=5)YDY;AaNw{meXS!>$NOw(r5+V(K5_-o(8ib28 z+%-iS;?Qx1>!#i@J5wSJJ5%Bek%lp<>vZFAV^m{Q2HZC(J5%^|*Bt$uly6dGoaat> zS4y+@E_e`I>;!j`=$Rj*`p{rd=~W}i2O0GEk%mErT`4h!X75LAu`A_~cZ}g7x|u7` zgd0FV#vrB!@C)-|3?hj^-J~b_H&bE_x%3CHw~;6@mE+_bgO)7U@FA!*j35(9E@~>7 z*6;;5)vy$v%F-HYSYmD|?gQ3T{1V&;hHc;y!~3Wj!&cl9!!dBH;V8V-@Hzeix}Sqv z@Jmozz$5gxqK<$^40myd;Vp(c=p*Pm;AZ^i;9=N%%w00?F+Ol-(0j~n{9!|fZjl@UJp@AvQ6mE z4ewF!gNvMg5!rimH{stSuQE*f|Ed~YO;Q8aaIG}(2xq2&hnqFj2(GinP)S+|4>u1t z=NN{wa(HHjo3EEtip(JRT1gdEiGGji$t>X~am>l^^^&F%!DCHLl*lI=CQxHd6AV*0 zqY0eTB-A^jCXg+}O))IwtQXOlFlq`lf!;#WcUi)3q(7gv5Wj)R`D7EF`bXT4T#b!} z@gx&Qy)$b3s0pKfG~6V+$<_PG@Z2_@^d|oR^cLj-KC?Zyy))_=CC>1fZLF!qn09n- z*FLi~m9!hv9_<10oYXdntoFI>nXUbp4kVtS*O;c->tr3qbVPR?(+Rv@dz`&Kw;ktb zaU>nb9JfV`9naZBjGbtR8xv0!&;1}U0Uk6aj+sGJhcS61@nAkY3Ka+D!Sy70paq@< z){m*9^1wVMW|Gx|A{~j31LN4E89xdfg`Yvc4y?m(VSXmK72b@R0d9ehk!%5v!$(n@ z!DH}Ml4IaC_;1uv@GAU*_zLRim}j`Z!N2hxj4yEQjnDDzjUC{) zn49_+}~Y3F;7{~IOl#&p9A(Ywx#owq#f!hy~|?+|HpcY?(3Y0p!XlTtuewl zl%y}11NT8i7>D5cf_?F7@}b6ZY6z%?)y4|43eF+NXvdYKXOxID9tJny)Z`7|jFJkY z2BmRM1dJTrR$~kpIisW(Dqv)V-@jMNwx^<6Te*T{g8OGX5YT-0}YP_L1_S-tR4 zWy^zlkBlm-F)a`Jctme!(tG5<;(^7zM}9n_#uQbyQ@v9iRW`7Au&KthQ$5&Zt`|J8 zIJVeaKiK3`>s@QE_o*FB)*3h1)S9(Z9b4>O>r?AnyN13%-`dl~KDDh);U-`5aMS5x z-`XDNa8nO-57XO);cVw$+}add?2ivOy)FvJzb<;au!pHX^}48kA-`0ouz%s}BLCv0 z!_`Us(B+^yNn~FR`*PUpB9ZqmoS8E-r+?v>!^)D%lhjE=%gU3=l3rx1lV;|W;a_C$ zDH>Wz^s?3=lgu59ch<5u&_JlWW-=4o_R7ELQ!S=2Xk ztND>piJw-aEP9!@)!bP3D(_`pW8GG>vM9SqaCXrv{I3;141bj;@Yjm0;aOl*(XSPa zb(vshQ52KeMS?SnUSwnz^&c!S+sXY0x9*W$GygD&P>(Nt#zlYW(_0pV*SiE!U;3=Zf9X?Q z)?2pPXBF;Cu)0jJ-bKe+h0?j`T?{T^Wz}V?e8S4A;7~BEtgGKDdIp!Sema*>{9#oX z6Gv2nkEjl*LP^>%dx+$SYBtGX@Q7-a&r#J;u&dus^bb)#seV-bM1L0R5HrHf0B5K^ zQ_V!rqGmeX3{^I2mMVvu4bH#~WzBTzA#{h34RvxW^iWlxN^l@5N7dTNtyL}Qx1w6A z0^mT^8D${7Gs>2@)5_DzR_Fk_e=7eZJFPs0`%~%9^eK|l%GJt0aHo`hDu2}<%HQEX znE6w=iuI?ndrG;IbqfDGvnyDC;Fsf8fGd<^sg+8zlg+4A$~xRia4a0B90UuDQ@T)Q zWjs{}3g=42gLQ0GPpt;yaS2pC7*Dy9eu-Pn*?vi#aXJf~FO?SZGs?55)~d74&R1k- zm0vk~iOjTC1=0CRX(hLSiFD85gH-37b8E=XDc6t;W3n|@b{IGt%)tjUHCr_YcLWsa zaMC%TP{HUUJpXf8bMZ$((aWVX7Zgcq>Rhm^pWweja;dpwxvCIm{t6kvRIX}-)1Bu$ zf>DCcb4DSm3-Ed6TJ(A41t+gn+Hf|`IYiZl{s=HcWhIf3$#`^Yl@iXTOv2gFNo=`} zbS)^MFT!n97oDk{GY}DA5bKgu4{-S4e8=<&e(FBUPP~N6~v-EYj_xE{D7>-ahJe@g;hf@u{iu)Jx2E z^%MLsZ~LfAA@bCRd0qYdedMGD7r~x>5A)=y{yv_5+ebajdy;2x@$m8Y**@w?o^SN_ zQNGcglON`l7Cgy&nCIzNTHqV)Pcn)l`$zjmKgpXLQiK+pWT{Fo@=dtQ;6}DcQF>BdU^3;w^O+2Kk{m5fLbc!? zNdiT7xYU#MaH(*I_>t#_OAnRG=(%%G$-ow*-{%SbJ}(jP#%n9liEg|?-AKO66Z{=B z-{*bD>Ym}sYur`YJ)?WZ9|bPTKMJ~Myp{2L!5;+z-^w@`@>Yg__Q8d z$*kD+VBVV<2jTDG4|+3|_d##b|Dg9&+|=IRg?tw>wf7yz2fYvG#YKG3J0W6f?+<#% zMF_s@xZ{{gBKWT3nByoc@R(zTBO&4**QcjB@Fm<|4eOb@2>#V@sbPbYH=tTOF5@mWY@{xO>v0ZhBe)JH{;WsaaSfEc zLE^aUKs!Fu$(bleLl&4tvX;!&um%=rYp^y9Cdoues7z+sHe}%Vh3L2lRwjv!ES*^! zm_aAZ$zcuQ=m;vD#7dUdV1WguHON_M4Q;6OhEOMm!s$%5ft&2t?QNXcWZz>CCB0#9 zf^XoO?B7y1z#I0khMQD4DBND^Cb$PT$37dLgW7AK>*Tp4bL=L2Eo?%~wU2f3SQ3+c zm^}v`h8k-h?&RU9xpp)8FnbTOvG!cb3=YHfBpU|yME9a{!5%nYsuvi|c0KGv!D#zi za5Srj-G|kK?prv1K>+Au_riJG-vs$}0r;!@W2HCIZ`wWW9?tA<>2H3WfXKbe6j+z5jlhts}Gf|?GELGvE zc|Y`IP+>r#;V3w(yx*dDH&QQ8EL3AoxBp<35%=^OGdtfWIA{m)}Sg;JEX6< z#+SiQ(bK`{^u9)aLVXJUMgMDQJM{_p7yOshg6F6O&!WIL;BH_GyF1*1^_O%}a)&R% zf3b}_>Vo7(|AORdcLTT4*)E;OU65StuJ-fvFG^dfZQwbw^U`bZ95WZBEhOi`3-q=~ zXX%`iUV&$&%_xzaL!BWzE4>8INSmC!GvFpVTcoK@o+_QDe@5EqoH*@N8|i$&+QiHY zx~IX8_Louzdq?{V={fv@dM-Va{-kr7pA`p+$ri0>38@~X+29! z|4y=&It8x5t(DfH*Hi1z>zQ~DwO*RST8|d}$*gtwHMmKvwfKp+Nzzx~M0m1PB)yB9 zD18aO>&yzJLOLR!C>5|K;wR95S6U5Dkn&Ll@Vlt-WD~#%QXWh6R^#45=Sw}LRk(M+ zU*H}jJ*fh)2i1Zqka|&tpl}{kFR%r5%GQg#H@-KnkhAGc<{|xQJ7xRRw$avG@+9{F z|3nu_edzbW6-mW#5s#~wngSMsCDeOhA6#Fm1neVuG2aK}jp_q>!l&80C&(`;kU}!Jwq9T_n=7saR}2c*%jO2U*?zV5BI%9q?R0Lo->kn{f3q%Q z{bpTmb+fsXxX~5-JIQZWcbnkftt+g(ZGFgpxBh`%0j{Li0{^?Uh3yY?AKV|-Q{*jd z9;iR89=21~KDNH(EkFVp#OE1l;D zx+riZJo|#*Chv!O8~;B19M!|I1Hkh(Kj{MH51zMOux;mj&pUBDkN1MjU%Ciyw|z)muzd}FjlN*J z2v0?oG7-RxKYI(1z9!#6`nByNY6n<~Q&Jy+rBpwzbg2{j@f<11Rd7F>C#AH#4Ze+5 zlDzC+1t*23cTD@$it!GG9)yi*>S}?L60w9~ov_%gj2a*0G-ok{H`K^gFnBIBu-1 z!Zwg}AX}-?F<=bW(2v9)^k+ZiWCOUC<=}a%zwH8hyud!nY}3d-2Fq;gNY<0BXRrRY z0A?;&FXAp(18f&b29XT}MXx2vK$`|v0g5z^GyrUgufz`mHmtMoDWF?uWSb3Ue1CJh7! zvga~)i8g3i!lcuq@^X_XJr6!vOe!_b*q1DnLwkQWbl`3#*a1iw=@8Slc z0@?RKCkFE90;S7bg$gN-&LA+5)tW306zU3BD2}b;DGk_~nII}2ykcuD{Y?ddS8RXt zEc|V|>ck-FDryfph{<3kf=S}pLjpblr{TS30;`huqX|?9Sppb>Zi5byuCa$;Fa&?y zCipsgylVTFx(4o{KBKPL_EOhD;bu^K!Oy5l)OFiFc!sSCtm1B*K{gYdiQ7wWCRvp& z9*pO{t-@D>)wr2-XMwYD*KJL>>$Wyh6BP>XBiRq`r{81?m2QAHaG_EdI+S zpZow7Cfx*YqQl6;>4cLcODS+N@9S>0upTBj|Cd zQd`tq^c=pTn2Xm-a!^jL#~VNcZm+Ztx0kOw1UHh+MK#hfNNJ=uadK2Uwv&T5qyYO( zzCH=yE0le7_k;VH_qX>Z>jnCQxp1z1gcHq9?nAdXN^nc|5P%Zg(teA*++rVn?0rdE z+FOydM7LskBvXCBzUVsG42pCViP_$Wn+ux3y-rt8Z=}7RexrRJ-8!(I-adRII1haj zzG=VZ#PEh&_He#F7j8e@edPP8h=$wXZFB@*+ux?M-##Cl&))Wv9{>;FZrj^7+yU=6 z-2%D?><7sY+82Ne>=u%Ga1^z`ZUwFA1@sq!3vqYR2iX3ubIb3@4x+!aw{N)XOz)xZ z;_lhoHMHkgZ5!Hw* z$ahNwze8seD5i(fe+Lw^LmN6$?=<9qIp}wo8V`=gb->@Z-?MiBa~g)>?%D6#zvoQv zfgKw4)a_#W9^Dad|L>Te%F(w{RI983~~ z3dR@0;@T8acBhLWAAk~k#p9k7jJo1cXfJ{bnGsxM_cQt#uXx1Z8*oLSpV4mr99|6C z!5`qy?Mq00u>a`nEU~ZfZlL^(Kaqb<`jc~FDcKVAQYIge-UolMcWQXxR1ZlyHFU;x zZg@!Nq5TobBj$f3i6o0`ctkp!nNHkE!@*qg&Zt~4vLT9oBs!|$T{1E8E^Y!i3>?PY zI3CWyPbA-h9^bGPHvzpBd>5S9uo*X=J9smgiyr}wV4s^Bu8>^@MelE>u7Dy5a$Mni zi$Q#MaWE)UFv*pMV8`DinfOeSAin#V$@eUS9Uf?nKDfv>LmCsZX&e?oPZm`UM7I= z;)gnUC~A#k68R8EDA`0u4mAlJf(s)X0uIH8J2~9ZhS^Z64QCYsUTtWDzshw9apG03 z(w2s+T-Q*?HTY`7HS{&ybt()LZX0zS+)7PEg*lq2aBv%LJJkeE#7&~MgA=I{sHTRm z;Ykf6sqGDu!O7_Dq?5@<@~kyA+`u(8ggb7Kecdnx6@d=tQA9YtrhCHhH8lkl;aH`; z(XdK;!jR(_MmLAYE_k&uHcT(yZCH_{C|HrS z+c3#7nb~2WqF|C^ExZPt1fF!d;sQm%TE{x_$zXB8Nyo3`YeC^k=qkV!N$VUeFfj@``B^2UNy>_|?WZAec1rF6F8v17KO)bJbUDX`Sgq;Jxf8m{ZF>q~g-vkj5BQt&$Zm(n?? z*@ihNf8`v5KYKk->fbvxDKW%BlTh?O}SYu`Ts-dD8Uq6-hTsS0;&MCF+cR6EinUH>uC)56h>QFHbrwU(GXr zM82HvVep9ji2P=0rM^-xrVq&vZ78|p+ucXfBLCsS{zR}5M)=nZ@n^Ue0ChGsstKC(CS@l{WM z#h{56y`dR@h~y`5DOzvP84kfZ!%~uE-iJ`jyqBU@cdMgGkqq?g*tCtUoq?Uop@Y^c4Rd(lGg)^uP;I_)n>PU5zdO2H0 zsr6_B9Emb8y|+^E7?wf3w^F4S6IyDFTBR52K8Z?yU%%WtN_`I&dPn7Q?;Vx*_4oA0 z@LF;eYDeYg8Oyyt&sYMAGhLG5XXGkV0bKOB+X#eqSJ91yqhqh(%^L5V5uWIU25-i9h}@j>OiL>@7B}sgQZOLSa2|T zN9n#TQ|bhF1n=A0lijo3vvokXWBRV`F4;ZX9o$`8TlR5>e(_5CEA)r30v0@NCu`o0ggj&cfBOW}~ZdHKaPHuCXQXm02}dgHLpFB1&hI;k2NRSv{yn z&*eyZW)f|Ilnji=wPGcpTjE-Qt!#hsJ&u-OE7D6=!Iwz>vTmR*f$MP_tbw-Hw91Vii(Q9nuH#h;@G$3G;^i2q3%9G`*Chz~FRNh&QK93Ns2 zFAihob1AI2P8v;8imzwiby7XY9~?irIFoG#$7iBSi{%^PoF`0JotEU zcyUI&TysxwQ{xRv#_>amb zRvaVQ2~MndqeAp1f^SrO#6*^MN5#$xk$+TvUUy#i5lJ_vpIFhYVn>Bl^+v^cT{rqx z)sBkH?43+!X4gx7%68DNmol?&#MVnUVzap(H)134J1W|1`joZT?5MaNdm}b8yS=8A zEi$u9@x96Wl$A2kyX<;w6a5=tq;x&Dw4z69Q|$HF9;uO1Q|zYVNNH2?L+*`D#fNQ8 zv73uG6>lzXqPwYh3yE-ow-hhp?pefLw7Ixs^p@g<=vrJY_uH1@(lLu{rDL|xS!6Sj z31^~HYfA-Fxwlim5WF0&Wkzrtl2nx7HnwY4xh)iK175S5Y-x1lV5se?HH0LXsjJpd z+jZ+T>)*Jm)Ze^Duj02+*TKJWTUl4pS8$ub&Af`Yptn+6a9in3Mr{Q*;oqgUSSNxL z(UZ`kI|;W5KY@=2o18d-k0BFCMml*UYNB-%IErKh*+@R-j7R0d0!Q%u=Mkh`o!k{Q z%Bj0r|HpTJnioh%*BfP?7@Cpg%0yFS=*r~Y<*x+Me`4BkO!SlXb{ z!8YhnYA_gryH_7#xm$my{w{pa$p^p#_4`=|>St23oOlqvTYnILuzoiBVEuRSL9*|t zd*FBA_f#9peegcI4aX3Czy1gChx$fTsO16p02gWrLx*xEf*+C$=D%`>;jOThYb0Da zy>QDzw#c+(;j>7>=t*=XT&86yY~%Va1%C#Y;O%sNww%B{14a4;=?PFMJNlXBIsPr{ zbLYe_q|YtCIFo3yB5O4Fz;nwBvS{lIXKxuZUs#s0^$W{M@@3R=>Lj?#(m;Na&abFt z76-K)Tu!!v`V|yz9JK;`VR=dRf_=Zl|7ux@>Vb~tuIpj_m99_SuhdFZVX;r$OG^){ z;HLg7ElvG>>I#cju+2N{X$9ESzx$Y#`0isw@{Z-XzWbQ0>~~OE+0XSkWY6^uFvl_k zpOrn7bIIX69hRZ+bN#xpLvTZ#?s5I&`W%Z$hFaROhFTuiH&}*PvUz+BPR!=oW}(6@ zZOPlAhM=-75hM|CTPHuPZ%gl@x*gkJR7a3D*Ef?1{fKA#QGEo7;2*&sdG;UCKLr0+ zKaV@*2k=q-Pq-h!dDJ7ijVN8c7S@r>$ISzUJ_Kt~DX8Z98*Q37>WwxjB&oQI>g#QE z^?LMtP)w!Px2=zW+v4Zf8}RyiIb{In*Drt%fuggZ{_h$CB}W~qzf!Y+`n%>3d%aTA zMEyVhyXJbErZzX)q_TZG_L>U*U1KxL@iue2`dInjO#fXIrn8ycid(9FxnYGtE(Kyq18@_Fx zX)GMI*SwG9HYhs#%$L;@jhEGz)cfcs==V{V)wj)sqdNHAHh1t#(Emm6GE1meHJ8)^ zKT=*&H|jo8zN-0)yuDw0<~sPj8ZCT#_%HR#nnvBLnwK@NYF>@5*EQ;1*0^v}zN~pU znryU-R;bsbUyW|>_Y!Fd$k6j_z=y7{`lE3+!+)9qh69v810&+1>gP4PGBRcgGh(#e&mZHj$b!TYpV zD=T%UvS}cwSxDPoYJ5iYN5j<0K zuQZh;ReP^=r*33 zD#5?0+7_?SeynTGfW|0`I)x<(mPf*AE<(Uf;@d;HV6KbzV!jmFMU68Kj@r7mgO((z8i^UH&;r zu*gpiDja=s(C78nTU4lb9jzpJG5PgfsG!y60eyEvA{id3!U0kF~xTRSHE-qSB zw794nQw7nJ%Wi4Rn#D!8G?UBBnl91Zq8HN>YI0dY^zn$}5e1wowtZSV4(FmR9Sj2w0P9u~aeJnz+Y44%a?3X{+>NPse zx=NkqxprNpUem#&y@wv(!J|pOm+kkm{X0C4aoWA;ea?OEW2VDEa z*Y1PR!nx8t;y%EoT(99K%S2((9G1#f@f;p)C%sYD*$J~ zZ))%9W|8i$6#T8OCwNcyt!{T^s{S6h%gK95?&(tXd+C3xYeVhT6==Vu+K_%-v6rks z8w!T%!cfi1P+g3?4Z0^;jJ$v&#mHm$yb_C!kq=+4VLTsEg{y^%v9^)irc3 zfEVy$s%FIF`gLP#MpTWc9#J!5-PkJ7RjaG09&v&z>#A+4IuY%vy`NsqgsZlC#QpSj zW4&}$I4_;h&-pQ#&-FvHy>$1|#avUBtM*>{gY^69Ub-RK55Rlq2kAqyvvFDAknGhe zF|k_pAU!+#MpaYQz4RN@YE@I!4W9RFW!c$T+1OLfs$=)j+ zP%V^>`Sq23v;(TwS90&m*H^BEg43`gB{`6>i-O5c|~>P)iah?u*l9D&KiE#i@c-98N(SvM~|}xvu3R3w4qD1 z8T^yZ8R}2NX}V_(FRK28zpDDG>I_=+=Tt2s`-)mrHK(de^l8Jws)cmsRCSH+61|Y5 zD<2`cM*prAIHc-#?ZT=d^oCRoF#fKct{lSjLbepDv3P)Sy0WoYs9x3q#ym?eYh&@8 zs{P98toOYdi>E91!&ANTERDsD#X{{@&Z#;`Eduu|clo~Wbx^se>M8XVxL0 zAn;q?J-);Ic7fmeifm!v?*R(}7X}Vv!m9WKUz{$uIDKK@g217j7gELP^A*GVtcq{h za=yZqJ`Sc-rrU1=6t{PEg@6rclqx2{lM#euU$_3 zfX6$5{=13^igy(y`VYKz`|iL`Q0!2A;8j*S)$0SV9g4EjveGL-Q@ySPy zs28ahs3&m5-v%vGJ5<6sRF~<$9ddzQwTorB#epoJh zc2&F{(_ZVQ_&l(^_Vt*oQg=F8r7=c#MSE>lshc7bomDy>%q-0+ZLjU16`W0V&}Nfo zmQKJ;aB^GQ_|mqv2UdaYV0(q=Wix57hz)LQn?N2L+|FjN7#KXEbYO5S*g@M+VXufm z4-B4V=%5uxm}O|F_&jiyp}lrsu)X4i=7lDPuDzn6!hy4c4Hc`xgmzS{3|om>6&4fx zLX*sTp;;Lw)vgL_sF-DtY8xt6&|ej{*tUvvg;UvTrP^7B#WtzdR-0V5GE7V)mnCcN z*Q{VJ36)&7BCM)7xeQ%aRa{xTBJ6%mWpNdp#1Z)KvYbz{=9WB(Zj$DOE+&|x>tcg% z%9H4VWw+!nbc1=UvB8765=ojTvKP9W@+UGe{f}(0?H~LT_{5lY=o4dvI-1tbb~Nq8 zm}69bwZMO5{nh`-EV};c{%VVEddc(>i!M(8kL)qoV_BSD;6Jh_tT_E+@O4d`K2HC- zrh7{Fl-D&5{S#S5G;?KL<=cw4 z6?K*U71dfZ+FV(!J*9e^{s5A<6~(N#(Wg|^+79Xt>S}GVqM`hhs)PEJs-b*+c?Wf| zqDi&ByrFy?Zd~~%hEELR%9GO@=(J~bP&YB>pyObsy?R{vKWWM7!U_H-?SE;G@)??c z!1ijvPe}ero1qc>ByE3bd-ZH@;r5m8XYDKf)G$MnqIg0tMX|4RhGw?6;C4};8d4O= zsC}i$igr=6y=Rf9C}w#lD`tDQSNGJm=RA69XL--|oA!PZXkJ)VtSc^8iWHI=vIRmD9EZ^?T&{ZaUsywTLNu&TI6Vb8)wQ=>_| zDz=S1MrVYj2g$avLUoZEO_jwXERCivQWvSR_>At1uCn-k%}`17cA2|KXLLj9>@ttA zY#+OA>`+OfBT3uGj<5`ohLTI*5b3mTm-&ot2>!HgZ`Nt{az=N*W^Y!Mvu9(gA(D-X zLM>zKWw1>$Dz=T?KGvu>Cf`P~oP0UicFxkMn5aJ{pQxW+Hoa`3exRbFV4~g#4kXtU z7!}K<3Q&WuC>X@m9K`i30TZeQkyI8`6llOficV1?sVorODJl|-jG7nutD#d=Wx>42 z$f(y9jgj*rUsrUB>P)wDRHvw44UtjH)vqgrTdr*|$}$%-U}z?G5hqE<#;SFfUOfWobgTp76vY!|gUGQjYu zpTgz_2<}uLv;c6;Jf5nH;WIO$n!0jDUxO>$Okx0!JuT=vGDksu`|W z6?sD~IG64SaD{HT;#W;BYGLFG-3r~p$d-m*HS;4yGCy)5(;M}_YJSyh)Xzt|!V4qc ztZHd!X?U~ht*ZHv3z%65zFDjM+IX|*lwII?}Gh4rrHJi*;D5?jpHOJpvZR~3?ex%w4XPSRg1-%`0; zy$shmYMEN3p-f5oP&&)hFDqWLUXm?ScaHindYSse=$94crVpb#^W6Mu5Nd?xWrf97 zZu-^mvSNg$o&IG-JGTDSaMED0oizMvs4O^1X$nI1?evdTq13hVX6d9sQ_#jPCYq%- z_LGJqQnREfI6^I#4ogS46Pv-q+^L7rZS1kk#@fqG7MsYXn5LMParegBKZ-6leH8s6 zh%-*%d_Ic)m~;9N9B7O++N6P0l(dFktZ|L;Fx$#T4KzkcvQe?dfkscAY*duwsf*(E z6Kj->dXPW0%2Rh*H?>NTk2c*yp!d({P`bP9yoGG*lg?4kr!gSYhgEr2{l! z>H(T?^&Z1C=gib$12of0_ZX%Q3nxEM{%PsADW8^djFd@b;pz$0d2mwMgtGCR^(1gY z*?Dz`5ff3L@sA27f+BmD>M-J6r#qq_k3YgcF!;={Gi`XKdd$wW&kRTOF6n|@(vRrh zEek9kUb!=EN1AZ1RA9L)U6=H4$abcEgK|xG!?}Q+Du!3?NE^y^?^LmaUaF##a%fJc z3QGAPUu30ZHWOotf>d%pDSIe2||zWDWOB?*FlL z9biqKU7LiJFsv-uDBuDzK|od@j0_U?ki-zkUXY-aA@0@Iz4unsqPTbKXq~t^+=^PM z6SZ~QYDNG1$@llU&b`igM_!T;DI~e19~412D54F%2zgO%M^j;LK`zM)krd^=!hQ1< z?xzH~#jjDXnu>C{#eU7NF?pt<2y;OZXDZmm+~T5KHtI|Tx0r)I8%R__vtKi(m|fga zai*dJbDZKBaYA#9n1dunJS{q*nRI^U#fYQfrsKXHE$*mztc?-Jh#zaC#8Jp&keuK> z);`vr;6;gl=AGbmRE)2QM(<2Tjr?a`P(+QK?Bh5(HS*&;GBLU~N<6+MN<6wYC?XL3 z03eww%{a~rj3~_@bLHtLFj<~Hy0$ceiCn_ge7t*ozpn_ikuveT90GX7DYt}IP|n_h;j3}^B-U0bQCEQda*C`XO1eVhIc z?j1Us%CdBN)4(Vy+ZW9^j@a+D;j*qI3YDuR>@lGi< zwJ08;8(;OXx<9khuVl-x26jIY@MU<{vIl5*{O_Yw{=o*f8bWOLi1@#O_90Sz?Y^iys9EBRA z7zIBH$r$Ws6lNG&mX@vM07um@;TT#b^k_vx+9=F5q%qNDX*XzxCb8|fL7SAs)W#rV z0XJZ+M-l_vfGwNSVzdqT^II|zjjSmx8fv}vdUg{2yPkb1^Lq9T;CgMa?s|4Kko2yo zZe$1RuBfhOH>I7^L}SbInqb{I&3WiXBu#1f^%3m#oThiyc}*^Uy`>>-v?ABkkR~6O(Rm}{C<)tEM`s#jJcx-+VBQL}(&j5DgFz}w&%RWp&@HqL~aRdv(c zD{Cf@B+Y$hR&@ezTbM^mdLv)0 z?VYt6xBk3lwRW%Ryk@T{SXZtrLmsT#YnqB{6s()7TdiG#&T4I$lJFYMR9z`%$lO}Z z8cmt9)XwXWuhFd4tkaaDcevy*j(4P_ROzK&t7&5%E;&-Nh1rJV9xm}#leARnt!`uf zop`t;sKr}-xa9A|pcbNi)ZS_zwHI)0b5P6Qi9YI}mbJ}WG1-Rgw=lOdUnH(={yXvS z#Q&)miTINd-3z#_=$?=+PCg;s!fe!SWj5(fNSnYUJ1Jd+BE93tj!RESPfGnQ|4aQX z$DtP`2Ur4tjphJcX`VJs8(`sS{gLffrD=Do0xbTPFImT>yH#JZ{4HtPU8>zGx2#?E zUQgB+sGcm+bJ84_I%&u;+_KIhovdxvea=eOl8GIL zMqN)n18r!}${iDv3H<&BsS@=FuiSIaBa)z$KoL0@y zrB$a^^W~XH`0|5UnJ8*DafcKQ<}Bog6q#~rc63^%JUWeJhZKJ12D2ZwJ*0?EV<2Os z`I)KNs!Dv^4_=25jzJ!srmBodqhwcCswyejy{iew>SK^rgBh4bq1iX@Oo`po(iwqrsZ`4zs(~qP9KJDoPLjb zT3$6~RjO)a-{yUX?lfSv>f5{#y6^ISw2aV^G+tSaSA9n_M(B=a{Af80?q~iEc|UW! z@@U4Bv=O=yx+iJ<%!f0MWE{mBrF@b$3Y{b9Jw-lB*`4+Ts~c{Va+#_-ZJBD6vIT3D z@<>K^TD9USdNOmhLS~i&k7TUqji18xzBIH&xeB;z z7f4)k(tch_QgYJMw0*n;Wk2)NG=d4rcx8feAJ5CU4-;NS;u29_#zb@yl`k~as(3rT z(8TEzk-q}J(3sUPG>OWWnirav(22@d;5fZmy+`eZUxIw4@iHbSHJbLQ&FUI;a#AXE za#9L-5By$y#rD{7uR6?RR$Gvn)h{&`WHoAK&P&ZZWG^+Zz%@|cXlhW(9E-Zc^bMxo z*;$dJ%=t#sVN&Gm#Wq)rVWz$6D@H|5C2}Q@Bv*{f)Lea-iQqEz3iLl~mZ>XqK5Iy4 zIg-zstDY`a!K#qbsC;h1AreXZo6x>W3{0qU=n zUn>XTH`%&WUn?7-8-R_#PLsE}5y-&f!Q1R@?lg&ver86RHy&f&X8g&a*4r#Hrd9jd zwa9oA{TbCaO*5)@YHym-s++WU^F82AQ)+b@)J@Y)?Nt-ut5EIctH^oPS4>xsT{Zce zQ=zY#+RZ`_!a@&!^A(f8LjWiAc#Xcmqusm>-FE!W;5O8Gpuj`uAwq34i%{py2Gur{ z$m2YI*V%w&RGHumKqG!n+N9E@3NZf~`_-k6SBN}FBJvooFrhnDLwKsD2EScBRrAL5 z+N4YU8qZK~Oj!yt{RTcuk*yf7n5xMFW-A;uU-RFXs6adq8f3Lb!HA;6G?o!ods7ytQB@<_vVj*s}ag;8_GTWG9$yWTU%Em4K z7gy+r_Fq+sl*zfNdsgP4lY=xH%Cj;X^@}1C z{EK2VFtbvCJR9#)CICLgqyX<$CV<}wNAym(r;44G*UdXBcfs8QlJvIey7{(gFV3S` zvJ=^D)6U9f$u9J}?A(R-RqKKa1O_M@CC!p9=tf|ZxC9$$Va`u~9M! z`DDIE)oPs2o5-KcZ#8OE6M+-?li=p@G^+W$dD!dn$cdOztCmI1gI*T7JaR>(Mm3M8 zOjfHjDrNFK-m=K5WWrU+%g~ci3CpM}BA0l}sK*18$yLdOtCE*^%c(M~;czml9IQ+} z9&j>XiTC>wIdw5`iTBBXt7fuiW%5vz?1vA2p_!r zUM7tsnY42e&h!jgCM|>JOt;`&H8W@y2T@E0%?!*3=K+c5V?BwO%y+eg?Rf&hp2@~>tYCZBX@|ZOzw{IL-%V+wV$6uJJrwOYf3w{+OM5@vZRU9 zfV_#)9o2yBYsxlc?bPkmcIr0Z$r6;49BfCY;h1Q|%-7hek+K~#-*}vK+D^UhxE<=c z<8Vx0b3EyE-SHaqHOCVH#{-5_37){$<(lJlM-ODz9512o0X&Jk19i!rT zE57TU{GhM+Hc}?0`_O!76VrWZjg;SACZ;z4N!r8rr8Q8VM*Z&69rYBq{dX4`YhwDu zbQ!CM|1_$C^}EaOE)^^pt2=6R%2Qmy(J5rE8J*E7%}|xeFJnfhtc!Vx>pVK85uKMY zjhI~*vldw%a9zwZ!CJd|fn+Tl;TM>CCI}b4h?y}gTu9Umyx;7Lm~de-BV5P(?l{y~;FN@cOg)luz;O2|2@xng zD*{vD?vd`{?h!y4E7HA(AK|WN^(00j`IH#p-jnz#v4o7@;UYFp;7{{E5$yEsxnd=h9;j2kFF5ZnXmN@}> zEOVZ80%~&}aYtC|FgL-@M_6(36PTOx4zngO53`Q2Hs`I$C+r&@7k`9x7`!HbR>5J` zntYFnSp^<=FX>qYvkKVk!|1WuzTvY95-LIpXBC7Lve^lEFY1uOkix`@>A?AHHanzn zI@mXy&93xdv*!bS!z(=$9&z!$;rOFSkNNBe?6`P^M{fr=MqGSv2a+k#S0btOc)(VA zxG{P=csnRPyc~LCdD-;?b{k*m(Z=_3n9shCJxnjWk9|LYPUk#8wejyG<8kh@dH7(% z>4mGId7RaSE8uvXm8ccKgQ_-uIxro21*fHUC29pnV}FS0j{cyEOyua>_^tMdHhzx&V&=t6FNZe%IeCtLW9>Ql#@g1}GB+;=l9su7 z!2V4|16Em5CSF9=_%o}5bbQY0eirN|bB zFTz?FzDaQblMBKpW4lG+7wl?@`iyodYKi)Sn(raPc4xGFkEPH;_5U6{LL})Pe2VR;T}snHNJXcntqNlw>Elga^i*nhsT}+e?d~Y&QDpO3zI|7KROj(_Lx#bJ5BcL+nB))rn z;axSK1UjTwrjWcc#UVW-@*hWZ|}*HzcRSAo~@)3K|- z>naEBVCd_r!B`I1Dg{0jKR+9+ibfIz++j%7MnjF45!|R9FB@ptVTgtwXo*%$kd2p- z>t&Lp9St8wYIrYSI|<3P9c5jTTK|(=tG_JXM}3kjizmtpKTDOxpXAC>E7Rrh zviLjMYc*bKf_JjlX=L&8_{-UMvSmPd{L1u30pUhLqhKZO&+9OA7v0Oisk(KVyHJgS z1_9v)%&bmtf@>7u4_~3vJ-)%ui|=NCgK7|5QBBo-qx(=jusk4wAV*F(&39Lmz84w3B(R zeim?+dL(L&T5cjNH_gFhlY(%QLV|rZDMp&*rcp?m6r&Vg)g#TL6qDprkWZ3N22YkR z3MZ}^-6q8pc{654DZEk5z*lmwYJ%R?b2L*hc^P+D@lOo{eI|-g8-rrj_CfgriStAC z0mh(wYooygeQSMCezk9E2*0WE!^~UY+nP5ueX#92;Jcc)HRL$&f$wYH)db*p?~%Q$ zxs7^Xa|d__`aRCzF7PhgKQ(`V|G_7X{DHa$yaRt4^+(Ma;2G#Ykaqw(;O@Ym!anW* zPs4Asb3635ns(%;YEELEf_@9viFF(P4P0lJVmpvT_?N!^mb|CO2I4mrgSs8?fgB| z@tQWcpMjgf(`vp06P#9KL498{9n}UTt_C$7XhG%GNWpnf(`#y>^J?O2hJfSkSw8aG zntZ!UK$2gRfNnfKH7FPuf=U2}07Gkn&`YdSrQMIf?!$B#)u~guidO2fmNh z1@#b}6TlPjKSQ5H{S0>!+q9#$0e^;*XP<NkwpfnBjY73R z6Gdjbu!vfWY?P%9xY*JR)g@aDYzF@+yN~s!EZMpU{l%8Js5Z+Yti=|*Rh4~u|A4rt zMV8wUaZ&pR1eGpAx_`hTOHk>Zh}#kS2i%Uh6EVS46-Rm#Jnuw|^Bm_n-gAQIkCAuK z9f#z{NLAdAk^2XXN5`5+-0l89Mt1fe=h+Fq4X(0S^QtVwS6Tj$S@Zso-LqqrB^y4= za!;0R$%3k~boS3dR%OYt-0I)i|2AA_|0sE9|69Opq#Vnkm|MsX#oX?XU#E==Dm@fK zt%#D}>QAk>g*3+!B@e??jwQ@Otr#pPE=oRFekg`(_tXk5Zdr@&P)ty1lchz+#r`hW zU#>qCLv$!6L*-n{<@zwoV7X96oKPl^g;|6$4)!RJg~~-Tk_crYSwvl^{BnILjwX}Es8r2L$0kJG&pu1$FE%#A`w~icx z^uBEC$bQ&zjIJMQ>&S5Eesz;ZZXJ1F76!F-WEg7F$i8*qaD7o>=-!tNwGOr3$Jcr& z?rBNZ^R+|mm}DKEt?@cvJ3O0jn>2E$m2Vr0UWk305NyY{slE8N^R;TsXuL9PA$5FP zhK;15mV8vX$L-)bT1c*8t&<~4+4-&-xqkS)VwjeOGC`2Tk^`poE~!dBDzEJHR8 zZW(aAWrC$6L*+H2Pe;ZX@U%YD(V1YG-iN4;j2V3b>!!oM!Z~$hyu#U?$#`k&$e51& zrEPkjm$p}Mt&J~jfpr%eTk%O{O^vT?FKw-jO~@J>gX&({ni?CC9YS`Y@uBsQ?Ly;x zWUY;dZ1a)L!&DQJdG@(5Y|)4;tTC)HxGtzJtnpPtaNS&V$;1NW^K5g$2W+nz!Ws#O zH6E~Cu)b=zU_IXOs-d*}0J;~f=i$y<=aFmXdck_YR$3nFdcYRqdfs}$8tNK?tb|rt zz5x3wp)IgEMTfeUmKP%_p%v4dqD#w*XeG3{wj#I^_+Zyi*I;ZF>bff2DY}>zoDl5l z6ul}uIDzzb4-Ii$8NMpKn6?sCgzjQ`uN@#-#SzD%=a&YcKXET!s5WRYM8x(O%zO>~Bo+`mPGwlpyo^&g(m4 zk^zYbk2I0Y>pKG+-6FyxQ6!^VXcoG~kR-6H$7ULIC?1nEiz_;h&7nY7ONb>D7z}o` zxPVE*LdF6I137k`4c?d(jEQVySr#@h7?=g#n6w$4V9VwtHj?{>EEF4#@IBeaq)q5= z2HrQ^H*89}C)<>?F)7HhDJgWsJ=t6^(Q_@KBQE=V#*bq@dwl_3_HppWXOwz>@k;ag z;`O&*8a~C;!JA`s@J{pLSf|-I)`7_m$S2r#|q zJ^ry#X-h9sAP=oj+6XIcQ*1m;@`|S5Gfpd!4XU4tY|F^0sEH$|Afwb%>MM~?v0WRv zW#lzvl=_KK%~s-OS_#jzUK>fNUu`A4+FEIyi0;IZl~w_|Gp$LbmEhCKr<0qZ1?WFb zewti~B&l?!b+XG$>uMlzQ(cluC%a5_d5YOnSf`Vxx?CA1!2H!=PvNfsufks$Hd&m5 zy%U@)rX)-jUm128>&mdJ!-%6MP=S|+IV4b^C|+_> zkC@6Wlfa3Axn(Xg3G$C+dG^l{C76fLr_8f_EZcAUh>86+;`Z6{Ec*`8Yo?gu}&;&UBk`)$vl_S+<7&#X_7Jhu{lZk3ef%br-2Ks|&uczr@182!oK z??L{_s|U#g>kqbvs6)UWud}@$SkLzU!A81gdiS8t0t2I;1b*^*5_qQfC+Mrgo&;VU zb}E_p4)o9TeiGP$I+c7`{3P(QxTE(e+%pI}`kzJL(feJ?W5jH+s7~`G)^^28BJD$&^?Q#9ZI;Q?tO#g~RX&Z@or7g6A za2xV5^&@R<^`RA^2_uo>aSg6V0+`_ z{M(PXg*GAWZ$G-f8`hHKAJL=Rc}em@+uwe}t#p4OZJ{k6`^v}OmLxy*TWDKoE3D5) z`qZzmp6>s|Z%Oi!cc3Sg_KcrqT!s+8yxiM=`!>F5=-U`oSLj>hTZ~RIlBl}AjTJbX3YQ8yMP1GZSlT50|>`?T1R=0C5`SnC{U zn!gkD9IKOEIYZCuyQ9*)>$92 zLj(Gv`;dL0_#wM*z=7hNQfL1I#m@dYrHrD`fG~7J1J+r?0vJU(rGNV7lpZMdv=a8T z?k_%2Ot#pMq=3dK`qQ_to>5eQdrV<{0j+@cr*D^UKDZF8fY#+JA|3FbzV}g{*84~b zX`*OhwCI0``#I?^4-`cg(v}ByVQzWg2%9Ln2(>)02#<#%+v5C7^&@~qw&j7xJTBEQ z&cB-S%6h5(Y6{7YdKB4?c^vgn^d+9~;`~?Et0@OUuBIsZI{P^L5asNn=&S7O1Wi;W z^ihw>zC;ZRQ1%rizp@?(5hWi8aq{`q`pPOwX3~BIb`^_~oqW2AoqQJ3yNVamxAB-X zQ8EkFRm`HXXkEo5Vd2?;Mcc+}=MioPZ{w{BZ%3^R-{acO`@QV z;1ah_{ukVBiNt;KKacJO_w(+zdJ+EQ--C4?+n5L3>UAFYQ_!tm<^e~8ehP|6Fb_EI z9+7a~y~qD(ka<8vLXZC^|N7+mWTN^+9K}SRh=_#xWIyOW5w3}SB8WZ}el*BCz%`Lf ze)1>EJD^eY$=@r$8_NsYE1*e3@P?*IQ{r|*;}vjrz^QP*h?gE`2lz#t9iRz575)PH zrN;}8D(cw*Ra8yz*#R#+CQ+-flyFL_Hdqr}MV&;Q0;Qx{g0*;|xHUkDel>M#fF)QE zvo$~v(~e}jrv($$cHZeJh_M83_uT2(j;?TUdw_6oWTYTQG*~!T5VO-$G*}ETg!`Wo z4=zdE>6zC@H26wTNg{Dqf~N3AgRcgOk%+;f!FheIBD)f#Oxx+X1GC$KJ3W6#i83BmQ>JRYP`oR#R6EArr6N^7>R$Gs9O6$qcW?S+5%M(rpLwmu|1!GQ+EI zyH*W}7rcay7Z7#M?WJ3XTfBhy4maY?xxE6u!h9CB19Mr}+Z3p?=$vyK?)3_I7W^7B zQ-WVX)u)}Q%d=_=M zm)vW}py8k?-N5dFPX^`>crwsiG9@^F zfVbqy!0v%h2YxG^66`JcR$9d;{A8eej(g6xQlg$hzrz`PE4><2#ee7Ko};FJD}C#B zHRzq&m7uFZZ-H;!-eA3Tdk0jekt_YijhXp2<((TQQ@)j|>7%3Gp!+subksYy(NO{D zkB)kqLih@gnHi9Fg-6sLyY5K6!s|%g!@I(Jn{pO20cmGbh>y%41p{=)JrMOzq+Awfp`^B9IaOj_&~e4zu6!DLe-(3U6Cl|IAjq zuY=x}R>zx?S;q?qpMvaLOtofy%O}$#d3C&R`6IDK9WO9EAbcdSjyKpbAe^|tj$<+d zkwrNMhDSLLc05WOX`enyi*jtuypBCx=O3kg%OA$O&Tq{;O1sX#fn*r(2ET$g49BQI z_0Jr}JCS;WujW}%N;7+EV0H02+Kz2IyB=}US8n^FM>S^$q)KjT@fqQZN zI#SQzN?k}fjjSWJBjrpgt{tx4&6HE<+)TLuKA&(`vD|Z1 z^j$3Ccd@ko68cV-%AW0H?P5J0xRd3cvy-(xWfy8E{DTy&KgoSk*Qay?pAKA~@=N$G z)-T}?FyoVYA$)zxh45d1-2<1geNvaQm*HORlbRBKA$%D-C7dKH&3SKa_ulej4ix zvP1dxrG(GW>q|T6H9o`p*O&GYbRg*?Ag;#edeHFx*Msi*_Yu_k)cD->zaI35|6Tt- zaBej|R&?>hcst)fem%(Qb0g>;y6as3@V^nX9=P6hovYO+E{5dmTrc8E-18@R5!cD; zbIKturWR=Rxfs4E@t5#gpEud394>}yoEIgobJaLs48M;nyeRR0$^$!VoaL$V)cYx< zt8&&juX9}wRwLCo6V^CCNV%W#2-A=7wUVbQG5aXxyqnfv>wn&DX6XHthw#eOhxVy% zbRHq;PMH~c-t8j#7u|55a=QTCopQmAWIec-T}0ADzksX_XWB-tXR9OdXoxt8$3$FMKKkki6`U&K1RgPk^aA(-x++2) zkq=!6RX|^h?pi#y)}$8D^XY3+*MeJ}^67D5TT@z{;=MgwK{D;wkGwAWNj*O z8{sbq)}&q#Y=FjA(le3^g0)hz{Ta!IOiX2-K)Me33FtQQiPSdn4gML)WpvL-)=3FJ z&TSKK$h<6hoO^@cCJq$c;0KD1(%Qt2bGL}w#9NRYr3H$P(T>uN;W=cBcq@`XQ4o@? z;vlGFv=C90V~{8qDp(X^&$pwqT^x)lx@0T%u~kf$Y!|yq=#nkiuPcx)aYJ%d;)>&5 zL+&cMD!B%v1KlK7;2!5*20zaIL3$1DvShFH3eI>h&iRn^DmsUxKY;g2_aWaWJ!J2m z%iAk`oOcM>qr82XeU$eY{4nnk@^g6)?cFEnKgs(6TL=msqhl&~f+<0P2`;DL5vFnq z1mM(yoPvkIhk57n&PNE~#`nu9NClpc$SE*Jm@sud!ibKkz>IwuBlO{>0)4m{ercdF zg7lUK65pNo1gjgzG^20Bv<+Ez-jBEiKS+PX?Xwj;h40RLitI<}GhBmfl4rOMPxFqz z|0q3z?3v^_k|WaRP*3w*@{dTL=Gh7e-$dq;e-l&BCGMDU18x`Jl>UV+o=g6MbC+Bc zZ^ycbugPB$4}0Q)?4mdnU$}3y5@J{_%8XbIDV(}9+FOE_mI>TxaQjm>Trgx`7|W90z-HmZodInpsrvx zx~}=N@y`WAxB_`yfg*f1y8i_l!j}gAhwEktR|YBIl|f`e;4-^F8T7?d0sX~O;PPMK zGKw;2c7edf967td97)SxLRm)nFK}t#65ujQf2uM_8PuQp#d8T|DLTt2k<|Xwr9je~ zNBQCzNu2}LA4uFhiqPeYr_e>9^@DXHOMgpD#~#XUZarLDT5qWIjx|qaw2|})0oV7(Mrk+N<6k)i4+~mn9Nm9 ztB}DHO&Oax7WmF_C1omg6|$*RqU&9!QWHh>t|VQHZoTVTyDIT|=eU-#hEn2{C`v&; z8A#?=KTm-rl!$wpqQh{ECzDWN>w{Li>eiQsABqS9h6YINiJ2&Y!!*51H(p+S@ z`lqXxIeYgyTCIoY8kSw4qmq88TOf ztQ3k0ECV}0wdx&E6hjFzDv*kF6S}2filIl}gWhL-F***0VpNZQBYGu&kU(?Lue*)*glPm`=3#f?5;d505*#48AIAsK3Wkdn|e^{UN$_Pb7 zC2~bXMMY)AfAH(|>w%RK`Gx|+fBLn+e8We~uGi(C6XUAM_HqfAv!MfAzVT`3K3r z`hWCdOuk3*kN!RMd;L3P|LWI(-|JWD--1`^SAq$y(s#<oUyIHf;2Y=<;Md7-lHXz-lD|$~t5@f}fmi3fP5z)? zhwfUSI`0Fn={nSUpf>N2{4FN5m^mmvB-iGx(`)k7!1Z?4ptD|I8KKFmmmfq|n@3c= zT$5KBaS&XcUN5i2SCTLut6W*^NA3siM{X;W9J&>HBT63oAMihDdF*g#dF&DJk=Uca zR-_VcE@lZzxc_n_NThcD04?Qy;B4e>0&m0~2`po?~HYn~mDj29lUWGai{LEFxenC|Md$^yu-=n?&H^Y4oRTb+H zyBR7UXT2Hth1+J&9byT$aSM=r4|Is#0@udf0-cBKBPS2_fs+sa3HTr9Bj-QxC(agb zA+iGCCwn#%$yT^6*vD2}vyYq^sF}bIsOg-4!33vsreRIzL;<5XgP~?{qJhzN7sa{4 z9*nw-b%i~G9mTl{jzX94NF-O-SHUwlG00|M|Aen0i-saxkM33WHSh>1Z?+fM8>*h| zV`m@qzJ{v@`k?F0Ue8*`@&bCpZ(tGLfMh)@gOv`>fZD*~+nJ9fgY|^@n3)dDK-$eD z+>PW3b2f7pcs5iwbB>+oK=D~mk%(e4esN0NraGk*0j3LZB zsCXc8^HFzzbK!)j`3#YrMc8&OLx43GJ_k;KJz<-I!hRb2h0%kL^z}fcB=a|ni z0(&=y(G$}Xlf(ENlZD==m`~WE2i-3*yO4j5*@^WTdKZ%2(7R%kP!5dUKq12c#}EN` zBiVxzF(_~pXc0pU7U4X_a1_Sgm_0FjV^mmsW7P0eBoy=r??bXThRPtkFGd5@#IWHV zk?f1v54SJIkwI9CT!Tc5ZZ7&_AenPQSIk%dHy_>AzRGILp~p!dB8-b6EbI19&jG>8M3FqdB~j^ z2XLF6?05jT{XmQ};~?-Lv@^p6+8J9BW_oC2@)-HhE(}+A7id?;%}}PtK}-{s$5?`F zF)$C}8TXM4WiEi54f~nfDnB zmPfXV1SNBZ^vag+hs_W+qn>WIinE%A@~6!l}UI7lI2KNV5X39Bh(dq zBlJe-O{hXf5%dZm=`cKQh88i3?dnEoF}8T+QN&<)DBMZ@%41N%poC(~GCYbImF^06 zhDW7)F=J4I(w(rQY$08x=Sh!%Q zt*kN7A?z`zV63gIEm&J|Mq5xq)@XEs*+Hl+&_uPNBV+}^x3TV`OD67OA1zQp>^sn- zfurFA?b9v5Kx`#s39y8?rGGO8KmqG-JodiFUIZ-C|DKft^%rw9lmL1&FdO_A9;eyB zO-OQ(YyxJ1pW|_z1>A@v8_7msCioeiuQGvrxTnAk;7nF4IvapQZM172b}P$=?F(#W z`LZ{%zJ?~=4|*fZkG%;=1AGG#lJ-I32S>OMdo$}g^w)S*a2*)KxenEb?T>sj%b)!{ zD~7{BHWL`b@n;7h3BXnO9$PkIssTu*o6u6GL*}rDD(CI|l34a^OD5%?ZeFu)kVWZ2!KG_@&=QetTJK0>$9ZYdJTx56P z?y~11XJc*-a1LiKum?N7e$oX?mk!YjjKB*n-+bG{%c z=6H&S3ASW6$6SXW%-3TD$JBvleHejdcP# z0=IKJVs&<}jdcd=fZMrFu{%)CKwWGH-YBRe_AGh3AfN%MF4hI52kPNn?d%F=gf_;~ zfX>Kva$TTya(8f@fv(7R0e5kCa%r)MiQ8NKUbqa7ea<ZK`AU8mec^Nq=ajc)(D*? zglo~SlIoCGNiBJV6OlVhbW*|%=++7oB@Ng|v+yJEBhG}^|D$k0bhEGtt{F3gvn30n zKSE_ovLyoOCgE7S9xD`JYkYVmRwJ?o;nCbi?D1$WNyi{blvGQP=IW%?IO5UVW9T*t zkL8XLR!ddLkLIeR$Iz|GtH$}&;0&v!wRtM|S|lo|09{Moe)wZ}&GHkr{|Vb3mhQ*& z7`(cf34KYjU;4Y`lH@ROM(!olOyC&2CYpxhj{#1Do((+>XFCn*xFg}?j>jEm<8{>~ z$;{mS*nU6uGc$KO^nS_o+}Y9p{VZ#Hhl?7WS5okduHIuAU7WBw#OfjWfOTSq)kIF9Ib#I8p4;(m49@r2_^ z)Dh25F@0e1va6LIlbDuzcZnu>64ASv&9wXF2Y>JMda3jJ<=ko3%W62h?tK zcC*H_mj{oB4#PA1cs#dH299Ij1CPTq{yktkXEOK?b{yv(zAMDx`@#@TJaimq2yhYf z5Y7VRvG~5S0Jso74!FpkFNAjFE`q0U7huAHOTl*@Dt94fsdyG3ITf99Xezf9T?c$W zDFto^mH>Bv%h03PnF3u7w*y>?=dp6|4saRw7y2B$8vg~aw`1t!wfQgfXt)^qMYvyp z#Lse@?RF7JUdPXJ8-~~Q(U_P@i^1#iskB+n!`x@NO{IN9yY2c7?T+hhtUIoWz(m&s ztVGwnE>qF##JUY1jV-5OO{I0ZMq%$$Xi+#$G<`BMl1!mZrd>c1MZbV!;<(PU+%C`u z!$kq3Fn1n$F#S9_7wCh)gMovQ&vHIbpY1#wIEX&ec^1?__(Ak@aI>AyK@TL_Z6kzBpmyeE8$zNw_GRVd~Sk=pgLXSf$`9txDABkU3a;}L;C^! zTz0u6;C2%BbJ>mB>*C|G2esGke4%`ilFS#0uglcLex<%}Qxkn%`jv8GW;)Mwo8>&y znS+1*!$EUmhPi8@+4vXlFn13A9nAFL#N?$N;T`4Wr7cV)e1zB6VPUE)9g*fzeIKq>K5Dsw&bC88pgtSm(s1S#WkTO@op~yoVS}24=9cH9WriTGrD5H_I zP|92hkEYB>D|0P}E_1z-LioG18EK;_<*wghen#4KxbJ{d=#%Nw)5=|cPX7*gB}FU! zIlbIfE9FbH(km(7rTv^f4Rg~l`E$BfdOZE-^y5hQ630ZX)G_fmGRH)|q%?OrX2fw* zurG1kw6x>txxm~waonzqDRh$W%II_#$K}RJkcffD(`~d|pktzq*6F@0V?y*z_fGc- z(YrDZ6ikRdP_QdQ5|@^96Uj~Yw44lH1}`mVvmq^KLiA?*-+~O@W&@e}9{9b1B%2N8 zsPBPga0JWoe<%(Vv>`iCAc-S94B7XFHn2043u+j!%}@az26Qn<;U_MRI3A_VN73|RO(5DJWo@UoYdVGA3zDWO4cSp2Cza47_d?%*e z3~q)yqV4)Wu;<~1;f78m?S?;~-3;6H+w|?o(HFwjtR zpbX`Tq8r-vboAQw#BJ5n;I~3=)o($zO`i|fuFpf|1Gm6QQF*{EC<(rHTkI&o|If;W zda9G?pW*)jO3)?z4F7NN8U7#QOr2E!9O{|wIh+)Gcn&oidKQq0VgvK^e<6LY`wKn~ zNBj%vY#j&4(H++w*K%|xw14U5Ae#;3U~!Rfpt)GF_U_+s`TD=Hk2$)z_Ixfne?t>L z4?168fc`dMK5pT5@OE5flD)u0f&K-iUtp5xLbw;YmvDvpmr(uqKV^jT2lM;!!=d`| zpV^l}?fgZP(>myCn>ma0oeOVtwVCF2t7GTSBNGTU<7GTRdC+ot6<#mHwU z;+NUpHvNJ>vtMTW1^l+@SKzNr8=HpPC!X1ck8Ejbfg6pPUz%E>6eC-~zu0G5n?^%# zY#L+dF-=`L2m0M|IMDBg!!3ud99QXqem0sjuijKVOj#@RnDi)JJs7 z>or*Dm1L6y$C~Ypr&=cWdibwBPT}ciq?duXFAv$&*3k?fW2m5_cDM53NZnCfB5ODHQya{7GDK z+Edg^^vk$=%oV3iFeVeyUdDAPG-0wh&7^Pwd+y`z7v3}C?ij%y`0RgOgb9FW;v7DV;&X29kI>ja> zT5gk)tBaP~%4|~ZIp*r}boU&i<+(cR6cSl^HZ!s)y3z9T>`5GFQg)g0d5(>2Vs<%e zBAGRFwyY?*wahtpVzv$b|J75bopXDT^~imiGco%a_jOYC)0}6km8&;E@doqs32_bN_>$sHf3~XNm@zT=*&$?Oveb%Y|Pl0 zO-Z9OM`sE(Hm1RBQ_{E?=S1aJ~id@lCP(5--=N92cQ;OUVbL%?gxeJUFJtE}j9udyD*0KWQT!H9EEI=3Jc8};0 zVa;>a9enLuK;AvVne4SMJ0haw9jfjT9V%ziS9D+dzVcnbF6W5BwnD%5eM1eledBwC zTYKgE%671=GxM*&Be_S(j&dIaR+uf!Egw-~b`+dyR$=xQKAQWM&Jol^vWX+gN4(8F zW+hZ7og=vuM=Z%ZW_8SJN#5zyxV(vU*H6XYQZ4cCtUgcC-@Rp4Y}|&x@s$U>g-fDf3?ED%tZoS2zXrTKoso zd7bhYRA=sC>IirkeC2zX;tb&4i1K~IzBkOjL5Fcx2HS$UZ{>=-Fx$8CH@TgtxAIWZ z!M3k#L%|P}Z{=aA50p&GJLPZXA1L2|o$@#GMR{|~K2V0*>iaCpdn4EP`67Bz-fXis zOw2aZ_jx0qV>X-qUey=T`aXMAHnCqs8|?IbW}6x8_Nw%KF2~u#?p0lmtECevuSLm% zFURdw$%6N)40h4Mq4LXd(Im3q5P7IPI=I$O7HqKFtqDQ5hlI#?YodaqgJr?HHPOLQ zEEyAvL)t@jYc}_44_O>i8nC(7;*fqiF}IkspRP1uamXIc9*s!*>7s(|t?jL&*tLgV zi6$kjpU&R8pDrb>L{lD98nB1N-g=)(boQxA1IlA^W8?ix0|e&A{wpt!*`t|Am4Lai zJYltsD_Pr!q?7Jd;pK38`MS8ohOTuE` zc9M4ACFpkF#qeU^eX9LT>{l&8Nv-#*?5(Aojs57ER#MK~EO3_9Oe=fqTDw_R`&Bco z&dQfCe^x%zYL-8p3o$64fOVgykxeb?|mH+0Jh8`|W zmnO!Ym8VIU_@0#~#wDRdk|s@(r%O9jcO3=ab?i_@$?rPeb&Qfn!_o44j(6zX1@AiE zbG+s#c3va7<5;X);+q&(tV@i$=D5VSSm%;(o&Fui>(o8RKj~isui;%1igk{D#kxNo z9sOJq9Q`)?ZuWKb+d}>6xP^1S*;n8ez7_oGm^*L_DtF*kRqnt)*_%7?izK11J09m- zLhiuhs^hBb9RG`?LFaYIF{|8mu0^4EH{q zJ^V9tHTpAfVb1uRQ&Fd*7J{du#^*%B-{QZGDyuskH4Yb<^DUimIc0U2u4h~$nH>{S6mrJ3C}a%yo$Fba z@PB8Y#jVRJ3Ndf^JNq&2arWQY+7TD)i$a9HSbx^_B0rXjLd+V>!3*^l>mO&EHC(K} zP;cHapkZCkfCh1UW)1!6_a`xL(2@)QSJY3Q?3TNtUfVFI!7W$YpdlN87D|Ka-!L1e zY1j?UZcw8{qCxEVAU{I|bfvxJUM|VF%fRhV9f2@E&d(wH>@iZEd&< z3*6eUg|)Szj;c4}Hh5b@gAunIxuIbsoDFVoXhb!D+2|c`V?z!)8|;H`GA2#9oQA$6 zeZY71O%1umBp0`%;VY&df;+%R@FULbSFC38uh4><*|D>s1>VWC&_cBuT^@NeDvxSy z7zK_(xAF=YMJKPJAJ~su$-@VNfw)n0gTNr1npaE^{eBJq)%T^|)%PRqg71P0q-TOR z!38mC3Yy~jH<-bu;Dve<_=kE^)DQgeYmI$)%T3RrKj%K2uRmA+AAGKUCH^zhmH5v|&eea<66rhK_u%*SV~YH$Rx`O+7-+%ya2Ta{I%%?-~T!V1rI z%+>Ngu7nF8>xdf?dp9k_JlL27n-7USA-|g@vJ>(^*$KH^7APAMdr~gc3HeFZkl0{z zx$LA|A&VjpHa{tkidD!4afA@_LFQ3(L(E4f3^Et}3YkJyA!{>{qD4=NvuAd6f)unz zk4{*cVlP{oQc2HVRvEiAWgEIeCY4oDm9bUqu8@VBR^Y=;+qgtT1Q(1L3BE5IiK>#l zPyW8F8dn)x!+cHb`^;`jsfn$OT@qVOzXpDvlqF1E)*a+_mc)KU|D)K8c>>Q( zxR`fY_m<8(P)sak-&@^M_I!j|ihig2iS#Y_6H}43ACZ0>`%_9}tqCi#))X|Y{Y8I? zsh?6VF=bMFDdl6PuIf#Uxk>F+{Z;)h`nmd#V=tv#(O+Tqs{Z_hk2ucx2_MH^(Vs(~ zpKyh#Z&+8EJU8L|gdZlHqvkVtMZZV?1IZrv3KR2j3#dK%1?UC($>iVY7ozrnli?}U zLU1w_&YGhCKKI|m?{lZ17V7^^{5SDz?)SO>fd3{wPW%VIP=6**=zkN>E+=P}-W8U6NhWn)h$M zoWF_jZj7A2gQ4N?XvhoRjgg_{1+s$ec|pqP0(n7xLNrcZpoQ}jWCeMe?Rnet@-(9~ z(FK!AWmKL zKN+*RXi{mym`x?$f}g;NV-oo5AJ2*sL0|h%a4ISh^tDeI^OXEq(bFOo$rJcl(Lb=j z8KqB()+<#^sK%^U`r1d7J}r7u6j8cf`Lt+8X(rvw(g<)ysVp+HG#s6YvM2S(mKRJt}@xW?k~CY{+=qLa<#)m^2Hn!RhC7ts z3cC~Lz+Z2_6?U_r5AJr@t+4-RF?%P>H}W&jb|x4~VNyGeGTcUQX1xJ}w)hRcjw zmGNK?yvvL`^zInD@iSaWT}k3+sEmAL+?aS$cDHh!($8L`>y%H*)+^WXK3WS3wU%TpDxv5}*~`4UmBPKuTZ?}I zzQ_~V%e>Q5?pB_jvYW?oddk4a7kQG>mvkhhr>C5rGD|)%^7Ir*=`8sy`EkzUi#&g= zr1V8zLXki38Gmg;QIJ-sS#n8f73Ht3Vs4h)E!-`9mRxAJaM$pQL9X~8gDwUMbPKPN z&x-poNMM!RU(0JPXja^$xLI-j+DUN-eP;0vn}j~-GbwH|YZ5-ZJc4UZhL@+q5#>YC z>E#)y_s|ij_l!Cdm(CR|Gs>rwXOc}RuYf0`GQcVD#PUh#Nw|#ig>gewDfAZbTliZhw{rc_E#%*ppT?c$INQqqgoQtY z`?LHS>KgiV`6g!PgU8`{@O*GS$3I503A_ql0grLT&nreeR=$ySjP3@qjqtqkxkjE# zvJpL(WD?i++<=-$2`$w5sXt6zQt`vowu&VcCY3)-6<&|iPn}=UMiNRETB$dt!^nnB zol`NtBDB(!%(QYCv+t&aR+>~^nD%apNu_3fom1XT=_GkKrOVXL zDfSgzrv8uYe-;0cc24<^&i^V_;Z{|20souQrNRU@sd!7rq{6h)q{56_Gp#h^*32sV zOdZDR!@cM;^@9q5eU1D<#oUU%Qx{fzz*>aiLNZ(}SHvM1eP5Mf7lYWs_@FL1XVxcch%(3#Z>jCuiX zLG?l-9;gw#usWmqK+S&i!s_w*3~+zVc>Q?27y160Q|SFQ``|M*Ui1Zz*Pp35jr$fn zQ**NBTO*!fW=`$5_giWsJ-C6+Bvm!sS`DOYxj|ish$H5uii(0c=Z@K z4IExQBQp(5s}93eqGx1I&#cUxk=aC&M$!Z}RXf&(Rr^;|((|kEub7^xk8GmnU!jkz z%&duYtZk~+N7j(lL~c%StbIMpzrwHL)vVXE{3?buzMl1J)~h^yq<;k}&%dIYNqyw2 zylSu}vYH*k8k3nyZhV#ZdX`;%a-;C6xYWjK=IrVvWRm(+(&4p|df|uH+TtbkDU>ak z+L*#@N~3MPJIcLrW?V|+Yi{9nUJ6?9=7iUIGvhWVxHa``y4{!zy0LCI-fB#0N=CU- zLJQ@J%A1wgl!Ph+6PsL6B5_4k&vHRepp)2?VDt&bi3vu(&m@6~kLgZmDy6^Aq!g9V zw6y7Cc&Rb{7QM8og#JF0y(T5#NBGjFkEoKSQ%&FEPEj8RE{1!Y77d96(cj8VrhqSy!1-FE>bQ(KLnwQWQ-P6tAvQFcJ>Ahif;s><^x4daC z0tdB>ZYcuake(uc)BKwC20fZ|AZt*|>*hkH2DZ!v3*pzzuSf>A3}6jxdDUD%I-unP zumGHEbg!CUHt$4#(6Y1TYxpbpgO*>>JHg*z)7IZmzu>I?g}b}^zK?8ju6))d&c)t@7qp!`Aq)&N{e zYbrh!=hr$BPH7!R?vEM<4r@)rO>CWnpM*vPI1A0(axvz&*x%H~I>CH+U6(3tnmc8NUm>0$)ab z4gL)O1b^MyX`JX}_Dbs;^2=Z+{2KKW_y#TxcuQ6s@U8r9>nZuS^5TG!fKECk0mbn6 zfKw#n(Io*Rf=UA3w2laR!%jQdcoI9ANPWhgl8+DY8Rt3nlw6YTIo4;~S6M#e#s_?r zHJ*u%(UNqZaUG*Y+8!rK?-<=4*9Py%>KOf1*4N6mxc0cOm1$$!;tt5$<2ptkkavvU zk+nL$sRb7v{8S{4N^_UxQ=g_x9-}mgqy&bx)>_*J>m~~}q;lj%6^a?B2m0gcnL$a=H zOME!aRYS6;7%B`yve%bPF)T-os2YqOl07(kUCH{A!_`Bw zD-4ILE9ixh4ap9p4p;jc)|Cv-4z3-H53cn!49?zL9cIjZ==d1?jaXmjZh5C558aP6#$y1JT%daBxpTkEPDybX19y$wDFU&D|3t@M7>e_6Y=?jrc3 zzH4nwLtR~0R87ML{YCwc`U_Oo+S8dAQ4Y0TYwPM9C~t#(?FDjs5{KHIuBS6E=y$qa z(A(F3h2H7YYgZ@s}Yxo_kolHE{ zyVqQco?7i*^He{%dTKTPeKGe`e=XYm{mJ;?y5KsI&Y~Y&=l=c<*K@jax*hBlZg9=u z8u$0l>1Hu^h!tEnxF*jqOMj>?&v2;Drv4DVbgJOese^0I>Au$q{$6KOUpjSOMDYll zdV%vI=0?nmD4p7>DxLbhu2m)6e5zG7KjM3C?L1X5;XIx1bt?_u<5wEaliaT@m|$Of zpJmV4IIp{3`?*1MJ~!OQ|J)$>=Z2pf9BRGEKQ~;<{+Z{YFUy-}p)VC&JE*oV__^Wd zhF|M`t^2v5ui@9azC4T9vOh;%&;GSeXrZoW52~G6F|%S2&u_9z{Heco-q@QAFejeD%ZXN8}HyBS$=nDAPZRcvxMgj~r2^ zzal!-e^K8L{fq2jbvgAHcm;QrDhIDrU#g!IMT#9$Buhm@x_b zt6H$cFqyPshQ#m}$DBIjuj;8YDrS7oJrg{2#x!sm-KjGSb(_gH*G)rJRcx-47^cnm z!>}3MQC-DZ?x>zd_ojYxT}Smz{j?c3^?w*Ts`pm!qYi`nz~zRU`i|;b)IM+@KDJhH zZ0$|`Eq$Ef5BhP2Tl&~qWvyUkZEWpw!y!HcMpPYwNAMXETYJcmVeDk+4;iwn!f=NS zVXW+`m-=izabD_Q>W^0!R%YnK46S5^mAyyx9#vS`IW)}hQa`(DHd*gct?Zm#)q7Ou z&??U=J_XI{N(6g z^ONHxN57f?oFC<1bDM4en4xd2Qr2eZZ`Ww405G7&uO{B0ti272G!7ka=uxND`_^%k9=$$h1LaraUnBTo)%qC!nuk>zP(Q!_u*$#Y zlB3{Fi4UtTIc`e)`Tb3aEtZ>j^zI3lc>L}O?g^J2pD9GvO1USrTDm7ZQ^=Kqvek07A5k8;(9wrBIsrja2PXe52@~MyfjK?@?S0 z--Evz?jLzNAxw2T;c9r8%0DtpHB@yqyhHIz_)t}t%C%@HbxL|l>RJ>-?`rt3O#K?} zT68u17qn}UE+;0^wdmJy!MdEnoL|GG<8F#oj^nu|;Yj>9ihGQm9 zE@q>;yIdY)HcCubjCx=&8)ZTA!0@v51?y$&|ENpg1H-!Hm#r3~)+LMHE3$RTujswv z8`vfAH9RutHELb*$e>r~5jcxcH-gqB-v}BBW|52xx)GEGW(C>FMg*DDwHReK%ADKW zJtm8uIea5%XO^8TD`@waompAvuW&oSomu+)9Y)-lwR_CE=pFda<9ClSAN6^>K7aQZ z3%_;I`g{vNk(#3|c%Pa33AFHA8NV{#!te9=kt#Fv7x7GtS_yu^GUpy#9`i-K*{G4K zmGLeaE*WCNCF6_u%VRotu3a*I33tg5TByEF{hFRMq_^~I63V$z=xkiSra)YFOQ2Ep zXcRgJ_k%Kreqd94Q;)`+mUyP(n_L@vH2$ExACuGaAm)CIn8>AbKPHzQ@l7iFxh*Q@ zR84M;Lf?-$mz&#iE?33OgP4cxc}VggW_j$x7**5xT(`z^x##Jg&)rez)_6Ym*QgzZ z^CEwZI-h$kcV6Uq>RhfSN)vT1_hF1CYHsAb$hncNVe=v%#<)cbuZePtULNZf{V-;3 z&Ti3e(F*6ekqVT|S>gP9=-fz|vmB*xP7C}!R1OODN9gaNGyT&7<<7Q_ zGyMg=?k0SP{~w`gfiwL(Shb;lgm(D<5?CAh3;7%Ruepi_zHdjZwQL*{}L73UkNMwzapE9jzuZ^zh>?=yOjOs_KzctBbnQO9vlb8 zgYo^}FcAm7;mQh~%)SoVLcIYuQ)*Oa&{otNPz`ISt)QCfgX#?0M!f~Mf!j&925G5n zU>{sxN(=U(%p`q-%q3=$ZOrA9ZUghtI#3rB$b>eiAC(XGrOYM$(1EDufkFquSA*MC zK4m^-?W#{E^oeg*T@7wSwX6EXTP3us+EneT#gtXTVt9X38+8D*N@yi%O|VLso$znd z{wAUS1!pJtHn&p$Hnk??Hv2Zu2J_&&WdkG!~Um0B+y%WuC z<`w^QL^#ex&_yeVbqKsQRJ>zu@udngek<_6mMU)(<842;CP=FO7Vp z=|gxC__FCJ>Ik@~DX{q!{$Eh(?^W1T)#S6!< zAb+0)Hb3_a3lg}%=1ZM5qe+JDJ*Im86T)19^pf>yXuw2VjNVl>D8{R9-}H zdEeC%wZ-zjt0cW+9>`bYd&h{mhwSJbGm30f%tN{GQ%Nd7Q}n2qN8lr)+s{2Jve?g6 zQ}=T#kna6idGGE4bE)KvL2vPYnpup*lVie4czI`CGsmHZGp4$2PU3T1b> za_X(kZiOu8BKPNWFxqd>!NM|H{tKYqhKXbzPVg4G&p@Fzqc?M1Q-N!^ zj_I@LSER3STbLft{IlrsvRBbzVQb7clZS5${HLNlN?HU4D%RvV))s_nB)_~ zh58nKHu2lxpQptnKTa3^H2U+j)5E`@&VVO|J7j!2{BgQNhUhwHoW?tooF3jI;|#tB zNso+ZbTn5BJww;h&pBg?kBn@JkHJfp@xnWrsTbZ;e4^R;+`9)8&%K>9UV6VkKlgqK zKDM0V^TJzZ^#UiedTjZ^dk^Y4D6@L${n+vm{YRDt{t#7_`D05lQDy#!bf}xbYpC0I z+|E$0h4~#bQj4K(RpwF)(TgCHT12=B#dR^s@0tj|(`>29PP30qmf{|oM7TY~MY!EH zd5GU>Hk2!9J~Rm?3pN=F-ZdGBA4u{LKY;GXps#7LiJQ^)NBf%gH(6-XpDSlBB#WT$ z28!uG(g<(>97I156mvl)tF2X(Yeb+)OmvV*Z1igDAkvuV*l5>?)z)`ptF2?B@5o#u z?#OPll1T5!VxtRUlA>?R4k@LDNzsRtw`F%^EBfD&6~wIQzcfPlr4hGDP8LWD4=GO; z98xZgkQ7P_PZlhvzoLIl!O4Q95jE8E{wE3~H4JBsvO%SxY&goXf@9qB@dDwF791_GF($_g-e(=> zULB=h#X5#R!qm}%S!7jcp{hvx6l;Y2v!{`?~Bes9^0U?;zXPrGu&{_*&XzyBGbnRLp%XZLn?N8rtGI z+6}mh0+TS&>*!(P8&I@W>}57rnn}J zQj@DuyQ&3`SBzJv(O*v5Rh?F2687b!G_qaQ#nhLRiWTV-N8v}+q)!}1_h|B$lPU_1 zCJS{OeLT5X@#UnW$rS}Z>neB*KkJSrAEWcL?pX3sddHJTp?=o=qB~ChG5QzX$GTBC z4fU~3qbpX7(&@5Bp>$cr3SCwS_orA_G(U6JoSk0?(8l9G@VKw)PP5Jpetj094x8h#$t8uT! z&2j3jXtOa*?2K>c=XPhjW4>wPz2e>q$NYQ6Z^%01JL63g%~)?x?=nmi#l*V|v&43r zH}P$5&mGwZwz-Y9VBW2bHO^wJMVnhY{3bp9tGYn}41kao*=LSNBdrPE8{Nyk&sOVL~5l;53x_x!8$ zl9}n2pF-l4pA0)OlSGn)>z2PgGYMadPD0m$24<4;YvJVlZJFCMJvrVsa3|UJ%x#&y z6p1M2vvw4kq>SjA>b)LMsJaxUudg<;mq1EM+<&%iCH(9<;hti>Y={}{SMcv~_ zck}OY)KAE?x=$z#?}<;qPj#O$^%*|ya z>IDBu=Xc#Q>JRWUs({D*8MusOIrS$fTp_g_)Zx51dpfWH?`>pn5-;6-&Sr1Wi}XRh z;0O8M%=mDw@8|E%7w#eD1K!8&A-fMg$bXpsjgh~}-^DR@Q@eOxz6K4rJ^2l&IOE}_ zBlkdkqRrHHr{hd@=a?dMp)x^d++EEl+D~zxaI{agcQno<-Ra!X+|~5Z-lJSV;eMs= zX?`>EZzvb-ecV0G@6>(JMe9o9!m(Vnzmxo-$<$_{GdXS+9arrG(g)$=-vl-pv-JF)bb4}}bdn6R4BR*Q9k_3JH41JfYeF^SAHff~EV1CdBpoDs z={M)UNA1mT0b9_I^8YgC@8!F5ybSPBzOU{tcKWinC;l3bq$lX38%jLrf%rIpl*VnQ)4;m=inD4%~@km{@msmP-GrdbCw6%Ll$=~_=IJYdKu3gS^at*w$y`f!UVbp;fzgZ|IpowN>3&!7(UH?03xS2X+Z`|$hhdj^SgpZ#8YoaV>OZ>W9t zS2SmF`!sunL+_=oXudbzi|^s9+>f*HesDkC@9_t~14g%BvkpF>*#K@ppVJ(~?M1EU zczeNvWQVBp;34oZ*_PhomVeCL()$p83+piFXuthF`z^iqg8S_^GrNVohcuhX?}hKB z#5c<=y<3#~>9;8Fh2IO`D3SA>bfY9AphY<|NF+0Zgxe_D3~rXJa-A8pNwSf(iDZ@Q zX31)5lca~|W@@$TCdtg8WRp#jWRo7At6W#RuHhT;DsZ)H56`F0<1E&=er+<=Vw}a- zCL;U1=W5rd&Y$-bZm#(n{9N;~^mdxO;J0A{cbar@>f*H1M2-8}WEY)X=&w!YnhV}# zvch?V^YXqz%{8A-Hs5@O^IY?J=(*;f_nc?Goc?@N{GfT@Q|I_W^XWd3K9MdbpJyIF zXjZpb-JVG2v2VFE7cm^PyzdIc@GB8$WrHkno3!@9z z*<0C<^U*K1w=yucm$El!B`|hz-vaW*eFJ0vN774q3Ef-yKe)H@N4OW*i!*%@_EhG_ z{m+=@$6Zot<9;O7#^u8iaoV_x;6>#Hk}YIgNFw4ws0+#v>Zx=ySw!4sV_MZMBxfB_(9K{yGx%sKjU>693M&+ z8o!yHPo47}o;mmM%y)PSCY$6tgvN)_35(ytv6D?wNy6d>&g2HqJ9eoi2G84e zHvOHYQX8B8!ST-0RFg1YgJ%kuYGTvhnk>C{m@oggG1K(kBCYc@c!v3=_ZD2|Std15 zckI%8XOP^nE0fyW+_AH_k=oRGu5&1p)_G?17QBJ1OuEit1GjH))0Nwjg4X?Q`geux zZC07t+ib8~W!BYZjhS`-Rc339>RP;Y|4EWnW}>s2Y_-`cvq_R<)wOt`lT~ZXuEo!1 z#=8If_+V5hcrE@q>RNoVO7H@*>!46!=mqhI;lrHCF!CGt8@L5br!ap#K1C(`5&DPe z9Eo2;E_$itDXKMaswxe=5}mACNpZhaYmNC@Iuj);NhV5Gb3dOlvr=U#TS;mudy4Lo zu$Js8yhgP!+)^fTD>@S;?Y0ZU+ifRGCP@~C4-c@Ewc8F45EH`#te8koc*?Hygf0o1 z1S?~vNk~sv$9y3Gb0*u&?S8@@kz0y@8Z4#97H<6VM*VJq3!r3e6B3++unDeLpyq) zLxEL0GXv=tSPgUtG%K(QG%KVG;e}QM9Ijgoq<7sS&@7Nk!5hL2;r-1b&_THC7D2`| zoFvFBoMeE5%KW;8dA!P8>{OZunW@Z`Btd3Z=_}2zGG`ut(OhMI(cGN-t};)cf6?@! zxjT=+!&j(trgTlu8C3$49=`Ufi>6YQJ?9KIIcHjCY0o*%QI%PW)XwChsXf}x#Lh&D zF1IYR%;6a+2Pcx2;ma*2T1w~(FJUUwdm>q=w}iwaq1^JIswOig6Eb6+O=*cVKPcL%4X@z%sZ#|#$wWiOz zM)a)ke%`ghTW^}I@UoBSnWBj3`Mhf~n1WAM6i*y)?PXs)FL+UQXfurkxrOG5T6BBR??EC`OEPCo06u{G&>eOmbs@LV_>*<#zWRd!nm+Wx z(0-`C=)O$#&s_ zz9ji%`EUxHMlX#{IEfBF3{2B#aVgYv+;mvWO3@^;Qn;;YWLk8XCW-O`HAX)T)M%3F zh$In}ME7v_!`=U1r6>+}f8Ox-_>yXs9}be+n+h>=sd1&u~; zdZ_!0u7}wDqH7IWZ(3ujH?0M0O^#(cZA1-vOYgN2Ez0$pwGmr-*O+?e9_rqt zIn>=dcfIBlvi1DC<`c~tCf7!+iC7yUw0CZe={n8F#c&j25jm|aR@6)rdsi%2ab7UK;CupsC&JG*2E#(ec zlfFm*;Pm>$sNzJEwO*j8>q#?eNZiKgR5#ABr zA(Ber%%|a|nTJTGn;YV%noq@xEL0N03guJI5Z^0gs(G&vL;OB<7|C4wFiLJ2Dw$?J z&puQ#&tAB>_P5<{yDRv4HP?Qg{d}_dB-6|XMa{FH3X0iS$N6Z_kU>$N#v|U%o@X!m zce7(1Jwq~V2Sp8vnr(GAdr(w{t>9%Av5w0u?q<)n@(fWpW!Pre&as+prEr>Km0|mV z)iR6OxH(oI(A^%YaPkc4W#r+hbF8+94o_7$Z4d1gvK6&bGRJDKdMj?9daqh!+d{>} zc6hIPKb`&RZJ}F3zo)y8^ZPw`6BOzk**RwRlH9`I!hO%Pb<5~qsBfcglf6*CH1c_7 zZ>!IfoL3(}?+3Sqo+tYObzXgt`T;zk4ko{?zJt5X-aGgM>Q&T1a1cGwAEX|h8jPRI z8pOnE{2Q(1XI4s+H09ac)R^1^LbO2RpR zA8^LPZ3B(HK!+fQ{-|#zgxhB21v&^G!kG=X{boW0D%@7!a*GexwcKKv#Sr`r)eY5h z)G~|Z7AuU;&kEEHRhYNnFz;B$6&CZ|SD@y*&lk_Q`wi8SkTCBE+a)14RP*iUyGui) zA-Cyuaa$4+!7X)hi?Ef3^z;_5p4;v{y}P)5Gl2`}tG}5L=#b)}ucpJjjU?-(8;q=Ga-&qu4t3%UzUy62xWV_m8+=z3_#gZq-yus9 z)QQvSPfz@hbfdIaA9Z4{KGWIrUqTE0>4_$&{}N0RTN2LnGhwz@pELcYCw9S`fF_A& z`n4qJ!<(7ahu4G;Noh&wk~kzqAKt<@SABRb-)?I_Pr5@=JQHfkLcMFlwT=?L3u_&3 zC5hgxB&}m@_?A@9gdr)0)LTiO30qPPxLZlPQnZeW)Get)QWR8|L__M%lv_zVQ+9y~ z76v-ctaq{}!Qz>e)ej&m6gZ;*DHzB8TZ-)Xu*`quO(_H~-RH709qJ5A?% zuC*1tGPk#;Yi-NiI!!Ne)VJU`jxgVIwe4El`JVILSKF?(U4vc=mbultt+o|ez1tdU zzI&MW8r#dBA`kQaC}c^EbzexD>n-GRQ*D~L{rx~o@* zK!??lo4i&>2J$I!*>k8O zs#loP>d5{M)_NSpy0+*eT3u9-l~p-J@4Wx<`wngyKXJ zO14J5mhL7m_vj5?Yt)Bu2f;Pq5Aa~8wd(oce08YP59$jfKk)e|_%M@)P=ePnvlg|E z-d(Z_>WjDwXu(Iw52KFIeMR;XyaU>5gu6$F%h;oB`57(vHR&t0oks9$`tBMJa(BKV z2$qoBp#;C7`&up0yx|!4)IWkhax3@9?}PVo5{;DZ8+9k{jasVdB)hNvAGs$T4^W~x zLUxq;ALyYOK-M4hAU~>J&wW1v_UAu|AHcVnD0-26^NG@|Bi+E`UI(UYGDzm5#%Ir` zLY>kzqsa=vbZ{mdh37w@rv~7Pa0Ac-!GYXjhUPt72DxAvSu{#UXP~AR*o%8R5I+bU zWOThW_GI=vqFyAu$$H~t8aZx|CKxve9Zc3+)0I3E_Z}!?hrQ-4)fIeCGlr}Pe2@IC z`T=LB(})i^9}h?#8u=3Xq52Z~lKL3u<$vH?^*ge+>aLo1B*)YnIU`5GW6T^!Z&a_y zT~BQ=W?RXRtGA-ZC|2Z-QEWsnrziCCTrssgcYO9(#TbRi*Jg>cI6ixA)>id4^;ojw zaH!MTtUKg)vfZQIqwi#I@LHR-p5#t;q&TYpuFG1RwZSV=z0qrf z*GAq^o4~GK%X2T#8Kbz6yFAys;#aP(R-hr8}UJkq~9lZ8RIwWHiU#Z7Y zV-?%f4ql&{?9WFQC7qk}mb)xaFE@I@3pvID^+L6G>T)K|hc6^s?&6&)RF+4k z$NBJcMzv6VF5KKU(<95n+|~>>vo*JEu?gf}w%D}VnA>J~wA!@5@2mnPB7bM~srhH- z@2px#TWvl=e~McMx7vu#GV?5t`;o2m?nerJTYf(>%i~=5ZTT{DALXaisv+XceQLgH z$c{XJ z`M{VwAiE!VTQ1nrE2`In$RuSSCX$qvUbp3m$_LCPDwCAA<)02sRGtg}bf`#ENIo5U zF8l}1#d+}4p|cc;BtL`;o~1}po)5nt@dI@}+&fk9?xgz>-l@BjehA-_G)wVA`0gaZ z$sB2xVoy>s$4gP(j^K78EWJ{c$;x*TDU@)xBQ8mAN4$#|=W?66Bz+e#-esJNrPn2C zxm#2(ORsXba<@zToVx58)vMgC4EL6wVV6D2-QGo988F@@S$So^yNK@Q<6VU7Zti4q zWk9m>s#kaOD+8{2?Mb@om8|S;?n3Tj?#R#Lt6tsAyPLQ36Waw8Ke?UgvJdBC-VN?< z{(jP8&vwuE`I*1ivpT8W)5*L#>3z60$%%>9q-yx8S6Naw^RlE?aBfl=w=S9zW>0EFE`~hk)SPHkpi<6$Gmcs2QAEv!ieNy!)!nfn~Df*P> zsUMJ*M+xVX`c1~7!15^X)J1{bsViM>j$9PD(&hTFZ!&z?R~{wQ^RY5c2td1_?2}tI-SY&VLFp;D!($nGDp>}j9nQz6QKr_?8Z}14=|^Uc!|0w@JInbSAqq-X_h(i)?Pf+oVF{ajy?6G|{K%ObSd2 zP2MIInCM^=Q+-MSDAaS#MZy2IboD_^ocns;O?E?ogCv@STR;s<&^ezymkmEQVMdi+8JL|XxEO~Ce)Q@x`gAGdTUMM2Q1Ggll(LFq`R zejP`T0R`=~dN22R)9cRr{GN~ByGeF8$xhrIkZiRQzL=B(ORX=IVzSj*Y8{ieTK|W# zwK6s)--+33y%SSvH7H{;^9%}89qJ3^h0>wEPdn5Pus2GrHByIqC#FVX8Rz+c)<~R( zu`=wp4`>&jtdwv|?R6?7kZ_u;&>9GwMH1;)Opy9?ef zoV)IYQ_Jn6wcIZBxupVWm|9o5f!nRMT!G}4wp&@p5#-ygpK-O^XW+Hm&iL(Cw=_aO zIb$IT}0jr zb`f|H`6c*6&^Lhnz<)&5FtVYdVfgMxevpVWgsCDGI;6ms^=v<%+>ATPyfUIvLymx`DV>QwZ+V-e^54uo$58k`l4&>W`tZyg0 z9l(v+Hh3FwjkNhdk)ZA4A7j{*(L^TtPLK|0qDb3^^~W z#2Y~}mLJIvs}U&98&-)oV1ELKc>%lM9`ZcN_rnR;gW!HRzq6qI!}RreA8&j)qgghGc{Psqt!Dg?vDMX8bd{2mJ@+3gBuS2ZR0! zxFkRV&(O!zRSXiiigeJQhj;2~jbR?%-GlzC{wweXfh3TvT=i!wSKuu~+7ADUza35+ z(sqnCf1{ACkibG@Y52@os4+~#XG^27Kw*8^$^yj%#|+Pm&!04ONY{ zXNVM`4_IfoiBHNpgGZ<{)C1>JZgj(VS^9Vk;9>E)}KH*y-OPnV%{8re{ z``~xN^8xqs-wGDpw_q0Ce%_+9VzJ;m%A$MU%dk^m^?mP-_)g6Ff^=fM@BIRgQj2;9 z-+WA+pjpoHR*fk06hoQ z13U-rn==XbmHr%9GD#-BIU;X@dV{<{&e3G@N^jD?L0Xkb-RZc~ag(}N`rgD=<#gOD zxT&N!@pN3asW&m(bcAExYb>wyspNFrOflOuQ#>8_T7QHCla6pRrCm6CnJMk2EJ+n- zO0&Ut)7g?+$TrQAW@4EIZ6wkB(=!2{DzZ8W|2eQ- z?)1F2PsB{bytYrqq>3B8ot{q5MlVwxayym|{IdAk?vy6c?UXv?joxpB*Y?-;Zv-dS zH48KFTu^6sJ}Ep^PN8E$Wi>&$E1!aspmfN0<$K8Q;kn(F6O{YF`%!gI zUTgYK4BU`nT8m#)@5#leYfZ&bejlpXbOzTQ#FI0)_Tau;X)8AU0lWpO1=llN;af<7 z{tPKLHN$O&S8S@ZvD%VUpl@Lgt4X(X1^QdKiXtC4qH88)=9Z*pQfXuL6Z0)yOH!Gc z)#FHS={_;DdR(^xS6!^ozXctFdJB9ha4D|YSORpx3&T6E3q|YC;!>!vj@4YGOTk#p z)%_&8FvfAs+)rZSs-HwLJ#kg8ZbbYE%LvrZVvCTAz7}Cb4C|)zKZ`$$(|M+r+r@M- zeL3#0Y!MQmN5lkSxqUisLE0i%_yi%WYru>UkjXB`TcAcS7NEj4 z=*qKa@S~>kZ02uTY~{oZMjpw9iLUqKR^f+SEV-I5XA5?;IzlZ)F%F553u5wmh#?^|4hI-R&WpW3Fu<@K)>9+f?EY%0A$I1IIFn(dd9x9FURs7 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 BUk3mH literal 24144 zcma)^3A|0!`~TOl%|oWlQ_2uBE9Kt34>Bc`DT+i1O_C-}ZW>e~N;FEOqBN(%-TSC$ zQc9xIq*+NJ(IEfNXPvW;=We&}?|=7eJ*M?e&pWgbs)Sil? z(>3RgPQNnY%rxv2>=f)&iBIPTQ%~OzeOU30fVVvU*Rw&b1t&x!7yTBINBp%e*wp6J zp!B~bTs}WL_)`#=N+7MQ2UT7f^2kRXe{$s`c|Si-vMkShZ~?UQ zpDg`l{YjSPv+c|AaOLCii|doj`-|i3eB|zzO#fnz+mD&^E%V9oe6#&zdvQL;oBk(R zmXGsUKj)YA#qGt6@nQS%e9?c&fn?T`WLY2D3zD4h$K|`{E4yB$|Eyn@mwX_*-sAdX zW_gw)v;CMkzS5tV4?^GL`Q&&>W-j`h%O^{JSw6}1{A7P}{lx$l$rtSW0T=Pdajw0r zzZu_M`Rw|n&Gv9F?mt-mf3Ya<#)5TlJ>VYvxH_Wvd6CRq^oL{M^2xMOUxeiu&(9(3 z%4hqRt1nZY&j;#LygeQtcYn-r{gUJI$fN)6{*3<_rav*$U&(QMaemAg&H~mKmnUcE zE7PAW%ktUzckO5U@BE3!Bla)J^q=M9eD^$oe?<_?zhupT}JPSU$;Pb-q_+QM@GCxz#!8KPL%l*IF83FE>Fhv6vXw%oLwJo zyyE8}ZZBr%GUh2}&L`^0G4oj;^E35lIBqX4A9GwEIn#coe8H4V{F7TRVAhvp-tYRC z$%ijRS(fK~Bsp209QTKs<&(_yp6y?*z3h18INP6Gdy-jS%yD}$XXfuj?1$RasIh{GV|m6v-!-+eBM{Q|Cm45-%LK+jQbOh zHwTFA9qdnLd{`FafpJ%;KeHB+%re4%l#QQHS3ctNm&}jbV_D{B{6AQ~>_6Mf_8(($ z&>#5gnEl3&cpi&#G5$J#ct6LB_h!e#G0JDhEAu{{dJe&iJ2sAIYv4^e4k{`IxigmCG-}s6S@cUo=3@)sGHk zeaYR=db6Je9Ka&%{5_a2$AkBX{g3s<@t>=Y>w)#LeXK{fJ`Q1280WkD!PIeL{jg*I zTzf^hsDIh@r|^?~AIsFw`rPvtKQGxja?g|G?D(SGGMSjL-Rgn4It$~2|CpoVFVEN4WWy-O9Q5OAk^(8s3 zKlb-O*!2l{sQ=)8{9i15$dyO^vOjKriSK85nIG>@%x8Zk zCp~aR{wo7p1xw#=TF|}uMt}9PI^ocI$2fj#?Q4Gj`a{BJOkKx^4~{yo=rej{qvPux zQvQi|KP`~;k$--DOy>%(w_DZz(NsV_Fy~c&)anu8h6#aVS>K>`jSFOZX zZHplPzNLP@(^{l)UjNf9vwO`Q$lmn*@CeXXYk9o{<@$$HC)9WCEgrYbZxG%X*1oN^ z;~C|8`jg)(6!FbKVZB6H zFCo^;N;1|{k@>{zs=bw0<$;szMGM`V`K3V!lmhE$Xq<>`DK3V!lUe&N-@Lkgq{(}`(yY(}6)O!Ea zedWXbtJ}Es)qF^a;MQh0=Pw!efXhGT-3$G04So-s+%eCm|H=8>eoMFfd3F0o-)$e^ zp0|e=p5)&)r);#Z{VG>}eV@kB`ok9&u3fm==l=NP%0AH@gP#kZc=pEp;y77;&|`P` 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 z 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

=q; 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

`?^EmHwP6CMHXZ^KI3aj2OyIa|)or2H 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⋙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�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%0AlkF8m%r!iZLgeA#gXWaV{=%!^NLnLH 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 z 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%0AAmtYd}1#@6nzz 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

j=)X%2-GKG!_mcWF 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ⅆLJaBRp{>kJpZ8!10d2v+?@fiJaza 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℘jV?maYOHAD*&xya%_#7GmYjWvr2ctiY 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%0DpwFA{bT?dUo99MO)Z!#Tt=P)5SDgk0Pi=q&sa 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 z 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 ZNEX<-ld;j%*!7tvg-j@C^)NgrTsg{0a z-WT>4@A*6dm3W@}%`5VX(artFlAw|L#uCs#ePbz6N%5CquM?eKm$!PZlWOF5QPp#6 zP>uXfZ)1NOtdZNs-v+bOp*w)KbPw)1zy&bb}^?YK2_!*e6BJ+~&S7B-`5vg%_LRg={K8&GX> zqjTG0+uU}!<1jk6v%ej8T<&=6>~EXf#or6Z=l1e<`CsLB&FzL`xLsJ?aS+vo6^jF@ zF043=qbB4|%#Fuo+zG5nIG38hO2i~;0&5yhqgLgv&P~Rn+*PbKxSLwV`Wbgot5}kqJ|4=Q=Rd-|pZfsk`48vL_bxy$|Yxo2`ybJOrH_YCVSUZc*i zF5p$_4C^9Zq_T1!<~~9ZH;eTc-%(kt7xZ!uqqTFH(_Z4ArZV6WQh5HIwWw4U3GM4d`#j?IizPi48zWUgOTbI=U+fa2`O|Ugp zm(>)TQayb!zFznPwDZyE09E@3Ul6lw`;HEyDou#z#E+V0!o+lf1UyL{Jhhp)PS7x$X)I#&1Z^o99D z@wzY6AI3f4JLo%vzjF_;4&yoM0P6&vr4F!8;z{a~@3Jo)(|uQb@9?s(ivJ4to$ozX z@u&ML`YYgjUj=_f?hW5fUk3ioy}`PLPpBKLyZD&8!OFx;D%WXF`+D?5mt- zqH^-gROP%XR1WV!-hHfs54cXB%jd=lc`kJOJoue*vhvs^l#}I0KNXZ0oL4R{h*v(Z z4F>1kVwGb@<1OCpyw@0wx49vCp?P80k{iORijhcP!MsCwfqQ^;7*nYOtP^;KI>0)KC#i6Mguj+Q+~1rV&Z><~sc=>U zY(j;zA~BLW;XmpB1@CfCuukE1>ICaIyhfd1oyYT3mj9vu5lXmOtjG8-mBo66pQ$X? zYkW<;_kZwz#Etl&`=|g$E)iUxCY?SCEepf&79zZlS-(UyQW^MOf@F!D@k8 zfkIX=Rt;3c;6OPn7pNMj5(o)|VrU>N&=o@hg#}^Uu7Pe?SP&X0D)^4w0^bXYxOD^d z0`;*ww=SyzcBJaEnqdd3E~_~whfdjY|ot-h{sZe?E<9>gD^f2 zR9KoD6X+F)#Yx;4RveC{VpxOl2P%d&7za}$1ET_?adcozU^R{klq(#=T^&fqa)qM< zWk*x2Q9$bWEqN2W|vz z;>|!tK!i5}wF@)2qJS7{7v2oiDXfp;K>flx+^oREz$27!vsjPuUn-0B3O`d>tk?LO zdLQ@@_=q0^p8|RKArM*kiJKSjV`SmSK*PfJ=nu3nY{-=d6afJPTscdLIh34bL=Por znb1TP28sg3SS!B>ivuNCEx%TNAuAZG=2yeu{Bl?>ziNJ!{E+-m49ySA?}{P$EegZ9 zUGuwPi^9q#6~h{ggQ+R`Q}YvX4R;D_8m^$Gu;$`&Y6|N|{E=Fpzaf7k{=!|)+Jr}_ z^{gFum|D-;i94w?`KkG7c#nIAbrx?^XIPi<7IlV|j_FiZ{=@u7DB)(Y9^=1M7V8y$ zrm|SC@iisSSL6#=#Fev@m_x}~M)Xi}mI+N%se;l4WeQ3aG~kwEmBm_ADOP2Sph~f- zU=^xSLF0lZ7{_hIYKq;dMyxj2jcUY-#%QW@D0Qdd|v@h|EMD+4nqp+H%nLI+o1snJ3SEFGFDfu%=1)u^y>VUxl}g&nw! zSWPjSYQ$=ZZKy`9R@jRAE97oSX2@T>dm(k3W>RKWCc7SGW?4dFSoNA_hgqnYrmw;> zL$Z0V!Vbn9ia8u}kar~J9v+IRH}(kkUd(;0H}-H${jv9B4^th-)~D{rKA<|X9>o4I zZdj=brN*pYHFxExS*uEy`hR~_GMD*(#*^YwrT!LX_jHvi=)L93?zokGX7o8VzsJ+| z7nbz8+A8EJyHCM|8+|m}2mkN$KL6hz|G#JCh%S95U)k~a|Nr2&W@+5Q$j1No_Z1a3 P?^CbQgSb+qHuw2IO`(Q! literal 1494272 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%0D4r-`^Q>Swyeg(6ZF*EE* z6#sY3(o{W*$?h(%xQQOD%mI5&3*IhUW7TwYdiT36o9V-fLV~k@ItE6oVR!y@mM+~u z1IFbOJ&bqG+DP?{|H&zQaV=fApA&W_i9fq#X{=h+dF#+GtEps~bb_-#yJT*ricY-Y zJd0dSInQNUWtZwOvYsuToBla-fK1+Vu9suV1a8fmL}wBtZPrCnNSW7Or!~y;(+;t#sJm$SHXL49!%I z^wXV~+Doa#?NqQQMDRfY&DE66^PCD-7Ez)3&tOl8=pUHgr|#cv?Hqovn0BU50sUbj z|7k#s{JEa94HnX~xldtFn8*)J*GjF=v%>jm{sPLJ{hH`uT?5j!#Y)T(=gy=>c##;JtEJ#`ls!vsP3Zf6A?=#`Ui2_N26($t?GhSKSxAR>yu)*&#h>GWC*A0q zQ2pFIsyq6g;2g8@crMPE+SzU)g{OT7{XUUb=~@VW6n?9G&>Ci zUr&l2e&6wF+N(@E-zH4@Y7Sk=>54s!j|SeZ z9Cc~4)^C3pjba@3?9VfY;wqe!=dvCJJ&aGeH;We3U*)$mj1=VmxK+(5dUP(e*>whZ zgnTc<5wBgrb)1h2XVau&8wF?o4@11*f3NXB@73^o&A@xXKVIV>%rAmZ0S%8wN4%`$c#RNz7I4JZN{;Uc(I1ES;{03Y{NoixevUr>mO1~7vz>Dx zkN35b-*<$(Zyeqi{`VUH>wTdRngPGT4_2}t*q$(&4L`vDmhr!~Ka67GPn>_toPT~U z`+uH3|CTxb+RiYV4?Q>!UUMGUKP*2*$K7k50=Rf zybr_pLgWYJ6U*ci#@WvckWY|*ER%m&595oGe~_;%ldpK6hw){|SIBRc$#0Ca{uRh? z$p4nf|Gc-u@+)=zw@m(LoaI*||KoeN%=fPMg+gd0zIWsw%j6%uFBC${kbjT|ERzSc zJz=yOc>wvxGWkc_A4bcOe~|wzlmGP|Q3$Qo`QI}6U)vc*>yiJF4=s}q^&Sy^;}!W3 zdCxL=Px~#579;PW{*tM`yjR2TwGs6f_0cl*k@sO3Ux)gLdTN<^$~gOH4eBZCuVv~l z>tTF7>M!awnR?CpJdAHdy+(Z}Q{Ne9{aaAq(f^R?e|T?)<+temhfM#&ILmKG|ATr* zrrzm&p%B`JdWZT;rvB=Ep%B`P`ujMp7@0b#?FplJ)Iro=GWA#6A4XeIf6@Pt>3{Sd zQ3%EB{)bHeqwNf%-ROVN50L2x^d3v@69yudii@5j7=eveGQr}u?I=m7dX^q*w(XG=LLQ)=aWNvULZ3sXgkB`DCPz9!({ql zy+;&6yU`D$?VFsw401L*I+}j?8?=do}!ChfrcLPm!6YcprxG1DK~Uf03EL z7-xU(#r%c&j?8?=dKlk_`400SnR$@+c^E%{c@Xm>e#=?UkBqba!-WLj?qnOt)ACZ}lv^`;zfcXgX z8ku=b+aE?JF|Vaf*Ne=YrT2(J=mh30%u{6MDQ#yMIhdy~Ka!ar^&U|O9l`vFIg!kq zsQng3$1x}Nn%fqrfH2u@BsZqrVqKENAB`d0!jLm3-eVdl_nu5KNr{d2;rOK(_ zUU#DX1Mkv|8A@<@Zg>Uc|7Nry+kJXmH5U4lw0xN|=>I!Y>*WtA{J=E9MZRoVRd(Y* znsxaey?r-U^ziviC{s~g&pQCW<#UU6r5qymFn+RBWpyCacyeMMQo_RFetW{`RM`kM za?n_MGU*Ow_@j^Ce&D66s%fEvs9nSFDeU89d9LU$UtT?3KAyfW`2_tW?-8+`VRX7e z1vO?tUuyL521OR_3H)1<=a#6ZW;>(kbLVTi*r%ggbKkde{@s$*#s43F`k8Kh!oM%~ zTKm6JnE2=Y=a1>;{aLW*g~ls{i$AYF#$Hf{If9Fy%as!UC+vGlA8s!YJ%U#(De)>Z zEQy+|r_Xalafz?<$#cv*{JVMYbbPB6m-Bxv^mj_#cop<}Y>98xqH_Kh1iYj^ zMOO+g=RY!3-naL$Kd8z8{{1@MUxJ^jl@R~$ssAgjf6semuQgt|l=vZJ>1#SOdx77c zFmkJx6#swt>UUaqiGPm~{~rE4RkgI7|Ma=u(6^VD%X3-(32&&J|AO`Yq0<)sP958c z^H0U(Jfyq!Bi&K4z+cF76DpRGxEK2*i7vdECb;O25Ppf;-+WIoziq<3XKI_@>kx%V zez^Dk4eigRe1&i*+NSy=K<>3VOe(V)$uhw**h5Xo2RcD<(( zH}yUb<9jJs@>}0?9{Y=p8fX0nY6MIEpF7fHcgn%PlY{$V$nUO^kNG0Xo-w8UZ+VTg z{Qg?` zKfOz(v$J9gnSXaEtN4Fc{oGO?ldRPC z&L#Z&44DMqTPH~B>7B_b>@Q1eoc*)2R*=-+ZKG4!^YUmtjPIzETk3VHR%z@KH;>`D zf#T0?^>Rvmuh%-g-SZOf!vu={_-OpT4f>zMdD7Xt+VJnmFlrz+CTi<1NHfLqGIUK;{ZFrHGV_gZx|%~r*~s!yGbYBf5f%eX1+(Kd?RM1KVVj{`1R8Iqj%-yg$SCqyKD`S^ED>`EuGBlXy=fMD(onWt87< z+y_;Go87#p5h{LI(lS8iqk!Xq_Om$NpD8T(iWV7Uo+_R@i#^YGMR4~2vZfhj{(6!# ztDU~ZRnf!v;$|6SUK{;;Ry%7N-Ww?){#?*JK<2yfgE{ONbwhCW=R#k4nSXC@%w}I7 z@FnzziTs?H0Qvo^9>a3l>pWiz&hm3xrIUH*(d0b#g5zI{9)90NZPUs8)p1sCd)K8K zVh`iX+N75`s7J^AcAx#<`0c?Q)G@8hUk`ox>`oiM_S=v7t3x`Oe|I+xvKzJdMxM)h z=Cw;Jzt48KaFWuRT<;#YWX1(BZuocWCsM{?N>rt^DM5dBl|T;^38 zJ_)q%{Qed6M~J*?kxuZWFLK$};5WwE{|fRv?>pP_+6`0Q7Cr2rDecn;|1h&#Ui*j9 zx5OUCX8;HP<6XU}fPL4x>$e9yKL?}L2B{I0L|1b}1@_@DnJTUSA^UulohwTUdjQn#6{J+WndXEVFzs~=T$^Y6; z@c+pF#e!BiCLiiOBJknJhs=AMyr=yJ-Wz$3?_W&)<-Hnyua2m{d_R(09~%qa1@)2d zQzW++@e|#d} zPWL}D0> zeINQgzJE0Rr`{LB{UiEMz6VV11KA$j1ELS)`$yA%YWs2ji2jrBi%tK}&t?4$b^q_0 z{$JaP`(pI}d>?B1VZBF$`%v`5eD7)c-hnCF*v$VlMc>Q!`^ocHPkFC~n7{Zw-ONY4 z55w=<81oU|zngiAarSdF%u{^7pFDr{6uc?suVRDhxMp7CeIAx?jCqas2h4oOIO~tb ze8>0xX8z^99hPsT=U>;%zl^hd1I)jCKhE=x!n~vRg>XNPd57=oljpCV;c`p;`{pK`HStxeLdzczGpY{uihiVJ-eQNT{Hh`J8_?m`Iq+x%si;~h_F9^ zd64%6%-pB_hCKnyeLJRibPfN&do}!C^}s)X|8WgJ!22+a*9Sk4e?lYI@Cl5If50bz z|8Wifzt>5k8Ah}-sceqX#0VKe*pjE8vaM` z5kbG^e_X@=XgkBm*8Goa_z=BEgy(_}0srF~-b4E>jB0@QVE-HbjrVHgy}-Y*e+)my z`!IroA7g(SK8iQO*bjyW)Aqm*;KA7c%)ecH(Fc7g z+YkSPfBV0CCQ7~|-ZS~X`y_0q-X{Sc=mR1Nqb6M;=bwuHy_YERhSpJQ){J+n|8R-A##w^P-Eh%bDrw|M zcWl11xC<#SdKj-!sIEFZXNFti*bOS!HwyWI|B0gNC2Fcix0Rdf%5|#TzJcH@PsO9u z$C`uP@bM1SK2?lyi}6|o8mKhK$GH=y;O|}im``xl6IHOGdY-PgyEfn$6~CX)zef~7 zb@De<-LegHTV6g!Bjd9A_k5zLW`69Gyq@BwKYfZq(_|Apd?#%cY@#wepW!Zfd7i2d z4EFB}MN{=64OPQmX1cw~pP|x;sr~l&C^DqEYLIoVyJ^=&+V(}D|9yQ_wMY~7;nrvF zP4_tNW>Wk2h@#2P-&_qYHO;-7bOQSue>(g-OMJKO4Q{Ds#KgH5Vy@DfQepmmp=hdB ztiEbmV6NNy*4Ol1g)019>|aGw)snTa?Zf@ZoyR;iU1MhY4o>Bxw=W4D(7uI(RrNlnZ%73sovPAI4 zIa;WCsam-6|K3jbZ+|a1KQ}r@E45{l*ZpSFW(r;M3-(XqMZQ^}Pi-4n*A4P+CeIJo z1!wujfo;_oZ$~#@sU5W7*hSI9eyEqDooYF(uiJCb9y)&hzPuOXwR5*tU90wXCoS7S z(Y1E_?eS5a9355d_rqK__g*?$>#WGLe`@A#r+Q^?=3c3=nHt|dD9>d*4FhrSIjXJu zOV7>Jef)C2oj$4`*jWYd9PXxhbC4o`{?p;#U}O23d0VPEhbOufA049Xy}lKk_1k${ zs|)wS+;zKGQQqylU{9j>zh$P5Dn4^H_stjUXiOmo_M8^Hd6xES`qQ%RZw=Pd%)@sC zXFs>d+FFh3RoGqIc{P2L@v`V)yjAA5>P18jxBA89;EPYd&Lr_?yNvDCyWjG;g`O^> zBGcCh&i-tZp|k4UJ+(W3>JnPBemC@cz~)+RR!D+a|bm!@7tmHz7Kx8Fz2GWAeD7Rv5ciC;wj_U$guWj*cE_fTEW2e};zETV1+#r$^q zsBQW_>Sd~$t`oP8f~s!-&U-}B)FewMRqsNy`)}+zs+NA5;OzfKS-Qzy{n_Jlsm1=G z4(E7&uO4Z8s0WxYzUaMxYR#X5J&*vwyQJ%;R{!(N`D4{WD*R!C;Ow7n={u?Z;a8mx zS>{uV>&rwB$QN7hpr{&{0R4gC+Ekyj;FHKkZ^AUxI%%%oCIt$Lv?VGx%s*-1x z^J$*hwD$KI(2tr4J%dtrQy=jAuC?aOB46WXg0uX<)VQ6 zYG9S`oqJp6P{Dc?#U94Hr|GT#yhh9{`ocMlzgL{?@lmf-1Le;z^!{cx4ZHhu0{emS zZfW|fPh*xlOX|#|KWk@|=dzvwsrso`_&wX1HDYPm&UFdeP9OD8IY_+=P2oNpKA%>f zY9Rh$`OfKjsVoW%XJXrFJg;Qa4Cg@3-OpTXI=ZziSLFkbX9J}Omr)pioq&!L5Q<;+%!tFu9wI&J_0yDH{irHiumd$#Kk9i6!bG5 zG-oPRxLjXw{&(t=A*#-Xo=%DrGpO~?DaAi*&(M_pRM>~XPVLRpsm|?bkdKh~4oNv! zU5^d4jQ{l>P87|=d%-_m;~$Ug$wbjq;P9u{_>*zgH5LB3STBQR{LgwAj|Gl+S;_Gl zA^04`3-Ps*<2yp)I|uRIpL>>N&OcsJ<25^4{VQ*=D`o}zh(Td?f20v_#fxrGUuP4%l=%X&%b5PzqZpyi*f#O z9=zr}uzy&7D&mE>drjQ6-+VL;`lo$)%QE>#@8LwzD&!yj{T!1Y^qx!Aj#RT8I3G{7)wT>ph|f z+Mx44nf$N!e4=O*@;|N4$PA32BJ)&sZqVqqQ{IBiw(N^St^qWH4ef_t9R|U-Um@`X9YV z6itWF|9l+TmQ4Sn?ex)6^grka$n*nxk0_dUpdUcpCsX&e-+Z(abszmFnf_Dn;Y86f z^q=St@pp#n{!s79MA2dNhv+BC^pkq;D1r{4pG5yjrvGF;?Ek~)Khdv}=~wk0Q3M@B zzl#2rOnp7w41v2vjhc<|#7sl-`qxqEncs zFn^JmzZhr#Bw+r+d`D)!V?B(!nC~zTQjmWh)O$n`bQ<#@=0`H~quvXOqO+JEG56u` zNYQhj-Xn^jGno4@Cz6>H^`1`@ox_~iGbWDAe5ChtEiXO(#hDWOJf~KMW`kvx% z55(TcQ;Eyja#hsubhByOFOMnsYA?ZA|Ah)wk^iUBjEXO-@Lp4r*mE%=LT$XU5Ixk7w0&r2(ZlESO2tTZ{ow){R`wCSdD2|$Vf=DAQiq4E zpdzJ{Xxo+6etUd$EyAlF4qHzBazCa@8+hJ-gy#Y;9|iv`BIoRHG$+$Qd9LWMQU(40 z3R+SB4@ykg%Wo&-t5s9W8_%c9qwdnC5w(GTE8olI@EU5tjippP@IL*yw7TG||7w|9 z;{Rjq-cXI({Ci5T<-IO=%Zh(SJb6J6x+vJgdou7()e7Rzy`6reqBZ$ysR*Z@2k)MrS>-e{jIzgg!tN}x zU!qdw(%J6)b-4FT4gL!Gr+#6{4>gOWwx3;E0ltg(WRM@~gi1c?_jwAtL7!EEvwu$4 zDk}Ns_?FamKw16wGcxYhEhPD>%ZPM#>+AaOD`Y&OK>^8cO+qu+sV;7TJ?TXMsfGn5 z|5q)O!T!OD6%=Z7I>Z-%5I-WKONpJ}65FkN<1-IPU;O;IdZo#1` zT39qdkRZV&NGPN@1kF7JEmEXF3k0WV1qy|>wEeZ;JF|Dc`?SxKf2PZvIkTIQci!v? zn{MteVtd?eipcN#(eJaVN%Oag9`?_vHpM0WJh_lrUGB0$-izgDT9%SH@O)38Dpqid ztY<%*Z674@r|H;i>e2djvYzE%wJ9a>zv0tBwJ+A(r^I?v+ZSQHh$`I3t-kDSzMshJ zPj@OR@v!Hb49fX^rTB-}pKDfH;@;myGpjNm;yr#t+-p%r^6&n^xz(kXmWPA<+bN&q zNBoVETIy$cGRTkZ3rary>+5W4;paxq{yEa7pyb~|Z3ES%=|&IBliTN$eEoc1E>*v& z;q$P3f5$wM-)sJmSG{j%S^qAN+I!ycc6j}s&bb)>p|{NnsOH)Eei-KY zp#JHeOY&Vi6T_NlcK^-u3yQV-NSpIc4s zXznTE_3loEB=76n`BeKTbFUFUH?=Fi1Bm)l#T8M{*6}?m%)>$b8JSJ$L*MCz)Uc^% za88&fgZi*1_&KO2b@u#fWjZ5g|Lp7`7q22LVepii`4&>#uQQS&oUn-NY-zP%*^-?%_<+HM%}n7 za$disZ)U0Y+LkP-zR1A$q7((rjC!ws7O6kKEFGji3FLck3W3`dlDWP&zy$$`LvVKWFf5v}Y zBZ5LygqwLOp<>U{LH^S3+$mL79nXA6^zi$x9O^Iq*R@|ts~uav6MI;`Zg7C~L7j?M zP#=Fc>)Fq%NBBwqHSj^GD*74oPuPC+U&HVP4)njj29;B<{qD+hSwnh6^6`)}UdQ{jQ1**?M8NB?UySd0 z_m_D=5i}P2%lM}~|B%W0k>>on?fGXpuOET)&v=*jeO>atWAMI=zghnqzEBJL4E|>v z% z7Xsdk-*?8Jz43?nLcpI9e;5b0alqIE92jwc@6YkZAGRO(GvW{9|2F;`9ue?=6aO6> z|Bao%{}KNg54Z8q@Q8qiBOdZSMK@GieA-(4+ynWP=Px$@vL5z-7vx`_*Vue*ctn`jAYb!*$L4p#3yPrj$nQM=^434h zBdS5|O#S0{>mTO%VE%>rhvywO-x zJ?0Bx-iLZ`CFYN|{xp0c%pXyI@*L1x2eLh#Nudtp`Qs%|{b}sS{1Nph&x>vS&(CH3 z%GCdkt^bXkm=~k|=Xt2DhuJ^8zA5Tqo_pH5*Z2){Pt?6U-}m-k%)`NaAN?24(`|ob zcruu$qd(&LyX~h~&VFu)ev0S&-u`Q#$m^s3Vm^TF*9?!S1}XGw%pb7*o#6$6KY;#@ z=l-_;H9R8B{Z0St*#6h>e83Yx|I71n+wT~@5a#3PcX(d!?Z22Wgn50-QZgU6eUPyS z^KtY+Jg@Ke|NR%+k9j@%FP^j8{@3t`FlRUYuVedPV<+b6=zp0%VEaMCBLaT_{oru$ z1Z>}D{05!?`aa-4j>R7g4<~}^0Dl1f<5+ya@MI#WF7N^1KaRx{SkC@;0Z#z_<5>KG z^{_k~_yh1C$Kn-+M+7bWcVZFhB9E<-Lo)7+>5ctoT zYfBy5?;E~Q3#x&BANY@B@dv{fYC$!DKLG!6EDm7o=}c9D1El+Om1FS-V?X4;AAtWj z7XL9kBIpPHGvn-P$KpT6POLZhk7Mx=!z03TfrkM9aV+j({MMPO0rz14Tl~%NaNq~v zZ|on7j~Si}&e;z~6YkEM8}LMA$Fjb-ce8-!r@*>@V=W z|MFh6=waT=e|a*@^D#Ub;9ZWzy9{3l?+d(({crI%!xw@a_#6Ad;$X%e_yIT=``_Yk z#(ww{_}hPZCd?x;Jd^+ON!U)qC*kv8@j$~P!hQh{?1NSTQV6_u`=n^$N z|Iz)&j-+s&y;UvU5%>D8cNYG1o!+<0;^DnSQCPXQI?BD$xi$A1b-9sOClf`LDz?%YFRXD2Z@NVf(g%y2 z*H@{~T)#TJ*a^FJigG@Bk2!KW7t3pv=%n9$67QtncZO0A@I4rOuTd0LFWFUJIXB<& zX`Mn{4yOrkhu7CB)>W4ak8?6UbJLBPr$o-{YZdRIYu#Vtba&3t?(*kEkLnyvRZ8{H zr{-*Q=KEivQO&*=Kd`)VnJ)TiSb`J#&w1L_hVKJmdo)!Jj?^pDCptG~U!$wTzLxbY zuTZwT&N)Bc8M6Nbz4&W~hes4m)r&{!Uw5x@CLBCT{Yx+L*r};XP#^tq`WEN*v~TI= zs&pQ{P&8Ex?Vv+0ZgbLy+^5j*bBKS~p7NF2=*uN`IIrv9rniGAgaXW1i^`5pA zyb=CBS|4hdw~sywz8sbKlDfVcDRTCIMBV{9|HgjKxNo;om3*_u+2##% z%1%$D6))h8F6(KK zJBt5)7WcM&K@s^jrx-gmMdTi-%Pn2(EPZu^^50qH;Sohsts;H(?rW)Gr^hMg-kvCGm2J3Qy|JgWH#~v9Ka(H!Fi$3mngtHkncAU_ zI#U@AtEL|}{H17Wn`NxtTepKV@bOxD>U5U(V!yS>HcFQOPi)hz zmGsB3s^R9oBTcQdMC+QLb$1GFUq|1cJyqA(uc>+Vak}Ns3eG^EW%S#`1@+h-*3&7| zr*ePPUlW&6o9r8L#@S9y9WqVO{SWka9=%JTGQS^(oqX?8G&Knvp=0I_b3&ePB4
{TWO3-v`%YUJbujZ~t-f_XYLKE~ZTR#~x>X5zBjI7^@eY$mZnj zyqH#evKIUh<{kB+UKvK}kIg^0zizyMd~bFVeh$m~_>a=>GG1}##ARQTYWv{1L9%|J z-x!?%_oEhQIFF)>r-S`LqJMy2wEp#3qI=u)7Sm#4!yi4b`-EXq+V-o;Z`T|1kyUp|h;lSkLnBd}q?#+*@H!XIZbY z{>k2hDd}I$pk^I%!4IhY;h#x9Q*@)&)!lpc&7@aZv%=32BL5WfInR%!yt*-i4jk?z z>)8*Je6+qdy{%RNfEDD*>P~^ORr0+ELzsvfceZW8S;eYri z-1>)o#`4*CU-&cJ`jh4SGaLSa|6SJqyq4wj;eYIx%e!CEB3}$S_Sfaz-)PYvhyBI* zciHpLHnN`O=KQ5t^ww>3{Hv1lK_nqbZZ)QV3 z;*ZP5AH&0mq6EYr#0Qs+4~8cbMQafshG)FuvhjrFtZNP83F42-#vj(h@{Nc;h*xCe zmEjTfp)H74e1DFOZ-y5XMTv-Si2r2czu^(}q3tIAla2p|=MzOqi2pm>1<3xs8@^C9 zZNu+7;t$#QWB5YRvB zhsnsl$b)3_ps`2OapXbdUvQjF{x$Y%I)wa-`iE@&V|YZ-PfQo zB+J>)DX1q=f0C^~Sr5xoQGcRdC0nl=9#J1Ujd~UJE!q0k@PeY~9O_&23uOBR=IyYa zbEaP)+b^)3W5jv%3#j+V)_aC86iw$*@1g#r?4J75@P(r3Eb33xfn@7IV~?gwMF(*G zNw)qp_G|hI^(XoTYU1e^__@4~mrTDvwqG!IYPy1c0rfE1df4!Y5L;0XqwXbJ_Zq)x zI*qy){T0xzr_eu=?H>(~D4MR6>cM>?**?+uP17~>iD|_WDQw6qs@<%% z!@L?kS2t=j(tEpYp)HpmQ}Nv8z#CznOcY(O(o6@1t|#Zt0}6?*DsuMo)yhqDv4$Kl5Gbl+VaPu!ngv z@J~c-@#hbbf76uDM~GbfOtr-SF%Nyz88t=ph`d2H*{_c={_5;#zW0fFMA)w;m1Tb? zJ<6aSPvLu+m=}coZB|9je~aKuYUqvy(4P)C63&0~3UdC-Z_1(?{xeVHy#AY373F=$ zHOs8t9-At9*gxO4s4D&+&^16E`fa4xBmQqvQ~Xf=L{{~>^aPJR@Iz~Sryl+v^JPXA zaC@-Fe)zw6Z8`trD`Z#GLt^B)tmkH%N^<@`I~%C72F>!=iSyq+OwPlGNME%+M{mfP ze}(hVpswuu+C_e9_kgYbOmKF7t>G zuR4{G_;z$;KGl2mMv?P#FLf;`@xRHHe5&vNzJUJBvi@AxVvHBjS2qi)DFe5OoY$Z4 zQCxoCkM}O9LKmzTJ^a2`dX$p*Qz|8|`m@mrv4`c?x|ESPFuZ3G^|2-2PsR2i4nzh^ z{5ij}fZBIvna6&_pYCNP{-1qTL={=JRi4XwE=3k+yojQ~x5%<$v&T-v|2{zy53~K7 zQ|-LC2y$QGeu#%1LM84UKbl9a0B&mdT8Mj{D@gt=7#^gGRX+fG0>#g#`WBG<*r`xa z75~dl*pp4<=OPPBKCSS+psLV(x5(L_r+XBZ{JZM+BFewrLD9qV)X4mjue*F(T)qXiUN-a^=;ek6;oEV znKU|+)O-JysG{})Vvq_A$e3bsRJLsuCAVpwY(5s}+tD+i| z{1(42%#%TXG&Y0uQ>|N6RHHudy*JD|LO(S!gY;jIzp12F_!&Jc-#E%&`n9$}VQSna z=Dn1a^=roXNq?6bQe6$ta98B4e{Hm%^uO=%+z00kZ-@0PADf=>A6Jt`HPnPg_wii5 z*9iUZXXzRLagDE3TWv09^zi$xo9HL~SLt&#)q`%v9+qz!?=OAO&^qDjo#(mixAmX< zN&l66rmmV_%-WCsYqG!ezw^7+QQIb)=dzv^lhQN(<4PXx!uc_B*0XYIdg%wt1=Uc` zvKqhf`fZ!9f+4>EA-=qwJKWsfyQ`Knv2!05Y_nJT6NAQ6>!8KJLKjzOc zPbP}u#`_AM&?ZY&wRAl5ZJ2k|hZc|X75w2=VpTO`=R?uM^7)W6Uh%tcHFbK>BlwMZ zM8GQmtT4VYI;57m9Pn7=tbg_dAHh}XmaL|lB|d`w8nRwvJ>xBp8`o01n?4pfuh&@5 z{r;d9^_1>w^zi%6p5i0;L*Vne>cA@VUM!D=9QaST8{@yVpPBXSx7pf9@Q2qKmHK;| zSZ_KRZAZO=c;d3_YlKjU5A_hr5i z@GiV>`!?0x*8het6iuJPZ;XR^{lNAB2ZJ9Nf3yBK_5*)|KN%t*&BbDhXec>@rS>kW#fb4$wbir#0SQc zZ9HK)`*R@T3FFV+_`^IU;LnIZj91%uWq3rus}ZmG{u~?M3@-@yHsTxO|9L&}-|&cl z|C{*l*!XXFKEVGG{~7PKzwd@G6iwan`<|t&pW}@`%ohUwjQGPiu#E%89^k-;1B^d= z;}6@fDH8FA@qZit4UY);zls0&j)sZ<#!le>i2sa-+jwYrM8Lxl4;lBianJY-xHsY+ z&tGi*H9Q>5Uyy%!KH|-f%#*=<1o@HYDc*d_yd%t0kWXh~{$lel>tT5tYUO-%jccY*PenI+WM3Auw0@3ddA{kbZ!y^J80R37A@CR&vXLv#251_x}xxejy4UY(Of7Aau-2awD|7&aWbDCw9DNYa>%ILK+mCrY`Y)cd+y2+^ zh%je2{jX#DUt=fc>F9r%KVbVo!y^KJ0R15I1Z>}D{05!?`aa-4j>R7g4=0K$0Dl1f z<5+ya@MNN>BJcs=KaRx{Sk8V91D+7^aD!v<2iC*#%D^9h|2P(}Fgzm2fmZK` z@P(qO9Po!lb@w|K2Qc<%3IPrP{J~-T;qSU^k0_c#frkM9aV+j({HCc4a1Zvs#or7M2mS~C#{RMRnBmFbeSwd$ zKP{fda`7|pG~jQJ#ot(u$brA{ep$TE@QAQq!0UK_Exu=XLD*m5d;jIVXwk#Gm;dr) znCD}7GQhhWi+35m5Z)Jf7yIAhZ-y@f{{w$xKUf^h*aJTR2V?(R{LR=8{{w&fFVBQ| zM22VbUp@)jY4{|-109P88Xgh$3wR*!yT$#C->_f6{ho~5<1Ekj9o0FoUU)J*`zcet zx4w4sfOEI)1G>M;5grT6Ln`;sb(igSnpM3^y~}(na-QXssn|{D?3m(iB8oq zmuPy)6)bnLyh2DHT@Csh<-J1bBPWZT^^_~qUq|lP==}b}X{wxOwD5L#edUt<^}pk{ zI`ulAqc3~9M9%9glp3smEw;z$`NK7O`?k60;Tc$&vV-*T0SBF~A$RD-)7c)rP#gtU z=%?=;JK!vQbAu-5D&VmvoI}h0oj?2Dqgz{hdfqplN>&=EV+-zZdb~SNFRNts z@QC6lG&o9MU$D#h<>V#G-h5XI-(SQtv$7#0w0d^L`DgWG`sdIW9==ct^T{VBIIE5|chJ~z(e|9A?j+DHGp!0cKfP=E0^%twv zONS<{aFUK4rpDQqq~MIW*bmhTkJNKstapk%bm(l7kMLnw9#%X`XKsPNC)}Arf0d{y za`tD{VuSUy21}ho?qurJ>3^b!nYC|eG~a{&}@89E!Gdblq6Xno;Ob$Zon* zDv!(98BewIPti}hZ+3K(lT>-z>J+}eh}TyN8mV`0+~%})k zr}|)YA18X(dOEUars!e+H_bj?7r)cW2~J)`=c?ZjJ`c-VWt}Me@SfLKQBY8eust2|`u3To=+9rdoa~k2Y1h4$BIo^TmwB2F|Ip1@Uui9+ z|Ea&|;rDHxZMt4^Y=jd!Hi5QXtK%|!p*U(7I92}&zWRj=>*)HzI9bnrXqtVt@VAeJ zZKlv?(XyW94FYHAAq^VB&nxIz*4gr0*54+}OkH?TGw0XuSJIx4tsXn$!BdLS*&XfF zuegn#{+0#uRQ$vd<(jNNM;$vk*LEs?tBJ^2zbp4NJssbry)kqlUHEqvco+Bv4&JM0 zz)ZQH^IfJTwD^C+!2`)G^3EA&=$JgEoVk_asL9oeB4__}$uJeX)@%-D0u=s7bJ4@{ zUIEi|aOR)g{@dqKpY;9kT)x|NHuyZ#b#r`QxKR7~RJPv|k@Iu=`pwp{_Z|19iZL|h zyJ+YSmGy(u&(QnVopC3hj-lf#*NU9i4^BTv-_C~bBfDbh(9wOOhu^o4|2*AlOkQW- z@I|!me_O>KmiGvV(W~*j!*cne6dKUIxUAW&m_a~cTC?M>a$l3qH(=TTKyR84Y zX5sf*06)M#;nqJ~E3teI^(V{O&vW1(_}^vy&w5zC0CMb?%e!CEB43LA!v4Cv z`x`C#mtuc${$2L`!{xGml{x<|d;VF@_N>DB$NRdx?;9=eyA1CO|GTXJ*&g=W0{9<( zaC!Z}_QcaN_yPWRS^pdR<7pxMkMr-k<~jfTT-LMNoPU=+|HjUE@O&2Wc?h@Xf&Ihl z=ioeG-^1;`8^6WV9PAh35AE~BAATqP*^2ms_~5effqlvH4TukjCoUULSk6D|5l;|* z$i^RD%knLVKZsXk;}zS&@*Rj*{QW5#-&oH7CJFHk@tWc$ly<00G5>o+1EBJPomdo1UFlYqE~{7ct7`8OSSIQ;Bm z$iIAlj?ItEhhcd#@+0yo*?h`!)^z~+6#18I{$)KZKZ5*=d`&iAGoOd$Zscp`&)EFV za@KzW`5pBS+4_fhJG}m+seh=Er~Y9%uRo3Y2lZH%o$>S)>L1ht zWa|OLBZ{L#s0Wbu$>x3Iw|MwxHrJnI>rdv@@OyoY`ZMeKMP%zk=EJc3JnBQ#lVs~j zma~7(p`JwjNw)rEJuJU~`V;jk*?N`vJS@MAdKL98+4`2{tp6(NTl5QL`vvCh@cL_} zUm)8ru$meef0C^~4PPjZuAu%z9Z0qgH1@>PP1J#?Kgrgg z#{PJ^hWZoz0@;3npUeCBt?3uY_6x?&c)Ept0rfE1df4!Y;^-pkVbr~3>t5rxc={T3 zFZw&O{T=ga_`PnUze7Jowx41?49mYmKZX8_a(enNma~6up#MUDN4CFXJuLqY{T=#2 zvi%_Qd02iM{UG{Bvi&2=S$`V(NA!KfeP4kqAKc8_;q__g`_Lzn?Gstf>+hjYM1O>D z1wW=)hre(ezEB+9M}LHVjcmVW_(E}X7yTOgBjWz3(7ZTV&vD=(`XlsfWcxK^e>~ks zzlJ`GY@cO#L~-;GeHQvDd;`|>Q^wACdW?Pw{Uh1_(eQ}y?N{`V=o88IiN78opY zd2U2=#Q!7YUf`>8_ao^4LDt`I&;a$nn{v7Rl#@_H|yz1YNyx#{uLek(of~S87S-7|4$pY(RFv9qbb?bDPT$1 zmq&Om1^t+-Q8f%2a@+{6E6O#St65) ztI`zq|6=6LBgCIst_7%8quPpG{MnSm|NFCNQ7?z~5j`SrSyu;rbC8NO%AppiF|hMb zychPXZB5zVVc+Fc0|KH%F8kY|mYn}-!*Z*Iule4jbc)xfb*dugKdop!6%;&Kxlmcf-ll-M?0}c{NIkm579ySRrfD?ct0xiC2&N6j$xdshVebU!&n)Y&^)JbI5q;LSv}*ogy~ug} zjlrel_dVB~5LLDh-z&v@A^g4%Dl73PaYzYOF(g*(Vfo#D6(kN6+FDlq-XqRq58}Yk zP>Db9qk`4^moXmu5q}0&lK7u{Mmd$S+gf=p>-jbcfB(B+7kxZdK`o!V%3~+u|A-KY zhwUpBRkQcbfZSK?xgQxOaj$ruAoXwbRFSj)ANHv#`S--SiYjgKPS_JDe*StSzWadu zI6HHw8Z;~s_GATkdN^n8a23{N_d>?u@m*r zl>AZ;1a_;a{QR~+o=yD!&B!3h`$v<)RP`YVB4_{K98*H-&z(MX)za?fJ7WA^$0p^F z`mj>%TI%RI^BpvnpO}E}s-T`MxTu;sRqZ6~EFk`If0|S3&(sDrRgU%M`(o_>BjdA6 zz53Frt$N3s`-@n9U}9FOZ=c77t8x>}cgk3Q^5DB!iFcq{@F1#gY;j?XGncaF!%qke9N=| z>DMMSj!@G!8-5YX*H8D8{w}6{BNg@0+#|&LH_Y~v{&)3^`s!p6!`tEYt7fEU{Kr*i zRbzE^j^Q2g`c-q%OTRO*S2J}ptI@;nyK$bs^k09RX`*i2xA!uk|B4BaJ}7KpE9G>{x5Z|V{MLPK?Bl;P*Fe8DUq z!7G}qY^Vx1F?=4D&w-rrjSneJRq!>#J7WEF@Lc3L9d^8-db7~*c6hzUdY1qAxT&gE z$jEuUp66rw{YNd;$2^w5gnoa4kKhlPMzvJ$t607h@P`Gyf&=^r{=xV>=Kdn~!<;3) zf}Sr5y{LC$!ccfVXBAA$X1e9ybTF3~>%`^)&JJ^#$xVLgM*`FGp% z&vLeBFwQ^YUEcR)zEB(u$NTy{ZRxiDH+&)BZ}30kU|v74J;1@>hcD{4cU%7(`+>i~ z|BQdy^KW=Wz(39TciZ!C>;(Ra^DlUy=R6o55%55q2gd#Ez8k**_rrcM{_KrEjpe<1 zBK|NwY~us-VfcOfB0eylY~u;b*+2adPZ)pp#-GL_?}hloc(sjJ%;(|tT@bJM`%^Z) zv7GgHMto!Z-^PFD?eO~cCjL7%{?mUi`i@{_KrE%ohUwjQGPi zu#E%89^k-;1HgYAZ~S5Vfj=Yudj0{(B}zhmRSu@m?|;y>fzHXa%t5%6%t zL&m*r+%tXy?v1#|^B0?cnODQ_)foAg@6Yk($JQcmf&9qx6mLFlE&geRe9H3|n}1mk z`>iSRFVAa2J^7mXJS=a3eEm20Gd91ooSz$k{GK6lhU2Y&I?H-8^^fDNe>%(haMV9M z@38sK@P#n%K)&Poi_O1=FNFCE@-NRpY#ucBU=D&j$oJ>i{A=vT`~~@!=U?9Xhj~Pp zf0_En@zy_VC+1(Me|R3`J0L=xm3n}AM3@Jm9^knT=l#`^_t|fl`ylW0{L$8*%&TEP zR73sA^Fdo5G9QNJwNM{k!#vT}lPqU{)rcZM!u%2S zC(i*d{C^$D_FxW(I`BQ_kGB3a_GA8t`g14d#kT(E=d%7#Q~x`*{x^1FUX1#m=b^S9 zHasHCLs1X&+|$;*#&4K=qVDDS{@wrYzXr;Cl|lc-^K{!EF&~ECw;cMT3z)y#ev0Mn z=L+bjc)suLzXpoD9QrTj1K56z`8>S74EnXV;1AgTj^(UB1pOV){cZotyd7R2V)|dl z_P;FW^`+4N@_gL(JBBZW`8fI=p4WT(FXjtjUXT8Z=i{~yGWK9Tjy{Oz_1^xA?Z>{HH29BW@gJ7UdV~Ksw%<2=p*Sjv zejoUcWAO*W7mA}|z#oABI2H#m_QX?R-~hmX9E(2~`ymJZ0Q|?X_>bWcK|k=H!h_B` z7XLAJ##14K|2P&8F+8F;Dh@mZ_>W_8597CZDgxYt{crI%=GDl10e@rvSbU86Fd_#& z#{RT;8q39>z|(-gITn9oJt7DG#`|UQI_C4RJQ#Q#@2|!8SkC%O0N?vB??uac=Dqxv zC!=LO^JIW`ITr6Sd?CCq@Gkbh#or8H2>u8D#(uCkn6U?b01n3fxA>c}AN~ja_FtX} z^N0-3UX?>=*Dr-gk@p8NWe4aKH4KPB~rreotW^eof)~i+J`> ztjaKb{n0t+z{Hvj%adPo#d z-osN`LqTCf^o|D?oqFd!(1W-+z!mww1bo}5ua4<>&dK}LTiQB$y~tTl;X1u_&yXWd zmEc>{arq_iSki$Pv4%>OAFc;PrZ|OS(&+ByRw8FTK^5`+k!$;$oTsnQmws7@)eV^>yc>fK3Y#CdR`8>QnxZF5>zHh3NkpBV2K8`xV`gsOZtnyerzQQ@DK*<-B zwfGY81Ivq48>uH(Ipf6Nd`yw4E#VusCy9!NMeCS?7oDH8{zx6;4;^Q}vAj@?G5WJJ zN1er8zNMtKvEhbClt?8*$LqCY-A>oeUqdT97f7qVMc|KX=+)6l1TifLWZ-jY7 zYp7~r+~a}#{ORd2_VII*Ms##!~egxj{FI5lF zjg*-p=k+xT&eZXZH#wuqyXnc&nWBgNP^s8V{d0vR=jyF9bmeq&c`ufSmYk+1f>$=A zKK}mv%tntrNmMatj?M&r*P%S;Y5sWj0o$KMWrJtvy}MRAn}15CwTlwuxvZyJp%}Su z>gD|-bh3lnV`maoEizvZ>9ODW>*d!puudkI;SnWL>C%(+n&w0ao_?ywL@#?_J-BeKI}B~rz2k9Dr>AhAJD=#wPU`d8N1$j>`$Wbyi4@p>0O*>->j$eQ_>OJ!+M%$U#44~?BP6WmO!I!Pp={KM;O=bx{i*Nb!Rz1v4`{<-b(TN3zei}Z3Q$f@MJj9x2W z{H<+X=t{tSP0REge4lr%-%5OE;XQaDnMK|{%Mx8-V+|)YIG*+u_*UfXpAMN9>c_!F zorZOm(AINL!QaR$e(RQTvHt#_^iJhRz#>E6;kiK~|0H0E{?{*qvlRFFlrESFx`RZ2 zWQKVCJnp9ZyP~nwz54&4KUCHa^k1sCkGkXja07vjKb5(%6j%&uT1MT{`SI| z(`6+EA1NX0S>8FzTAi5df%|&WB6@SNm^_#D49KuXe>35U``*ns8h^Z!$a#JLj2rYR z$K@;xUQOd~Wr94j>{q+2@j5@gUwn1uT3Q-eP~^P6ZMN0=ZkwL&kss&c8{+w3PlUYJ zSie=e>a#8GF^hm9l*tWym?x7!!~9q3oplo20l&?q%ddF9YKVV^`7P7y2X=91kBT9; zPk`v*eHoj6x%Nr>E~WS6IaKIj20XWgte@x`uLqvHn?n9`X?~poB4_;*)34SzV|rNm zIpjMnBlLHc^&0D0{^@}j>U+O{$a%fS`ro4;r8K!Qk1|XuD|*;J6a3cePJj1yFa3Hx zm5(Vc_ON`6|2lo-<Se;u``J@^pqX&g*!ZI0o`g@3i2A_|0w^p`p<(&Zl8IJ zs8YvjB4__c1#D#hyR82W4<~^Z!vFA3xb+YE7xDibyf6G2ZvDw}_VXP02mW_i|Fa&J zFNFWGUoP){MT>kn_6z&#^6oG5f)Z#s_7~^hWzRoeQP!_9=ig<|Kg)UjTAY8pugm+s z(el3WcwhM6W&LmXLW#5p{)Zo2UO%usN%+3lM)tqU`rp`}M2p~moPU=+|NLC`|5|hY zUH1GNJCkS~&OgpWxIGW-A6_4W{ldP7+kH2FOQIO;7vc|P^~4{pG5Ni=BmN*hkc|&q zld^m>;sfFd*?7Wo_VXsh6T}~~@rU)W{0qb%#4CJ{$iyqI4OzYm@e1(`_aT}1#&Xub z8}SYCpKSc+nvvHZF!7&k{AW3@KZy8`-*>XV@2rR4cMpEw5r4?WAGU|(I}m>m2gt?& zV^0$8MI1ogNF z9{%|X`40J)Z2sl7EI*0-i#$j+53-DPokt!-{w14#jr~dBFD>Evhiv`BYx&=NZR#Jg z^^dVLi7uo5K|MfkbC`O7ZRhnVs0Wbu$>x2Q^S^N;@1y=CTYnlJP6FLT{mJu9TOS&p zOafg+eTaIJY(2?x)^!>6BtAIr<~?Yh?R1!xu`V@6oTJKO);78GDlGCHf=u zYh?R1V}BAoL%)VTi)^1|ctnZx(lvnlDdK*rZ-Fr3LGgM10sR#EN3#8+;SnX$WAu;c z6Up|8#&1dV1byO_I@jpqP(M}mtLtv&)$qA`)u@~H|KDY*>-v{)Z-LwJWD@9wiqx-r zU!Xl1{-R~$PKliT{LIxuKUjQ;oNB(x_3nk}Vfph0o$+V&U(@TK160W;0S@zvSpK4E zJDqjeH}phh!aWrqVgEDp+~yq-|1VRoU0KwshXozx7s>iotx*48r_jRLRqwKaA{RT` zw9##{d`B-6vMAKOqKEzeV@uozm2{I<>B_A~{{|fOBum7PzZ@qKDceEm-pIZNZs>g3h^i!jL;{TRk=U2f$ z^LVCjL=uZb6 z3Fp6e9XbD{JC;ywGe(M>*FW!DPu{mfzvAl9kouxW-nVxH@&Ab_h18zw%q#mq;{P5^ z#1AiOlvE?e*7n!~KlE!P{$E_HsLDDq*keEZAK6^a|FT-a>VNJ|@?6&Qa)3+De@dw` z>O{F#9y@XV2P-)bBNpUUgL3kH)W4YLc5W&AUcFKQmC!Lz!CxiGfsHVh|v%aNNy&B_1&i;AQzq-Vq2cMQv*QU-A zJuH7XBuwJf#`EP>htdo2+>GMSd&A31d^_~6k{WuN?}K7q5aQdYiW2`Tf2^#=#_)H< zGRyiqqsuT}L}~S^slA<-ik#Qq9am0%-&d5Vs-9MzBYN0BkH=P)_|qJ`o#pK&i9Ia; zeq=R?0}VUXP;a7VcLrQi_fU3KK#n}5i#Eh@qc_M z<3%{N=%JeXFri7Jwb?}K7{kO$`kN&c-?y@9$?W1Yu-k@^i(tNh1A z&VD{KGmq4t6B;#Ee#KHn56e%?$tm^f4;h=O7u(L_xkbgFN9X2{`qsJKQgvH=TI8(% z*n&W*|LeuJP&>c82>n5_{y=P2#((JQ&^Bt~zVjmI^#>PclX@>Qu`TXRIw^YC&na;^ zrT(mTvXxR}kBdDlKe;fE)PYAwbW~~E`5r2^2X)}`TvC6&o77IVI?eY`6%zUBC3&U( z@876{+A!gqJeTzxT9%#hA1YR;i`wFI#$zYy|CKqU9&WR?x%#v;f9H<*SEz^Q=a;%S zsBvqxz3YCF^K;KHDj@xrE4hQ}((D`96C!@zzATgUN536tr(QL_40}q7eD{(p(oc0e z-%6bcxhit@^R9)NrT@z3v{ChQ-Vi-3|6*}Q>DS_-+NsV_=KE+Y-?St^`n%X+oz%O7 zH(?LoYlQwTK7;hXmoK$fyDOOQpz-=OOZ^%DaoxVzS;fZO!gE7q{n`})((im2)J>go zUl%?6zMEHPl>V#P7hTj4x+?ate8EHrI_!a zv457Y^cOrK`C$h&wG)58tRnQRq2d-*`{vF!` z9AJ~b;1B69_g13@Gw&-*C-t*F>eVs6Z;I^%{sTRX zht&R~hidkSd2SWux$$fL1^3AI=O=3BN#>ie-++5;3=sUy`rq(y5@;;^&-j@2kKxGx zAH(}Ho@V{Ya`y8?_=oW~>wnh6^0Dwg<8|Ksa*2Ex_KWeoBLBa?%nJg(hy7*z)1H6k z?XaGK=KQm-)UkLac{LeU;*AHwDa4`6R@i*&# zV?XdW_@D7ld;a;ktbc$x|89H!jh(RO+zw1I8ZUz=#8kKYQa3+YkI1@rUt$8~+WD2>8E=|Bj9S#!le>i2sa-+jwYr zM8Lxl4;lBianJY-xHsY+&tGi*H9Q>5Uyy%!KH|-f%#*=<1o@HYDc*eATKwDu`IP4` zHvh67_J0KOFYq77=4-z~e|r>3cY9B=)@JRi)z zQ2+3}!{$4~7s9*)`Htr=HvbyF5aut)zdQ%AdC=H{ISBILE6iVP{x$Yv{(}6=^Dl4x z!#pC)zfAq(c-z@O| z^)2&)FyBOd%kyGe{{yF$^`%k&e};Lnt^Zlh>w{7M^SqDiy}?rNF<%JtKGb_Wf3)?d z;R|8@i29S~fZjTg?ZF%nbs*0lZT)HN$NUlXC(ny*{m;*3{UuHP@7Vg^*ok>D>VKYx z+IraVh%gUDJpkHJDfbH)LF9`er^mo929NYgI9uemL zrvG(p|7&nlc&+GG} z|N3DP_g`#3=Jn{mc+PJ7U&AB9oZa-lj_rSqotUSi|7HGw?FS8y2>b!`gUl1KeV_3g zcmnAAfd4oae=t0p1j+~e0r-z&@d3k=NuUD22Y@Fy7EfR~`?(PC1mHi8#UEG?%L@X3 z0RH1xyu$E^)=&Z96~KQS#y1G~hT#R_xxhDo|2P)^F+3uyH~5cZ@gKwU!Fq%LINa}- zLceeLLWz_I{r=IUn~udF3||Ox;19Q(r8yP{F!m%-PT&B*e;kWH82ghb7w`w*KaRzJ z438+0as&Svc{0th_>Zv@dVv3&=zAUa>=``7@Q4yAFYplHKaRycjNg(dcfUsBe~Z5v z9uD3M_#6Aj;$wy<13B<9_NT?uSk8Vf06dNTZ}B(QBmM{e#`|UQI>RHvegUuJ{k8a> z;RRuTf$#D8xA-SYJki6vm;dr)wEUhjPX>6GlgER18NLwS7kC%&H^<^{hA#yF1Ak*b zSRBmQ13v%qawfe^Syw|U^_rjWR=E*Sjov+S#y=wM%&WG~^RT>d)rq=CrAyAg zS6|VE^95a4>|#9yt54B~e@b=MCElad43%AmN3@rURr*}}R6XMqT=IxMp6D-fUSBj! z>ulc>cfQ2bSllH%VWDe-@8^M=K^U-y3|}D6Wj%$f&eCHGU35PG;U#!h z+dOurQlaWGy4iy}&Z)F?>UR|pZummSC|5+ZKI?kmB)#)jg&lwK8|w*dGFo^3>z?y6 zEWK)S<&>;vdjcCy&{v}#JD>N=sH)u`#^0I3f2owc**HBOyvp7oS83?t!?0b8-$KgF zll&5!bc<3Z#d~-%$yB2JY(1yWQ77lK8<-tNi=6#mvfKiAx#`YhZlm1&*mVR`A0 zIl9S|FPv%%PSfmH$H5zk$N$@ldwb>!KlV)KujtmtTOw!whn8BXo!RT1-~Cf4+BZ#j zJG?%u=pr3eCBZq}{{;A2zlogJS1!H;@4M5+Em{W|^V zb3^Q5d2qRfI^@$mPVz4 zBIo_8T6~?J+rOfdmb8wXlnC%H@&XUX9bDPB==g!n9KU~1bLL|n2=io;sdeBcT|Ika z=T33YpJ zBIot}GH=rZUgdU{yjx3K=XDi5{JuT1ZP$16hdHnJZ={Nu+KD|Z@0eqoJ`#}6Ss%KQ zDxDuB>)8)Ia_rP^*H(4b{jr&TF5lZ@e=2p%nWQ7DzIOZHT}A&KiInHEo_<-A^zqei z-Ct%{N7u5A@YspjXSUt?x>E^=P4GwjfO$4ur&K$=g3_-X@3AM9CS=*G z-|Qaeo_&2K^_jq2n+W`*(rC!}xi8x;qqz6k!ue!0B+#qYM4;;~=YUzc}(qecG;>@Uv0 z%btI{qO4zU&cDl^f0ncV*W>)-eO=!7jh6Raf%k>~UDp4GFLaC+!~gJu%j*ZWCzV#f z5AeUMzsLW^{#05F|Kt3-?D^;Cvj5kc^Y60f-`JT-8*u({9>VQ;VE^#?80;7JJ>2fQ z@mngzKtJLS+4y64ILY)S;t%2jmG{I4!;?v-t%whZCuHLZ%h{h>5l;|*$i^Sm!}27= zAH*xN@yhUs_R>DYE5tXl@y+mpl4(EU8{$9N_-}Ybd+CUY|77F8;rS%vyImXj_niiM ze%}pW=olTq?>piT+4y7lLdR$);t%2g**IYANu>jb1BgFlac*?4GpM8_x*@i00dAKAEP{FX|Ihu6)<67Q*7J?2f5_H9#?DmS=d+6I0o;jb>H+o- zuTMoifV@vO?;F2?4!pho~pX){`vfpPQ&B zQGb%HKY1<7@1Xufy-K!TWm{N&AN4BpXSlwtf%=x^{BIthzD2)4+%FsmsLb`1tbc6! z1+x7D%X$41^b1bw6J+Z>*26!KQ17AsBwK&-T9)5M{fRn|Y#qol*7X>5Am5*3>rZ2U zD&0r@iGG1>zrbtx-#j(_0`AE%{erPGm7bwrKs`*h9_DxD^|w$DqwXbJ_p+S-&27}Z z=`#R~pL3r@w$I|{vOnLT z&q6;%wx2R~rqWyVQ|KSb_K$`~bPRr&#(g5$KGFCs6@H$fzh3i*mOaX*qE1A+&AmOz z^tMfZ{ZrTj+H)|YD&bQ~_%M7X-ZUGcPfSUpom~P{Xsz}lXFtDgGEg_VcaLI+XHl73 zED=2{f77y$p4{RAEnXO?c6K=CHaw!e^h>**x(+`g``&pMUa-+8ipXHjdxou@ibCBXzUwkLlYISybOsFH_9D zPsiwO%VGM(2g zG?e!(_AnIRQ7R&O{*S8b4$rE1x)B6Il-|KW0O`Hg%+j0mBE5+;QHmguCYK(h2!c{X zK$?Jb>5xkeU}ymh(u5$O5acH)5e&ueoY{B3_tEF^pK+Z#cXl)7%z5|HKaU2zrT+h7 zX%RE)wRCEa`oC{$^+W2jWz5R_Sp)XK4})8%|Er8CZh9;u-;DOd{{!0T`EQ!Bya|sh zug|5PKZZ8a^IsrKC6ldKv4EX8|HGT;dHAqxgc-ZzmikTit5*lz_YL_9o181psGRzf z`zXF7pFOK;GG6NqTsIByE5x6u8X6xiWUFYxBU=KuBu@tM;X~1Q(k@LoQzW#b%ITk^ zA+dy=Pw_%ouK#;eEEtDF0I$H7kWh!C$vRn+))=1?sYmOMh`)c@<) z${PPS=7=?sUU~g{zndcFi?Q#k9=`8y z`LbY5(>hmYwTJTiqibm#XaF8d625C;?Li!vSVQAaU0i*;I9=<2{fIx~a8(83f9!_( z=Cuan^|{n@dvZnMMbhI*Ba`vq$bg-Q|I;dKJgiW(ig{V0A>^rm`yn2FR7d09_FC0V z|8uoePXGV$aed9d`ExbJ{X$>Bp3Lg!E7OZCc}hmeBm$drd>r`WWwt%B+67Jhh1C>)|V!nl}D&JU6S#fBdwd=J)sCY+()> z-Umfq5c2!1!dm~#>D$80YOogi$sEVq5zW7Yr!+UC+s##b=!dJbN@yPBe7x3oOCB2S zNB*5tO6#9(Q`(yw?Y`0HQqQ?B3VOX>T`hMqbTZXuk!M9aQU5H2{ip|SRA^#qZHR_E zgZe))x{T)i=QH0j4Q7!4M!pvE{>*Y(f96Q+XtM3v27B_VA7U5g*81@2%=YF|<_)li zJQ>u7U*ywzvg7^MCU5J_DyM(q=H}Jd!B7X}x;4d`DCJ>OMR- zT;=}4>{{RMd(g%7JilAz)PLZs99sXMyVu!dY;g$sBXs@l#aW2|$b@a(O;T51(94K^)ye8e;2SH_2;rTwEoXBytnbo?$hT|&z=?8iT}tKCHtBM$H>2;ov8m; z=g@jMU5QR+{o=Kd=ho+*S{SZ%??S(;8T-FgD(CvsOA2WJHLU$RX5BL0r&L7!{N2io z+8>=N*~|23&ij`NseIcvnYEvq-LaclU!3g$Z!e?5unVa5#PeNf~nq5oR; zy7p^{O?sI!ubshj$subL6c1Gn~|Mi+M?RUOQH^BVWk-RVRh0yP;1#bua*Q{dw%$Ey}sy&o% zSd&Tnpva#FnO_UU2JAr}v>}uBUy%<7n%~-xCr10xf344={qKZ%1I;Hx$QL4y2>tK+ z*NOi`?i}!exm=HYA=-)lcT)!K2kR#HF)u2T=T=D9f4?e=_I-cu=x@sXykF&9|NYu* zia(r<>2IcfNPZM~IKUs)hAKYL`&K`*E+!uKkSDW4zWg@5;tAeg@0dZo$m1%b{`q2M zsNxUxjpvzxA$pl=&i_%kQHBuUMT{@r{q`4ltKTksn1~&<>fl zE>v-qB2n*}o&9;A6?sHk#KU^xE%QGZU^1QObF1ijZ(Ta=_ajTcZ<3euUMBK|(C=?d zulU1^HG|COU+}&!@`ZpuYzR{v;Lot3rp+|+)@ToKfGw{n{?KL85L58uQvv&dKS0js zX72pHS&~9OR8c)1^i%#p^`WN8FZ?bc?F9a_HB9l4?I+$t9H6|6uK)78FvUH3tQc(4 z?d18S-++5;e%<@%v-e}1|1A$^hYW-NiH|w|Se^{LDCPGMhYKkzsBpZKRc|9md@@g1E1 zx{DvhxbtuAL{EtGPdw0_2g@S@9*F%S?&tR1`VF`r^b>y$#vk%Nya{8w$;tBC*#-Gj_e;TU11L6iqN z_`i$)mPZ8q-^PER@&5$kzvcM=|3~~M-s}F}Enf(DFaF+%KL_Iv`9i>-5r2pSyEtI& z0S=5fP#Kk#S7AL9Q71M%PTh=Bhi{x1do@8Z9;6Zk*kKk;xE4=s-fcsSxA zaqkv^xM%$a+#7MP1m-Wyzklu|@3gi0zb5i;+C5|ZV16V|2J;c*$HSPX1oJ6*N0_G| zpK|`<@-OvJUJLn`^BR}0EsqHE8suxvcbMOIBEMT+&R?wddl1S#}C#& zDT>iCuAn$ndC=N}ISBF~@E_mhUu!?+ zFUY@~e+BCw@`y11vh|N2tbb@H=3l6PI1dWe1LP559)x;;bDv<|r{6I5LEh*5(bb=p zhqFV9p#J3jIj%mmJQ>UfQ6F-i=;}$z>E}|YC+A@P_+g;_q#nwPqWQ(Y*g7qzVL6~o%zU92w)&Ib0b$xzY|NE}~r=07QBxAgLNS7!5k2EAn(s{^{2HT^GDR5oEN+LpU-*9Td9Fds)B zbO-bLVE;w?F|SAe#W}m{e=Uy)b9USR`mX=Ac4D56{`W8N2kr*?LCYfoe*pa;c>=EQ zvwj0l0DT|uAK&2*mWQ)LG6H|dSmCu19iBir{htMR0`MQ-;Sbb9 zd1l}bz<+#)S6Cj=7Rdy>0{D;b@D0lg!gGOdG>^URJN(D;h_K$`Kfc3%EYD|$WU%;; z@A`eq7uqYYqu&Sq;}d^q2K>SDh4xAY;19rme1`*Adk#t%Z~)*xzQZ4^{RibW;19rm zeBwX*itLH8JR<0~_>b@KA8RM{0RI`d_9ni&WbqKoBibt&frkM9@g44A{dQ1Z2kt@t zJN(V^aNq~vZ}gAD$1G0G?Xd-*RyXb$1zgfNz{15z%esDOL zwFiCx4o3eIfAg2+RellA|7*bC{>w8VkI3>&{>vw!ot94mJkWP|pyd%^zkmmF-yQB} z{f7Ml?sq2Tn*TU4m8taY4CToXd(B*LvbXD#U;G0ZL(TSK4I(Y?B~CIl`NZ3L^@e|R zK^k)_F{{dnrDke4#%nR)ir;foh$(seUDZQ*);gXyA?!E5TbB&x{E!>u3*q}{aq?P= zQQou8IG-27%)9f(s+{XHG#lyFO#7q%_}Smm$SjV;@<_^a)SBW&AznS%@Jt@3e6Moq z$sRe~yS?v}ANuwKNxpb6z$1#4+*Lot$KTHSf8Ki}>C#;d@OPxnVAGiFc(pNoIuC9Kt0?{fOz{JJGGn4eG2 z3-~_){+#UP*?8X%nVZ#IDAz{U6BAG0cDy$j_r6q6`@?0ecdpaJdy;4tzgu)#1CcKCDc@{shTi8TT9f zzTUqs7eqSO)#p-Ai4rTlvr{+tQ{#S;yD2RLb|y%PQfs_do}KVd6?q`NXJk;naedyZ zUwDOZPuH$L9?6s~c~wsT=c&HPoBP#V|6%ik5*^bT_9UpEs}@+J-zTlq_PC_}z8>r$ zPbN;v7hdT#zwwn{BJzmT_`0&n>7NP(mw8{_`^-;lzF$s_tEYM>uNJ=2+x_+=|NRF$ zWP9yauro>h8JTyDx8;|~e&;KDWao>1X-5UA46YY;s{hhOJ_reZ5j>$88nRKo&7Wzx-`retgdbPiK z5>x+;mAKOw-^1`2N%hexJl68LDzd&PkBSLdvqIW7oU8UwJ~Z<_@26J(?(c{D zyXLJ~6tE{jqOuR_+@az8{ynE8i(zJm{yqXT8<3 zIL+dKoeAP${rKhkW9ogpN@@-N4Du?_6)yv_?DbOh^JBi8w^sUW|5D}j|A1^h{U7Q4 zZ+SRz@)`W!v{_1R=O6Sh>i=nYU-+}O^C#u>|1|gq{*QG2ryj~bga5H#k?XKu;q$p) zwmNTg1CNxa<0FNegXBKxO$Izc;4=y-b4L~?>*W2llD-ai24(C zptw5F+LM6$b{4Vz6jy&*`xE3Q>QD3w^7|^=FYvk4bIR#)&1i6N~7yX^M{*Ld&fB!&#hki<2KSduHgo--==;zo;x`|* zPo$jdAEQr1eJ13}~Wb|3+r^NMB*3Ja^8~qgeM{)flZRax{pnpW4D6UVWod3`N z&?o*~_<{UXDYq#;J_^4RN!0gx(rK`Fa6yu!^|P8*NhfPro=hC{kMPD^`%Nko%WQgW z-m;H!>U!LIm{+5B67FrwVa{H?qT~JOfBN5scb5zJ&#AV(D(gjPgUHv@T=;ff1Zr&p#INNrGiW6E)YnbP2;&r|HVN@se|I4D4&Ai;J0`@1!KO?&9`M+1Hws~+VRG&*d$zxmT z`8U;#$-08yv!k6j|Kr>0d1$k$l*#kaEcK7>*Pvdy?>C~$no6w(2mFTp8m#z|6klB5 zRL>HLxn~;SSBO88>uG#w{=S$WIu{4dOr8wl!zWENp0sXP%j~F9QRVc{!!Zpt{%jvs z$28vDNcB+uz^kM2s?-M!O@XhwzDRk&vm2>^wS=IIL{p97hOvO3;jvo0-__q&ZAF1*1?3B7@N}c?Wr&4?Vn$S$+-pi#8OzPjW zshs=ucybHPzr%OGZ7Ri1hCP|p&o>s7)BO0ndRsGXW)$opPX_t%^U9h}|GM4M)Dzw} zMcxte>1P!*|GwU_ooQEy_d$`Tg#0_NjOOc!b2}PYFc;4yj|lmCVF}IeTmJ20Hnf|i za_YbGRVl51zWS`I88&Yb^z*(T)IUp#5dV=A>3f=M{l8E-*C#A1rui4JA>p4A^$F}pm{JuY;RMq-sFHi$b&1&Y5u*|zq>h*DJoz; z^6%G`wf>nq<{h)k-_2;Vg{mi@->(3oW-!ZFRe5-mWKd~}g>(w5Q`!c{>;F`j1{isBJM>5B`hDwi5&w~zqu)0Nnru-y*YDq$ zN9($m^F%QB)z%Dnk9ae@i~%KQeUDaPw;tzh_4~QU7lb*LpZj z%YJ6|7V_M3>-zXL;G3cDU2U{650e zEqh4iT)%7w=I`it%B74nH$(TT9{Ty)UD>t&I`qm%CQa_0Y7ga`cI4DP=-j-~Chi9B zccMM$gZAar{_DFhKQ`U&@P07ztk8e$$*uiws>L6h=q9{hi##IKYJ0K~|B0MeZLBF% zjDDbqov2`u+Wx6@R#Ye6;Djiu+z( z<)7`#tT@1!r=OVo>&VlfJ-`7DWL5lO?|Yw^(X)6S$g=|e06CvKX3`ilIv@Q&9ue># z=%+kW@$ul<9thY8{0HlahupY6%G5hgc^O^5U~d-1J%*1TXEN;~&yaot?%`)s{LT5_ z@^Ip0DEv=+%=yRiWPp$1eTkw zk{1*w1F*luKi&BUj;HH;+w&je&OhZ`-wWqI?Kk^lg6~Vd5b!R%Z%%<|A_y@ zd)?o=K*B2=g!0KkYF83f4d5`C$Hq`iJulm+vfJ2=fl)JI-HR{A-c|@3h+4{#1)<3ip^DoptoCgK#0rH424?;b_xlb_f z({GsjAn$*M`J<~pEe{9tN7SFde|%RTTAmE%gQyQVPjvMp<@8Tc)RUY)y84rPC@+Zm zlk>_~@3?xkyUN2+uk!w!V0}wo5ayexZ&CmIuKov3tLt;4{>N|N@ZBq0|5MKOxlsRe z-WRO*$QQ!A5A`1EPv6y_mM?_)BkIovm;(muK-z;jAnHKQAAb+jpVofNA5njDUhL|B zK9~A)+WOyj^}n?f^J3KhoQFmS>S4?7wI~=Jn{mfdBaHf7hY^wLBus*=_&pyZ+bOiFrEuU-AcB zKWKSG;18f5Bu~Kgeb#T_383!-{^L9R!SZn8Boz1q@E@P}KsVq6mM0S@>46U{x%Qjy z@C3@~=huKI0RQnF{y;sHrw9H3{Kt2Ah2;@J-mfe14S!?+->|%(I7tV51Ne{c@E^+~ zij`2{KVcRA@E!hRc|KTg@gJZ4{^uiRftT{3`Z+E7ec(U7!yhbPC|=S5e*pgD69*{P za z9sXu{O7JuAH{f-?!|N=M2>S)Rj{EEIJkLAe#@A8Rv zWtjbWZOa$J`vUKx|B1itE--YTH(3$3p*%ygSzgW-fB47#$z@J-TNH_!8UG|ox{g!4eP2KD$C(^v$8&N+$UC|MzfJUd zEWhT@X_m&swFwc3BPq|)@N?yZ{qkEnlbrmz%Bd%F<1f7aVF~{9h9Tx&-|WiU;ri@# z7I>9rUG)9Ssm$cE1y#=V+3PL#)=j?QFP!p{M|&>fuH*Z`_*?{7$KJn}x0Z4){MwLOag&GXM6-UpqV8)7Oa-USpNs-?j0{GbyyDa)2k3D7hn-d0VHS^3Ny!E&cZv z3-FGv;CpsUyi3K8_+6GikWRH~svi0|yy`bz;-9$kk{1o!r|S9>Ubqt>@xwx;|27Udty+#f#- z*pnm$Yi!o<4}MqVg(TeT6|g@^-jMZP#hP3Em*akw>X%3AbE&6T#VwwnW2?V+?|r#? zV?w~rBq>_ud+&L*v;Lq(A!gc;x&a>19m!Q^1@y%GLz<*E+p@I`_$^6t)m!bgjQ`Sa z-TJ%?PMHLI64d{di*NU~bXw`3{^GKHGjJ5_Ax|bz%9P&Xm8!VHf3*KcDVgehmDA5< zOK$W!9Q?wcGx@aK|8TVGp}ca@t=h8DpOHOd^6knk_T10hc)QJNHp@gf#?_P?39Pu{Kdnab&(rr~?N zFB;YMTgLB{T@U7|9?Dzi-S7STW`2L!>1{IoA?=S)e|F04do3Fj@cjY1_ zwd&#fb_|d8I{V_+e(Rw0SoV$DLwV~0N4)m`M)d&a`N4(n0UWthxyGc%;{#NDmXH?E(9?raX zeeOCbUYdUEpzA%Xr@Ye}o1|Y^`lo~1<6-@vzNuoy)%{-buiK=0_`Xqje(=KcPmC$v zXS;kjZKK*l`4GteOqV+5UBNeIy6p(qlO$33PJ8(ePK@z-?~xoewg>D_k|A%L(&u(h z+$ND>oAtTWQ1`HgG4WM|BdfSpO=LC?@Jhht9F-zjI-d|1u+f+{f_YXfw|3^CiTOLlL%z^*mpGfB)^e_6p(Rg3@Gt&8!a{4(M{(=7^o&Twa z@;UH7_A4^DUmvM_A@&RV8yVc+k5vCc>@UuLWbwfHhs$;Sa(n*8oqx)?U(0d+@xGD4 z_a$HGjx5Cc!vB%Z|CTRwN9Mr)@Iz$K540yq7Qzqkf28xjwLeMb!2dY^;?6&xOa063 z`4@Not({4-9OobBA<~@(`iJYI?Y>94eYbu~l4$G~;*YraV|h44*3KlkjQR)lfVg_V@`&z8Eb0N|eQ|l;`YlOfk@r!5imN{@4<}K6LH&vP zP+Wazc`}LeGwMUslj7=0%IW8yQBR`&6jy&z59Pn0{zSbhu3oh~qAU2W))M_bk*jYl zFDOxdLw$>WL0rE;-VXKLxBY^+et~kvpZn++!mFPZSMOQA&>gvpdJpxdxcbxbh3?2L z)SsvWr3dQ3!KeeRJxOvGbs)ZfEw28w_9w|L)Su`V#Pth&F3zm7DxC9c1t9?Jhje}{fh*bjC?KgeE_@?`Xbz|@eM1Lf%KcXJ`=Wp~!=-0&cYqW>* zztFFtKN8m;S$mS?3Hl@6pX2&9Yk!hFM!$wWOI)AD=Tgr<=(EsIiR-7Vok{W!`YH5} z;`&GWhwC4re?*@su1~anOOl7^6DKcCmKjwGo8gyU)aEoKsi z*6ft0bRX}nZ}3P4#N{=so0d>H{qs+kvEH&MmJ`G67L#D9~e(BV?%QJ+(|=O@XoA2i6T zjJtc=tS)Qt-3gV`p67!Hdq+1vm5{hnX6wM!s)xE>42ts7=X@fmfD3&ysjT)clt1q~ z&RcfpA33+Ftoib{SF|?gGhPfH?LBDvR5rt&T_t+xddi;<@Vt;3|48Fm6-@V(T;NkB zsXt!~8|JMVk|HvyvZi;y^Ynq|=2glfZd*J`keZ1xHPkhhHCd;?kV(dLdc;68N)Srz%tYDf{ zuB&qO=dgb2|N3uKGpUnisUG!zR4?7HYkO*&h8Oq7SRN7fYit+Y-{bp?Ir{x7mFxbF z@2=$b3zVGdrdM2{rY}KRhJF%Dg ze{6FSu0>#_yxhyT3+dj7|CZDPh( z*r(5>o`0gd==s0X=PeVzeO16toc|f!^*oGkUClHdaB{!B_X+1AYLM>xzWOyy@g?0= zuKP7w@g>PtvbD*YEj#9YX@Ex|{>*8v@gd<D!*u=q1$BrQ$@!sOOvbX2D(Cw9i|gs%`|T;6%+h+qx5;0^ z-}}O58h@HKY-g&}Nw4-${@1)#8VAO#=xPqNCr^y_AP#(G?~iKN^=(ss=yTwuX;l9B z%eET-fBdSud1Ep8ROCA${(s$&c#-V%dzlTf#R7IB{x5H=@$l-67Ur+^zp3B2{_oix zH11XTqqS+9>72^>+$VE8YX0r~q>m}xqz~*N4+r^oRSnILdt3H28&~r_CGupDAD2aH zKE0Z)o9T0*i^}QGUzgO<{F{4wFVnvL2daniU%siT`FdpDzUI_}Phe+O_2`|h_R2>pr~aSUR@V9_rS3rUN9;7{&!OvoT33enk0i{0-( z$c@AAsUE)X_3x@_{=Hkizj^9r`Xh9G%r5YM{3vPajW&PpSgLZa_xBdk zdT(z0XtRFjJk>-0#O^Dm_2-5WQ6}c)OtpvdQ@cuO9e69(C#J#|vjg^^4)jZUAtM&z zzmGPl5~c<0NBz04jMo2ku8lM4&MeaBQjhPyN&H7P&+|-)?c@v5PSpR0ifKLE?bL7+ zzG({Ny!Q$9@bfT)ywErqQcf2|96Yt9^qJG|dFkJhi!Dr=N10p4d0zy1N9d>ahHL*7{>E5SW%NeXL;2?Yd9`1g8vcp7 zGj=PUTU^(F>*pr^BY94G=Gaa0rg*Or`n$vVwEx|DbiCr)}-Y4{fhYD%mSNzcg^IFNpD(7=|9eq>rhn)UIvw!1u*h3x; z@P}i$6dzdAXrjSyS6~l$GKsPkL6Tc<-6_^%$nWgn^n>E z9@ZlldlmCfGNsFsuSK3uqIg)(em`;lWRosE`BdZ!q2K=@kKzv>jhJk@{kB={p?nVH zz<(k)4xDNtUgy0fv3oVm{2DRUq`tR4U_bDOQ*Y>ViziGr#oiJKo9Yd_RlAo-D&wf$1=Kp;fcJ8dlX$e#S}@qPUU>=!js{Ozd8R~ z9u9tc3;z=zbN;bB8Q^1hU*c)bpOn*|QScA(H|Kxqp?nDZPrNR;U*r)1ufu*3-wW<< zr24Zz_P5o>moe`ATOJX9w_wk|@6NyF`2hdK`6u2Ld|&c~?nr;UFY!0$f6EsF{s#Y- z8+;@t=m**Z91MOS{^tB|?Faq_{}cao=il;(fPdQa@4NGF?F9ab^G`g`od?S!0v>4h zJ;v?3^&4=*IpVEk#QerS#OLwwl92g{R5l#YlG#FJe-p`8Bggm^;yIT(M)Qv&{s z_(Qzf#VgAr0$z=HMSPp_Ef(?3@`8YGBfhNy{_oI+_QcI?v1#|`HRcHmWPulm63lr9|`71@?vNdzxcqK;L749#zjOZe zT0K|)kVkYyirf0f57s~A`C$Hq`iJulm+vfJ2=fl)JI-HR{>QBqV!Tb^RXFTSEu0FIp8O#S!A99}P>PgD!pF*f7Q!syY^(XaE9*+8x z^U7eoN*)pBm8e&X;`>Cw`nJ3JGdJp6&Wm0B51dxlXGi_t9`oW`f%>0v`ae7Bf8alU zu-+qI2=hMFdz?SI`qT1-Fn>h-*&cJiU>!(%Fb6~(2>i!)^{2HT^GDR5{V^|g^*^6W z{n>2&@4Ncn+KG8F>i-p(hq`*$@`x}GMLo>9r>lFd-!S(?-OKrYu>b0-@AW$RFW#@> z`XkGe!8{%P5$Er&pQ4=p%z}Oj_>Uj#zsOU{Q6`2en8vpgd30no3JU*Y;Y%L@X3 z0R0{3{;vPEJR;2f(f?KlPr&uRmgfVW0Qz6f$6dc;`9heFqu=4YKG=VeFNAqL`Y+DM zT_0ra!F(Kj5btjZ_FuFg^Lq4OoU^Y+Rh@CV>OzQZdlkLZfL3cLdNkMHme%L_`B)WA1@|M(97u{3m@E?0$ z5Y}7#$9Mfc_0Z3$(C-8P@rge?m`I$2e5X5-8u$b7AK&2s)}ACu1snkQk5Bv||61ZL zv_DBw1AhSi<2(Gv@|~dH;y=E_f2^I*WAPuKc*w2>v(ZPBe|1OF01pBF<2&5L`YlOb z1@1xr6Mvg|VM#G!0UX6 z*I6DB_6v9&_t)WjmKTKm1-|!R-ixPt$b0!OPlh}n%aZ}#RKvV?V9qWrE1{QmKF|7>EvkCqI6*8=b3^#Ah< z{FK)$Xq!&u#F#?6;2xgHyZ*MmIZX51;i`x7*E%fnmPP&Lf8DgONi3BTi5ec?M@yD8 z@67d9#Q*90{Uc1(h+kCB^=W#|_QFTp^gqdy+2m_lQLr5U?V)6BwN&r3%Jnd-NjFwh zPCXghe&cQa{<7csX_(o3x>0~f1iZM}O0P%LEB=6!8O)K4?E*ZXWXalMjaU2qU;H;O zt1T%J6<+Y2v=Sz`%=5pOC0lrX*gmqcw4W99ffAvsqlV>Qu??Zb+OvX;% zdab(O^Ot1LZ_d40H}Jk8Can7kugS_Qezy&o%^O8}26#j%z@71(9ehu)+2U*_U&cWJ zJ3~y?b{o90nf~xsEQv5p-z}j2q&?|+E%I(({mXx^Qc+VPeR@6@{Hqj6(|5l2PWeCl zJu?fNo()O`{2yY{^;yE-d-~1ZEMfBenqAk^&NKrSc-5aA_ebY_)r>t)9t$!3WXV^5 zi++DF@uyI8`&z#MPbOJ%Hu=u0pZc6%A~dZTHoJ?;>HnM!*Lu%CIPRx!`HK19$PZKx z<@xGt^lrS|?`K^45AM?#58lWZx?d5sw|Pgr82?!Le{mPU6qWP25oU+C?%-CxTf`$N zTP+&=ll8j3X!V`mUp2S+WjFqf*f?9|Twk>29`ELv7=PICRA%a{GgS}$5K(ux7v1y( z?hj0BW<2M8CSD}v`5JxiJ-Hj>_wSj;oPSOp3+)Lp5e@cv8T+2_Gu%#Z*8de9us;N6 zY^T>{@;3iw&*w62#(aG)^%RZV?_FE6&F`J>74yoJ#Q{4*Owl?Ay!Y>&^Y`t1%`AWR zVSq=JB01mMysFuldAR8IXh${qDS?mfo8n)st^ z8MzAjL-6lIsZ-*pS0m$Czi}7L+K#MOIoH=IecX$vH`BjX`d69huU9?vPmPMly=9vh z`B|U+E^j|vsrFD_vC2`eZ-<%wf{@=O4Bs=c_Jo)kRpPuoM;H0K&i*M$_typN4>1+1 zANN8>j`hpF0&ZK<7JV-D)F~I|-B~!+kNEM9O#E$Uz|Ig;r{Za^>PKt*M|~bkhiOY7 zKdAd&y2e2-&CE4^Y>gCoIbns$x$mWGAMskru{QoVCldt_vs)v4S z_2v)WiNyu|ZR3xDzqAd{jljPTrDLI!-v81U@|*o}Qtp=BqjKu+Smdm?r9dkGm;6U$ zZS|edUsBiij5zIe9F@w?Kl6lS|9rp7xxQ!Nc<*@gLjGHG&dIYb2UHLJ)3Nw@FQ$53 z|JlX_c`I_C+CzD(lJQ=qK85^7y??@80Gt`po)FWqWP&%kU0wg{@mHlt?Lz_kLrkkO z=e_KkQ~8@posoqH4(oHNr)SX%-ra+#{07f2$oK;%0(OR&o+U2gcRD@&v>tv}KZy2+ zVeXS6jZ2^Qz8c!oFV{9v<`1O(Vfx(0<>I|H3n#@a2stWWg&%^fj{12>!3*AZTaU(k z^=qswsCEGMkSCKY{R^G<`j2Phg%IVMk1X_A656i52e6MDzKPuva2Y+}iGRH_{Y;oN{Ez*L z4DJ_sL=R;l_6z$P8Qfp;f|6w+_7~@0-1)~V>iXsO{No;3d;Tfs`sFzPc;Cq2`;sq| zA`9`p@PDN9zvT<1$Q<||euxbEf%b%$h42IXAL;yW?GG_?;7^=?ap#}UrT*pi{EIvP z*3J;K9OobBA<~@(`iJYIv0vEtNVo6SZy_cc`VoJ`#UIPVNtP{$KZp79{I@)xWI2HNkH2?ufA5wrlp?$F_m21@F8)})P>O6p{6QQL7YD38A!aw? z0OF6h_+#x4FN5dhlqRP;-2+e zh*^uchx{up|5_eSvYbZ#9T7THTz<4XnPfSJ{D^!iUk36i<@ED0H*|^ae3eREyNr{-bei@uKu(< zoMgF;`V;k`tPa$NmM4=eH&7p>QCyS{5I-O)T`p^Rm&rK zDECmW;``d->RZbTN|t-5Z_zJ^>laWzsGbM5Ul7+XP|o=C0Q~~$J#qD(S3}{fRnITpeib!EYZ>2crIz=eKPAY3&a&w^4thUl7+X@VPwC4{X06 zu3xZrhL{KF7f=t2tA{O*C`E3d9!A|OuI{yd3o$oP_oBa(CnmRPjQ-B@aFQh%{T;ub z<@zbhlS!6G=%>(siR-^8r=K68|3ZH!uD_!m${(Y@Lq904AGAE8hw=pdAn(s{{iEdt zCFA~_1?>C8^?jB{^bq`z+3XX=^@*0}lPoFd6VV@u>yIp7C`F#4KSIAIu3xi!p%h6* zzlQ!uTz_Qk2{BL6AE93p*RNUoLrgOIHS}51InZZW9#M*&%SyN`mQq<;&dahm!o}&Dg=qJU^%>AcO z!}6Y@WbkcfctvOaEhoVjI(K%v%IW84eWSg#;NhG&Q_B4M+f>y<`HMjly^|MHWbDEU zW=7=-=po1>dMGc4jq?UgdM3rDRyGAc>!ot)e>uYQ-tPTO#tf)t>I__~yd7O16@~i$ zxfJPA6W{Ghjpvf*gY~0Fdry*{NoZ6xbM5go)x-1oGHRmt;w|jMnhK`VM?2LX%3lnN z_U2}IE*;*hY5FW#7O*G8yc|8nYd<&zJiW@MMBy_5`$No&5i`6JBcIEMEh0_Wq>B1n z)jw{WcXZ)%nO?V!8F{p~%9+Ri^*rz6ub#-VTcu3+oZIRju75sgwl_28i8M_pYicxj zu5zw_K6tMB|EFgS&B97uai3DM_5YN?>YvJGaUV{N+_mWgeP3^c`g2D0NHa3_b==GJ z(E4-SF!jGlRo_%N8>f2s-(E}{r2AF-Koj#pHQv9JqU)bU_tpKqu>UQy`f65{Q~&cB z1N8h?AK22o@jLJT2?36T^FOEGT=3^)2*>Pea3SI_^69vv~)&K$54=YPQfJr6$@u5b2KU$1`S`j-=zt{GOHhMZ>g{Oam=+rW?GdZ zm`9T*gZ%hi6V0dBPYf{cjwr8k`uX14hMIq0O#Hz7(yhMgq5Ss7I-0LTQhjL3cJ2WC zv#LLDY^$yL{b|0Bj9;ml%Blax4x{zY-PPiKZmZryt6v-A3556l-W?TtIE0l z@}8QS??x2+*wjBRs)zo$vAeG3-)Sp{o4LD6t38z8{=Sjs!S4!>G4JK76tD+*a9;z> zzqyu;GzqU34A_tSyR)g*KabxVYZ@lB(&tjo<^7Swf8lg)6W<7R@VCSbkaCe;ggA~hw@W?d97D-e(RYB z4W{F{;p)$0he~UG+o{GxQ}*~Il~ez*qvf>zZ&7}tSvQdUr3hVr;AjcrKeFV=Bop~? zy2`o!!12;r@6|dy$+W69R`u|Gj~%b5_2;IH6V2_VgVi3&PamzKbzq;mQ_SUgLj(4p z4ved!_2*Z!CYeRa?*!~e{dv5)*8jy?OfhdaovhELo&#~^i2ulhQ&Y`}-^T{*ME!rd zqSnJBD|@EM>7J02M}&I#Aoy~qdvkw3!Hg@|Ugh-vg(J1K|LWFpsu43E_7qV+Z#h*= z`=gG9rW#efSu@nFXCP=^n=4TPBr7=rbABt75c%`rM2&SSvuNuc*^fflCOonFTR}O z520PAn+Hvo!=Cc`UUM!KRD57sVzjx}hkPgUWPlHxFQjRlot$HY*b2h)?6%SsEHZ3lZ2Spwc@QV2Sif=SnIo;eCOh1zslq}H~B0SjT z4Sh4(RIT|f^pi&f{3kwK}J-`7j7ghY>pT09qgKP5x_5**Q9QMRFo?)I= zTB6UT9uN8{e|~(XY56XGpQ?5O|G|3VA*J5`)bx!dZ?KHovoN8E;vQ9gpJ6H|f39-; z|7PK(Vv4^x|63kTvJ8R$iH|w|Se{I>MB#leOidl*{7E_e69s<~e{=q)9?FNn|HSKp z`$ZlR@H*@l@x9>wk{1Mg5Bp2})180IBYG%3?fLiJ`L{eD;Ga1E#Jhs;OTJKw^vC-W ze{=q~d?Da(@IP^|pdV-ta4`6R_?z>;wIBE!{7L-Noqx+C0{&^wzwge!wG;R!&Oh-$ zcOEQ{C`F>MU&Q^~zFWTm_k(`o&+Y#|{*Z?Q{2B3w_^^u)mL~&z81aF4vWq8_)1Ms? zPl!JU;}3aCz@HI+h*!IKWqCxvs~N9=Z@c(rc|pLp5#NaayZCQ;M8N-T{P$h_w>%%< z|A_y@d)?o==aXZ;4;8*%SL%wJsowLBcmUyy%+ z|MQJR;0%kgqx4arxcy zf-v7fe&_rvSpSem^iYc0`o|B}Kjisf{)PI7^A4BqEMF)^N+aKK{^IhlmTxnF#kgR^Ahu~VEscoG5O;$uNd{hEbe_n1GO1GsmD4{F zs3$ppboD3oP@WIy_{ zoa?iq{^z_eSnrW9gn1w8Ju z%=giM@%vEhkIt<92mJ!?DZ)G*{SoKyuAicu{>+GeYCq=t?7yBqWB=7x<*%XtA|Jr@ zYnDd@J^=bP-VfvYJIf0Ke*pa*=l<+}zr4@;aNbirX>9-NyZ+bme83Z!+sFGF^KsYj zSiTVEO_>WKgr%tQXk(TF!^}v5}-+$)2e&6ziQsfo%`@nyEhd)@p zP>Q4i{s8>PcQ}BxCj>L}(cZ|xDL(OsMH$0^8_@m`lM46)@E_mdKbA)X{TBc69sXnO zgdX5Oz(ah8hgcp_ilhb}0{q8!xQF#yh)E6HgZ_8;o8{ra|G?kqABT@wo($d>_!#gs z-{EPL)6cH}Pow`G{zg6Of8cN2FNfDz9uf8ncpdlG;d_=Bg#87+_g~(Nr+UbH`7cj~ zJRi%G0p8_1yvy>1@V>yi=zrpG*MYxTz7YHm{EdF-62QT%J@5l?FyL>v7scXl)_(XO z_}hPZCgc%Wp2>gtB(&4=Nq`6X4iB_EBJ3CNK<>N4{jA@xU%>qse-31P(+r5}q&yk^ zwkoX8T8$5vCY3OUSJYD;3+3qstWZA8*~vxCzpqwPIe%l8uHQ2Kdmogcp!w{V=BkJC zuwJXxZyj=%GiO?t7T6dJnxXe`-Yj<25!{+)pz|HCiBUu0UlAP$=Yp)-e1)HXaV!M-OPZUVJ2(O z-5Q@uO)qU?^R^7|g+fi}pw)T~ujZ*}nqI2L=i;AGlV;d5^vs33o?y2AMwc4-wcj21sCe`aRln+Dy4JG&`vEO#a-jnqRsu2mfTft}j~uu=0y~7D;D@XI!Il+EcVqtkxUZ zCS)|*!^vYIUntZ>v^b*mMvjndW=jFi06mrGYkNR>yc^bLF(YTJ4cHTA3bsC`{Nb*J zbDG>=^8OP~_wkJm;Q655t5Gk^H2ms2eJ=GEZF*eqFM9kz2J>6U)_|R1rfBmxt!FCl z&1HstHz&X&3N<-9?&a^-{Nzh{&7G282K*Lga&?JOeo>9zU&_<>cfg(m^+QEDrS<1) zB~qI=(rto02UT9W-Va(&7R`&^zvEh!)6b>NF|8-xKlxO)9^9;YD6d#6PV2pDFCNKn zvvZi4Sj*WOK&8zQMIsI9qR=n2p)6dq`4FWuyf_IDT8{w7_woC5D6 zhw!~xRl218*NKmRmw}1L!2=0XdE+XUKhwMQud=@uc`0G)pT-q0Xg~G#CpYo!pW~{B zerr`OLHnIGy?&OrOP$1XBXoVoGCyhmxM$`q+^Z9>az3|X`77Gbrhk4}{`!pklaji= zXX(qzFPc>%QC64xQRQ6Uv)nc9H}BuNCx6tssCww1j+KAbelyLB2eQ4;d9{b~R#mU+ z?>HL1`%tETd^KQCnCV#UhTdQF`KZSd+2^N#{b8n6ji0sO|7YT_lDOouK9_oWR=lD2 z7cEZvKq_Cn9Y5s$bIItxT!=j}-svyvphSCbh0A zzL9q6Rq)L&VQn4t^N`Zl6@Mr-`DaO+a1r)YQF;F|KP#Rvy2DR0vFbUM)6e}&UQs+@ zYHx+MLm~vC<6}hhV zP(GymO})QpXwTmya@_5JJz*xQ;%)u?)Xa%@rC^s^0sF(ukV?1s+>ogw5~cljH}tvG zna=b!v5cOK{; zu8+of;O`dQzFWVAnP}`6`9&`NkXOU^+Jg8)evyk0W_=x}HU%7Z_c|@URE#hH&++XD4p7mRpS&O(wev!++7QfBr{wdv{7XHQpGN*A|HtKP@_8t~fP77Uk<0It zQ~w3zck+2${X^ak*I%~vkGT4Wa<0FO`iJ}_m+vfJDAZg)z9ZkswSmb^3i(LIlUJc*tHtJ9Ei(Gw3J`CkIP#=;%7N^@C&}k= z^(XaEejD{C`9H2+C7*}#d#G2*FLL!Q<dfqIzt7rDCE`Yp^{N8L+)k?ZfstKoYk zqrW4+$n{g?!%+SR{S^5#uK%K({&|G{i+mo}-%$_c$>{IM|8e~w`8k?S8R zr~aqtAIayL8tD7T+u`~Y^nK(PxjvC{u1`Uq2>eQ1e`NVWq2>wtBl4YGzh?PDq2@9A zHQrxzJmMzTDAYVc|H%7`T%TzD7G@rzPb9yn_OzPjUdb1zRTK5SUW}fr{1bDmvgyAl2hJ6K zi;VYuJ_5hr0iWdb$qMG^-SjG_f1VGUuY8iCpH(wQcHU7vl)s3Yt$dFvJtIw%s=JiW zL;1^b(aN8>-oB1$5pzc6)c+<}l>9Zo7Ya2mC(c&B&5vHBDOj5|V4|Me7vtvZJvJRpBl9fkMZlgg^J23z@HCQ{&L26_2+A^H#L=)RZ_Y7GkTo*Kkv1cW>oEs%Fj{%&yG_5&+ujKaevgd zy~JiHe?EVh?(d8l9Zf4!96YWRyT1!8pJz|2E~b5zL;F$s8Lm%RjQf9Z{y(bG-L$V& zU*&rKzaFgorN+a$m@m$MuX^--7e}f8n{97z3henms;)aMi=+G6dqET>CG{NCsLo+tlY=bOEI zcHUdg9A<*#z1aSJk^KFdald6(3Qx%i+}I!ButJ?5)hjlH>W21_@q&NML|OlBi-yv% zkyZAwKRnNu)x%}|4}8~?zKk`%2eO}7|7(^0YDsDf3hTVm{r&n-iB~VT44^43cR1J=w!e<+Eb;B@g2CikX}Q?>|MPlt zH;MnduMedo)9zq?)F2rDVoQ6`7sc%vL9;p}h@Hp3*xpfo?~D2mqeJH=%RKyy*IRo? z{0a3ONY!oxh(Bz97uQ$fK*mZVX?>Hnwm*mi+j~p=xs^7UT5kO>Uipvsv$?;-|9!K< z>Dl$a<+(i1i(Osh{GwVdBdBclg|?rF|9iVjJbe3iA4;CQBc6Td@gLU@l(=_bVi?_P zTT1NwZXY)ek^CDQHlFIFv;N9Oa88bIDfuz*@6puieH#4FEB0r5+DbkRIr}U1`5}|V zc7DdQovkGQ?wUP@ZWnfwdDx!3ubJfQ-}C=Qb4&9%ORh5hzV)-@_t0>YR($dhJHPY& zLrtXqnO}Ai&8u7u^SjCTTSw}NzQ|ZInP&g@lh}Futz!)(-{ni3MDfx2WFCIs`$wBg z{>>RQk@}To{g{j3kbJPUgu$jJ7|>gU5f7{QKi4lPc$bAmbUIM~B-<{WIe8 z6!M<)qdb@AzjdOqoL_Xi^)woH*VXnD_0Q>MQV*n#9ZQ2dToK%O{ImTba(>ay8WX5r z&;4TO`JXyEN&R_$@N`-f&pIm)!TH=-L+ZoOMN{ccdQISodmZtj6ZlWNc2S+{+>xI*7p`Wk3V>&n$&xx%$YRca8sFw-}m?x zT;YxS^Vjo{lwQdYf7pKZLLI3CgRah^rcVvqAJl=@>d5&;WlPPZzxq|Q{YU+IxxUo@ zopa8nQn@?Gb9tVF*K5l8MQ=LKq3WfZ+J2(`ziCK4Ti=^hXDB&8E?R423`5V&8i`NcySh-)B;T zcjLs)IPbj@DE(Ki>$AxJET6CCBe-q7Rzdo;QFmw4-DlJBTwk$oyx}kX-JS+>>5PNV zQ}UJhHzo#1|GR4U92(bR7UuVp@oR3C6MfO-;!*U`YpU28|220iNWZi4_b94(?pK+I z@!5E{vh-gqmd~Ysmkkns*uM3473qVHrq81ZXZzXypbxrVRrOzKQB-DaciVr&zPr_> z|GhM39=Xlq_hr2k`rrG3a(+?ilhJe~a)|9G`rn5^(hrsln?oBj_JZA8#_zdVP5Qop z`{vU30=z!G@m}crZr2q4p;w)G^xLKx@FzfUh`v`&_<=_!qNv01>F~#2?6G(Kg-@s( zI+t?2pCfk0KQ_@%_=oqm=F*MZQ8EwPqi>7eBe+e;DEcKM>!1P!&lz{h3cs;t);t<^ ziFHtcGXISG<(OA7pVW+^mA#@de~^qfc|7cu{+LHAD$No*<8NX-_xst%U3c^1;TOLi%TTT{#*dF~bKzM-kiVMj1I_nA9AMgOlfxz%;=BvlZ5rzQ)i;?l9UpWuHm5Az}M-qBQTAm3lf`YZ4u4=M`p zF=80zKQ&V9{M^{2%EG^C{8?AS?==+ov%W~OIJt!R!_&}@&KDS(dcZC~xKYTCN7dhik19`8Oh(D|^((!@yF#NtDh!3ov z(eZ@sj86#S3F~>B@uz{z3+j;(<5#LzPqvJp8c6fYk z75^ic_|CWyb%1`kBi2tm=((zE~h`@&<9)ka|blg+8f%it- zV||g%zpSg__Xv6Z&p7jGbHS%N@+s?ibpGXe7`H&=U)KNVe9d|u zwwFV`W_^*)?`-GimP39Y2R)Co{%I%UORM_Fa@IfXWPEAVKdfKU`A+GDa!@(sJJvht z{Hydr*ndI(<$VyH2bDkA2SFa>^NV!;RsLiD1^M?h_P?C<59^4q|E205i|e1NQva}@ z*#AQP!}=>{J-|95><6J9;PZ=|d7p8^z7O&~>x*>#$+{ZGp(yH4))(peko7QZ_d)(+l+^??3ALljmW3QPiKT|8drivIx+g0W-jQW=KJi7h| zPb=eHRsC=2`k(FWk1Ohb)-O5hJ=P0hzYp~u>zzF8`cvtJa!^s!pWuHiXC27?U>^{5 zAfI1U#;!k=|GB6b>QB}?>H43a%k#Uc`rp#^zw#6N#i;+~JO{fTRyrc=hoTt2N$_B~Pe^8UWF|LP;}l?(kB>x*=M#CjNh-+btgSU;otDYi4t`Or_Xp2yjL^$~k6 z^k1z1nQZrKtmonJ+0n1DzKHv~ShrlLx5H%q?C9@U&!GEX*6r~4tg8RDbpOkC_9rX) zU)C?_en;trus@D|hxJa*{)_cO*sn+b#pf64K1lh4{c-d`e11{t|My?)Klba~Ow_yN|>Xg-1Mj8A6p39Kj4`~%O!_DtX(Snr|v3fA+mJtO!E*3W2u zgY7(jM(`V~=h6HR>vm+k;(sj7|FB)gga2XulJ57FUML4;M8D5^8|EL%?GFl8dZ8SY z3H$?}W21QhG))#61 z6Q!t(XPpe|mo(p{^g?)F@Li0*=HHZF2>644V;nROru+d8;KBI(BF(=k|A9aFH(vjm z|K#WL?}&9Ke14JUKiST|7uJ)o{z~(KN=Jn61wN3!dzj7pDctbA!29v}Y5#QypbcXu z+qxPT$}@C_oNpGqJBZqwLv7uQ3*`#mEa#O~`y-Hc&FL+6<{)wokCXGtP6hkZFz>N4 z58Lw$+A8NhH43argQGhdsNwNH7s@_%qnyjMxJ)(hS1rWO$gkJbL;K(6WvXlBX*w0Wx!s!kE~^iH~nPIw{=8$sbJ6jaz9#a*V5E5M~toW zaiKze9CH3!x5njZQt1UU4|5^~2Je^q-IhgEBEOT7wqD4U@{ZUg_bRp-4ZgQ_jO~vb z6&U7_`yBsSUWM{~nq$AO8|4e%E9dXEuU{5>ohxh|kt-DnJ7|_^e#JUDz8u{S`rY=^ zjobzvk@Mwz&Q_zxb;jCyAy>*3vDI9<@`csZFsS92-u&DQ>}QS%apo=DFX@(Clj`)F zY~$}nxyOOW-kfG7H>pGQD-D(L%-!TPH_Q2i`(_uTN^Wtmvku3FJUbtk`_Vd9EdJcMH*$ z%bTGaVI5IkD$(|&$@imm@pPyBZ?=n_pX(iRM$ThgxWR?~2xdJ@oQyBi@|@g{7W}dx z{q)NLvGe#cZ7#@pi7Ug3QkJKCWFE%ByVE(jukGvkAE{B%E#eQ`J-eMU`5w}2(4lqT z5pVnBMkTvml>1Ms7A;BNKkcynccbDx&&YX|?sbY#`KpKHxjc_=`^)Bq>6@%Ft39ab z>jc|RH!9ols+`AIb!aKNkhtE~5xLS2y%J1s+`D>cTNz3{6KCV*MnCjDA?I_(h327F z15d-BYl45}rZ?n%w6M%Bbj{}|{9&Dp3;DOaBIjZ5*`0^F{Ah`t@$_$cNzTLUmoF!M z8+uIUVSA-USLM9QN!zp1$uei*XR6>?qy9}f|MOzboRsy4OJe8wYcxuf^GGlMnTdSp zGUm@<@H}vmNgLy->a&oxOC$_TPf$$!Q3pJ|yK+c05 zaqmB)!#_8~&iFJk?wWiaY@cFZjXuLz*Wo6({Zi|JoYxwZ=cBRMWIw&c9#SKT??1AR z-1=@jYR!LB?j`ew1SiXRyz$%L8u=0*VSYau-@RHgpO0T7ecv|=wMly{{;>U*dXMEE>N>BoQpztcZGYUTL;YuR|8>~& z?6kans_nlUwQ86m_qFx3GGO22g*=z%=}u40wXxqE6PsqCL9wrGKiw#_UaFkOTl`Qq zT)+Jg_FVG48aGHXTj1X9y|uBIvH7vs8UMzOljVHovw1%liN#;QpW1@M(CSa+{N$*# zkA{1lH2A|h85inTBSp?bzEbG5@p1GMu`~Ytsy>$UkbkNC${5q(sm#Onp;ey9dBy8p zUm8ARpW(Sp1kcg1^ZC!$Uc56d885}o^N+6n%*0yCFm2llqyFt@n7^HjH-l2d-evAP zW8mtSV(0ND#`Ag6OTZx>lN;7u_W9cjN8fuf-q6ZD??+d86fj@v*Zq zQcaJKwm)t(y7mjX|GlGoCW`s@z3smn4TYWk89VQ*akT7Pc`namVt%$~?wpb8j`?W& z=|(2T^Lf;Nr2K0vyYve7Ai=+%kt+Ajug;vA%K5$%JL4Z#=ee9uuJKno92bfP{(L{0 z#s~e2;6DTJ%jbb>JlW1T&j6k{k2+Z6&-1W78g@Rf+xfl1#U6|A#rLB*zi+tAAB*qH z_mS!Kk31sd*QoVx==INb#(xdgKi|LReBW?+-&nja&g%}=_$$4TD@6nUOnt3jCl2h7 z8^r*J!N-0J*7z&`-6$G(p2B@?dj0cr8UHnE{Rivyul#hQ)mZ<09=l!-j1P~Wf$xRy zUQ2&>g_|4A!2EnanvOq8hvPz95P$gmd>tQ@PR4~cB0li_Upk(!opIiXc*6IQ>G;F* zuzd^S58q#=87fG3|;>yosSFMME%3}ujzcJ^g^z53HgriYt#8x z>4jYB4DxT)`)drH2bDi=bP;(F`Pb0-SNZQor;&g8zBXO|C>@b2-9Y`5K7Es+>mTK( z8(l~J!}rJOdO+!jTqyzdK>4|m#;atN_Z4n#lz_a?_oM0hQ|WMApe;Yn^`XJ_;fvSX z@mt?2zxTVS5BdHtT~D%|alVIolJ6t)v+GZuhwYC#B*=Xwx?WW}qP+AJ^=j7d=L}un zDqWBZrJ%m$`^a>^z`7lt=eg<^i~ze|U^~a3H1rF6|C+A%lwQb{o}k|2``UEdb)cc^K;@4cJ?VRb>rbP!U4JV7-RL3LpSZ70_Y3@7Ue9T&UodpPp!{^BRP+mc zf1Iv|m5#`j?xG$>-D~K&SK;PHcTo58{b;(sQ#u?MdW-&!??==9l+ww#&@1#)eE*m3 zzu3E$MdlLE&4mYzfAXoN=KBJKA<1u`_Xj&sB}Rt^d9{q-$$nVKBXhd zOP|sA;e2dE_lZj9<3gX%C-VJkx<68SAy;~j{)q2u)BT##3%Sx8^lM*orWm?EQvSHn zJM>3K`ad*uzoz_mqu1!y_`WvXXDJ<#D}6+tg?`GoV)s+ZPdEC2ev0pp)BU5;5xLS! z^pAC}BpSL;RJgg(OZ16+KU&_Q4XMb=a#&LjWL4t`?tx<@8uL_}*WY%A$;=M3WOpM$| zR^?PZ`n@^dKbR=vKTlcD_s$ztPB)}|K^<+}-00Kv4TArSW?iXci?y~6#|3(uX?#Am zQ5SlfndukMd!-Bh-(qG9o(1={rRV{B#m+c?Uo=DTcNx`*)=!>g>y&{1vdQwjB1(tS z>3^$>o=3jd>Iw3F8$+M7+-rc?<@>Ic^Qess34LfzvqPfW;qjl>kCywm1b}FSM2h=RtUdjEbcjy0!utOz#JRD*V`RKB|d~?9YVK^ z-Z;0Mbux$#o5LlZ3~e-!R;7Kd!FI;yL)>tQKle5dqf)O{h(3qyZ?_JTcop$7oGMT9 zb}%=__Viu-B)$bKkDxuvA3(2_L*{?AcYwtIkSycqr~4yCx5ML~@9!!1qqY5O0u>IZ zBX;&D&Cy4G?~|*Iqx4UsWFCIsm-`1x{ArkT6jj;uS51B|w!hgmLgK)>V>p-Qr9aNU zVt)_^9K$63H2yt;qRvIt;_+;My*FIq|FPmY-zHx^c`nbBb})?jBEvm&64lAS3wohk zGCuXlK#7M3b`7JxcdiOFN&fkX50|>wvUti`!Z$<{d{&4@L?Se z^6&A^k{?&qn?#KwBOQzZ+f$B&Nx2FfYO8(v5Y%(2)JudUG{ZT>( z$=A&zr_$Owsqh~?DD3x6ww3%|?7}qir;B3e`R|@#9nMxG*V^f{|3g-bedO^s&$X2M z(KbDaq*8ld;MB;T#g6G?uLcgZ~bjJxMLN&X#qYbw>)zCiq8d(x?Hk_X4o z3`(lL-1Y}~@M2fVzYkodllA*B+kfQWGd-pL>FqU>T9&vW&*gb;Ty8J*&(jvO=t@Am z*x9G+S362Q&~D~r+7jAX@Zs@K5_(DAUvX>-c~&bUb{_xaL|>^t!#B^SZmvZvbw3*F z&l^ppJ}i7^CiRWXVJV#q>ccB7rJjsfHUqpp>$q5VgnIH)Q>j1K44FlPI+v1p*nakE zBdJ#x7Mnv^&Qt`Ro-+Q}&H7T`CUuxg#|M`ZJL7*Wv60mO1J=$Z>vJ&X_mc6}?K;f= z7=7OTS)zxCwmkv+3^wIg>_b_KX12|`hQu@XmU;Tmgn;Pj{A+6|1s8< zoloOm7P9?B{h!oS>fz?D(DTp-d`EYA?xkz3rS9EZYYuhGcU$Z{|HYf_r2o3vdp?Dq zs}FyCWL<4ZBI%F3t3=bWkecwHbu#FW9@Le7s{FrERPtscu`|wl?i$j6?JplqMwiwy z58Jmqs3rZ{@xb}CYJ4a7=_`0{OsXOMU8jBvX!65mV(0lcCI?IZTPo)Q!GNDKcpWFE$6LrNX#zedenK$SjM5r5de<#9df zgKq!1h%(*e@5uh34|-N#`maVC7gGO6zPA79zfu}X|9h~Rn6k`~f)2kYNhC*wk~DK&&oSh95i^%%(Ko3ZXFFU3BtD*VGi--Xn# z+yI$}?a@!F2w&khd?7i84#IN-W&8}-ncrx)b`f>k*G=p^|BPqVnO8AK%v?y{D-Oo| zK{DP<2@?Cr{fnr@Sk^xTi9aUBbH88w*kby1_b)OJzweB+TEai9ngILQ7UB=vqf>*0 z2MD;eg#H>(*Y*cIz>C_#Km5F439YMC+x8#)1MKXN>)pjvXjChCF3)3Pezw0(UqWAe z>)C#S|G{|XL$YUIOoxv(f!$y5k4-g%_t;cy3C)>aOYDq)%=0?JziIrH4#$Ot0)OVm zG(Jiv1AYwe%lCh2JlW1Tj|QILe;gWro`>y2VdwkHoZl;0?EUb)_))Z*zw#6OC)PjnfqFeC9TE6Id@ttx^mkXd zf%n7wd_S5q{xlFAenI@<`_XiKP&yeG3PF6}`@eKNVLRg-f_TFGvorp%PAM<_g80Mt zm+5$=bVT5*5wDov*6~g0g1~PhzVUrzI{qsi5%_<^f8390>G-d7KH&cm|M~tk{d-q> zAy;aQ-#g#e=8QkA7eekw`~m-C={TVL0S}Bg0RG2v#vk?{{4?SY-`A$&ztRzb|5x$f z((zyU3H~4PpYM;;@lffAz=tCqg8#8}+*7!L_eR{~`_Xj%RXQ9Os*L>0_oF%UBkN?a zKZ5+o_kTI_DeI2%QVrx&zK<-{&c8el+bbde^8IBxUn?CE_G^%@`F=E=-<2*1`#Z?* zd>@&!{$U+aUMi#NAIn+)v=e{Ip#I_e*L1#9dLit0Am8zQZ94xdy%6?akblAdSUL|X zf3OdNJjnYmI{zyFvHybn%lEYn{{Q-ibwt?zQuUAJtbf=~?0=#D;rrv9^#JRLupfka z0Q`^T%=?TR_I;4|`F=EAe<~dg_8(Dy^8IMKK2$mx><^+o)rv&OrzK@LS z&mh#FJP+H8q5kCi%l7_%z1mgmMNqHu{bx>_7JF(SPxMRl5IGIwI_| ztNz#0{jc&9`|0R^`TjWF4=NoI^aJPz!T(sg?^C!zCxE_>@8{C|gVN!+K=(3D?$6Tv zfYQmhP*(5*d>@wP6WGo;X9b_Y_hD)Nf#+d+X7CSuUzO%7l#VDbbUriW{x8jMC|!^X z^gOfWJ~HNiE`a}0IwFi${EwyiAEoobc*Xx%y5CoNAy>+RexL6P)BJw+xKUQ{0N{Tt%|9sr-JsW+E%&u){zvJEFu&q|EY1HYKQRyZAHF}1`H-?+bKyVh zuUxTyrZDeeY2HKO=0@4Udocc*e^WXf;1B+d??-E6^J7XUgZBkL#&~KzjqQwcCh%#D zzvka~9>E{{8-Fj&*C`zlz8Cm9z8_8VdrB9C?+bp9*T3dJQR2xwtb5`6(KP?bc8))+ zli~Z>BU5vlx-;`bm_=A5N0vwnJ`vx9N`2!rlgE9V^e^dSgfADYrt21F8 zkpsBR!299#F|L3tu;F^t9{NhF5dbm8E7nTLB|x3LLk^RPs#TY=h?baJ_^ z7xE<6i3iOy%`RCNS{UToG|u+NiwaLTZYC_fVO_3XkMe}CvESE=3Qj(3CLcI!y{TJ; zmiF0V>xewbJ^Yk8!s9gbx7DfPr5(1PUgQyR#@u%MzICKR1Nvdkd|NN%N%^PlH@|jF zwx$ehLZb^s@^f+SlPBe!xyx+#^^P_4=SFm?;}RQxFLH^DH!lo$XuTcYoKE2$F&@v{ zLB2VA%ppe{&`*}7U#d7@=W}~J$SdrkdHKO{t4NdbG`Z?dTPFi8&EPX;#;+%>Phb4# z+Ttx@XZ$?|oH9QhJ!th9TAF+|^Z78WQ*x&t`(9PJl-$#rgGKnFHOk7`W)6Tc~a?q*UfKp4p`aB`O|`hhs7VZml$-}^!as* zRkUw88e8nV?T;6g8Ft6lt@7c%)b?N2)v%vlRIcA0(=$53`f*i73f;2T))9G<=dknU%$!H8!XGNrlyC7i zZeCP;n5v@qyWT*GkJ}nnG;k_EW5#Q65y~{1cgn@d@tu*j(~#o`sWH>F|&T;t$)ac1bdK{W-~s4lGX5 zQ&Mezyuit%n2lYctaBkH$gO&^?Y|dQ3w>mk3>##5|6PPSFMcl1<$3D2e` zuK7~L3ViB9HH&_cdH8)hwtQtad{x<+d(D-m)&3y1#(m$RtZSQ#8hU?&KS5#-Yn*OQTodo8zb+efulGspjDJ{z zmuB<6;~l;S@HbX&j6-ew=T5`wzcS-qeT&~+J}ZqY{}s<|BKC-Sugu0xzQkvFl!G>8 z{ZH(SXT;C1O{}F1G5=+ueRIBI{&q6n#CWz3+L?oH_WV!mJl@3kvpqh>kNPtYHENj= zI5d&>jcEGToRK)nkz64!r5)qFpxR;|*7S|(QTbhbi3k^}`Yn@;XB;A0zB6C_Gt#l| zKNnj4EAOSS|6Vi}rqAtNchlP8&&pY7|LxX=!qai;wA0x9v{3>mlAaiw5B z`gD~243g)DHG6GVEwZ!mw~F!{dWGJg!dFV=rB zum3->{*gyy{A#uSgZ27nJLA6^>mTnM?0nyFdEXekFYpi6_$$4TC(Q%?z#-U)1N-Ae zOMnCL57ziA|Gj7)@W=WO*6W|2%jPy^tsE#P1#P2Y2_W_@nefp0pY92XVmAaX|UwMLQ4&5Pu9Ef0X}TviFmj-TVX@TJ%yVWtw-EL{xx*|RXQ9G zI)(guIcch)^P|$qc+e5#N90pO=To*b&PS0?clazcbpGXe*nS%M7x~)I`C93S-033n zHS)Wm^SjaodC&#qchoeU17Ra>+hVBYJ*5}&q$JdPs6P#^KZm3KRC*y# zx`+A`b)cc^K;@4YJwzRd`qR+$r}E#6?xOz87Jt^z{Q^Ii*K-Q`g@qoc4c#v&KfUNN z`UTX(hOUQ|j>wa4p&mxvYv{UH;pRm*QTL+1GjxBabT}UL3jH1WDd-YaKc#ds9+ZZD z3jLR%`!BXLJ}=OJp}#Y9f5-E%JstfW`awhYgGxu_PH)itDP zKT`g9(JS;vkC)ysbibzj_oCCTImR(zt+^XbwM8VX~|l%!QR)#^6*a7s}7(4lPcfw^U|eeu8OaWsSUbP zu1S3U59@p|e#Hti@o}0_Y)L1Y`CD^aFXTxdmaa3a_eeFilxjz2{a)e^z zW%cdXm5x{HVEf}m?^kS)^IPs_??9>B2HXC7(Yu&Ui2u(GGjAw;UQ<<`%kz9(jdOat zJu?!{_M}{^>e_x{p0#Vuad%RT3I|)##KZ{L`P?T@dKb0DOo5Ir|IXGl)SM)C&iilY zZx{S)wG1QwP8s0Odxigo`Eq{FApCvhKRpV=pLF%UYnKR~zvc<03{P^2opJuWdXeB? zd1W8^(%_k`Qv&|$qvU%flo&{3N;qsC5x!U4O!>Zfj}4}fY}agE5Wer`*|PrgEE+~M zZ$5f8t{t)dw@#7uzsGkZ{{HSSu`~YfwojM$P3k<123>e=>xJ;XTcQO2Rv!k?uJ5_! zy#)WbMS{ba$0KM=%}l^SdIoyCeZJryKYuU{nN>u_Gd}M&#mM@fuqB+L1CPjad7d}B zX3F|sjC-l(^hvb+#QNVeN7h5~)IQYzDC^w#+$VhZbxY;DR|*WH1v&g}-0;0N2)|_f zxOM_fuTc)Y8tZTne;nf^KD7Ncg6g|ZMDLqP>~Ho=l6dmwMK~2Tn~Rv?$m(-R})_daLxWa^$PKX72Z5Pt6oV!;A!*t#;Faej7ug2bOY6(-Tdbu(l<+n*nvEb%}4^Qn}1_Y~-b zSVx5Te=1z!|C?;nsr&ioV(0OX&qPQ(Y?(Hevb2pAe0Y5N{;3l8{8~?-fd#hNxFPPv zM@s$;3Y|gae=$t*;~1~$I0I)C^jdkvo_uDoYvNQ zXH)ip5Ke@_bv~TJh*2m?k7s#gYV1!AP?RgDEW6Z{HfOT6m(y#vqJv8I#lYPgoSfy zW3e{!T%PA@VlSzGsw{}2dKrt_exm-l(@*MwF-9b<_RbEy9QJrIKI!~0$@}|S&7jgj zm9aiquZ6sSair9r&7n(Kw)-IbXB`ge&j%f)KKwo?ilTr219-Ad2KC{cE>cex>O7bJ zoODp^{BIW%J4*fOSz;dTO1drcu>JJCc2cjFITB50-n@sOo`UDmhpnZ)eS3O7y*F=( zo##LDsGZdRHEJ!OpHFAA*hiixKDj0HKhT*kq@N$9N4&BI3)>(PV z`yP4RQR>fD<>!-kRleWQL+mG$x=0;3ZO1}duz0oY59+{_E>eF!@mfIZ2Tr&BNB#LI zROP^o(( z2Sn4b-0j8A15C!J^e-csfBYF z(&@GZ#LoEadeTh#uhgB3= zcUfc}e&0V|wUqvA|Jo%KH{lC#_7VIyzi1_WP|~Pa3O$ns9M~W9LFsLz|LQp<2KQ;+ zk@0Nb^s=4wzejt=((M+x<+(ins`M7j{{*k1rQ{d#3EzwTMF0DymGpxTCM~AfL!ZL# zEzjMV+D7`mT78#L&cmn0&f|AH4-x)ha#Sq6yTkYd$a~F8ZzTLcrJ}JEQJ2pRW1Wl# z#iTbDK4DDB82XsGyx19^n3oNNfA}vZhWc-;DD$v=-mCh||J15|FNOjV`94HGUkH4~ zt9s1;)XH=w%%jAwgDS}gcszArLJ{4p_} z`~3#{mr{kVZZZ$!6ZsbR^$#9Q#)qo) z@6hX??L0md>!0~9=lil=$dkhGzRbUA{FPqFlZF9*2Y4_i4(yK?^#=~jziIrH|KQ(% zKl7hQd#m-&&*k}hsP*sA>tFc^{uAq;`9QrMl#a-gBJjPK_tW29;RfCh^E3bKj6bZy z@t{_SKguXH}({}KP0@72F|r56Io}nN0S}BgPyEIW zf_w`8$I|(i=V5yg@-Oe#=zOhoMA)xEzUKWMo!^x%2>Uz8@4WxztbbTXg#9nnKW(u8 z<*a{L=Y#z()IYr6q4S;63t_(l`HuHrbpBO(A?&{(|MEVF&V$My?1LZ=^8Sm?zsi5? zzdQ<+{V!+z!#X1Df2sP%a@IfWC-%Qk|L}g0vmRg_5%z;n5AeQ^Gw(BQ*!Mx+pNIWN zU4JSajt6<6{^b2ZT^}l)4E6_6AM$>pt|!^f_>@9D3I4~@^{3J)VgC{JC+}A}>s8hf zVZRdfD(`PP>s!_ZVSf|#E$??b)E z`;WT*RC*`uKcfEReL!a&$o^m-5OpB$KkE8Z`H%fa)SuvgEUy2H?wx`@h4oI@FIM%x zrR#s?C-#d`|MPyRu7{P52>YR^hkwStr>=VyZrJxk-OKy?&i;#aIN0Au{}qeHb&gh_LUk`d>@;ze?u=odEh@-XGWfj?xQZe|-N`*{^r@U#u6xem(jx-XGU} zkn#undh}ns&#wDlr6a;VyXt?T1Bsx5eG`L~pV&`F|I7LT z-47}q5%dG-2U#be`#yymbOPx6!2jSJD#br29gYX(0RO=HE6oomos0+cOS73zur!~* zcE&je_yq7jmgXOL9=2x({{a5S(tL%|5xG+~@D+T1l;$^-F35wjgWmxEV`=_J>4-31 z@jsU4f0WJ#;}!p7>3(17g*+)I`hD;}mgXOnUI=#Z58!_+%>yWZyeJoV06srT^AE~@ zFUk%60sN1p`5&bt@}wM!|FM|=X%7BJ`H6YJ|E#zJ{g};%C>@a}Re1hr-Q^ z@__eX{5AikbU45t{2Sx5+2+TTP6qD_evI+dd>Y#s=WO897=O*b@jQY*_&5Guny*tj zB786Kb^Lubzo&FT_`cxx{#W;cw2t{%_wv6w8P@qIoecOcOY>byFNF66-^KWA{!QtH zfIs**#({aT`QX8nKfnPz7~`+`H|0O@2mi+FU-O?RIpuf6I+Op^ldzvkPXa#BVm|OJ z_&}v2!gH6dlkcv1KZP5<7kIz=_+3niY)qxP|7GiHe5mk@;}U;pXbajjZ?&y^@u7lq z51Wnd-LjIpG^JwMmW!Qx4A)r)O^Uv1&F#^Uj(=Mx^RT_pv;^}RbbWp!+t7{3#qbB2 z4ZTo-1@Y#w;Ct4oUw@(I*Q3SG<6Y+MGcR>KZ`GPnhr+h}!*=|(y~*7?X?7}q#;Sj~ zKCMmTzjw}n7~w-dOgUrDt#iU^e!UhoD7e?w5qVS5ap%m8feF^7618cDU%ajJ@gdKN z7tEGtPFTf1|BSx}*)8*M4_0*gIn(FDIqO?oGrGBKv-r<;_t_`SaTODA?n+ZCpR(Wf z$B#T`T`(hmIBn%Q(~@@nv(0{AKk|q=ZSHw~$m%n=9%U_j$kq}0Qt`=`%;h5-R{p&W zY3|jdwx53FHSLO-|IKCV;)GTd@cs{5FXT&Z(MQc}Wtmiy6=@JCgGIK z!}d}mt|OjrvPwUwKnwr71l-w@UQi)@x$t@8vfF_v~z2YxVg4 z6BR#p3;L5d8DD44aaY=);y>}Lo3{pc^HSE!ta?w z4{Wuz-Kjx?tFjJ<^-jK2dQ74@X7oC%TAvzJV=U`=*dIUgA9LT#IcKwVA3Cw;e_ply z_aom4w@qu>N^7!bB|5w7fjpPz2^gMazWryJ6|tiV?Z5lT_S267!ylQ`tM9Y&=Ovnd z{iLlU@+I#H*UeW+yR1(G>(cE(XKmd4sMMqzW{zhwt?z4nsiJQh{Nel2e5gjh6thtG z#a7V|KhgV1tn*==j1N^FkZdm55o6`)hw!9r>=;! zuD32nC7Zq!f7o7gz*BRn%SfxEn?HHr{1)YpAJrZB!aU(O&GO0-Km#hjw*B{`T0>Gz zzhm93x=Tw_bL+D_m*@Gp&r7q};ZD~3Fh4px;+yTKA2kX~H)lUwV4aPrKvfT?z|QAB z`BKo3$2jvi+IkyYiH@D*JrmYz`BBy3DQ1IS{?_*L#p%}^8KApxllN-d<+ZuEPb2H+ z4qmjpqE{@oCoirFpwZfVHHv2kpoKai!>#ys1sc zbhG!ff>ytA?lhx!29CjkXQz-i=DR-%SZVEwQO$=L#m@70?)28|8u-$&_ElkOk|Z6n6-QJt#L_e!oZumBs z^(1b1XJ2X;`qrHDdmgKGnNn0}To&6OKkCx+gL!^X8SCaNABx(ZNyali?Rvj6fBgN4 zBh!K6)Yp+kp3C#}?E1mH6p`e}vc;QvzRha;=|{bKd^9WPYhX?NsT7@D`mf-_<6HE6 zZ5EkS#~PH)m%c1#Jre7+{HSH$H)j8+L5_OI-0AZ0tnjC{;5AE;MM z7SY4-`}XeuKWFc74BhWWlYCfL6D0WbZ~NZF$#{;~JB6r2W`3{QVjtG#z1i$&di?eF zg~($j``<+D5v@O%J@dbaUslJR#=U3%Sr_C(5$!*kSlbyg`4ys>9hII$}q>py~QZ@AkK0Uy^t>r@BGQ! z`!qTJTNN)FFffPhj~_*J`(maK?CtQ{?L`f7hLrN(kA`>uEYE$ByBG}^lwF?7^P8BT z{b`-Yi!v|CVf*PvCgv%5W3%Ird7ijGB`fSf^4$k?`DlLG8Ry74vjp|{f#+e|{AfVv zXU0ER4khL3itzuU?&djj~^`t4!}QH@jd4ITfL&c}!LA^zj{Zs^~;(hK?0HvHZZe+(UelwQb};t+oj2Miqtlt19g z5eE=|3>|-z|9%vQ_=EUw==iU6M833F#eYM`f90ni?LquUJT!DXR5~JGT8DUuxM%3N zr*QM5KM?nje+`{~l@7;;j`d67{AlR>sB|(ubP)Lw`P9()l>o!Uqk0#o`>zn zk$;h|4V|x*j>wzNB3~oF8#=!$U62o*L4HU5W9a%v>4?1PlB$0UUH>SZj}Ki${eygG z9I*49(hK?0Y2-WPUqk0#r5Ez01ms`jK||+3<&PhoL>@%`H8}syM*da)`_WP4U(`Q_ zu78w{$d@jt`p4k<=Qipe<)Q6)0 zpGt@0Ly4$AQ6Cz*K2$mxAG(J65cQ;?>q)jV&Nom`qW&~={mJvN{Wj`PtNB4g*Q-iL zRvqI&`!(giA3a9DhCa*CeU{P@`O%)|CK%eI*R zEq-kL9uP{k96j;e$MRj?u9o}6jZ&|B((xjL#m?*b_1aCQRp^PabaEf+65bs1r>gPm z)|qZ|l8ln&!{}tm4r1r=Z#HZ&$2GZUl-}3}_0MRThu3HNx-Dk?J9iA%$WWS{#2VNK zvTk3k-f7-!lxW;*8%8gdnYKTE^m4;Cv%uh-j-ZaM%fp}d3jb{@Km0|(=7(|VYLbuz$b(^|pPygGo! z`BxJ=fG6$wym&y8cg$f)NzgWjI(E_NQDbYY_W-Wy(?PRXnOk$L!i zlg~|;_!BZ_DqZluD*muN<>YLM1HI2i(tu_sZGR94F3ghn)8e;j)T;ao+keEL(@_%t zz1?S0u{yKlxjfIqOOu%|G7_@SqOc|FY(EkIuS}D8_#*#gN;~=mcK%xh#KWV}68Ca= zO`(o6b7Bp$UJG&W*h0y_6(i<=XWNMV3)bNv|K1!W`7x#aESj{)9saOR2Kn*oSjnd! zJIG@SV#BY&<1bouyv;J|*O{&^HG z^+1D0v+3ga7J?g(zk7XxRYqdV%qd?BeC=R2UB}X{U7^fF=dF0#r$3}eqUNw=6{Sw z$CgmGrr~1e@%vu%Fpr?#+vBr@Mpw)$^YHsxY5k=B9I$>74Qaj~-`zuSOL#g!>cBEM zzs2qQ@A!`F59+`dICl&6=Yj5vsavD$GM?>6Q-?_XUwLv2Wj$0)p3C#^ec6ZkAEQ-; zSXwvpBk*BAQU9lhNj>~3(?VL>qom-*<4->xB6aWOgoPB=VGhDM0DUrJY6oP+A!wHwG{VJn&J=J z{_E+$WfarCp6x&SuXnwr|7|;bIb~?g=Y6q`2>tJe zuFU@gx6ZSI9`_n;`-%SdV-M*E3+{`hJIlMn?k(fDz3wS}-{R1v)cHjTvCF%?=_~xh ztTW5$?SH4?59@HiKYR=kexOaa<+y`B0sgQ~2K>N>4#Fq&Sig)sLmr8ppRwe9Tj3v? z7g|nN8>GrSY@heOjqnxaLzYwM$d`C7-$w?%;zMiUH@fFtLF9Qs>^y(u$Mz<2s~J0Z zIeowN3iGp$$eT=zXZxU%E2zkC7sbxw%}?#6-}l+Ef^rVsBJ(glk)JyW|1fyO3Yy>R zZ}EriQJ*>s5755RN-95Mp6w5KfG^#Ie@Mu&l9r5_ZTk=Y;d6I+?)8%^=#SG|<+(hM ziTT-|wOv=zZzrN{Kf(WC9_B+bXJ0{YH?4!+U+`c2v5W8?tyZs~l!sHr&iF6>94h>q z#$V}hd}uiEXMRlMqjWOh$AAy>X&O(qGd>Z(hxs>+KhMMVVZfjHI_LLd9g#Qn$M<4> z&-r~>7X*F}-fI57Xl_`3jq$Wm7m~0vHqD4)aya% zh`ydS<7_#ev|e^`g(Lv0a%m><^hLFr_`4pRD5v+ZoSJh$qZH zJL3=Ql)yhD{xDyyC>#zm53D{J)O>N=F3#U&Vh*$A6{s0soKq z&wQ``y(_&C_+I?pnSXZ1p9X?kJH#L6fmhjaK=}h67;%94XJ`Cj|G_^a{xJWqYd-FVDmF>d3#mU!(K2(h*_52Kk!zcXWPNx*+WD zAiwkem$Uw19g#PcSM?9>5!3Y#>wK{Ph5Cp0J2>BkbuEd!*;;T8LcZhu7oC5VUI_ay z$iKV~qVu5g2m2t%gS`Ku^RMzB`!C49y#M8_e^^I^{V!GjSkC%~{lxwk>L1htma`sc zF5~N<9^ic+XWnPru<^+oL_KNgdXnvok1y&; z-hb5fC(pz7Qm8+{|5(m?wX4{FM7_%Uo6h={bwSwQM19Nq#k&3nPb=e#s`}s3^*`Hr zyeH~^-tTkPd#o42ejn;R-hb5fr_u{y{}J^k?*lsPK=udwfT#m`|54YU%75%XqWKNR&a?|bUHSK)?zPt?8Oe=KMJ#X219 z@1y?$|6}R?NaqZ1)+u3sAN?2W0d&8nbVSetpkHJC zlJ4)6E(rPo^mn}P-@)#Gm5vDe{;L1AbpNY#KF|rE|Kb+C`3H|D$w77_ayrtFq1iD4mZF;Cv0RN_RIKTn?8{?z-F{P7%9sC&MsrfXvGtPOyr!oGT zf8%)sfADYM>nzRJDIF2M7x+3pA58OmN*9Fh3x4l^buXsO!@8IM)yc5VN9kn1cUhY6 zQhFi0FZeFTpZT{<;NO&92>644V;nROru+d8;K3Mw&A%!Cfj{`S|J9kWj!5ZD_`WU8 zf1(tHpGr>xKG4#9pwbcHdw~z+@BYf>{S5*4?zna8No$(96#V*Map=kY zso4Cp=3h83?s!H|TCwx^BFm4MCwm-%PN@Zz zTxYR8nC->qUX*;%B^u|qS3V+kp2sWtvN=B6Hkb8FfmCwgRddW%hgCUWN6McbZ|j8u$t&i9 zc?bFN)4dQXboQj}PZ0hF;hN}Ci@SHB4IK~J?;Awk%PyJIE^f0P&HRP7eL83Bhytnf zyqo4_;bK;;QRtvK$-Oatz)(Zua=ZZ6CWSisGhul4B&bv5% zF3x=lq@rt%o0p*nem5kPJU8vJ@ed-e)#uFraQ@!5d%fw8v!cs_jw^_Y|8df6y!ub; zU8M#T@*)xQuns4HewuRM{J!QND|ea3)Fk^ATPG7hWg>5zVV$;HHBL96KQCVpJL6w^ z>Mip{xj1Xx;W~8r(G8i0?SAH6b8&;;tzXlEDKPpzbR&GekUy0l|InPCveNo_L><~X zEJ^JA+yFDl+`2i&%Gaz0{U_()@cn51R4L-I`C#%Q>*puIbY;df=u-H+pa2RQ|HLfR zZJBlBQ++z^@mS_z90I2#n<*h z9riPbs!f4@W>1{eZBjEjkn_5&BMPLlv+tO5fODstEveP5n>KDi^i$M5GyATIRZuAWffXfgNpd4!ynek1W=7J&&=6F=32*6s$hM-5If^jE&Qpu zY|&)v{^3g01@{stosvHpBht*6kRjHtyZF1HzdwtfhsW0&`qEs`wZGLTt}?}B_$GFq zzrn~?X1_`8tu01*ihuSm=Ffnb?oW*ey*5u~Yi+gtA&|Pv&wv<{0sj_2O^3ZPmz3;n zl^t7+O1u9n^DsUQN2i;&zl^b#88xZiyiei}+iQ<`X}*o?W)*H$i*COD&-N#XejfYU ztp9DKH4jIwq|Ewa`yWJgC%iI$Yu((s@iB<{M6nJh17c+$HT(6gS+s8>>!(}Q>Bd0j zP}$EQY98^<93L8KeW+v5>=}Gs5bKBnspj}Jb3%!!*3k4iRQj)XHf}-SNS~XFEHCTY zIe$8RhxH_G@?If>KA6)_R>%3A6==$BK4&JE*jo*Ghx?9$tt?M}qUC2;|HHZ?a32HS zn!)8tS!ZsSrK2}k_rf|Qe`+80-t>8r)AB6lOT%JVKjS6#u6;k6|7FQ;MHVSX?h9Fe z;wAHU9q`Fq?|RQs`tQ;dk%RRrelosypHJq-p|>1O|M8kUxQV^Pu#e`_s~M~$&&uRghVKMme}bs{h%aWv z&>yUlhl1$ARMyY1|3TF8*H7k?=&O$Qd&<+3^Q?#QlX?0K{$joveZk>(ERb$a%xU|H zZ#4X?S#EWZb!LAh8h(a#P`PA$>k;qGhV?62m;b6t0n1tE!?*=en^7Ok+budfrl0a9 zkB2$oPi?_rM8B_Q;Nw3WITn?r*upvCPmtILhJ7)8dv9>up5;S3d|6i$B=`*I{l#qi zt-B*zd?}jok>9Jf*oXJ}Vtx#N5FbjVsQj<&C+mp(DWd0Bv(NF{@k3fd*Vj3h*cs0; zeZQGlOBtfwO3}Y7`MK?6yovE_pIO?M3Qx@?b{=nHe8$A<@q8{s39sBT53jc|1HPLp z`?PnAxLb}+Z_FkBuzke9Z|0Njm*RaV2hi;!YCPjGX2^GQS?yMil^+7AZ;RZv|3Nfj z=y!Rpi&2isHOei|<#|lZ&;Gb~4xn4ll%3}>G0&#zYaCtw@TdDp3O618!5V+1!wI0dz#sV3()gf%5&Wm)eSv2!jVId~&q&|{{DU?A zJP+HWfIq%hu=9I`i+wS^7rt+>^ZSO&{EP5?vHpYI?Dda0EaR7}^&ecrUjJ-o{Fh_> z<9&mj@5_3jKw5Jh?ZgfV?ET;>w)p%@ze3W@ZD?a@2+qQqUrcvh(CsoKT3xaKpPQ% z5FZR3ACyiefYu^DAf6aHp0J&9UW<5w_+#k!!}GBHFT@|jD?`UCr6cmEEr?f$Z-$O< zN*5GB{~*30{u?^}D;<$P?N;&M(D7gCd;(}E;y-@xhW@=Py-*-+#_t{R$I$Ud>4gGm z1L6_eL&txmBMPJ)D*hWf{wqI&XglIR;-R7A zq0$ir((j0ehPdkVK8T7$TU{A=j^t8_R4bO`wu`O#===SSAV@Os;i{FoRr#L)Sa z?Tm9g@+tDKq4O`#!}i0-zsT2y&euvuQB_G zhOSqYj>w;Gp4F02ChA-C3x@6&ShvIT+*SR8q5B24^Ln_Ae&N8LI78Qa zN-q>h*HQ1G{xo#`sq{jDbUE^Y`48S#*MZ8PAi9b=5cQ{_>rdr>5M4z5iGIP*{Q^Ii z@w}z_1%vyAZRi)2pFwnEK_b_~#&NqIRyv|UI){1~b+4i8UWHo_osE2Kmcn^Ty1!F8 zoB(=={*Lumx}Q=ynE<+vehU4Uq5ChkGd>T|f1$rKbbrV5u>BGGJM@Ew?gy2Q$e*5| zALR3+bpNPyK>?JE{tHbLh6GZpXAMyE7x?fZN2hm;hYv{8K-DfEsQ6MFw&q6R$6+7dcy2fF~#9cMoWa~@eo#x3r zY)@Oi&uo$Vy0IST*jySj4Z4xX@?Fy6cA9w>UNW}M8BF(T&JsJ%|7_E4#Q*EKr*bI8 z6dR5CQ)T?~En86kUpAih8$m;+nPQjm+qU6+^|MCD!o%qJ{V17-*JsL>z2?1nXNX?O&Urma8Dvi%IA$Gdl%FT0;I>TT*vZ+83+d!qba9Xzi}#MES8+c= zKl6xi{&yzG`OiK!hL%>SA#z@SXLqu^Z_?kRso=MPqKEx+duOWnKd8|tO3dge_K5$T zOT`bT#*U#rFI&6pfgg4+7XSb0sc6+7eO&g#|J#?#`QLqPEFH%vob6#fxAxAF^M7zp zI5}_ox$MOG-#=f@L)qA&6tbInZhY?(&co(avhQuq4W|YfT)VN~pnvNci9a>EMbh=q zPaxwS3GwIX42cilem{;9VoE~?_jrg82k_lJ#FNqG!l~+P?rE5Jgm|)Vro^8DLnH8a zZ3RRR%Woczk$5$C+j#JfuA_(M`-Kp%j!%;Kwku@wAHpI@=j zJMw)&i2rBCGhSph-5o_6Ke-@sUY~I`T7K^%hfJhBO}R&8{t|xgr>9H&No_cu4$l9d z*u(Ox$7V?!Sm+Z)7w>#2>)8(%&&-tg^U+Te&^MKL*^l^hVz$KpJyWCUqq5KCxvb~H z`6-MSS%n)zi}v0;@;xi2-;t+mdkI5dq+|v z|Gqvlg{FnY!4J&CLH@luR`O$y)04o{+YD@@u*lD6L`pvOdv6l$E}tZF_Rob2;gWx2 zKbk@n_6`+2EI)HuNxok3YAXHM!3*{?j|lnt`UuJIM^?sA^Wy_W&d)t|LrMM94)@{g z?3o|>i^=-Kw}&wPV;vbdodQ4g5;?CwcxQyl3B^`MKB(YU~V?=dzvy zcNOD5R=}be^y#`;E;~{G+#4(Pz^AeJj@Y%6kQbKoaQ0G^|_Nb54xBEViqX~6O1B)#o z`nNtFAoc&JN8%`P!BFAtu%3-idouoG)oT?`f1I!0MaLHKy<}`Z z>d(g`rT#y4A)Z>M4#fMG5*)Vu;kk+t$ZY{X>6<-}t$^ zAC8c^_kq_;y0CVH$a($Ff0XoJg+?dP?97SaJC&99TKuY~^hX`kZ0bIt80NNRM85Jx zZ|SExXT{UOMf*g~{#o_ByYydU@@CV(Sp}V}hviFNc9nju<&^}gKdqFLv3Zuyd)-<3 zyNaz7DR@&l{LJ?Vp}))OF8%MBnTfP>?r%=U?0J1cRwu@P9H&1`q8Ha5;knH7LI3-v zoAf)Q4kXf{$^}FZzwg{Py`}&9<9PxNirTT2?P2+%*L|fAs#-3Id;@a8vtoPD2W9t{ z{_C@#M5?m6Gxm|~NB@;IQ2O7Z!;RFU_Z^tOxO z1DQ!ll={U7@F(+Rs?dz=u7W3I!~XsY8;G3$zu4@Kff-WP9`g)gvj~7iOA`!kmJ;x>q%7RZ7B5feL)pTVLi*2 zH%+F=55E&RuUA;l{r;MH$*%j*n7@R6KexN!4~4oUQ{kM&*cafhkWb3#Avi#h7s*s^ z(ur-_9^e4Ey#;?bv?ZBl12gcuw|F!+V-{617Kh62)=d%7z`usc1`PX&=|HS!cJkXp6%_9OHi2Y*R&+NPQ z8*o4D7vsmTM3Vg9A-AKP93u$`EHq5k1{kh>mW9uek2s0VoNQBwX!Tb^RC(j2>eW-adm=B^pUEeY<2=h(Uw>&R4^*?Z0Szkui|F)_BSZK=$9C6y%ooDE5A`0;A5HzK z`9jsGBI-}zKeoFLWP30NL>>47^T%ec`cvCqlPaVBd!p_I{$soQuTJt_CDDH||H|}7nkR#KI{G7? zzngxF8x$Yn%R8^L)S)K>y40antW;z7Xc)=y!ns*zW#|`9hf2qyGZ_W1Bum+f$QDp%3Ew zqul)$+mCrY`Y)cdoBmhxh%jf@{jY8MUu`Gm>F9r%KVbSn%_9PT0R15I1Wezj{RW-@ z`aa-4w!t4X52p%!3H;$*e811&1DYpOg^B|o0RDq}NJf$4(eLOJdx@Wm0Z-Vn^t5g8 z2iC*;QWW?D@E_aY6`Dr`Iq(YLKeoX)G%pCx1-=3N$2Rzn<`Gq-FEsvR8~jJ}e6U{Q zKep-jHD9P26-U1h{Kq!50Q|=`_=C0|a^MfZe{6&Q zXdV&tYy8J%{O1JlA8lt%`bOhFw!uR*kEj}b13U!y5AH+LxQF&zO?*FbvH0KMZ<>dL z_X7UL{xSHN=E*<~e2o2R@HCc-pMj?Vf3pq##(G2!{Ehd^;B}fuRFR4SujBnS_@3qk zVSj<|{g?NmL=W>`{>zh5@;hao4Dc@7;9Z(8g!cvB#r`+=o8}9_|G?ka4+aO*_P`Io z!Px%>f7ABE|G?k=%QI2(J7S*6fB7VAr{mx_C97RDRBBxxen8DxGO>58K6i@uae;#}(b)Y^OKvK)XwC6FJvXW#%1I z@g3LOy}oHnJ!kF`JuLqr>6E&P??QTX>Q0pkYy{o{k&gesC@i6;k(ZLq78*CJSuY5^Hbt^74`KJJKsCa zss4deE*_BwRfx?{|ANn%SUs3JcRuUl`FPSVahKGh7O8f%GVN%pAK!b!{3Qqdl5$af z20rbXf}N-n<~%CP+@WyjCEctj4WoOoI8!$}$wNV3Fn!3?) zo}K^aCR92sL*(rLN-?nW-fZw>8d32hH$)H1t4_YDS{<2Y=j8i~Djm2F-Uxpm&4X%A zyrVweKiS@<8qrUO`Q9GBN63?Yn|xOt`fQ?oe7!F%Z1)8G6Xp?lkZ0t5b-F=>z4p() zDCE~?BIos96CbFR2@`GKoIu>alqq`H54B?M;rp%A>;b;b=wa?1v4`cq&bY1op=V3~ zX7sGwW0yVN*5rrk zcH9ViZ0{!YcjcEZJH5#}<{$N;U%dTfdrNv+)1YN4r+_QfO@IE zyYQF&`|kQ=706H7>mN9(H+9fo5zp27uu!{+w;%mdUmg8dsL1;?fxJiX`YogHHdzyy0-Sfcl3Pdy}AX(9@f)%>?@Ur`&9dM zYCxyvXgTj!VB{P2;HGOvbt zL7voZ*jsg>>_O+Yv%k{)BFuZKApY+h_ExP;-0i&Zz>{7L*K%IpWoVB2;loU4g2S7x zPSASTKkY}oRad_*Y`3xhpl?559!@djUc6w9S(K#xz==b&| zRfi_kDlvk(BeH>&g<2nJoV_|jN^xW9vO~d}qQUly{IN{@(L5YaT7dY2_~0<{LGxrhDH-wMeBrka6Hi#qeojF=LHw~y z{9!#TPeuGeys}KZ(mWy$T84Oq_-2{-rg=f0xJ&=FT2{M`W#Yf)5qZ!W9sey8|25CY zlU5=A+Kl{*JZPCbsO|BlZODVa4r*zc{HyKvrj5wIsDCU||7aeOgVJ^V zW10F#+v!c)QU9PGuuMImc|;Cchk5{c-!ge$`^}ryBJZRAv`qb}c{rYQ81-kR{gW+I zA8MYAC+$alh_bk^(yn1Ons|) zL7sFB_3iSnmsqA>VBQYvIivdp%k&E@=lF99{Q~Me%hY?CFXW&jsP|BRTBiQgd?5!N zK>dk2&@y$Pw#SLP=BIduuQ+e&*gY>T=xr>=@+z}-gFfG0_tJQ z)We!bn{pL-(Q1_z0vrK=dc{rYQ9{nBPA7%O}&6Dw@v*@RaeYeUo z{TIvGKj+bZZR@z+;{MJL{T=IJc?SAB^n;e^2Q`n#gD#^VH9Q~$b+t;??a!6`p!4XD(63phU(dGpVD@E(>e50=pQZ9 zKWZKk{w4zbBl<+k^oiPU-gF#&;!58%YfSzDgt+ZI6qsh#mjqBqk${n zPv*&Z(v=naRru)b*1WBg!hB44ACrN%oZL;nN4e)DG3 z|4!?(y~8Q_kLeEV{;8du}k53Ry1eIWJ$>xKB-Jz1a$SHImBDn zJ(rzMbt!SJb^Sx&EY}lUc0$kg?W)v?_10^vAKm(N4dncNGzVp@KA?70TxH$eHGnpT zuNOJ%Kfm^n_}jKH8IZr!G&`Edrps_i~oj-oY!AEyhPsjVzY5{s`CiZBky})wfMi1 z*I05SM~FS*|2^x)4@av<(4UU6E_>jILuAm#kacCer`X2y5R3euemRdX9RE_%Ln7cv?~^0KVt@b`T$qr%F8eJR_2FopnXd z{<(Z?p2VLTSrcgG>FT0~eKO>g$BJ20%lc`&+QX=Q|r!K{*1NgoBbecrlpZ_j;_}(5BmSIQDDnSr zy(v`x?l1CO)^q%FqTHX;9Q`S7h6$&WiHOr^^HpTQpH$sj*oiCx$E=b2j=0R{(Le{>cg3(X3-ZFx4@r# z-wx`-%t)yxYi*oK1rH>Moc)uY87}qbdu8Kj$)#}7!}7GpqorQGf$ucEOlk}JnMZ_r z_1P$?Z=WBIr^a0-i=6ducs@qz{{VbsR5L zWUlwTi_WG)ua}D+e&2P^Bc%TPnU(6#y|C=+C@gGOj#AM1C zA1QKPKPzXn^n-V6CL%UY6#wx0C0V1T@2dwsRk>bEMb7INWsMX3Vb{+o^wa(8@DKBF zfIs977JQ)Q@no8PI1Bz{o{T3=%N-(kLW87as=T|q$k{*Ba|R0j(CKY5JzMj;=wW$u z?f}6n%GF4rgrM)>&uZe&h`a%UZ)CSmp(!O!i=6dG;JJ*e{8&GQHXSbp{WWF1%Ih!k zu&@+bI^vkfdA-UTB>nynm4d(J`33LA{3Z1JdBX*NxaF6E^H3drX1){f2grf{cuk2; zp;{+;%X;?1xV*mwe^}Hag??@rChJ)q1v%T(b6N_0RG|X)g?U84f1rouFOyQJ_kx}x z=k*Hf84t;OnoK8uwIBzV1nZ~eju6~qdj1r8@IL?TEc3O1d*mv?-;DqHo%r7X_<`{; z;~(}V%ZEbFc$)Di%lY3>_>=KB<9}Yu@&WKa<8|)+VjdCjI_wwYd+z;ZUJ$-Dfc<6s z)0}^{k=J+D=ih10Kg)T27o2~_yWH=~d?DancwfffjQ@Ep%Ll-3jDxxT!1e$KgC7`w zGyd211Al`*8UHlrpVzXUF8cgC&H2}M0{_JMXFSlH2ezHp57qmgX7-)s{ND_Ne#W0U z{&bqi@rQXhz@HI+7#}wALGxrhsU6}2@E@m%CoE@Op@=7pKfB|PkH~`&e;BVe@k;ZE zfL9}4F}`i$o8|=p-$r}`{sZ2Kj{llR1pHsef7`@=&GUgz5&s$QHNSVw7Xsdk-#g>a z?)bxeA>hx5Kfr%%69=?Cz=0757=PyY)A0buAGRO(GvW{9|0e!x9ue?=9sg|;|FxaK z{}KNg4>$2p^N4_lBOWsDo%uw^J?%H(-iUiVe=+%2^Kd-L2l*HHkL}Kn%#*=<1o@HY zDeipAyd%t0kWYF3V)8HRVR;?oU!K>Pe64vznAad*1OKs2e%HJpPx3~7=lPer{$U;w z=3l!0vAO>FyE@lD%=5wg3-u4rJ50XQd?5$bM!w_ui^;#5FNFCE@-NRpOdizsU=D&j z2>i!3`B&SI`3v$d&%fOD5A%o|;7v*WW4r4gwiEL&)IX>PYRaGHwyFPt)5`h^y8gFK{m*h<{|oAWp7*)y zJ?0Bx-iLaR=Z~iT)O;b#A5nku9MD|{vOSmsq7LNwqp3f&{g^+Z{^WTv*Z&hy|MPQM ze`Q_&+g$&zM*Xkt#Jm{wKhHx=J*;^|n1`Ys2L5B4x>x%Rb5GR0Jm1g!|Ne`4IGFFF z|Kj_jxIfyC{z&s=Fi%H+1pEizWz+o>%h{jh(N6*YvEBVwCz1bv{)_nlreD)MBJcsw zuc5!QO@F6(LEsOdzvH>T>3=nk2y=hk|JtVi)jS{Y1knHTeBAUqnlFU;IQku)*Sq^K z<_lq7kN%72A%>1%3Zso&fqj;6L_p7yh7mIG$7r_yh1C+u#G5C*w(_ zfe!%xu??QUa`yjsz!QM~*am-KJuEK?`~monZSV@sBl4gUz$<|N*aqLwydXRm_y+JF z+u%Q%M}+kn|FQGA@E^_d!FrAV*rwmtd?5#YkA5Hck8SV=%@=|k_yh1C+u#7&9&aiO z902%_ZSV(ezc-Zw{s8>PHu#U`5jm)g#(!*s|7bg*N8>*>;~`&l8G$~F`Bx750eA@T zAKTy_+Hc-e9=Hel-{5bWhlBS5{>J_>_?YI&Kn{G2{b}$tmb0Hr08eB88~ly+i2s4V z@qQV+PVA4A-pf} zF805{-!xwc{s;cXelR$gwg-Ly4#xgB_?xyL{s;c{U!Do`h&0dSzkCw5Q}aoH|JVi( z)I1_Q7kD7=yTSdm->_f6{mSEeoeyUAqLJ^OaPewZ${6z3x)TlhrjO=Ip^|+r@iLrLWqz=^TgUc=+QEjR*@0$9_YpVU{%FYyj_KJ(=<3qot zUQ_!wO|fsi=}G-=T@XE71O2w_iW>6K47*=&UuypSDY2jBHCJV*KXJd}FQ@v@?-Mgz z_V|(K%B%7{(?g#Qpu8eyT<_~g9&0YCqkAXXhu3$bIlZsBctpNbYw>l}=jUhixI{kq}2Dmi|JJ@fET>N;zmtmm4n#^y7sIQY!j^>BZF>O;u6_wWHG zc~|(=cGnKHuH9|n!?3*8yj$w0X;bXy9-;Kf$(tf)|NoYJQ)T6hx7WOBO)~-*lV+Y$ zZSqXGql%v#ZGU#NC7mAmMEE=`x8m*#f2Q+aArwBFzlX*52>FnA!UI*e+CV!xs~KGl zeC6U1)u!69|ER(fdf2T-1XF@1e^-m|3-Y15@tG?2MPEB@MJOeYcqV$-4|P%=sN%Ip z*~6kbP?_|9#2%K@ynCvIM;F_(P)92D1K;z*ye2>LnfFlm+b#BXrd#v*ULdyLk7}ph zQ(vXDw_jw1P@_BgxvZyNVy5~R^;qv-?PyC-mdj2*@|}~Zu6T{Zca1w!gROVOKfK;6 z^_H3hp8WKs-KclQU6g>3jU_0bPTr>>ACh;rIG$`ZE=u(#o!Ku{k{*l>>X2 zC*woDGasuC>pIvI9Zl)R{RhYjp*JE z&F5ixqe-}@qDU=#FSQByAzIG*8^^p*e=h&UzFgOzN?z8y9bVrw>XqsiT@F0V#&j-A z%Xxj!lvgUga5cMmW;5E5r}gmr2FAWn^mQG(?w2j;{29X+@}-8eo~aKnRj|2!nw@Fv z@uQ~kFI2>DzuP{}*7RiSmh1AHAN`f|MBRRz=gi#fPuoHb z566evMrW&sfnV778a1NT2MkZfhk_?%sU^ukX84o@AuQ(H$`cmi-!y~Fq9U|VU_r5>tY!dPp`M7vK?9Yx9->S%6Yn|hNu1^DA z86Ht>>NYM%1@&C+ykh-Hhb|hPj}QK~E=Toz|EP0U`vAW89x=WY-pvM8hNUr5=-V)QhSqPODWD`q*LY^rIdzIVyU4VSA596RNk)@Q8eI=T(*pefNEP z(6`O$%y8p3KMIM>QvL2#boRCz&`+%l566eX#^oZYSS>tkJnq7 zHZPW=ua7e^I*?X_3$cLt4e{udD=KM2nhu6>4=ihO} zb^ck->tk{L@xBiC`-aK+pMv*={~gBvnlI!_6SW^4Za=U+el!Jsfd3uF|Jr^(nh5{n z{5#C~=jZb8Ylc4m4s-ssoqjX}=O5?6%bW-H53e7G{ldO`nSIxO^P_RlkND#-@kjG; zd}t2h&*bmVI!t`fJQ*KKKz!&|;EKb<6PB}o5)n@jf2>Sb{9!#TpNshOkF&UC;+5tR z)ux4rSBP(xiEo-0X%tbo|#mA0JwZ_>bSaWq$9PFXT(} z@q0)7ahUj{`9i*wg7||tV3|0e?eU{|hy#c}4ikU0{eF~$_=EUwnfR}HM833G$A8Pj ze{H89Ekyi(_Wn_aiHDj;NArkklT+6}mZ^U<&&P+hq5eU>vrN9zd?8=jfP6Rh>pGUnznU-POKXsSkq0f4 z2emzZv<`U?`PVY}SKIGLtB`+D|5&E}(L5qw+JgG0_TZM5seiPcezXbo59$HS)B~DF z~JzEyOK`vuGN3z|n% zn-1xI!7}}V=K1*0e)J2d_bgNIX}*vz?LxhW`qMJ?r{)X!(hk(0r~@ri2Wor#Xb0** zzCX&;pW1#ua-#l3zhIeuLGy@wX|L`VEYmM&JN;-E`UTX(mZ^s|kI0wOP!G5B=wg|= zSNqM6wxaGue`j5A^>>~_M?dZbFAhC$I`{Ui{!bi=fs{psQ=@w4v)vu`vaD_?8N%L zdsV3lN!B-ShtbXJPRK7pmoFXLa$Ln6pJ`31Gm?fa*&%Yy`-js`i2q049Y>zAGhok4 z?f-+@#6OF3#?oYOzE6pHGVss7?c&c%pN^%7d~qUYKcCy<6#s88JdUzIo+^68{|C0n zel;o-N!u!n$8)pApJ$G2ko_%vG?G?iM~htc_vj`$|Grt{agQ$78u@@D;ryRiBj>rb3qr{6bfJe^z?BYNb0k8ctGU*8yk*=wBGBmO_^6hHjyHGyV%&2-rV zKb%Mt|F0SzNf-V|a@h}m9^EeIzfQ}E^zi`ZS>;2If%AWAqn!WYSrchV!znI1asJP2 zmh&*@N;qu_nFBfVh;SbEr^~*pjpJx~Gv?7TUkmyV3ch6JYdVQq@9hO2zbo%`32io+zBo79Wk2H2r8N@&8&ry+pR6|WT-LMq`eMe5tWyy&6jPzQ z%TC1q8_OgfHvKM|4g`;dJipj;_}p5Fd)1al)6&1ki=3Z(;QR*3zfayyr)v=&u;)|p z^Uk};k{^rom_|O)Nbq?J0WLKWPtAB>z6BJ%g^t`G`F%-*IoAQwZA8xg-*J1f)SuOR#M7>i3&S4f z;h_F}HeKq&kZN(X>C~67hj}un4+LE^=Fj^@pNHC4zMfc zDWU#+HdX4?VgqJV)Rp_dkV=Sr^@~YT-$qTGO@%&Zo>&Rdzw$+l)c;j*pU>Hx^WZs@ zlJ(18MKS(keLN+BUS_-&Ioq@J)fB1s-p0(PCZ%}4O33@Jco8f0=eUva^ug}`$$PQi z);yafbztuavuSIwGP0iiuqNF6_2;t$ss9&8Cs36?Kf?Q#68(!` zO=tYadNwqHn#6n~a$dji)hwxp#|FgFSHF}M|L}7+Jc*aO*RO3Ho$p-T8M(B2@~y4}X>sd1}@q>8C2-yH~X``TLB_J3>E|H9`8X zQa(u(yqkPq5dU~!P_KWRA|Cd- z+ho6?@5_o6{Gq0I3U~!+u%CH2z#sC)3qFwfIGOGoNr(N+lkuUcx#I;-xcCnEInU;Z zoc$A%8!q@miJ%mE$7bFg^OS%;sfvpJfgq1^L=j2^8x;Y_1y2r`=-#Lvlm4V`)6EU zl;95^e3L@QwqF)|SUxc~T5x~{pQKRQk+&{;fCJ=C75rh&4eW1Rp38pV50LY7J;6Kj zx_m*N%X$>_v%F5p6iU3D?Xna2Pu>*4LyjCyrlK=$KweS&KLyVP{^J-DmrPxf-ogGd zUkkWL&Q!tQYP$T-Gb?_tF!-PGG2%*qKd?Q(!QcnR-;DpY{lMSgf5tz}`RC`do*w%AJI(pmb^`yz`DZ-P zoCo#~uOEi}V%*Q{yY?G!Kj>%t*&TnFhXec>@rUtY6Cck;t9+7UkAh! z#-D%u|Mk2^}VEow~f7pKD&xk*a|C{*F zGX8Ix>-cY*_|J0w*Anp`_>a@XL$;mQcS1a5+}p%Gmh<|~h&C{^j|I zJ3lf{2J;c*N1ms+^C|O=Fi$}~<@t-rzpRJle#pN(uQB;r^N297LB8hsj>+$u7lio^ z@;lGJ-1QIhh%o=s^^fhYf0*Zk`4{RRo_Cmhr};vdcOc*K{AH3W|7yMv<}b*PenIn);LV zu-p^%C(kS0^(ym-Ft0?t%J)aP>s#gpVZMp_mgmK${s&Gg>uc!x-!}C>%X$58sQ-E1 z=dSlcy0O;3%|JbI#)4U+? z2hiW~+~4%Snn#4WzwUo+?tgot|J6JnAF71@m*?ZA-_d*_%*WC1@VwsLe=%PO^Lq4O zz<+Gh2WfjSA4eYq{Kt0pUu-|-_2|EN&d&XBCG@|VM}#@M?tg95|7triPe=a?{Kq!^ zpym;QKY)G^_>XP+KJ7Q~1km>Z|FI4Jpm{hx^b7C@;6Jv(2Q*K{hbjUe0RCeeJb~rx z{|dkpfdAMAe_%Z<{|Wd5@E_aY6`Ds>n|=gd0sO~id}9^x4b2Pkp`U?o0ROQK{-b$B zSg-LP+u%Q%=Y#bc|FKQKulYj0R2ls~@E@D;hYi3VG+zjE;19rmY=Z-6d;F*xZ~)*x zw!t5?{g4BH0RCee{73VMe5sPge{6&QXgjffui!uSH!eIx^N4(@3h)r%KeoX=wBP)w zI&cs6zro)$4+s7S{>J_>_?YI&;C+FQu|LPT@HCdQpMM0N#{OsgZ8q>X)+7E0{>J-d z@H)*S!hQj-EgWvkk{6W zs#9Q;z4_h{%I$hw)1 z7?tt3B68N_z5bfYJ3GogmfVMq=G<`ci2R9G-c;>B8(?o&{gHETx_CYTRC~=$^>6Jy z_S(WjD2%R(9?rpaHeOc`1`V=XULJD=u$7l2+IkUGE!2bNAGvBFE$MWpX8Q{M-)gt>u>V+#O-0<457y!w_SDy zk?+P^Dk*7%y=2Eo8h_!Gi!T&Nl$N2col|zBU`0t!kMMJG?^7UI+s~`^Rr=VMKTs4? z?~Kd;K~x7fiUi~iu+#gDrhiu+ll9DjuAP2Ct;W5D{r=aB?xj6~T%orKp!&=1t23}a z*X~0n!tT3xG67U~|JPo2TQwcf&5nE3jlBG|9+uZ#d`}Ja z3bAiC?Lv#EYCaFk>!&^xe)#3M?)3RiE$8R@EqSOqe-U6GI^U7bjn}*#UjOI(OtlF7 z=hB{CY5d<>&g=abW~#E&eC>)SdXd^}_(Fl?zx<)vu%L;ZRlP6Wf2QqW|M;!EuU_AC z*dOHfrIQ1UJweoH)k9ST-y`lw1IY2%*dIjxYwoMm`CfL!)E;!Smf;ZvQozzoxj!fO zVsE;?$?%5=IRwKXCaii2T;yQDZYI z*r%U$pwA->4<~?{&U>boqQ3n!e`i|y*zjZmsPO`PXQW_lyT-WoRH%yP$*_MK&V8bO zDpTDa+B%f%9a;~|1CyUAzv188yF=Sh`!vHN@~38rFI0Bs|LoWz?a8}`;ROXyi#adU z{L)|8qi3|H4dV@u$e)4}Ua12?AKR0ghf=*VhUXJNt&?A>CpC-OKdtLTb+gSqNP!f* z;JF&yxs2W8?=F)(z3?xxrCIc&Y?xtg{6YrD=nJt(Ayx$h{5 zS}u92x^#HgzV%s0nvh`bO$wwo^IocXaXHRTJG)TQ3&v3Mp=S=FwhLdVI=3s^(*|~< z_5HNp*#AuyKUO!R%Gt*vd&!u3eKXsj%ty=V1?=04|HSH*?<$RvI&CXW+1LK^f+Bc`Kwwdpa`BTr> zw<^y!#<{S4E2{jJmh<{v@!6`2TIQ_xM<|u=`JU+K_wAniM)jz8*qPA09i0r)-#cS@ z=aejUxcxlms~}V)s_}F zHs41Jq~1x{>gV(^&NhE_pc&oGcie)g&)hdE@$ExrY*KqV|B1QxDUjOFeWhCTz3RN) zt}}fWWWJ9UL>(5qQb)&s?%Y!{m_EgK%Fw4H1_jWdxEvMsZY$?E3xnzKDf4}_0O}wA zR{6~BGa@4h#@oArI38Ei6n(vYM z)9@L&D*D2-H0wx9TD+Y3QGW8=;dm~`(%{4(x}=zg6D0eku%6`)*0iJ?+~cJ03ko2G z^=)IL(z;&^q5QCu^{}6ZC%#qt>VM>XR=y1lAICf{Z;=m%Jou;Zw8*RNX!tqyr=OhL z;d8Q8zUu{?nLoCtVw3qic#C{6%kjU?J3{EaO#Qt!)({rHw&mG49nuilW6YyT}kC*We z`WNv}IOOoBm+>dd`8+|n0=U?-D0%#h}Ki=2jeqZJb1=1wE?`hwU9LE2eFBC}Q;Wzlf;r0XD z6GYMQ1N`qW{@3;g(Rldtx8f5W=KO0OQ6RtT5!;t%4LW#X0Q5&6>`#4E%%hly{R7ZgA#h;MgFe_@&UuX#lNl&a&uW#Yf)`2^5> z#DDzW9p?A0`9gt|gx@>jkHf?t%@+!!c*GyX0f&hL+MXbMi{TZ=ABTxQ+WsJlL;OMf zw@m!kJfc9FtK+}J#D8sP5Y0jSM?7?xc&K?qffS2)h`8r4aZmd#h-M(}?aioQnf$AH zI03W_`4{=oGWk*SWCCar^5dl8-&-c1vYh?A1o;&C*XruZzpRJlE0BMYuPu|WHIK-j z)*xRazgs51YhF+QtwerD{bQN>NArmMX}zw0EK~nzo=*U+Mg0?TyRv2So#qP#(sJZG z5R*?){ z|7bgdXa(vY)B~2O2Q-f;kWx_(An#iy?`yvW(R}26)Sp&6SN*AZI03X7^(WsSW$HuC zlL?>=s1H$3TBe?4Is17t>Pgg}mZ?8k56icq{zScMnR-?8i2TWkdKLApW$Iha3kslZ zsBh6PSf*dlJR*PEq5B1ErK?}iJf8q^qF+G0XPJ6W^MwLwGwQvp1x+kde`>x^AZFDp!Pg$m)(ma^}+Kzsz$jh;o>AzUc ze%^`x3;msC`a9Oc^4;j~A_Jo=(+_GMkw5K4KZyR(GX10G1qIM9^pEKKEYtUC9+5xo zL*Iu!(K3Ca=J^EBZuE)hk1W$4X}(Y(?LdEoe$6udn&t}yl8t^1{gGw*BW+I*rJ+AU zzh;?!P1_$t+t9C}&$3LPrFlewl#V_N{gh?;DQ#yEInhs{f3!^hsCh(zl!pEheWGRh zMD4dA+JZiDcj+iAqx%?YkbB4g+Pe$Y&HM@0VO$41d-WdhK$s^JKznwaR&oAQ zty;tXrVDlWo+#!W`O^XWq&j*f#)|AQngXKJM32bRkEz|qr&;AnjHR=CHh?#BTh<@k zb65?0KicZ~emG^H*er5+?!F_iXSy}}csSj9y%PE#==J;eqyCS!4lWu;3!1JKIj`S$ z5Pw(o^*HPD{c!5AZky=ge79@=F*VZ)xAupQrLE`E#U7FGIjPnb9$|T>kE2^%ZI?Yk zwEf_5H3)pd5B0*Q}cp=<%}Icy6}duamay@Agp>X+>7D$Yp;|?~wEVBr1v~eK-U9nMZ{4e|DRk z|G&S8rWL7-*X2Wvi1UBWDev2`NEFR4&Acz>F9p)hGdsoqQ^!xB1dk5IH z=eq2~`M;1Z=V92tk@T!J^W2z6g!6E0zwGP6@R=$s#{RaKV1z)m?mzzR=wu*-A zU3stc%bO%V{5*FOmFzPOI=II}e7Lw(;>r16Cec3;lSIz`*?VD=#GeJbC)4Hfk)ns? zyDzPmcoo@rDph%*@Lc{r8sgQpH4@*J%$Z8%`bCJG^>4qnUgH1h6EXDb9j+xml=VAq zu4KH(s`1G*%HGJFckWdX|8K65-}|T=Q}NBUDAB|3n|6Jp#Ghrurr;i!7_o=t_LVIX z2Xb-0&C}0fT=pOiT;C$`=dYbp=yb=KF8dLGuB1u)e_&0cs%<0WxvXdF&Gn2IS(ihn zQQrqqE;|wbZ*7!#Sm1-nboAF*kmm>Phj^HgCUMWF<79erDM94y|FlcCEUncpnaNp^a*?AD`VV(@~1mpz*&^gC{_a7o>f3A5lSL)Av1L7&; zl85MF`HE-BQm>xuJDc8nR0Ypv9uex*7l~5e{(+WPWb)-(6z zJjQ<x6`m9>?tdLNXSZ%{wU>c0;Mdi27AhgJmqzg^iz#~zXXR#$g!R1f8WfNesI$41p4dxACQ+3dy-zwmA>yMM*@v_#`n=NUkiQT zs|A8T{Dkk6eSGIT*i%LPJRv7e@PWvjBnmCSJT&IX03Uc8FL=TSO_FKGCB9dUc}M;< zIVV=|hiCE0^g-$;qKD-Za%Ko#v0-;IJ!x13&*l4tfLG+s5PaihSMZ}!nD@x{8U;`| zo{QX?@4ZvW)cz9lte8jSkMEAn5P1sjaSEx%_mc6wM!#U17n^Q@CTOTf8TzP zOjCMRlIOA>1wAZZJTZyJMp!O8f&XAV;~_<3ljsZlormTT0T01`G465T+a$7I{vmSK zAC3J2{^K0ctiQKD|4wuMwVl8}p@;E6 za~?F02za30_cXKb+HXNL9QuL(INkAwc{sqI5q}sTHt~UHl`QXu_`rCwi6<;)e|AMY z0siB3#~Z6|I`J<^n zSr5zWqWS4_z!aNl9FwZ?r-K+hExhLvgp6|Q+FXrK3 zzK{Nk=joOw!sH9 zPbPpofe!%xu??QUa`yADz!QM~*am-KJt7DG0Q|=`c!lN>`BP2c6~KRNgKubF5T48U zM(OFc!GAQ52<0Pr8XxC?*K_CpT*0r-z?@E^@1f*y_k*arX6b_Nk?{KqzUh~^Omk^^`M z@E_aY9@=j~^apSc_P@d3G!F-U0RG1QG5DC~$v_T#Y##h+@HCdQpKAh7WB(icjrEBC zfxq#78N5#Oh_GM4>v(?+zNdLX*k9m#|K+_X(Zjr#|MFy*=c9Qtz`JaNcWJ&5-WPZm z``_SinlA*u0e@pZ7#vL713v%3X?R6iIroL@1xp+0f^k@22wRuJpyGiXa^d$0} zi}w;te!DKK;L+{uB>X+&c6Cmp}8{`L(u-_g+CeS8?Ln4oz(y#CKEw_xWV_P>Kh(l_(9oYyx@ zyQNCzdD@X*j;1bkwVr?=p9jp z*>yubO{iuMZ!nhD{(RZ>zM&Mj=b8$gTEnhgNMY`5ctjx-Xx~zCy~^7T-_f+9im@}4 zg3@oPo4tJOH34I3N2~KLzEBAH@42ixbZh`#RycicpAx^ZJ%8=XP>nzP&F&Nwj_*F} z^=wb$eV5fOr>E`TWgPWfe_GZ{PCAgGw%4g@xA}P}jq)@+oM39Q>7J^C@AKC38BY5P zX+DhPysdXsME-jAtD!^4_ctwPfBJ8_qgp-kvJZF-qTOq>9+n5Jzo(Kvs*d~62GWl& z%>6Xu-ew zdt|)6`TBp&2P(B|S-aHnx&>)*GB zj2KRvrF04f)r)tXkHetZ@wLTE%5oz zUh7Abj_L23@q2}=ej=M9%9wtaz@vExqf^ ze`Wxw7rCN`-?#nRCu+d?TxXhB7=2Xst=Plzw(A~CKQ+c{FeROTE9==09XC9dzhC%r z;t-nYc;m7^l-h54q<;AOxbyDh{?y7lpFEfKbXxOF)oGgU{I19#YF9Il&olmoQkV5l zRHGpu*zI-?qMgOE#6P?~WJ9Lv@g&db@p33t>GDeCyuR(`f7I6nmO1lp=}8Gw3V?S} z3^_8Gx-WaFa#Hs=-#^%kVn^i%59C9UcV7NN)m?njx%z+I>A}zfB4__}TKrOdQg@?s zV^&wXomf!xu)OP{S87i2cxSbIU8!p=x8>;cGQ^!4&76V?Ai|5aw%@68*iF zz5)+wkh633E>yEU^Oq{f`o5`Is%c;s=gLodfPcum9sV1?VCuKzwJQ2Sgmd=vKD6j} z=3g;?DTI2je5syKOL122)tA0#pI_`@d5={u)Qy-S&SriCXxJ6rN46)F`mTAd8oZwF z{I2Lge9!$Im;IsCYwa_2=|XeoU)Ormt4I946-0mk6)#nCSzqVp3;L5C&i-LLLutU8 z7wY%ko1Opk=ts>uyaV}%vcBu;=i=vpd|{-1%qMbQ-+kRvl@oA3?NZ_HlP+iO&Iv=i<9skKerfw7lUKY!Fy~6t7pM%qiuj@q>zU6&kOgw}}EPti$Z@7@Q@Nq9n zyvqCQE%Kp|*KOpNb~3sjeUixjWP3ts#Ojx-D zufl!^5dy+MThe_tSRfm@Z9p3zjRhC)1T%S z;`QveP#U!Q1^eI2_+RsIf+-U31^;*%|6r}W?^wv;PcP$7ma{*{!awl8m+?RAVRdqQaf`~d%Z8UJhhLn#9O#QAra^RIbCAv6i+e_1(S zhdKY+&QOZR`Nw(iGUtK)!}g5T`|f4-UHdJR#zH^hkHf?t&BF<%Si~R12ZxCdnkN%X z(-0pJPaGzmu$=uo9q|P5$6?|R>tXpU#2>^fhly93N7RC5BVHlCIZS-hyr5u;M||5~ z_L0NHf6XImLCHG)J52o7JfC1nMEu9^-C=(3nlBVWv+#RI{BfB0qxnK1Gz0M`1@CL( zfVL-;Vi5-re;g+MX!}EH8sZP)zr)0T%_9n-**g9^O#Ih&hEg2jKjNXo#6!&^3ZWRp zL&QCYiF?{_p)>_?5Bb+J`B(FBf@vP|FY=?q9J%1ufO}k7eo~&GQMS z#i)Of?<|w=G+zkcU`4(|{&krAtNB79Gza+?dC+0QBwX z38v+!Kl%H8rasg>nP6Iq`VjS`W$Ho<#j=as4?T^(X6L`6|?(s8=mhuWBAq z3tEeM74@xU>RZhV3Z_-4Z_zJUreDxJq87A%3wZvc|FBHIpm{#QvOITUdzvqV zZy%%HL;Y!)`cw0TLTCxS6W|$Dc*0hf()hrtZ~#3#A39d(q!nroYoXoM2jy z{to?=W%?=2lL@A^=%>(sS*HJDIs17d`Y-f%mg(Uh zEz>`0UQjS?K>z6XerL<{eVRwqg0`aXL!W4wK2h_0f@vfA#B#lTEYlxpzEB9QMSp~T z%`*L(<_iJ)L%)Xp$TIzrwkMQUqCcvE@2!}AP1_$zE6}f@&jPPW_gR`p6hiCJXQ7|6 zOh2XV45d}*r_euI+&|Vs|EPIHA+!qpBl<+k^oiPUp|l)*;*y9EYr=aG^t}Im`0SeG z!Oe%xsETDL3G)5+)~I48`L38qc^&#R#^-K-&}#?qk6heXbP-nRFgI{Hmdt4-x` zR;T4%l;B_9gA`36=S>jdd^}lAieQ5;^PNeB`7WSGKpc z?olLl>$?s5AL#W*kD~r>YYj{oPk(-Ii(J+pKdu5l4zOmv|9@m%2Y6M*)(r#!Q4~=W zeV~Ydf)DHs?m2@6yF5UGhy?*75Tqv|3GD#sJt3hZy+u?6l#+Wcy_e7uYUnj|5DOOm zwf1E0P5i(2nX;L;&z`mC?4G%as_Bq*!iVQ=alsyE(NC@IPKEL6Kkx7?9F=ppcx#bU zc&?@0{ij3~JY++uJgAxOD0J%1S9aRC1eJDqOR4;zZ{G|1-^PB_N>V|2ymzQX^Vzu* z@&BuK((WWRC75$ol=BPq|hkNEsX(7FES1M6hJv4yE>;M<)0;=B;{yKl4L ze|BbyI#q3n$Rm0w+A26)dm>F8_>S{hlm|HM-zxaW-j%9;d|-L0{GjjMF6X~VMa=Ew zekacr{s%Y6`S+@H^<%pqOXbA*Ke$QG!~FiqYR}$$&^bqh^RTBt^gjJ+vTBjS`Vw&i z|3axR*;bQG_14)bSbLl7Yw?j)Vjm{|lCIYKW&#_|$-q7ouMvB)b78u=)_JPXiO;e_ ztHl27`YS`7e`%udA$`dapV+HlJ4-$O+!#EQv-_}D$Gl?SCVrHq3Z9)Pbn;(#+$Z+` z&WLPP=_A&GIY$Khe{z}F|L%jc)ub6?gwFLpp7hH5zOY-C8h&zAyOXLf#Yk${-k}DslpD!MzXUs_xfvOXYzdJeM#2H@a_Jkoa@Ro8wfwOT!=!@9jbSd1Zmbhcm**!q;=&iE}cD4=*j0c(Uf|v8uRL zl+cOuoXg)!{OOxEP7QjS_j++o3GwHZ?<8Jr(s#VNzc>uftt<3t*S?kb_O&YG)t6_Z zgiiibuKpnLf3L<9a85$Ozn-lB=6W9MKUVP1*)*n;Gsr;P@rE((vzp_~3;d^S2Rkoc3dTn{`^ou`9 z+}nHp7DpWfcVOoXCHF`BC!0_t%bBa~~QC zdVP^+?DYkb_Z@3AUe)=T_YZJh3whtwMN)sL@bn}VHl1^cPYccozt5HWz>_y8s)yTl zfjmuxo`U_dp0E=0VBMGUelX4*byO+9hxLcX+a{@c7del|IVIE|{+KECiZz!fsSozG z#&bDGgn9+&tZ&5NKBZ~jd@gk2ISS8(Zw>nF&q->;V9v{Nj;Nz@u%7f!Fqbv{E#5!& zg2>}wJ@fsar%qHIU*b98{1Wp0U+1&_xv{X*if3TkQ zkSE(rR15R_f!A;5?AH-kUvaKrSwatozF6N2=+_cF!=Yc+Kh60^9Zc5u)92qc z=bv=yt3TGW-WAv{=Y>8~5gLE5!C%h{eWs#8XB{kn1LZ*-3^=g#zhW+7wjUCYP zpbiW>!1{B*{!o6@pJ9Jk|2Otu&k>>iukF8U?7x;1^?%rZ*29fG)N@3rhr=GS?rrRz z#tn6E*gf`NV&ByMmpxnJ{~7!*`y&DW$T=DGN8lgXPYL+b4+Q7W;ZNCrG5(i)i2o<> zzwFl-f6d-3=^f#(d4H7g@1&D|C-`^vzXI_O=ZMh%((#Wk5dUz_2mLR^KkRoHe@8yV z`7`)C_Fs(ur97l}hW}+B#P~ri5BebRgS|E1#}Um*UW zoalcc{$W2T5D##U2>l?$1DvA^_bgplW_@Dj0K)lC!A@utY@3H@A;!oiXdI!Xx>;nekK+1zYAmTvOe|#qX z)bgYMi1?HJViW&!E%~?8@xRZ+|5{G;ixK~`A8O)Z!2s(!A|7Vn)5N``^Z)b7xqRvG z2l6k@;h?{d{EPi`lOO3h8T8YUAF=;#@+s2E>mB4%?C%HiuTY`Cjr@!A04874b3~X2 zK)%NL0h8b9xgg9BAiqQX$7k|iJx7GTzs`Ssca-M8dd>%P0?2>aA2<1qo)OXqU2kUkH$7k|=Jumc`dJp+N>OVeHf6((nprihP`j5}l0kk|{ zsQ;l3aNt|C5=-k3T7J+`e?a}mXX-zCjtG2o{l{nOKU&T&RBK)T@tJyvo+E<3P!B=< z$7kvu8aMDq-Qz3ZZ|ZM)4hQ=}{f+pT`k0=R0Uh-*;%Vw>q!Z`YQBNcOrv64gfsUOhi;f9c#y zsOq@ou=B*oCwxz~iBmZ}G@b8K$fm=NuX_Vu`p2=V%IlgB=^Zv4b#5G}G(mD7E>RzQ2g; zKV5&q`5->nSDYKC>XaN2KD0rfZ$9P(52@mt^GUqgvrEqxk^b41BTi&eiMwS|y!z)( zy`HwF>(*n=596-7kAIM$GT$?ESz)Tnwj)l*3jeqrielA+XZ3wbp$Ig*l9ASx^LdE3HbXmjT`Bo6dZD%p8A{H zzG9*}9BJ?mQ(qJumiu1D=O?O7S$aL??7ZWU(_v4Luj->C)qV9?qjdzg&TCFPw<=Zf zMV!Rn)z;LX=S6%zTYJj!{CcnNt7#+DoX7N>4E54!^(iN@X?0)oEslC&$a&#I`ll<; zI14u4=BssUxT^K-rP9wM>#9EYot4iQeyltARJka0^8aGhS*KRspKiBdxX)_-Rhj1@ zpD)}J=k__L-04dkwSC=Xp>uuLmFJwtMjdjet{bWDee%5UAr9Tvo^eL}aMm5(dz2cR za#rLaz3aMD&VMJZbtgR(i%TxgmC6&Qx^Fn`oQ^DT-&=q_!iv+S@`tI=jVGOZLkry6 zkB?L}XI+%%l27QGv;6#V_pP*1>aO?Bm&zHYdaOU=Jbd`N`&ZpqHDi+hmi%#EPessqVi&l5e{}cR!kOOyBJ(pf~ z+I5@metcwz8hMIyJ3;Vmp{iH@C1>EZ>26H2qvk!p`KuDlHT6)vRzRMVh3>CaN2sNB zIX}jEryi>3$`WS~?&0~g?nsqijryfLVXF6<5~mM7Z>v%INR|86RIjz?oF`{z zyQ?2?RL|o#8vkY|+o@Kes4ab7D-g{?a)dB?{u4puW?`pf2g5%<+^*=6VUSsCuKzXoFliP-j~`=9HP zDz-}yY;Zlnv;R-moVuIaxJOcBRAe&mp{gg(9kA?*bD;Ul?tPsiRmx4y;c$+qs|v^Z zRdt_mU#t+LHca~m&ut>>BbHuu9!&GNv+f_J9>0&hf_nI`hYI&zavH~c;ePwWF!kW^ z-$fqM`@5Hf&#DcMdZNp(vYt3Zth^xeLO1Uiq26e7qg4JdH4yZ;T@Scv&~K`%e)IxBh=*$oSSMX^cc`1UvBRGvm@pb|Kz+A=ZLzhp`h10-`G3u z{%AF_1#x~?_zzuj&B0j;n*3ITs#u+KSs}9CS#(|K+bTz^58ewBI^}V&{=mQoz4O-& zQLilh3;TLk_B%BHic_Qhc<-B+hp1Cs{{pS0&b?INNA1b~UDgwap(`#q zk0m5}Yrg^e)|c-WdnRHk1VR&{egY3jD65^GNCFB_5t?9GWLXY;*$=1V1F!Qf5?aQEZ85|E6dm`JxA14jfTB~ zeY1>x({n+gDjW6<_TMu0U(XSBRbycP_jQ|Y8T+s2d_q+Y>_6Uj%e?P;UZ{u4#QP5W zV;TFS=Y@Kxbl4x($&DS*@`R~$*a6HdTE_lp`NLEy><{d}W$eG6BkG~Dwf(n@{nv7a zsZ7}aM(G~Q*h4)>)I+7f9>RWF#_nm{!c;Q&!~a^w|LQrMP&FR@m-j~*|ET9=Le&`f zNBC3A_*2q}^LY4E_+QKTU-BV+BK$A>wPpOZo+Ik2Cc|Iz^Y4s**KY>KL-@*S{#{cShp&n`s{4YOe!T3Qf zPngPuAB6w4jQ`d0hp8O+U&KF_iGTDQQ4cji$3K>df3%!oYAoU(!~@oV(s)465%o|x zhzH>JE#vn!Zec1Lejo9tZQ@TohZCx%BK|CB`io`aLp>)Gs-_@5L_BGmc#?GDJPq+A z;!oSepX5XO48)&^S8c|tafny-98p&_3-Rh}w^gxCe5>bzLe+G{x5yW4lP_>?hkWMf ze8HYjnlF$}`!fUi0^&W(#Cv*PsE7Jy!%4=UmWe<0yigA{8S!WRzWXf`2Wol3)I`LA zh(9e8e`@)|)C9zz$QLY=FYvjvCsTF4V3~YD%NeF7Azwf|Y?*ji&k^;&U883h_gW_I z)wqSJaT`uEzq3t#r{{1&)okQ<$fsXq$Xc&k=Q1dB_KmKiVdL)N?_hY7X*80lgnZ35`I?>=>Y=71UqgOmnfyr06Q-shKSI7{nS4#l zkI&jhzJ@%@HhGqwBkG}MBG2Oe2_~P?a)zm?$fuA$+9rS0b3{GVG~|!S6D^Y`YTUxq zWaNqW+^T1*e-hP;-)@KON9A12-MPp?JRPh zsaD^PyO^ZvUD_;k@}IZ62=@OOJL>af_4!l0H>pIg-@V((?N;C3Tb!)+{g?Lwm54m^ z_Uv&Mgw(W$MkT9nI&T#|JfE}n>~&(lyvOc3HA&sRvOwe^edezH$a5>&yMIeoN2hKp zl_yM1E8OQiGQEP`=%r*eUI12|h(d&X7HK+YL7-s=sRQ2K@kd;ki2wI3HO-cEhM7+@YuG!hhF6!N0GYs-nMN z0eNm{ocHY%d>U_0QJKBgfCuMffKSnG!E;Y&3htj-C3NEdUC~a#|Mss_)kA-Hg^%cE zUxDbWQol6S^c?S5;v5n5bzqz5cYaFUS~ z&I?gatUt6v&O>68RMl@RXAe0?g!8a>kLZ1WOsd+L!_Q~uycYDePwGqdwNEft^Zbv% z;5OOU?4z5+K3u~6KSP!-##+wFV84gAh&@^Vb%uKUSK5Bg9l@R)-X!*?TenR0(|^7b zKBUh(ioeH%z3TE|mYVPh=d!BG`nku~iG2%tDN8-Ok#kd=3xa(+wo&Z=wiel{+VWZ8 zUrpA}IkATIBKzJuveoH9c|zy<87J1u`~F1rEOqTp-pj;!A-wO$HjDk~@K&a3-ry&Z zhxF-3wul`#T9~Qwp7^;`9@v3nTgCpwHOy4COO}?(5Bqauo7n$3TeH-SyZHB^oFjt$ zKe3VZB5RtHrDhLZR4OOz|MAUY59YAB`)hf)}57dRdCKXLg)I)=T?fp`>J@f`g6-{;luq-I%Z^8?s zRb(&fy@ud0`P4e`gEcyiR_7m?Un&p$;OPzGf4i*CR`HSFm&yZ~hmH2<=-(%Ge3psCAPu7pQyj0@<3h$3q&BFQIda^#}Qoh7{DYeI_&?B6isw?}= zIln^U&$}n&s*wFtL>}s8Ovy@#1KWh;s*6pCC*?sLSh7aq&-jx$>fTFy?>J|L`19Oa ziT_)qj8UWRBM$Y1fA)nHa(_;4ey%!@HN8|$#Q*14OFaBRja>C<5b3pL{kU_hCGP#X zXAb0kG~BnWr^fp@u$bB%6F#-AJVg~{w(=gx7Ww3g%gwTT;4B)eC^s#lHb`8<5cs4 zOrev1+LdLJ|DMUfy-z*)IfhMSeG1kyf4Mh*9PUfc5IWZw4$otN(lKR8u+W1_&S9#u^7M$a-FV+X9Umd5uD^7f*U(EWCXWXyjRq=M-^T0VJ)E_`+y<%XE32I<>&bd7+^pT*mzR~sR z@tE!8J$Rf83RNSoEpgz>g6cmwK`nWMbBvrL>Z+XUi-i8x%b3$!lO}Yocd(xM{tqq3 zsX{wf_;9}?ujEVpq0^J&RMi~5FPwKm{o!)H)B(o4I#v}%^K(fk59$DyR!IFJr`cF_ zU>(mn6H>wHf+uZ6k?__O|I@Yi!Vp(+MAvp#0<(Q`7PYAE*0dYZwLbmB8q z2lMm@JptD{V&==>3y5erG#Zuo3=$CUrsPEyqtbdyGk2;vF57+14HRqpnu8+Wa z*1H1x<-8E;UDz+{Zw7xoFVsT~);M?rI8Ywc!GHtnZw7xYKk9Fwv;Jw$Kc7qfk^20* z=KO0pQUAnx)&tFX&~rpR)KKV)bw8tbjT`EI&==}IZovL<4hQvT*dNx1jeXE_GNEb! z>;vn`#-5N)Jo^J5)}I6RhjU7(Kg0g8UR_vfuk;)d>eaAUtZy6prsslC--dl-{omMs zJx7H4zqbFbvHyC`2lap0f7W}=`>yAOdZ@m5-&ubS*dNXdq5cf}!@rX?c0kL6Ixy@2 z|6VmOZcrhkA|(^>Elj*3XUI)3~AT z4gT!E82_v1a6;8r@V~r2D&QYECljiA!auT~67Z*-J3>DN{*?U}g{k{+Et_+(7)pIUn@D5dW~>Vf>w*7wVz9 z!{4$0V*Ib37efC9{+E3a;|H}o=!3uyvj1ZIua+PE7x-WHzXI_O=ZMh%((#WQh<_+2 z`d^5D*bfTC10TrxUWfzVq6!Aa%eSvt7^FrwNA>L#E(Zrv6UI_h1#Gk1DxPds3@}Lih zIFS8E6Mt&?(SJnz$$qhk|M^_<@2um0*Tnx?PV|cr|Fa)z;$h;$_1zE;v+rr*UX2_2 zo~JiRe?O3aaSjLledJ&4r_d;M1IGTd@&EIQ&VOB#|B}xCIwSw( z{D8>^DLdDHj(m`F0w(Vxo$I?I??e5^XX+1n4kuK7g!%*OKR#0*&~q}NqdtK8kI&Q- zNGGokQBOeq$7kvfVWzN>Oa1y()y2{ zBf@%J|M8jnkDl|vdenbpwnI57Bc(crNN8sQ>s( z-9zIB{-}Epe^YU>SKCN2Kz;QjCh)Q8tKHj9qMVs-_+m8NAO4ejrub6 zI?nS59rZfu*VOk&=Xw4J^}X_QFOIC|+)Md68AqRg)IU-0@|k)U`N;W1y^Hvp`kS5? z0uHFZ5eHKT)A9fZ)WL|qslRFYK}Y?q{G5rS`Rn?pYwDlqe?d;HNBxuM!PEow91-+| zdLZ>~>V6tG=nHkf_w#;slkQAXN9G)`uiwh^Q1?A{9(F!@EZ^Oho1{97+GnSH*wl03 z_r9w8u3{(d)&1_CU5RSLy?VZdy8Lp-VazA*c8@%lhM7>q$_M^^( zmOr|?6B3n`e@N(K9_y!i794fHUbx=g>M#=ojDgyox(j`t9PrhPjjClT}32K70PW`JUNLB2?eq#ZE+}O!vE+iR!+} z#q!*NlLo5ZJB~Vs3VXS}14-)bXAcT}ZeEn|S+{AjJNfNo)qLw-JEOx39)-JHdV$a2 zX;a++E0fhfmkRA8bMl&tJbMmFytndfvZ{Ea$bPPUE6?+HMW{Z7hn(fHque)Ir>LjD zEVTEw4Qau5l62p}N$&2N32JfraqQQzeyG+@_1b#ed9LkD_x#~oRe$H2K)qTrxr{QfsyH(G{sXvyV6h72TkIg5X7lzMw7ly{EW*bjq zZX{Rq)pOG+XUW(cchK~BmD1*<(8>SnEhn5H&ve&|`}Ut$dKU91d9uFO#?wxXA5z@* zFURA~;Zs7VzItyt=|s+qalhW0fcu<}2_NdK@Al))GectCHBTg}ymyX@Je>*$s6GY9 zoUrFwyZ0YSRP+CH#C|p?$D+Ol?l|V$Ea>DGH%wA({^YrGtnb1iRR5hvod=rra;rup zsJV4c$aAT$e%nqs6VqF|-{bFjziM_==+qbaTuDrJU(ZOy-_aiyd?*j~d%@Suy*4yS zeLnS&J@M8@@?4&i9ZUPUB@uC|V@1w86$<|SHl21_zCY59+8w77QqMr1l@{^oyBTv_ zZ;o|mM8v9;#1f$s=dU-Mb`IyIxW%`}s*x{U5I&^$LB9`w7w2A?JxYDNhVxOJBkHaC zu0QJxob-u1@zFT-aQhOWlYjq>XPhg2Lfxl67^Plm!ugyaax1?ZuNG`14na2Yj{yHQ zPgHe}%uY}^npzKFStS~kyrm z@gKbPloR&AZm(*dpw7=bCF_ZQ^tO}EipKN3_oT{!af$%4Nv&f=zs4K>y^9Mcz*y8>znCd0ptlCkFV`&Fbr2 zRAr=kwu+eqmJd{_7n zTUX-XECmg`IzqiW{ul5Mk@XJNlfG=;D0TbuSAX=jYg3jmu0sg0!o|oqme+PU>clO1rM_Zf`I`Ma~{_(>jyeE3csroN*{R@KsV60#L zM|*G5`FK@)?zDa8)(d{U1AmXfpK~=l|D%92@M&T2LH;86jKF?@XA6TT>BMsc@B#iF zgFpF@J_`6lU!H)zB7`0XeL=sTfPN!{e;l5R^Y1a|A3K!w3Htnd%=sss_{U>C_Uj4k zH$wIstMT_3{3#FdAE|Nh7#zmtg$oX`8h?+$pX-VLNYHWqJ?8xLxx_yXd~p6f=KPaR z{K*IBp@lgQ#E0jB`fAfWtA)|~+`KR3xzyLp4aEhX{kM$$C!P4G!v5oZx6J!aKHP6I-gnp^kFh_LhxjLIJK!;PV18bP;E)JA0Q=*4 zvDE%>J@Jo+{ek_rjQ!_xiGQ-T|CX`;q!a%{*#AcTi#*025+BMF5By>GJjU)V&WrQw z9sbuc{+Dw##6JW67yi*Q{*m)A#3vp5g+H~7KP8p7y{YV-#2@0RiJq?3Op{5#?wYjJ7(qvwcvs~p5XV}3}nO#DMS@y|y51Ak{3e@8yt zZ#wXNquqO!@xPRZ_@}}D!Vg-;4^|JFB{-zQ4>mvZxMln=*AxE~;EDLhGVu?eOZ+py zAMuZ6;vdq9e=6c1!~>Rz2Z#^lNrArL_buc1uiu&=&rJe<#GjUlKRH)J{Bsb0B0jWC ze8_ni;xiiYA>v8P#FL~G=P`&U5r0}H{v;pL$0Gjhvesvrcva64^;Y8$uOhy+Ongf^ z`R5|OMZRE}e1UU2V)Li2TSh`4RbWzd6W{kgr)LU!y$4KL`05=OImgG(WFEaL7U)gnZ31 z`5M;~|4f}{StifobBTWr@+{<2mdU3`C;sGv{LwP`Bk`d;qme%%Pqa*)xHxZ}U+>K; zueBz$Oi|p21*aXaQlPKjP77wvQ0=hs=U?E*ck zK8RgtT9*wuqhY5e!?ccPXh zT9s?y{_}QvJ@L=ldjR%-w$*b^s;d9tc6l!G&)v5V@qeQA%b`@&x-su5D$)3ZetqB! zYu8IDs{7p(q1BHUmAHU-B zzy8?_`LAgF_ZJDCfA~_>3*9yeU2xu4B>4Z`Jxx_uv0nHH{lFg4*Z8~B)#7?JK?63!{@m0!94Zw2+s{c; zIXAY*dcps|Ue+0`F6rs2)e_!|6{O_+AKD}5e^#$_m3C>P(B=Gt56{D&_0!avu3JIB zqUG6-a{|5JdM!=ej{CUUhg{Lm-7obeE7O~yrkq&;Y;IFxe-7^y`w;nDhWh@_)#$@k zRAL{BalaPq$>@(V)b^kiLMJ{G5AP8BllW_f`XkmWe1v|aKtF2=e z3!V69pTxWt{N2$JS*qEY<-&*fXCB`!{`ZcCSt_}sSL6}@d#phGVCw!%wfmVBc4eog z;E;N3hxp$JoRcf>bB4Eu;GceUr^G*7_GhU{NyMR+;Gc0~o5VlOAI?%QH1G+X_>&Lg zfodx$jdK2qE)|wmH zYG^R=tS$Iwp4u$&I(n#GaGgMU!0>pDVYoY^<;hexpl1nSkM15TGgrc zgV2e8D%LaJ8@WDP&ECWFP*?Vwa%zjjpIb&`tDdK*--pl>K>T@ftHgmbPiCoz+w$$% zP3j5`Nhh{T{2B3Mmb$)`@7F_ue+uY~|F=~dt#XPvZ&^?9PX>R~f2?ZvW~<-Z@V&05 zh<_s1Gaml?>1>tXgy*@o$de9zG45R-mZeHAciN|{8J8f~FSXl3c!iVQS{>&!Hzj{QCR<-X~B=Qjd#M7H454tusTeWz3 zDeTYVft-Q$d*+lS<1Apef=jUguh;y`) zO$2}PVLtfLYok@fsYRgI7yOg)T-1L&A@5~_?=sk*`tsaF=!Nx%)_3Kqc~kQs|I>p1 zDC~>%f$=wTRHaJ%JN>4De;nwnC)`aF5{59<$$>yJ_I?wKKcNFRlH z1J*0LJU2#VXU%{-oFhWL;=*dFZ@B--RRel)Ui4YvKcZxv10NT3{bleOJOliBUr=x5 zU_I$G9?4amKjnM$g5d99J@fsDpd7UybA#kV{2kzf`j4mP@1s@UJ9)p~({lbtg3daC zeI{Go{^!rIKhFvd4sb*L#}j`#TNV7yxzncw|B;~cxd*_%^F_X=F9`nRPkPT|*(&CN zB|_)*P4Bh@_NS>|@2tNW{5e-c|2qUYvp#0< z;XDk_=P>M-^)!Pg>BMIk@L~PU;7>lJ4*~wH*9G*&IU>~SpfA?<0{XRte+-_>`lmVn zsDsJ+D1H9D=KPaR`xA}ztak+fAV2H(3}V2!}Bm4>sj|Rde3X}vOIS<*0cT`us^K? z|47&w)`yLK;5-cRAB6p~o^0$1>BKV<_^|#Qus@trLj4)`hxKY>uk;)d>eaAUtZy6p zMmqV23!gT z*{?DFTF()oUju*5{*LkQq!a(X@bBz@G5+~l;vdct^;W$Q|FHiRh<`!^|K5my*zYj@ zj(oV^{=k#{7vp~^56}Mq_+R!xj32D*;4`Dx|3X~E{)_RyT+j0#4m{ca3dBG7EJ5Jk z5B%Bx3dBDlg8x9oKkNqu;(-rDo^a@keIMiZZw~)Jo*N1N>_3|LlXEr1zZc?9_6JRT z$axsz^EKi__7fRTeua3FbmG$!@g)0?CjKNJ(t9BOWWVxVf4s^$BJ?W}ud=@xh;Kg= z{$Yr3*)KNnKkB!#{wp2-yC(i8o#($N;(zx00`cBwvfti__t<|l@h9aW{(XQm;y~BL zfwP-@COGs%+|K@^i9flX`1eQr$$s&}rSU(XOZ>^7{bCdUlg{%`KJ15@c$oO`JoH68 z%)Y0Id-IxfEYF)>fuTa6i2l6lW(@lQFnF!+F6ZsMQ?^`4{Ju z(Dz6F#d!deuW|N4=*ZVNKVb4Z(#gL&@;mnZP5#T71+MRg{FieACjTX!_;*MC%l^2@ zcgTnP?S*`Y{rW)uh1n?J-wXK{=OIlV)Sv&n5o7 zbpGp_{Fij%Pd=Ox${bkr+Q|8Y%ygLL7K`UdJh zuBrd%IU?}U^&i*Ne@G|(U+MafYw~^a;eNxA?+?qIg%7VwlllYYA^u^gKcEianmRyb zXMn~ZbpX_VTvLDGdY=D2s6U|o`$GMV_?Y?_=V1gN)W?XYsi%=Hc%q(0{7wB$&nW>n)ZeHt zQ?Ju=L^#i=*HOQwzPIq*p^Eb}U!lHNe(uH5`bGV-?3~P^lHnpJ=VVata!tK!c9Wrs z^C4lVcM*S6f2%l^^G=|n{ze>39qfmaAThM|Oy=he7e2jo z{nI~B@_m!xkWiGxU|2A81PwScG+Z43Jv+3pap2+&RP@&x$ZhO>DHWsA&Dt%kxDeC{1 zC;ZX>I?ufNfmxTG%WG!&;)A~M^gL138qnYgr}NKs-H}-v z?BBL#`)Yj~@2Q%;#S;Pg)qVeS->baQ{=HW=?xibi!DkF;(Aa6Wv$p%(p^f&-&*b=C zy7iRj_j!4qNUZO4_Yv~to{^6cnbf4^`CS;D!AQk{^(l!hfgznGedfdJk)Ply&$d*=%tJv z|7suN*W;v=72c!y>+I{9St2L#j0T?vUrF&^y|E6T{gCY&mX~Z1&lu>vEY6j_4HG(X zE{i8|Gk8wiaLn5?Z-xEAH_6ysPdS(DD(x6#R*my@38`!Id=9Dmv@@n!p7-;8%k2)0F~`;@8^^A?H_+9|LVd&3OKKtm*IV- z$qG9)G}$*duZGAI^Dn)qklTb0^-@-koO|JOsmJs!FMI2CUTxp=e7eX{Dz~O)OzRoZFewqDlwOC*MptohePMxQnjncd{WSgda&I5@y__<<+9Q-YS;_kBwKFAM*{ zpdb1BYJP>At{wS8lCNh-3%`EL>IHQVzh27fk#j6YkJsxC$saI#l^r*j_N}E&Jcj{i z$}_0v8hc}O25@dAxH-VHJkHJiICH(RpX7tz#eM?M76wnwf$)5e0G^P)g^|BwNMDhE zByhlfJ!ZdC@&?F$W3gZ0*}~vSKE!hb@Wj46=6tG<2-z3;00)mbpR4j>1cy=JlX&;n zEsVaVfj#jU zd$J%eUicGd*dLFvKkY*j{rWAdmnnH8{dy^@N6wk>xzr=xcaM4BDJSt9h4&ry(_`#s zmyk5UZ4}yCMhKjNGQ@l3#TVgEhG{=XkGUF1)IzP1$JZ5e-Y z`PK~CZ!*@yA6dp9kq_}qgkInmJjTCso`m~~2OszmE8ySf3Jyu&1Apf+{_dWjNy0xK z{to`pWBlXdyvbU>SYK8zK|$mEdMT?%&W#v7!XJ5zKcbw(GY;~=zk7^-pOQCSaEpU~ zFOTzNKh9;(C;1pW7uUVlGVv1UE{JCm_#-~COnfpwZ;8mCgt!9njAi1PHX+Mozp034 z5HDFKULqgjnSyhO_|r1+C+9=BuS6YxS|ZMD_cYeK;)g$LXj2;m$c}%=SIf-XH_Jz2}W8%*s^a2?##Um~%kMlx5 z&Smi=AA=|2dCSD}oTDI~$%y9>KU*e#t{${a>_y2aX7R=jX2j4cv zclp){*>C#ejhv>he`-zrdb2&w%@IDtGri#xxDfPVYh}zs(N2YhMdU!V3`C~_e|3R%U=r?m_1FOQpO?Kq{xxU4D#eV&k)k{#& zKEGbd>XGv;MvogmzwBvHwAp^~+c6?1@l3>i?>x2E)1>ZJyHnF~zA1Uf1-AsqQy%AH zKh9{5Y4zleif?`My`Yy30Ouax&zpA>z56z5xBbJmZy;w?CGTD1`pgrpo#93H@B>q^{&vN9KIO?r#hz?_X}4W>^knc4 z7XE3#pZ2HM(4F?NrIUPlO)7~z$^X(zn~(~^Ck=Yx`80au9EISC^?cv&Z?nU0+;Eb} zDepVze6Np3?y#Rrn1p<=vJ(6G#AE-$xss*>=dySbH-jhrQO>L)d&2l>*l!KNGYR{m z{r~OZBKzx3(|og=+#~WQfKGqW?EC%p^xJ3pe!q2(>^G^|BjS(lxVp~{er<;EA)YD! zttb9H`12yW@uF#vv!?7T9(?FW-U&Tm|F(H1*54;MBsG0R{9R>tul;fD>AtE#cM1R0 zC+mxUEWEhKez);dU#G&m{Q51cm!P0K19~Z=N6tkUJ<=a#E!$9pz0>c! z`o=DMbbFqMdjz*Q=)FA7clmKHizoRQJQ**&IDfzWpQ$sk--iUx1ni6P$=09t*{@!m z;pN7eA^xd{B_8V&f6!iaY!>*}7XHb2F5|cCEqm=MRc82Z z4u8VQ3T(JZ|0jYR&D*capN zv{#SV6(`Tb`}nx*chu8$C7!?Y(Ia-F0rP|p@r(nVadpOD`|Y3F&Vrmz$iB#jad^+R zN9+fdaD8LJfqa-R>}q@1Zus3?@PADBCje*W7ey!c+wawzh4;OI*6+Xc(kA3lzg`%B z8a;Aufp}7njOW|lUu1uIewxThJV!lQPvZ8yv3u+)xx~4V;5Op_;oQKFb6Grzo57R$ z=11ob*`FPmgZ(}&c#Z&`%!6)GayH)gXGH$tz=8Q-^Oi^Lw266mAD@-|4u86i zsDmjgbefBf4KyUJ%=|GePf08i$#{VpA` z*Stgi&4hm}=*)jF+;`CK(q=Z^_hx?mmeos8(0~1UDXT}$ArMdMk@;rv_9FYrjOijL z@f-o1DNp{6J@)ydwCB$VZVvEdeiXpDnIC7aH~A59!|x`4&o_9ok57Lz40y8sVC3&m z*h1tV3VB$sF#DaG=aKym#(r53F?f;>@f-#`u`jPVpKU@c*%$c$2d_Dw3-WBiVF>uJ z-eUAMH}7TP?|={MGe*BRhrc57{97*z@?P}oh1)ZFu4Deyy%)ED;AK<( z2?~1Oua~lVY!mW~|pI8TLC&yhJ|4GaToT{UZ~9^0PaL z=O7(_x+eZykoURZ5RT`vpJL*%xp^IheKu(o=94 zfH<7}zCgavP56f+UtoXG@**jVI#v@;HC#$GI$?yeq=siTvF)`6heIJfGp$?C}bo;DbET4dn0P8c)!Xzq=-%ts2xv z>kIlt{_dLmw^LyszkbW=B`D}?zh27fkv(vu$75ey_A=j8$Tuk`@f@V{O0UV^+l2HN z+@c^)d7S(BaW0D|`IN=e)I)xsg}yfW#o?$AP<~T?n6r7XGW}WZ*VHTi89qcwKNs~1 z;%Vw3?2ofw+#mH2?#tAdf?Ez%rf*xe&--b}Fv=r+Uh2!#TR4Nje6~O8E!3~6&)ggy z?bmNvy)4L!^y{Up9@#fHdL*8v9>Tc-!4vx>Zl=Bz6f{KRrt2hSaE|ulTozA#--z}{ zeBa-ROHqwF6xr;*C!dH?5k-gOeQ$O=Mb&FkXtUp)IU`y{>^&&`@v#F_)Tfn-Z1%@D z^&g}LfX?^5$D=7K|FykxKSsw8&LM@L)_DwQdHDWdu-h| zk5U7Q4$Av};CQlX{nkF*gHht?Unfe1?>;Q=dz+*b6`59Ka~`1i_GlFe{(Rp!WTD4EFJa#-6Zw!hew1D z@f@@h_kkc@GW%j5-0Z6?4(yu~PvXFMX>?GM`g+F^@INK|qjwyac@-yZJxK>b1`f0f!QK?qKMb@zVXZQqeZc>y(1#QrE{CV?ziT|%f6w_KN&Wsj<*#M)d=3T< zjOW{LOj5~N#WwrhB0uCoe(kOGU7~vZVcsWS-6ozdnf$&*veb4+H*X&!_IcYdqP1UsO3s#k66KxuxJa40tl%Y&|4NOu_g%E` z%g=oCVyi?|G5@&D{y6a*4EdRFc5aZUj=Xq6_z=%w1t-ewi+yn7`EMN9Hz%IN0ri3W z!O!5l-FX5%ledJw13t_*m-S6jd#)e0IS)YnI>3kfTJ(CNYPg;E|FjW44)~CM68InR z9F}`6_*|}MzPT$cSv^&YcB!RJJcmKQ<#B6X4!2I#Q&f|7`+nE zfqir0NgP-YG5TVEpZsG%hkjca{c;|F@{EK$tcRHM$v!^$jKX@>L(KVP-=ELrde%b> zo|Kb#jsTvNCxBb1A2;CK!kkaUMM59(FFbYs-T%IO%=^whGVzQBo~+lI_lx~*BR}hP z=6z&;ocpEx$lpEYeJ3B{8TYS!u@7$cRTc;K%?%Ey4|t3{VSk_e6JQ5euQT?C^8l15 zPTLKSv7hYYlTW<1pB`gB+4tvjW3is~I`h6$PU1NV?|XUN68*TbE^6#2`|`8{qyA+- zb^l%CiTvGT{1N-e#4`bUWIfr~fA+gYe$ZJ@HvWSBaqc%B{(}8?1L^~o@ptU+lYcUv%X+f$kDLdfJP9}_@M~7Uzt0suNm$Q%vhjoL z`}4W+SkHR0@kf-Cc*cQV9yi`utZ{>%@)-ZlzC7u1|Ifd(|E}>w{%)CgiG5_^nFRjq zcbNEu{ca;a`yD2pVSk+aO+q}w{=12n$cK2Q;5?Mw7yIC5UuAJ%-<)_72ln?(JjVV$ z`KKZt<2-A#Z&j+19;AxlBU*P*oJuThQ{-NmcLK0G$nIIwRnctTF< ztM9cmwZH0C(EiZ+I#eY3-LyGP{gklH<~)Gt_uyVRpSM)Hy1$tBD*Uba94rz&4yl%| z22I}z9B%68VmS9M$PUAaxk`(9jFZeQ$!3!eYNfqiqq6FAVGgg3}gr(13S|0=>i`3N`Wo-qs4CA*EH0Aw{n?k( z)pxz9uiKQo?~tcFZk50Xb`rSJ4*b+6U9EUyEAq0+nto_+IXrd$UE@iA^uOE;b=Up8 z@1lm_nFM)g|69D0p|)+~{RwyZ<)^=>@>7PI_|ICK{c+-%TD(X6QO{c$YU$=R!iRXK z9NArNU+jYuPwuNM4(yu~PvSs-*Y=rA6<&Rf&Hg_5C*kkH=pR$#GF0BA_4qsbdqkcD ztfya_-6d0X?64Zoy-)Zg9o;2Pb`c<7}( zZg=@{qo1n2HeG!&hKXFStoPNsV9g;mHyYs-F#zX9?Mcw+wlI4 zhlNi({?3tc+SSIHYI=jUz@e@@Hx~M3yfn25#O(U&yTLV9CjPsvspP@FtNcpl zUE|6A`^rXH>fIeH@Z6^b&k?|r`Q7bn@Of33HD|w@=acd^Bzj zGvEC9XqLM9Chr@0TJRikqWr$t2j}_xHxBHZ6Hns6e0EP^mg+v(i}(E*;XfRFnE#F` z$W$Z4SK)nsM&ua|dAP48>$B9`Yx&&gg^vS1r0<=UsqSdS`*WU^=Q>!=eDmVo4ESGu z{@2rj=LqPxJZ{a(;r8F|u;(Qkfd4Z>cm9PZ`IvZ~^$>$6`^fZ1!+jK0|4C;!2qL%;b( zznll4JVU{U^(AvY*~cfJAz07)k~yF3`}4V6&w7Z#lXCKX9|k-rPXM=9{I~(ve(my_Mh@^RIoe z4{r8V76e|7d1AEP@EZHcK0f(GYy0Un_LF^oK6fzI zvt9>YrSE$y!E*@S_wu;C;l~Yjz-#O$`|`wd$iM8T?!Rk1Sx+|ph<#+9&nW1T{cdCb z+3yzlL1(?!_zU*Od48hdFIZ1D{)l{dJ_kWBtm~S6u@7$c#rmhgfqip>1N-~N-?6_> z{t)XaZavp&4MB$vkuekyL-d^}bVm<5F0sr1ko*RwztS1|PL^*jrV?ZyDTWddV z@KfG^e{U=FnE&VB+xXvi_B%|x#6B|dj0Au77fgJ@ez%dI{Rk7!us_cIMk1bJ|J}q( z5eaURONRaYG#CHSs6=@;sl>|B63#|6QL? z_TvKae5l|Vfq0(%ZWBMV-)-b)e>@Oxca!~wBi?2|?k#^jA1ZhbfShIb#Xh*%7yCyB z2lmbVINHKE}TjPg4(J|DFBfaMTAVzo|d4-)-dQeoeiC{c+hZ>J`M()I->R zXTP{V>LF$K#Xh*%S6Lj`Hy1o1C-r6OE$r`0KN|HG>Nmc$KErtc)4wj;ch-G;-FK!Q zO?`=df77QXo~9l`n&653md7pHj~j6|^(FS@<$Pj&Sv+<$X55OjY~ zWqhq1R0Usa;kQ~rwehtAey@oCRSBvJ7Pas@*H*+&58&S`f?6r427ayudJTL%Q=v9~ zJ5!+q-)jWb#LuVk^O*{#E1bjk(-nTj_p|u@fuOVauO|NW252`b{En}u@b72v^#;D5 z!cS-M({K2fvlVIv-2-m-VEx$&_XM5Czn-mdzCw+lyFm-W*BYSR6LcSbx(}37__qrX zv>JXtRpAP_TmhdO_Y9JGkw zDEt&9lz#ZBCnV3 z#Xs=9N<{}xty*y?zB<7bD^|k4IQYF%#flY!@zn{ggzptAR>0RkD&YSBN^r#ykkbhs z5nQ2SWza`}QW^jH5B_~9s3U{_`9F@%1H7qv4ddq|O`0@mI@6Ih=@}^$+EVu3LqIkN z$W*q7?7ba ztSP)^wB{AvbH07es|z)SSLkcfOEE!s$zP!anmD04njpjp)gVpd=;N7CSfgq}ESp%~ zUtNeK#iOyhhYBJ53=ZK+Kb>6cLfFO&E*d-RV(hRDbul*BiVCP7jZKK+dKW4PMmmAN zV;OlF_`8->aOis*ZWR2o!!$?blh7&n1auNQjh>c2ML(6#(4R!lz~|6&@>!ZQ@+Z8`===%y_yjtJ9+Quw z$7znB4xYmyxP@rk&2vRT7i2fx1$JM{(X<}nqI^OATE56!LNCcz+2!Ne>6JQ9014%A40CnOnD2i7A*SZYV z^=qAmFepstFn)$+@^d!K5J~4kU0hw=5T`c^q`=j=Cd{zTs2IGYLRiyvc#$!VuE9WldDcc-n$}#7l9(W^NmN}c81!tRMxY}XbXm;Si zyx*U3puvm1z^6R@9`oDSX4rm=yjgwG8z!r5H_Y zeb_H2ub^3>Z&w)8;dGki&`MtE{4?LjWTZ2iW|2f#%a46#@#~6N#>YPVLy~NuF`6Fn zE04$g3gn^BBOin53H*q80>4BbF)z73fU6DYORjw6^OSjs{>?l?pYbc3XZ+gcHTk8_ zE1v+4<&o@8ueZl65?{oZ#ui5h4_c8ey`b6(d7PI9se|euU7M-8@ zzGOe&{F26(?j^j4doAK_0*#651$3^}LYiw`fD0A_JO`d@onxJk&#|WA^T@uId5nQ= zDqX5I9i7d7E}DwZhUP&l+03&VEFyQ~mv6jFv@B#h&$`emSgL$QKDUZbUP$jl_Tj3> zzOU#Wb7IYn^smq=(o5gh%p&t^_zm4F@*7`2i_xO#8HI8K#s)>Ow_1XsU^pDMS?q8q$quhK+boOB>&?NI5V|$i2wg)-tF1m!Rr$S!jP(9C2aUf@fjS#)J~n?_fGv>T0$E^x zSo@k^`}x>3_oG{457c!zzSJH-x75A_x7e&Y`{5R@w%Qikm$O-HUxqKXuf>zeOVP!8 zpGlW&&m?8q*Xz90p2FU0OQBgumjc_lmz}$%(`0geI_m3KPx5v6;pz4a*bMtR%nmDV zc7)*;@;bYP$zbcGb2=hW6MJ9OiJKq`6wb!t$gr>CZmYQ7;#g(3v9&mCj&%D^zk}PiKQ%P!zojwZjg`f!om#I0QG50+dO*0Y!KCznm86vc5o}imWZ>xmL5|e{tI<$L8qLap zw18E3T0kzIN=`@9@Kk6ul*1+!)hJ)*)d6eZJW^`FdT2eI1FwTp*=fFkE+8mh*I+y_ zD32~MC;(p{kfrkmd_7lZ@gTu$96>?2BgljMlLJwQ-n;4igWM!{kfd{9Pzd|1fDoD( zx)3;xg4Q!Gw#9VC!CTNw z_Uq7MJQG?EZDzAR*cBAX-6FYueQ;#ZMz-sNHwH%ph1269RuQK8!G<)E5SO*jcw zgS>D8$qVlYPzY6+502)Vt-J|BAzX-OlJb~Bv@CcZUW%5H3WJNFB0Q6nkLL4j=JS1Onisr@DMIsu z3+VEpg5ZeI&AJwlB0|GS;h|gDhKIWFh|o>JQK3<2QE(VdcxYH?Bpw!84R?|w&@kKy zMM1G_oTx@|I!A>@!_`U7PzjRYSU3i9veR6l%X7x*T7c&}tJCE>^KdCt)>*+Nu9ib{ zods-iotyAn=QcctoR8+}eFa^Pvw~FN+@W*6vyifQj)*iM-t@F=cEM=@P?hqi*&wXd>>0Bq)iE6kg^mb5;#JH$cG6WkcQU)6qwIG&4?qXtBk(TgZuk&sH{3XM7w>5tdcb** zu73DYT@R7!g>U7W`r-BH>V?OWR3cA8hxRd?;zwI&|t+D8}Xs*dl7*r{_RzJsfGMpSdvWK+#m1Fz<4 zh{uxS&}w?$fG*b6fYiX%Sm!ubJo}vy@idL-;^E!gYd3eRP1AtuYoptv8k4q1RpPZ> zb>VIB_NZ-9JMnE%pWr*lja)mJx@-^A9gaGRRy!69ncXrJEH2k>TtI@T)!i# zj%yd&9Z|cYYP*u?V$s@kbzJqK`g)T9#d1c?>(M2kNoc$)k=Y%Q2-l)ZAlGs=g*2^2 zYU=7p>d1TQ!HKSByb^gw6S}6ZCQLJ^6Z0nQT4gzWYh_|6H$9eyO=#u$7oJQ?dGZW@N~PNc)R*`%^f>8Y)FJ2)UP0QA?&sUw&-bb6zNn9xL+Jjf19bbL15vfzM|3?v zs_jl9CAp8XO>)=8Yr8*=s^_kU9*U|(ljN@Du7lTdx5N|4wb5F5B2*7*!6p&asI|`Z z-1XsBq(paPs4?6EZUiN=)4VC&K2K|158(Sft?2f9_Ti1)O>}OGH|FXl?!BG^Z1#FS z#`k(o<9o>a(Y<8S%Mp8qm3Eoh83vWz5<7vzsXWN0UgVYIaz`haM0dD{`hB~roEFJe8<8H^e zzOi)7(~NCnshM=tbA)aWdX(;%=OlDeZw^6wIHTq#=nkPr(1V`COmp{P_!GKAe@CKw-Ogr>#sXyKseVf!yY7e!?8<1L~t@$=v^L=XCN@~NjM_Ws6=~_c=CA->D z*R~|PY9rayPHb(e1GlSfqyRMlZ7*5b+EptPp!%`3!G5Tp>QC}hLvcSf1h=9Zg~1`J z6St~?P#_!v2S9;pFe#8<$OWVP!i;Gz1*!d|cloT|Xn&roHyTO*E*g#ZmfnFQ;7Bz> zjlv^T1$U9(m0Zj_{DV7!6wbIHnSD5_kr$R#75AVry$AKE63L^+;Nhwp@}M!W3wNvi zq!_4=Q zF;aET`~g}MA1;lAtHIUPYHAImxGp7bHR_tE!to=KX?T}IKoCyj$=k;dX5 zq94*sp_vI!K^t(wS!iQ?iZl(b4>wTjtBvsbYD>H!d6v|WnI_evYoOL+8bU4D*F!aG z4YyER;Z4yN^i9#GYI9OkwHaPdZ2~n#o52n7Ch82S88lUDf=-h(pDNAZBvbjUDbi$o zGI=Veovi2Sq_NTj(gbNbI#wDFO^_y$#!4TN#`1(8(M+V9K%OYgVK)h#q;m=>g}Y3r znJCSLSCD4obI>_7i)m8e#b`TDxB`6(Uo0(!+rsVCwrU5wt=biDPhKIlXO>EB=-R1m znD$T?_H9s&y2D-6Zg?lO3w@))EQbLbwrm+nlF)- zbCM-|)?z6cPbM$nw8?s2Mw%@xAT5xVp|hp=&;n@@X|^Y1 zNau~Djof7!%|dAgzzPqh!;Qyqx+CTB~% zne|c+x?XAzrZ+TzeGgQl!SDce5Z(_RK;IATr@l+-r}oEtsC}V+Xn(jj-dEiq^@r9; zebM!j=If*loMauJwN}c+Gs){XZKj^HNU2f=DMQLaQ>9f)pQx; z)lx3IHRu|h%Sq+jC5vXYlm~Am<>0w!E=>tdIb4Fi#|gKh!|@Vn3p^BlPaUcb!-uLL z;O~>SO7AmUq#<GV_3De5%R6m=>-PMr)* zL8rnK@X6`{X)3f&nvCw3G~Xv3;3WI_ti946d=Ggar`@CHk4Y6$C8<*S7_E?YLY2~P zQiZgGRKXMOpxH%NN!}%W!frRZTj$S6pK+IuX?96R;Lk~i@lViCXin372A@Xfa>CEi z1^8*{EIbFEtIkp9<8#!d_&oCG(mdv@G@EX&I-8jXEnzbhAkiKAd5tB)U|jT`Fkmixhkd5rK%}R8kEUC1=VOhoT;wE zGtf->3^YSsL&{KB<03^K$3ZM0jbQ!-)zQSoQ z>-k&KdFdkQqVz3#Ub+BXlrE9ZOJ9-B^Mqf~d`)+e{I&EWyG!ULo&O;H!Ck(k`C9r3 zzC-!}{}KI><_66l@C|e$C%l8^;y0w<;SKOcb%UCNZ%~WyZ1No`oB3VJqT8ruG1*Wd z`z%zW61Y$;#`Doa`g}BBEg} zbREA=zR78?>-iSx2k95mFVZda2k9F0i}V}m2kB?h4?N+|G{4gQLjF~{$L=@uH=Uo7 zo^qF4G`~uJ!p}%|@q6e!n*V5?!vCSAobVaC75`6q1aE;$)h%i{zD2FX%gE29GUk!A znXXjb%#=Yp*>6TQ+70hicj4R6o%Gw#ZR!rvHg!9`S*?J!q1)jyyh42L z^M}$CPV$h?`cHa*KOjHkv=8+Bm~>bAhxCv17`-d~4gDkCC*76)BHiT)|DySq?jQ2M z(hGL?(fd04%8w;q`3c<%@=Mr4dXB$9U(gt6eC6l3ue^^FTF?WyLH1#@7v87tRX@h} zsz>qtWQ)9?@san??Nj$K`=KN3_n;abhmWYo@I&Yk`a|d;^%K$|^)S9iJqR5_55xQM zgQ{6R3>oEvsE@3C1lf<#IGhyDT}(7pk`0a^S#dwqPqxXyG~sYCdWsW9pl9)5ITSt#pHfe% zXYiBi7x-y%gnXI_l~2%}Qcp0aq4Vrdpc;JzpI5)c&!Ok(&!Okk&q?Rh&+rrKr_ed{ zGx#+AsTwAK28GC{yOl2x{o ztURHeCV5y{i6?bXENpzo1@$ zuA<+zc8=rvB*82t^eE7ymA zhOenVtH0tutGDrA$c^P+nELWhbl23Mm|vh zPwI8(26_|z1;4H~ly5@yd0Lh&?L#t;7+6_cvG|~OsN4l>*!0)R6Lif=J@L%}9>Ra*ysGa;T+FsVYo%|LjX~$=^mD}KL$n7|78$EX* zHIZAATFM>JCUOg?rQDj-L~c%M!V@;9X+_tP+)93%U2C+p&izUKxl0F{R&p2kT~cTK zZS-xL-ZcH;-sp2q_%8Yi?=8OrKZBpE&(xRrGyXNSm+A}hyYdU>9r-EUbM-0n0usFj z?^9GGA6WDn@i(dwdaAymeZ#*tXhf^6|J@+Mbmb;U>%YD(#ayO{E+>_K&+6LzKPLD!w!LmtSkC)!iz zF{Clvr7uknc@X>oX#hSD9Y`~rW(+(W_4W26`Fj2E;qpk>4EuV`UMp_)2I3a-2eO43 zDVykgy(Y#21+X`v8U@1v-XPqL2GHA4yVpUod;M{f*9O^9f7pWCyrX4*XoPG-N6MOy zkVkWp5q#Egc^E#7Jc82>)AK0O0C^~Bs5}ZCAP<3t%I}i~$b(4(c*4On@6in6`Wb#x_J6X@uNn_;+qzUqLbgVocnjlXijg>zljpYeHqM1lH zfjm*3!)_8fN#_(&3U`@KGf|!kuOQ9F=b&?F7Sp7_i&2#mu0X5di{+)T0;^ud8;dL6 z1l&trA$ysnvP{Q6Xc#XP&t66~ss+b;6Y)4So<0tZ^VTHAd28UZw>lJu)_}cub?Ufiwx=<7LNvKB6;U?Z@ctf-aeM7XNw=t=qw-KJ?Z2&by z8^Lw)2Hp*FBWRu609`L@zE0l2N!IaMYvoKlle~`8X6iYMlqzSCGUO~YRbB;U$ZJTc zayluMCrqbVO_xDlE$6aZgRarJoK((TvS?PzdGJ3ooMkh_%96w2G-L!=6P8@i2VFU>)CFWQY0 z9zuKKd*%IbSGb$EtG5T<)!Ps6PCg`eXZFio=(>5kFx{cP?7N^Ey$kpC_Q!jped&9n zy}j>{dVBleUA(=Z-e@1VJKoECK<)$WlQrHaAK+8=%lkOVK0a#?S>rwE9{FQZ1-@6V zg!jOeXr;WHR4MPmE9ISd1*%b9N#h+*1<$N`l2ljPf$o$Op(H6$s-rix;hJzFnt<1o z;_+JKBs58?O;dxehE(Z^mtskYXbn6Tss(NLRC;Q0U48CfAK$?z)@M^+s>e08(CxCK zr}~lt7m_wHg>o#rYH$pFKDtS+2g!8xP&XWd%KBDe%#ZarYgoD%|qwQev+MTo-9aJF=3Eh z3gdi1oKS`4$v%>R&c)xvRPkFT-Y^=!CcWk^RWWa3d?cgvI!5FZLl{wd%;rtZW5y`G zpnna&pfj@crhmo8On$}gCCLoEgrB32(HAr?V|=;ZEcr^$V-|R{^b$9bEzAPX z8jt2{Xe^SIE3G`Cg`Dp3gKZ?6{zUvsi}Wi!Ry5tS(i27w=NZFLtCZos47&6m-!7Ucroa-UW{r~)2;CqsMJ&4UDLe|${ zz^g&=Y^$MLJe%o?(Jh{MdY5~%$AuSrO6ZDt63sW#m7tqRyF8ni0yKvypxNZfMzh&( z(Ay30CU_&BiRUm`q)b#Jms{iYP!|8{n#;W&&7xUHm&uQtbxew$BHZC@*LkARXm^Br z9lamw=ZU?+D8hn>1cyQ6qTyZzk$G+}5M+3Akts(2=nCYT%yIo%$*NWP7D zDA*kedzer-1obc>Y(4H6CIk(32jTu`Fe${nAu5Q`u8DC=sKhre@ttcLb+0JSrECaVf5xsC+0N-b9}V<*?ISa>cmZT%oCqdmssQ4^ zmy2uMXf*C}Md41e2X*OvB%RY0Ns4q8L}=`Bsf-tmbmc`9M5u7ED=#V-kD!Uu6%d{oP%cL8zMI1x#T=FFCw2Ni!Lj|6}~YdlazyI;h9h_6dvvh&*i!z z?pB27LWOK|QQk!7L?c{<^cfN1t_bpAHyM@O5mX!`DYpq0!+H;bD-b5%gi< zPLh*vU(-lDj5dl_bhux5FpU!p#e>5`aDQ?b8jSlxQBV*Ye^jFlPK~3&9q>Bm2B&{` zAQT7((FZ{O>@;8RT<6T>3Qe={wa|Jr6Aui})_J`%8xA04a7`w<2G4M=##6~_(G0y` zMVIPaMOx(y4%K+Ab0d?Du5t#128V8hmpcQ(m*eR)tGFheoj<#PQ2)>%Jlz=x`@#OG z9rp{h;SO>D8W0*tW2Li(W(30XD3oH>LMLm!jggqTSpPZttu4t>G)b;#q87i`S5ub@|SX6PmSl4K(J zGA~1Xx&ArbWAp{-Wypfy=gdp4@eQ?bPYd6sh3`{S-_SL|zM%_(*YMk$(t}r`Yl72* z(;!XL>C=K!NvVAMny$jrXjk)E6TBdJIZZ0M0$(1Sf+v&H(B*hCv>IB*CK=VpFG%Cn z!HZ$vAitpG;HA(~cp3c?D4Ct+mLT6C6IWU!Gp!Xu(>p+p67_>Y_?Xx8z!!mk)BT73M}81EmCyP+@IG`Oen9^?@CiIE zU~0e<_$l)Oy&pI$U|PTwT1}?~%nF#yJEy{v(a8bRNh!?qfU%@00dq*xdAby60yLR^ z0y+nt1Wm%{pcCPV_-xW#W+FNvU_3q+oj{rx@Sp#9W+K>iZm;ks&`Y*Y&}sImbd%9(_Lubc{HEIP;gjuC=q7Vk z&BxG9L8p=y+Q%~!&?)v0=%zp)*hfQ}en1*+A4M9)d&a=y?PGb3=N-f7Mx&$2qwIh1 zS;Oojp^@+?`my#8;X8hR_?>c@By+OL^H`;ogxyd#E z`rSwG^KIVe`_%MbzggCQ+0L@w_nT&&iq5i5vrd6Dokl;!I+-+?Z(q~t_!Qciyk=QP zTPM&=MknDDtP}CE=B8(7V3l%oEHH;Tyi=tT*sGGO$K!W=KY~ZYW6=-r(dIGu zhvaeSIP*s|qv%GN@A-@|4Y2YBHItqJHCI=-9qp9 zPNW}d{=;`De#`eZ-7U_l`A>AW(LYEJeXlb&(A&O0)7^%C_Wcpk^k>qKzCVzD;5|RV z*L|6k^F=2AU^9`-|wOC;UDO)`ThbAHV-oY0{_a~K)?5W-#pknkXF;d z=J(A5c;_H^06M@tgfx*EV(vv6XdX@)!qZKJ`auKe`=P_(ccFLj;b?!jKR%2!g6WU; zGxx=Nq5Vkx%|H6|W%_f?2=hpEB;V#pzE4d@nE&z_!S*kok>)!-f1rQ)-0`^$X?lnL zw$ClnExvtC@8Y*<|K#qm3H>>GKOb z!Z_M^&F44hH~2dJuh2DinvXP&Fb?AiO-JFwp^@k?{5PKubRKE^0RELUlxv2e@8d&_ z@8JW;!_lF7KZI_8aR_OM@rJ1JaN`)}19XV-SMi282JUD4)u$gmm}Usq3}$zY-LK*` z@j5=(_#6B^d=32(|6cq7|AqW3`m6XG&3AO)i9e&4N!QTt@XOFI&`)fB;kw_s+wb@< z&`q|#po5Kr=mwyJjW_8pii3<7@d3txbOSi6<~`^JqJv0djD4AY=s;snx`9wnV|Pf? zo}})^ZlrF!rw82E*o#+R-qD$^JKCMx&G;ps)!En;>I!$G?`7-_eU<(Er3Y%1^rf zkMu@)O?s{T%=Wb+s6W$uD~hV9e#`q_vVEhxWJL89+t=_bx>rgS>6Kzut6-CAR$rnT zSzwdui@#J1kO4NqB4ki~NCwr28~6kx^SNkL&xoJ#StrpmJl9F|U*&Vszsi63N%1uN z5B#t4kMaQjM|p^=mq>#d5%9qpVB`zKPNfGXPp#J;3vqZIPD4YG4VKlLfk`l96dqv zHFS)>(qA)|^t6}Fap*95SlkO;57z`MljoOvJmJHA7#gnxstE59i>@!ynt_zm(t@di^V{z`XU`IWf=-DUqP zs?lHYUFA>wHhP!-HhNpRL%OZ}f&Z%9f^MUKz&G$)N|E>nv{Sr=R*IVM6pJ{?PCjdg zxEvD2#3Rr)v4B(|9w1floCj!1>9&ze#e8-JXo1doq&)7j ziKbL6h6_nqcs`m>lTDKcXQNj*VIlfIJX_3#zk#nP-zeYW-zY!hSILFqRVG)wOm{`O z%v^tkv&v`qS>+;rj=WMl z$1E4m(0!_$Va`Dp*q=c)x&&WPzQ(^mFVKI1exZCt`a<~l(_ zGVwgRT-1D-IE#}k;&e1wTn8-{XONP`3{o;rm_ak2 zZZUbjIE~#5bcW7TNmIGYbej3%YmA&{j@(6JoGgK_6t5C|BZO|U}<)}vc;XTSeyb|3*Ux`*KyGfPG zF1%dX300!I;BEL$rKh+H8Y1pQhl-jH5qolyA$-+RQ!&)u;^Ktd!zK=w|vN zv`8r-6)DAdj#3B}p~Y}MUZ^w|i=ob9A^Ntcd1tXXC+W;*brL(`9m$ zZrqD{X(SpIme7TqusXUJmqZ0#054P)D9QK&Wd**7TwPqmDB^s&h01(p5tPDyKB`d~ zoT8-SOVJeirRY*+Icce~44I`J5jB^^P);KAS&|ro$B<=C z%m1m)1d-gL2lBu%a1!JZgGp|&Cdthc)})D~^N=G&{%1}&kkOd`A(IJ31IbR9|M6I~ z;(=%&jh!X{wxg3dVF)@6w~G#V5{KPlHYr!gpk*qvn7>$X}k8BcOv3n!DVl;k9ddXd0)0jk2 zd?{3s9@D)N9y6l&jOHc$3?0D!Wi_0p!sv* zFHZKH&w3_2#h;R&bK0kRzDs&6JRv<1?xK$cU-1cikMvkDh`u~2|4CZ92Xs%^J`nD( zyNBMRyCeKT`h&aNg&zoi!+(;l<9EAG-(bVK+Sy)Hb2ZV3M)T^If# zUFQk^p}9tPgM3Z6%I<&Y|8%}Wy24$)rMV{j0DniifL}$g(p;js0$)Nqa>DP>xA9BD zH}G3r~11)lInn)7rQ$>)WW>`tSnbv{8l!Cg+#oEJWY&yWt|C()BMM`=#L zN6{vn@C@1c6dv) z4Sh?rrP7+zQfY-ZQd&SQ(N=I%yoIt`XayY;TA;@T&5sGYImt0T>!@%9KSDmnX^-f6 zC+V>83F#AICwf@;68c1_Bpnvckq+~O=V(5r`-J?lu!CJCTB-AP(su5$ljdV#54?+1 zitj*o&}^mI4sS){IpHp}7QR*32G@k+m6}Q-UQ?-$Cy;ju3CuR323@>TgGqquv9Ez@ z)DW(xG{9@4_2_G(wUxT0+DaX~hLQx;M(e-{c#@JY)PX95By^jgd4-VANho6%ImWLN2LP*h?zq3HQhtwb>%D3*N` zs!<#qt5nAoG?rdL6~#+Z6cvwBWJp0(*n`W;3PFXk1R32RXr3jk;3Qdm)_P$bzK)#5 zY1ip_87Wg(OIj-|Lo%4@tgu5)GStX>x zDWv)MQgkWJBAO-eA~b*#rl7(2B4IJ?fCChV5`;UH2t1ISA_Ovv1%J8##h(d;!rA+y z8oA(bB@z!s!|6lOP$i5MsyK0fB?JmZop2x?qD&K;FaZ`|Q4tg)E+~Gufjm_(FcX9-{=?FuQYDMD zf?{P~C0li}!&b$n*cCHsr8lEy#X>SGzIc^vg3OAER3#g5lk&dc%bmsxCUk7Sv`dO-j zr|Cu4kK9Y>#O`hMZJj%kI&zoJG`)mwa2HY=yc61qraetZxIKD{6LvxG;O&LC;NRg} z^6&B=`0w&R_-%3*;WqP@aFgzqe3Q8i{muR+s?mM;Z~0&R9{M-^J@lUZ7wMk-Cw^1D z3*AHigm2?_<;KFFPzT{I`j()12ca=1>A+{T7uwLsOfRl+8$A41%02vd%H4+ELJZ_K#2Cg1AFv;ejuAYDShg}+jje=xxI!}2 zgfx{%jo8J)jnH^8Jc z?g@8idcu9t?o3~J3_1WENYmHQi|f0iV+{TD)EDne?#=Ww^wGT!O>aYgv_DVSoAw>N zzo7%#L4TswcyGhIbiLWV%ae65wBZ?BqWukT>8S(WpWR!AOU8G(>XPvt?)0_sExJp_ zujwus`xq`8FQfeo7icaSFEE#(GhB7ScoDh?e@%bc_zirP^bLH4>1Vh?bDr)rt)^#5 zr+DWX_!QkKV>>>*4b#qWjC9)Ameh`OwlTCdoMd~-c+7Z`O4cs%o}fF1o-}r(X=pfMY=}2u*A#8akHMz;kME{54VZ>#Q$uaKrciBu{3q#Jn^cRb z!>a*T)gaYD>lo^yb@>@thqfM6N7u$QjSP+X*<6=gAFWT?ZLCk)ZEQ^1Wvr$*yGXnE z^9ica*E8%f?m-(Gb{cmXcN=#ydyJKAcfpltrEv?XgxLaDpe0NN+au&kw1TF>SZdsa zmy);XsRG|bEXdJxFc$D)T<;uF`>ZZC(J+6#1CBlig zOsc^oqB2txt;wHHP=lrxR2xo0J#Y9(5V zO%>(}w3exqW~;fBsetmhDu>CVDI=HBl$&$;GYs??X$` zGMZxZCa%v#_nAxdRE(FJE6G{31<-zYA6i1%WG-Y%&@9qsrqEmjZ#Hj0H}K~t6p*)| zTj-)KMeL(3Tj-)Kg=V+Kjh4Vsbdi>5awM#Ii8%&ZtG{oHd9B$)7sJ+V@mS)a5_3GW zpFYMSS!$y3sD$%dVl1(6Ebc*N-sM4SS{jjR;PGf9JOSEou7M`-+Hc;?)9vP-36|aF zUGOea4K|6)E_0%#(!7(d6s;ufGVg`<>diK&l)n<1@1fgCrg(gHmVH=}E2 z*~>LeEX`?~&}eNET_Tf2)0EtlrkSM{e_fOKk&p;AwbX`dF}2|aXf37z+gg@7Oarv3 zr6b-1ZAxljX$Upcuc>3H%awKcF;$mMJ*FXA*V0&T>RIZ;^+~&}_33w88sj_# z_n-~oU387OqMBuwwVM9EYWk1dSel(|cUyNdd!WticUmiK#BF{)J{V4ECq<=js6d>Tj&x)xp!t;g4*IdBfX z$+{gXKy%KP|w2N`S1|!r99<1yW$umc`vSa^Eb}$u8XHv~8r@ zK+fj33}|hrEnB}P+nP_4Prm`m^+Bb2{CjR`1T$*C~ zVmuesx=sA46J_>&q*AnuTx>5vOX&BZ#df!&5RXRP{P_{l4!2{UeLqbkUNaaW9ZzD7)Lz3-yRQ@u-gqM&}q7#RB7LZCOCHEmG+%zDOyRh%bw^cwQnQU;Q9nd z4JOf1Q@>*kJf4wA9!7#=Q4bT#m5s>%=jbfpqFC23ZsIPx%(Bbw&hG5Y&f0qHZcH#x z6ayO*?C!$u?t5%Kc6TQ>HZ}?>26mvLV%`7D{eJKB{-5XlW`xbzBUk=G^OEG{pCfY9 zbK>*qE-&4U&xPjVw_oIfb5r@yTtWeo{HPtyE#yJ-;8t1k;8s}*;8yZ~nbDG!xK)FZ(rC5Z$R@{H`13|*5TKq8%Q=-^78u{@>ug) z*I71`T&Ls4OH3|t zT%F$HYO^kBeO8#^mfux9JxjmoS08^Jx=vQ# zaNX}3d<|FMaLum)=c#XKV7Tgch3qVPmF${d0+c{fmsz;stY17n9BxP@_%$@d``sY9 zf+ld(MdtB-mvLwPF5u2`^?ZTk5?MU{lHVO>m(j~QKgB)e$QvY={O-cfaJT7q&^si_ zBv0XFv^9U?GqfQ++3zvj#?acJ=`&oi-y^h*;W0hgFA2SkCX+n!YimgIOCf0sr}(wx zs5XX{R9izU&ej@kg|;#@!i7_f;AUtz)r@Hud@HmWNi#zPw^caW#Sp2xX7sxF#%N>i zjmB^jDiUpMXhG5(4TYN+nxai{*Nsha*NrW3*NmZhat(Lg*u-$dcms_zTrplVUN>H$ zZa}Bmb&5Joaut7-ONE#xrmnbq2nO#!(lU#u?927tyQ62lOlGRoq2m zJQT0*Icq$}&T~8)&M`Sp#iQqpmq{+6hvDDEz@OOP19jLsfnv)I&Tay zg`n}q>ZY2eTBhn$2vm+;WvFr_HSje^YMRROJTJ%dy$n>tR30u%m4~aKWvMDm%bF@s zRnQuyhV<%a4O|sdFchrssbH$e&WgMyRpix7(+Z|aR4`i6RGF+IRM~XUTus-?xP!bp zRzoY94w(<3!KQsA2hIDaL+F0oK3;+MqsQsTd1XEgA2J_?PvZ8Ok3swJT0cQ{96DjH zES!NW3nz81gsZ@-e`VGQa~0kNDhpMFW9B%fRY>AE{uIX@Lp45RK0*bXj=)FB4&#rS z&q10V#hs^uP3LqvXTHhgCP$t!pJjd?y{Y$LQzLGlMtomqNiVR@n;V(x>1lO(L(>I( zeW*U!1#^8<7#xPHZmJ8_L&M0!Ocy!l1@lF7T~j#8MUrs#gfg$ry&KAE0M|vs;Sf`8 zD&ANdu0s}zuVZQqX<7%@go-yd)~T_n9g}t(*}xRRyb0P)@A1ZmJU$=tSc)KR%4%YI zXuPARSLhFnP4V}jdt^;b_l$SpySOXH+t3~KF8N(!GtSx6)Xa3-m`Ku$B#}J{%&+k5 zN?_fGZ=;Fu4dYEJ(r^>LMV5fSWlV-Ny@h*3MH-TIN;bY>@`fYt8h}4p70mH9vt(bPgPze-&{yy)dJ^tA^$LA&{7HX@zQ?^X zzJ^}YlW;H47u@zQ;8f~0`oj2@&ZDat)X~%ej-*<^ZP7@oEz?L-OR6o} z(bR|D0quxuYl?!R^gS(2t=QR$$9^j&t*I!qm8m^RJ2V__ZEAzI!QC^r!QC^r$K5rD z>&ac*J#%Z*ee-=Z%5>X&*L=@>o4OBOV%J6L63HF>9g@4|c%Idlcy?ce?wBvb@ziDb z1{zP@U>a|}Lft^`n4i*bqjzvO%n49}zUPYhDm$<8+H;l3H7WtUYQ9Bs6ODtfnXjYQ zarK4kxcb5^T$m82Ctf!5=gbBgCl2+vv zwF*>Es0Ig9)!+~`mg&ORv!4-N9CN-&0w1!ZJ zq&8X>t|`<)YvE2>YT-^=>flaT%Ie7p+(}DK;gsbR8Y&#KoUoj<9HUM_d)T#$+Cy?2 zf1KomWjCKg_V9UR7j)dR7v4?ng%6>-sY6V6TlP_h(Bqa%^ke98+#$2OpO5#hBl(OdIb6|cx59WnRS_{DWr~+^iG#^!jX+CQ~stB5s`iE7} zT8KSW$x5Il@kOjf(W2y4(IVDOwnFrc=q7$E-$vUeTUBc{l6BB#TSd4k$5uo)*@{}X zkZrPUu^oV`Sr0%(nN@}ll4)8ESJ7GtJ!q>;FJY~KuZU_~mR^GIQ|rMbW#MwvVM{r< z3TXv27%pcmkCw;PK+B<3=ry6kmKtbHl7?gr*m9+OdfFLMavcD*U$%g4;5PQ zd}+aB`wHoG)-_8Dp|PIUr8gI@;Ij>u8SR#Z- zk{cwE>4>89N$Q21!>v{*P2Q&x6-MV(1l4Cj%+5h zWZoL>qW1*zGhVNr@!Haov<<7Z@XVa7r?=@(&28|Hp~qxxgvaJb@FU!9a}tz{J|cf) zZp%5_2yKNVa|%gYk`(qNGQZ8MZ6fOloP?&p_stKeDANP@Az32+q4@=*=|fy96=iy% z(+l%wCZ9R-iTOG6RP?jnqfC8yzv#K<{IEiSG&ZBztM@Y3c#@ zz;!TngSw+V$a|Pxan6_KSLSY}-XyO`db1~nc?aI@VpzT4ZfI{f+SG-5ZR`SfC5yp# zHT8!y?TQ;fy*BpOslRD7lhGX6%hZqg0Ccq8UmJh%e*KI0)_$Y|Sp!VJjOlv%j{eg) z5dR(ePBzf=-S`duh8t-5W*o$M2AT$$(v4rq-l6Ga-;5bhhMuHBUyVO-Y3Nt>e1hI_ z&GCsEV9?wbCTaN3=x5v~^1)078$KKVF#CdjVe*GxU;Km0Ap3*=%lgc&-(-J`zsdeW zX6C<*e*PwZKiK5|n=}(_z-99PYn)>E%P~_7e*QVgCYa2+8gS!H8Adb7c(U=PA-F-* z5Yt$a38uk(pF{Y52SMYY@#N#s!SGOMD19(G3LZu8hZ{zXLdThA)5oIYaHCAIP%OP4 zZa6xedt*2}f{I0lo5qlgMtj2}Oe4{exbNnXxbNmMxNqj(dh!kT-8{nd!~6q{HGMUI zGk-UKrG7wf*!7BfLz0e9C;4W6&ExD1kGEG)y7?{qntBU=LSIv#n7%f@qduYO=Bxpq zI78NeblfL%8kDB*d1rpl&i6bU-ZS|?rJ?W5Ur0WqDewpLNAx4Er|=QiQ}}}GA*AR@ z4_r^-gSnT`3r#b36M6_eg>FQgEyO@E`koF#M|O7P)uE!o1ux82x}8-Q)>j(464np5UMswV|-(h zCe~2i=W6qQ7Xmf5)`3H*I&cFtlxn~<)LNHnfHt+x<} zk4YF6j@Gj_B58;Q!(rC?XnouTTYcOGTO-^BTbT8t?IIcupC>zS3uez*+Xd3IBwBie z?5yn^bPhgmJA^-iR^rSD(L>}%ne4M2B;CiA$wAv;=m>g*$v*fndrrZJsZ;Px^elRg zMN-PXi{I+I)3M7@!d{kS7fD(66lGqJueB(v3|s;&3m35$qjuYh!Ntjn;)~lW zLYfxGRibv=D(Y0xUYkj6jx1xZz`PP#TkpGVXSmJJaLXLmsWP)OwhCxv`*GVzvdZ|A zOi!Sd?I-D#?I&ziI74N771jyv`3m%4D$Z6_?^W$#_Nurr>Xt1Su4b=?hN0Ey!Dt8^ zLa%_UPKBTqs2XSuzPjopp->&THd+?0Zm&s&qBZQb$Z9~f>?a*{bghLu;V4Uf(s6?9 zq@$+&l;ac{YClGD(s7JB1?^$iE@}_Sar|+T6OP^7`g^z+c0tD-d*R*GUic8Yn>xgF zw__i52;D~QXYJ$nEFX7VB0Gj2#~*SWMh}x;LJv90hzIDU(K7tThu_k=kQ4>1M>;hbiOw-G_bB^<9E%5^VnBy$|9I9~~{TSb; z*5gUy;L}v7{WN@$^eh?=pLU!<&)}}2r_qb_Yfz~DDte9N0oem~Uvyl-T|*z}J=EU9 zeg%J>bpVbO-H!B8A${h$x#iMhua(B>e}n$ z>hfpTXNB2s*~0A&nS_%zB)Mg~&a2sV9;Nl|*KOC}YqH<-kuSI~>LOH{b^5`38~9)H<(2h#L1?k*K>y`$3|+fyb_ zIsS(2HuJmaQ@w{<+w-2%p7(;=r1w~NZSAeC^fZFr&Uz2u25Lig&(_A;8g7k?u(pI+ zp{>bVTkmtud$#+wmewee`y^59iDVwZJ7OfOE!+}~f}2^JQ;C-5a0{|Xd<$zwNYfU$ zPE?|$qfQ;IeVFv&$hOuF%sZid^qy#W%X|7;-hVrgc4l?5zO}s2(q|>2oQg}bJcnMOspP4aXwKQ$8f|@Uc})^c@|ry<%#*kxNnyQ$pQEqgCzhvFjPMkG zMwWtqW_b^3`V9AhiV@!H^xpE5$xn`aWqHT^1Nu|%F~U%;sfKd>^N#c*>w{&e&|gox z(T4~h@dKfOWFIX9g#qvYTsNT~)E^x{K0x@yIX_xHS^5csNj{MbW>0VC-MAv`%^C#v zLkGjXgg#W7xewfztT(=|FdWjfFKz^tW*)B7aA7i&$s9RI7{+`AI$7^&=4=631F~^d zJB)NBYlM(3;E$euHUHsycO*U&NhWrU6fy<;CH;&0YW@xVLI0XZ3V+R`IOj-VlIgcU07%y2nQuCoz%;%bxKuh42@O;w( zco}X1Ec?&r7}GBLn}Gg77i{!!NeSAaj?r-|>^2st5< z+==?bX2?wUN3F1xo*frJSy5*|Zn^_?;;aES$VShO6HtMBLx3%m4HW|HBtd8v*b)$k z2I6K2fw&p`^Q?gZ(}gU0G95QVumsE$W}>!$sls$&hA@?y35{mgC~7pxH2gG@=|U`z zv(Y@>MnThrF>ow32A+t=rmz5eJVN)H&K`bP15&_6~?i19M6VvOvY1_ z&~d^PlF8^`c)TzHoq)>}I02U_a0>3PWw4(7wP^Wxf&arhI!X9#`D@7(_?yZc_}B88 zU7x7Wmfw~?O#YDkwWRSp|IG9K6ZFUO1x};Bz(3G5>Ic&_%U9|L`p04l{J|Mafq!s6 zEE!OSzUQkYot^2t8l^M&MrEMsmR}@4(bw=d%XjoUZlLu$ZlLuSZh-Z*o(#YZw0^S; zvJOHsEd8tltOKq6s6kK{c12TNNc!XZlMJxN@H*Rt*V|~QzqKnILv@9Fp)pi1rZLuT zR4=r@bu_&n+8@`;+8gSv@9Adk&d%<<8+2#VgX)cTxArCJgGRwUtUb}5xRIwS7_L=@1eSv#oOMz1KJxR7?b|&*~oXq4Am4YVQo{>C76W~X- z$LM2R8~bBi8~Za{YpxKqq&2QJ*BJ@$BU@X0TQtSiilnu@6;~k*(Ps3P_%>)OdP}G+ z)P+e)RHI0p+uEbxuDF)=j!;Lq3)}%}$xQ2=$sTbQkyhs_x|SFU)kbSG zsSby-rvV&FHGtcp5olwQ24Y?Igre=laNRYaM~JQP)k*6??csK4IIgZ3Munr*aShQL z{F&9E8Z7O~zJ^$yUY05kS3%2CRp5qbS*ik`6w0Cv#bDi4p_jl{L@SC_sS08xDj2OO zRwJp37KST{mC?$$gRaWBgRW}01Fph)asYSGRY^SLI)ny``&*ZlCKo?zroWt|#f0 zr8BORBqz|y(nWquyLsrO*95x03GZkc*IU0~Ko zJd0j%)f4NJUBK688irnQ)u&%@g^3qA!v)txRv7pES$aGbE?(06CD&coCEQ)Ay%-N) zcHKemqL=CM=neP={VeVZbpt(1T}7|*)ml&4SUUgk3y9!-*)t7GR zdL0)g#gW&S!pQ1N*IW&x255q-E=hfhH?u9B)J*gTT zOjUzJ&|oTrX|PnC3PCGSHCWZ9n(S##Ru`>@50OIAQ1a$zh;+(RlYSCC?(ZGmenH9@a?n$qh^5%|Wa z#^Ln3e4kp6BngKbQVFhxa5K^fG!kwoH9{NVTA>ZmX7tujf~ytUnxqR^7j`$3TH;!x zUG$#ddgf}0Z^LRWJ##(9C!h)XJ^K`GL;Bcto9qsHhkHMnJx|fc^xO2O?0M{Z1U({a zBRz7p<@{}=wo24@laJZFn_n!=v<`tBu$iZjHO=YAxP(wGvz6BG6X2 z)?ySCMRMO2B|dOPh>`dRUYE7rmPsVq5^W|nrxG2_;TB|(_!eSENYfU$PE?|!qfQ;g zK1}*>d|R;t^G;|Vy(c=}^3L*>_ks?jomrj4w~iNjnnZu&=!|~}y(H@_zI3F*skkJ^ zbLa({N}lS7=A50yXz{t@HAytdYxbltPvTuLh4l)4j=qMUIG$25_NVYOvK0I?$9qWA zXSnx{pSYjweg!{ud|*B0h<9Y~9q*_Q&@bli9O+Ox{1g7*_y~W;eT0YFKXA-Yd%EKr z*+B7^uHSJ3#MkT@C=MVSAa=n;Q(eS15zLPF|N6}D!XaISCGzRVpb*0Ckz2IK- z4!CYqFSNfnn%)oXkLxA&hI-RG;JTyTx$V2dJ*eJjcd;)?A2bT?A@)Rj;$FIX;$FJ? z;!=4$Xh|wAl}A+++(UfjdWH5DUy!7_UhtTEfIgu=$G=2h(4RxEpwCR6qZ*~?{L1wj z{(^h%dJnyaKf~{!=ghSJk*o)ge@)xbdrDu(dP+U$?_D2s{z!k%?hmeRc?s zh<4<4q9fdiia|R{T}is2k#HxeGuj#V*wY#J*wYpF*waaR;(3C`z>mltc_P`9OTAi zO+u4N?t5;tCjouqNz~nadXnb_{tD?G=q>yPO~l>y+@%uHE4T;fRsPH?&{dZ9I)2r2 zh8{OE$(n={@4XP&78fa;_ zEL4_W8m$CZqL)U?u_`H*NgC1{LX|kGq3#>usw?$y^^``s)~8?aHd5-7grOI__371> zy7+o%7)h9N(Rb4;JRoy9HP{w;ytzDI%J{vI!a?m z(>k~&RJ^CLPK}jzOxkf|10{la6SSS)<2?_#%^z~h+|j8ivxlAtw5f8(bC0Yk{vOl2 zXjA1Ly{U57(~L7TRhqHxa?eN5BdJ7BbG|JavO zy^r8WxHi5=-nPEm-Xwf7s<}tr6evaK6mL6U4_`Z93g<~Az0LQg^(V{|(IjsVW?#HL z+4aTyne++zMV~%|dy;-+=L7FU^gjIs=|l9P&YyAjy-|vmKk%lq9^jsHju+nNRI2wq zXZsAlN8fWU?a%t?{Q!T!_4Ix4_VT^=zQa97-{U@b)1WkxUcNMMAKwUHANq6eYtj)= zHgzOfHuatN6T4oc@4Q*nY-$>sh8xK&llq5!SS*6|-)Q<*rhmL&sjTXByj`8a#LmvlY8Ke82C5nGZ}w!ccZM%ewUArX znf#x*0@*L%1JxiX3v7pipv-UplkD^$G=T00Wrl+wKj;@{{KdKbpr7zhTy|Uz>Zdmc zf9?;muV@DDr#DvlLH%S;4%NU{{+)>do}=VYW0g6|ckc*x{6J%suikIWzk5e2Bj9x0 zSH8n^D69I3e2g-Z{om;6+>UR#ZQs(<(KqlLdOG?Ieno$dzQ(=r_Eug|+N8HKhI{`d zljq#`TJNFsR$ij7aH-zDN-B?!z9c=B9%x^sr_vqLv?qBVDhk%952U>U^g+8T-PqNQ zbM;U<;QF9_m~|lQj&|gAqnpx;c?YO7tCRB9(?N+LjUn$w^49Z`ccquS+H}B0voo4m zXXT|Ql{}S6XC>7Wt-SC&$0eaJaH*cx&})(y_IIIPd%7q|o)pp~-f>gNyC_{bQ&;|+ z{%9Ap7rj3;fYpT~`YWT!M)UP)I)>hl-XHDHj^QMu;o<0T?t?Mt2>Nhk7`-2=QLN5` zp<&7>++cK=G8-C&&e4;h@Hm{Nqm-fS8G??ZhH#!i_`#^g1L^(vv$dY#8A2bR{PGOo zYyIUJsC@GbBLC*efPZJn7Ic^c(#r^cwyJrF*`TeP#DI&pX^t^sC-qdtPxn zy<%sIPVbq$V*1nbp5z()o_Yp9Mc-3T;V0-5PmJ`GnZLXPU9G9C|6TMx&C>F z`^fs>87lSH({A)3(ntJ2Xdu}~&p>GaJOKBOy`QK7(kD+hsUK;7bO6_Ez3JV!+SB@A zl27azj2ndShicqQ>O-Zu`oMk3dgJ>_!y!%k;)Y9;ag*6S2<{_|VD;gMVPwOlVblm{ z3iDyoIA|O^86F{xgeTxe!r9y-I3}BWoHU*+lRQP&3An$W!R*N-|Mg6PKjS`8pFO`l ze?6JxG`_db+_s-QX=obvz#sfyrhm{h_zU!fp62<%G!6bi@`L^r&45kv4=Mxqo342? z?zhKJHpzalNgmIm#f%Q2k3+{R{Bspd#_}i|uZ-ofH%^%VndJ$TfqXpPPtE~PPz-cG zIXn8>lO39%LAJ<=3CNz^f8~Pjfo7rF2A08iBS=roa zuCHW&&_6CMNppSTlguYRt-RJLo%9patnPG@w`A$mTlfu{PQ8I&p|4!M#Wy5xT;Eu4 za9?p6_ZG+S8E_1r)V|`rv%a~;h{N@?AAPj=9X}EpN%q|}QXBz~z z1rm#UrZkoPGte25#?x?9xyPsBEN&b7Z0w&Z%_Ez~qhc}BnbItH0dA@^7n+LK`h2o^ z(0nOS{vRADFVNY73*fOB$eJ%%c}xb%R(Ybe%E%8S_JlT|WR4#HWfAXy>t$u_?FAifJLr$AHalhB#)O!_2rDz9Uc z(0R&A++1`X$y8+;I*r%GX}m{kI)iTD`fLU~9W|&k=+oFa9iFZjxf(R6Ms=z(i)1S2 znngApT}jPUvNQ8%k3ZLsMs=2Af{dz3U8$^M?hl#OCGbkVh9#&!-pU>;`<<`}wbDgs zmf}Q3)+~;2s=1jsn2Ts`x(iyRI8YaBm9mU8E@P)lU8XFBm*N~u+|*LV&7b=(*<5r9 zZmF^YTA?S4pt;<>T3=4K2>lmbs4S)=c`^JyvPJm+DQh52|A+gJlH@fytxz4TE-0^D5SI(h%buK&!lOJV^`E4ESuf?5 zi!#fD=3!D)u7s<^xeCI$?%T5R4zglgDNvGBA12A!j<4+a&fpkt~h*9D#kGf zrLuB4vb{=WUCZP4DF3i$ud;`1kFo)`j@qE?BH62~=lk5i_qz_-4ecS{jjo3`LL2Gp z(QWWH`fA)JY8$#+IYHlr?#69XwnN+Lt8tsr&DE1+&s3aSOs?MhxXzgj@eOBIAX>~d2cl6?4lB>7c|N1lhrsvF9u z%CJPqa88t$B)WsHP&v_jYAJeNG#@UfnhVOM?@?4QJH0&Wy-ZXp7wT2>=!vTOU>|Oo z&quz@mj|~DT<%+r=7N`!E%)V8SNgX2R??UHZ2Hl8R2w`Smm9M38PTTB_60yT*n$R7 z7Ih29l;-Ox&Dpkcj?!vT-RGs3A}OsFhl-PJ^%Yl(!NqV}eZ|ymzPxG?d{I<$#nh5e zNu5ioJA6lcJA5ViuKyv;%dM&P63qWWi>ODK)l!eLtCm`mv;V6)gU?MtD&CoUGklvmr*N{UV@scm&uyqsb;x79ds#kpBY6ILAxG~gN=f>(a-vi$@Ut=|dEF2Bz3=i;~)rU+v zlSZ)jA=F;22RC3(J@lckz1j|KrzZKLm~~d8@a@%3P-D0=)Cr1!+cIfJ?}WCcM?w*B zCnyrC&l&5}BhfH8jNS~_oC-thsdecgXgyq*dR3`Qg|Vl(+Jd|elNRt}r8)UyrH*=u z9d*&GN{CvUc^&n#atRK_h43AQvYK$a)lsi2m)T#N9*VEbZCjZhidKRv(L>SNa0Pl9 zv?8vOdR(bMX_Mp1b)}42o=F+*X{{eojw|KS3b=CWNu?Z*l9Rk{oa8xP9)A=)svJ=c z>*-=(x`Np+m|s+TvATquAvv{r=U3K3X?eY9pL;2=yB+2rg7+gWgl)Ax*y$3->a09_t7iL z2hehIMfo&4D#~S`a=c=fL5rYe$t%kB;gYyAas}ok(K2!vQ~|B8C#B(FoTe4z((Et6 zz9PKpYrPanNvIUl(r9sck5mFKC0B*_N_(W@yf^G6+b@-3-yUhdRF&y|X*aXI=w9A6 zc1yc(yO`~P4@w7E2YI*JM7A5eUmQ+sd`NRnK#~ovhqAe?84k z4qA^4U}@tkE=aDwC-kIb9r!n~hG@d#pH$&rPG)IhJ%B zYc_7Mp7x^;BN-(Qg@)3{p+n#y^nT(XXfQei9!MW3esc_B&k%7uXB&qO5;Gh_&~J_m z$9VD#$5-eZeomb zeaGKwYW*`w8uXdz7xbfJfc+Ev+3^=1Xdhtz$lrYqBpYo1%)SBk!S=sQ2iyBI8;B0% zZ$xE5W zJPeJ62U&+u8I~dNP_n`Jq1JJbrbBV#sSL|FoyJ*bGnvhiqpV|@k4I)s^U(R^ z^93vC3=Fge&J`AsSVr%%*Gsv*9^pv+#3-C6K0ba7!s$ zz!II72pgDe;K+r-zs#4S8}x1q$iq(s=iw)K|0P|Q%z=8z)PP)2EgHSmAbdUTDjkz@n9 z2>wr4i>}4_0@vbvfg5pZ;37RyalXL+gq(pn(e;87s0R816)Gnb#4alpMB>GJNz_0a zkFy{iZ&t_~Xoqc-9d@HO%FWak=%C!FH?R<0LA^M4pak(B*Vy9-bfQk44Nh33B-F`& z`0}u1o-t0m3w7ZZSY5aURv9aQpBaSNm;7%lX<>RgyvbNz>}yc@Jw_PHIwNi>r`qcI?uY2J{O&bn`xZ|&C>TwwN7K_ zG+vFSF_})yLZ?~hkjzG7;px^H=nR}8Xa>#@GzXU>C{|B$;0!_2t;QfDI?I|pC`XVX zC_80@e%fMrEseGQv}F(S!~2os2+H7f_9w5mKWrH`zo1`m2K5WhjLU#B2YsdgrZNZp zCJ$ng9reRy4$1;$A^FOVKb+?e?*@P1zf_i>zxZrHSy|b5$M{2NP8xxBkkFO zG6jvWr?G3KeFSc#{jY75eH5A{Xc);z`!H%0)Q4TYs6Hga@xw_**n9KN*N1oBUQjox zAJxa+muX*mZ~GuU=}R9@^~DY1y?wZSGJP^Mh_g-B{S^IrV6c4($vCoc&}4fi=U>MZ zcmghya|(T&eLR}UIe|XRJ{CU?9dG~5bw(!VZ>~80I(~DN@&`BGo|z<*Q&T_wsZ>9% zWK3{oXBOCi`|ZdM{dQz=YCQ*;AC$v6K{Ue?M1#)babvlbn!w88oXC~c1aYF6-RaMC zB8flKiQ**kNnF!Sf+th{&dKmhlBwt{c(OPJor0T(PDW?aS2EL*mAXzA=d&hr^jwm8 z;#_Jzw2ECK*Q2XQmf)8_D@7MqsjEZ>>T)j;myx;f%a|@jUG8Oc2QxRdRCKfFUy`}# z65LX81++rn<9172{YqR}OYHVgD?|^RlSDyt!5+7a%D8-}2hB+@#Y{^|>FROkXL&d} zFG)UkUMfFSnq6DC?k`PJ6kil7<=)Dtfzs|x=vJwyyExfad~v45(5+H&`X*-EsABGI ze2&=0=ar)FBIJ3|qGZL~C83fe+nMg5O1gKjYlpNG-N~n%!{`olAN??NgtdcRho$pm z=lMjmPddcp2zs7=Ub>)v!rD(iB*o$5pz~5SK9601&)}*-XW-LlHTeuZPCA7iLgPqI zOV#Bn?5~DalQj;;RpB#WFz&Q;j(z9YUqucj3*~cS7}M%<4Y&@jiW~w}!E3!XStwLn zKBLr!&nR_tK8-uYC)hKr+VWXG&z@1vDj{+`re{g&F+HoCBR|Jy;B$Nm*7U4$o~kFG zhcA$w!(UJmAWbje5|l@{M|@`1^f5hw^d{>($K4=HP;O8+l|-hG;6yZ0d5CMlf2Vi| zKR{ck59v3Q`}jok0m%cUCI4lkh1ycRuOySSBuQ49;aicn;=iD@f?HF`N^7`-p0rlm zz-@3bXlt|sJqGH+YR%plb%4INgW3`5sB=gD%S;mg4W}d8QGMil<9kGZLk(olK=QX_ z1J!6;3>w3^dh4@j`T(W_)xJ<)vbVmzY9F`{?yawn`p(x|?S+d*d*k}3{h|IO?|l8$ z55Awi5Abryb(Iv*MbFM#GlW8s-hCer7lGwG9{vG9Co5;T%Cj-*dQN5CWK z6LFKN5$JGr7<~{r95+J!qYR@)uxGM5g?uQJDR7{7GI^kPsQQx~!_Ys`U z{2S#7?gRQt@5xFM&w(U%J|RtEeZbw((;M{rBuUCW=pH=hwXZYAF$X(Qj{dD{kVAvZ_c$SveZNYfVNt*Lsj zMv-zeCe1jqx!eHP8f~WcdU9P}gX*%ghECzk>N0IDhm+KT!>L+uO*EXU30Fs}%jcw; zBsJxRteUt6IE~Lq_uz(dBUVFM<3@4>bx*nlN63vie`EgqM)ED`rqoEjDMiQ$%Fl=p1|xx(l71pSb76n}_!i=(Wn?qj&B?i%i+B(>Z}cweanS94cIYq_hrgCR|; zk=LY3!Wsp;t1zj;kyYJga5d2?dN1iN!8=+Bc9tP6%c_a{M^E$8i;$FX7lsPc%c6zg zLiD`ug3v!`A@V}*a-5+oTF|{+)LbEYUUva}Ufz`pu(pT=aa+XgVgZt!Vt(Gacfwo6 zE$B{htGF4`bSwD|Y6Yy(W^ogfO&qyJT#eg-ZqoY-aXHr&%h|b_bPa0KyOKl&PUF}#>QS6m1!LKl-S7XRZ6YtV(FTwDr z*6y6}oy2wOB(78g$O5TJ_W#+n{y*}GOah?= z_E>l4lhSNg-W>ocx6}vqg4=#OqWj6)McG|G1|MljOta zg9=SFtUUfG(<5kk_fdKoW)-L-Vg>dbBH4u=#vKul zL&x(~>5-R&v*7RpRIn zl2CUDRU2x`u1mbqH6;nhheJ)=mwEkb>b{6xmcreQ$S&g>F>Q!mmKxE+-3`zXG@PWN z`wFk0m!&IG19xNcD^_=;dn&zvUXZk9M@RX-l#K5PccNZMo#bTc zImr|B1xF<@PnI6z?n@7G_xYY5k~|_y#y^r?Gkc6a*7+Om8%I7Tc_h7ozvEufU!$){ z(n!9+X=oq*#P4V)dYbeF?ko3^HT{lDlRl$;3{p8-9tqM--z0qzY-Q;L)+m7f6xx4PV(c9u<&=_v@ z7`O}79gUHDlJr1Z$xpd9>Pga7*DmyDTru@Td+OYk{ZB}qvAW35xw3kuJZE*`Oi$=9 zNM3LS_gv{Nr$WyaP2Z8cLf^xw%1iVmE)7jZ-_idv(~`gFU#>6T!>P(=Rw`%8Ao;6g zD8J|#T-W|mKCvqe&7gmRK0`m4d_pz)1Apeok=z0!`Px3=zOX(kBjv$*+KWCy{(>J0 z4JG@c43&q#LvWwi`;{6Ze^q+PgGdLXL%5y$(|d8RXni=zSN06Y4Z{yYHSQ-5pwguQ z@IbQu_z;Umeu=B8P3-^T>hqHCduYa=X?9cZS_@2N7K2z zvalzsH?ubj^K@q4Nxsw5mETO$@xMua(|S$8@c_3R*=b=Uk<(gjeF^oGVo&=L&T>ZXvn?w^CgLtszlzu2I#T zg>tI&h3XR0LeO5dFxg(*YIZF_m#ce7*Pv@~g_-SCx0CEack26hsypBvxWYMis6}#a zSGVDcz`LQ{I`3AC<*bymSkB$*I)2a8Mo5+qg&uD^nJJk z)E0EJx{1CH-Hh9!7WHnTwy@`bdXRi0lY?+I?*Z~^-i>M@c5Fh6de^BNm~T`Idkewq zaqIXF*R%F;yKPj9dkeFF1ARSy8Mo~+`g(LJyp+Bk-2nefUx+TjEmghVe<^L^^%nOo zRR70hA&&s9d%Rxn|ImMNi&dX@F^@1GiR|^DKCkSRAWda*l@ef$B(Ix^o8vuRD^5k- zdgm{Icn$=x(@JV%sW?A9%}h6v1b7XQfo?-{z&Yrdz1bmt!6Pm+&*$vaWH~!~a(II{ zn+?tGohIi%C(G01Ao6MQL})Uv9uv_~=p^!K@-lcFZlXMu`8afF4L0<@GP9B zQ{@TlAIrW`yaH)`Jjpm{Jkts27&)tFEIeMG4QKOY^^D+TI{+Sff0?S<>bzCQ3k_W<`BsiWQpx;w&;a7ol7DVq5JcQku@ zleA;{5KWQ>Kpo)r?so3Bu%;d8QBZrdE&ZX?S?Bid&hP`=1FqgWGwtl|#OlnoVl#F| zp;3C$*d4)@WrUu0a!0Z{;p*vW2)zMGgu6aepB{;Z!C~|ecU`C+8b%)GZq7L)(Yo%d zqUOTrA?`Z(5Uzmhur7&pahJraVjYs}Vr{OHufvzcOXzj+vKS9(dYSwhbsW|xUcAWU zB1c{lPvNei7xjKzJjONrF?OCJjbmNI?bp*?^g|@a#Dma5dK`KHK0x0k?t}KD2gnbI zr#V9$x=*a=)Z793E^#k@7oR}(vdTI4;mSEHI`@)PcJAR*N@cjbvm9F4S>9O|(zHBz zCF&noqq5F2Ov-R%IcE`ECA5s*|8W-NGgLu#79lOls)Wm>rwTnUNkL~GC=b0Tnj6kd zSDZPaTxf3c+|FX0p(vWux!$h1+;qk1!z+9O^s)Z4=fwSIUvKx3Y_zLEKAT#oF&K>G=sz* zG@Vc5cK)``&fnL~zz3p%L6#svPx)(Ex_}SlZ}$ZD3H$?G7C1mBo6i2Y?EGz_)~%e` z9}Pf_K_+SzzrN5v$V}#sHwQT(P0hI6?6$(WQ4v3jkL@NXcTgTCOZn>a1UYa{)Jg8e z=Z3xLGQPh&LI0x5?A{y%oNLHik;g$AP=qlW1bS1iuet?;l9ME;8eG6+PM{gq8Y~Ms}fex~( z7>}fbB)jpup#%2fJiZRvi=f4wyX||)isSb(-Gdf)?xh!DR)X4NFTtK&B%9FPxIOm$ z(0+YS31>+jwom{g`Xr(FP$?pdg~4vPDHj#l6?}-240g&U>EsJ?Dmzkc76{ zj@FClWse|hd$P;;_DtKMmp$6kFEUG{+F29XX-ndd2I1OSL!c0OC($E`=Zz$ujgr{D zLWNkbz^Nq3Xc~OQ<0^U;mw{eEQ|SfFq@+OBD;~EvSGf8nNruNw>K0VURu7&@3rVu^ z*-(K;B+svf9^KGLTee3oStLG}X$~4`%cXZ?)|1Nd=*iAKlACBYF2^Gu%9nR~+M;;g zj^Z^TidPd!d)j(Y`5wLC-eghu-nJo-q`h%NczufI6>2;*1V0oWf)0iAJqFWPw(evmf_*ba3G0gVd;~D&nY%tfyP|rMKxaAmIEE>z}VGK#B zN33luJQ5v88ePzo1&wOyX`| z!82* zOQ8RT%R1M~?2h||_nrKe(9XXc7T$%Hby}Qj9UGZiNH#LHIIZMX-v3%*4{D>s11?8m zL!GdP(-ZZ?l}A0$a`ZaPq@)g7hj-^r*uzdkL{qRlEW+cs=r}>@e zl=o?GKW7V)(ZX_S@R^1dbS zUi40Y5@b%`cRGK5`%6F*yj%Ko@M%f!K;35NHhD*~+un(|Bs7WJN|R@a^jl1Cd#6L` zWF39dy>Gxba2BVRcoI`(vdrak^+1~f)nP@gH$Gfld9+kt+ zWA7*AcbPna$2cF8k8$4h?#0GEw68PM`wsKF-o2f@;4EAwUtt#K0pGW~-u<1u*}p^2 z!e8fmd!3$zUW2dEv(P(mGCdJZ!CmtXbtY5NB-Gj8ndp6$Ng|H`sdsROIbUzY*XA`IiJrHdSH>UeK8$ylH#^jBit+|Cjw4pQ3A-TqMUuOfnFF%(JI42zq zaVH&djs_%W9rgKHJqw?5oJ7w$PB~6MlAa&^FE_(re^NXdBY2&{eWF&Z~|q@D*GDdu^#Jj<)P4lEtG*xGRnnD1{_|jUc{D zL45Cn;C57sqaECdBp3~a+d12#?Q!8~JG2wMA2TWGhxX%<5em0+MsV738&M?voKZaH z`lG$*Vfb(~iXH|hOp7&ECyl8t6V(lPV_P$W8< z-rd(HI0wQ5&~DCbhva(DW4VRVCVq&)19;6InEjA4Ci#`G-wVwoj#SBluSjZI%ndh zF`Lbq!&f(!Y#KTZKZ)s7coI6vIR!V5ngUNo=TVcHPQ*__CzDKe&UenG&&PjpNNzHH zF8w#^i$h;d>iTkX@e9~o;9SUA;9NxM$}J)l%PoM#aymBku9jr|w0HTHGzdi$T~pY}EO z)zEr$4Sf|eDOn}!di!6T_4bAK-$_=ZtMRMsYuVaGt+j8YueC3yRxw?UZiH7tE9L1* z`wDmkZX^0X&I-HPYq@9arr%ee9UM{GM*H7CIn~Rs=^~3g){+*eWe8>IZ z8Wl(IdSiP}@&o;0Q?aAqr`VlRc)hoMVe*CKyG=u;;OE`lOXKy$_Ki$~|HkwyP6K_l zsmVm@t4(B6^m65hUMoGn*gi9TkA7kD)i%ph^qS?l((^O))wTkf<+%i1;W?MSf_ys3 zTxg!>C-^hhe&XsCq%+A@pi|-L=uG-2+YERbPSWX~Gf3v3)2KO~?`4Ty|KM!_Kfr+I*Rq727PCO5hA zmLnCHiQbfZw&RYYoAVBvUD0mNEM|9@W;(J+?!sBrT{subqH^H~TmG5a+?vf+O zev!Jw&J9O8n$A~{4oBK=kVo3n9TE1MWD$Jd(n-6bUF{L}a3~UupocM&k}z2#?L9b= z_8@yONjMsg53_e;Ybe!?BorSCh1sLXx^W*3g+lFJ;3%pK+!>9cIx~&3_o6zZq4rMn zU^Eoh*`8tRL`gfn?7h+6Jc4?|4{g23AKH4`3v7MJ3V7W1CM`q@Z3VV`=pkA_&toPf zd9psVJ>WdFW!N%F^3i;Jp6xzcZ>jqv+4yWI&sI!!pP!MpP_``>E~awf9JH9qVOnf^ zOy!{2wtMtUG#i&=>+5-sl6D^3o}f?o34Q{P@qA1^#`B47xaU){;hv-5F`gsP5uU?6 zW1%tVaC$5>nlr|;FC0S_!}f5`XxwNtMovePMSBjx4e=a_&c=^K=g_C2v&n~%jK$4H zr_#qkBhise#=_&+848c1hQfolpgIl2tO7#0eWm5jC*V? zu}&cQW*yJQH|tnt6WN)>#~cey;z-Z1lRT%$&$lz_lRPJ*^Qg)2M06fCpJ(ZL=tR#i zR>@7K&!zuH{+s6lYQCr5V?L?g<2O&yV*#1yp@a1vuBfYr=%Io1s7O~clM=P8dJi{_ z-s6k)yH!p4-KxQ>J+y4uDXm8ty4FKUshKL#GO$1*$Wy^X1*>pnP$Ng>vCyLQP|y{S zimMcCC_Ls{7FxbrT_6`&(%&reE%T_~EG{04(RtKjc7C$u;_=hEm}IeKk!31#g# zlI#{+Cb9E_t?yPhj~~!m_$NBa@`L0v^~L&`{2kd3=$-WqBTmpZ! zmQp3wr*eO4eFT-DCDz9zPpuEFMd%~+p}h0Z`T%}_d%^rA^#FZAy+U8{*}WtgVtHj9 zZ+VRy&v)Y$*%Zr5(kbu+%XoB(WrAfKBZnMyFCUIMXdc*-@5}WHIO{ z{AkM?_vw^Sb|gC5qADwtedGQEuPXbVt|EWw{>J@1^uc`uJd$fiaJ7oP*X|$4U%S6x z<0bl%(?GOHW)h+DGm~ECbq+&6CF<_kjY&7I@8KDS>xp)gdtc99yr%SGGmJEf)05;b$vs|o z?()hLh3`$$n;r%Ahx^krZFiX8Mf;QY_w2_lM4@+Vp|b1m8Olx;^Gse5vpCn_J7}n9 z7RgO21I@BsC(DAa+fpD&uj5jw3|OKRTQZYmuDoVT#HFIia?h~c;5GdQn~9`poK%vI zB%OHO@5n2E8a|yQot_5WhHuk@?H!nRL~oPdw%y_u($Eg}1lirTC9o61JeYSRA)Jl2_7;$&t#AQU5G+v(yFU|uu54-d!v&!Jau2e%<~>zwHvLEg zIRPXWNG|fe>jLk*0`YA~+Ry``_HcW8yyHCc3ut@z9Q_>sO!hqc?d|QjwLtW|qY>^r zc_UnVdn5Z1=s*5h?h&#B=ut;I(uVc}j>EVkj{3O6=n;o6RNwB)OiCKS^>C8bw>Mz_ z5LX=FpAbvE3CUro3DXAlCia7l?YMeSWB6a(LH-Hyzhsrk4&f^^X=1Nz-v?BML-pFM9P+lFqFlf8~zj!Mp5Qc?sIG=`4iqu{Ryu@H&biiRp=`I z(8(H-HI9GS-;DkPTkV_ZTS&I>x&MQ&YTrVaw1RyrSp~lKE%=IPMSBH%d8jH{fnEi& z!c`$3_N1u~>SM2jYfM$L+i>O4^6WVAKClz5&b$)zD_WiU74}A}Q{Hen)P_1qyzMpY z)!46&R+qURt{V4pJ)F0Fo2?w>O;VezHje~fxQ4wZTo+f(UJI&*mwFwt+E5*PQ)YG1 zx-z%J`SIv$%Bf>-1~)}(*^k;JSBLILZ%*EvpNZ!1Wm_}S%eLnB^EQ97^ZX<>C%u4P zu${M^gD#`z>G8~@Bwp6bwo9DLwxhP=B>@w)x1c!N zSvZM03!g!gs54BHY*(l=Xq@dd{WuzjJ7a6%d76@TuGp@kS9wml3U~3mLf*yms;z@( zGFbvpdIMJ%%mh()-Il%IbA$kcm|M!pdt8R&rWRhqdJiU;e()H z&v3F%JnQy@f;`*9;Z%FL9U4xxV;b%mLA67JJloO(&>&np&lGE0O4^C=?22~fHK8k< zYmFe!wRZKqW9>$EhgYSpq<7J~);rcLC>Om$&txVgnP?`jSlMu{HHVXHO|fQ>WTLm} z8N5>7wx;5<&y-6C<0H4Tp7RX5d|4yD64$!|cZ%%tAc5@88rL(*>a zaHuO9Mo+g!%G}iw3E#j4lZSI6Ej{3H^oBJ^c9E7KODMMxMjncWTDst(s4j44G>YoX zv=crQ?M%|y(u?;AQD`SihP&iC(|gi;llSKROK79c?uBTf zdx3jC^bjqe=R*%T58X51JhD8t3*0kt570b0y-$|uo{h_PzmLAf-$&okOVPLFxg?Kp zZ_yX@V(314pUES*n4KKBn970gp_ynlNsjwtc8bw^?tRUY%b{nw-^D+|J%M_e@8Nox z`GfWr_Q9`Q7GgdWrip^aJ$_eu{peKJp&*1Nzi` zlv#4m=#wp(>#fq%5)Ms51s-|k*8D4li|s@dFXu3Wb+r( zB=bc2L})TsO=M%D`J?HJX{>nyGy#_Mlj)=B1NF%?!Tb&VKz(CpJhKVtHc(lYcj$|Y?3LR%2Mm7!_W*!1bIt&*>je;c_Vjj$7 zFjo#WN8@79!EzsE9&Uc>KAg=b=u`JtX2Y4rm}5ysz_HW_cnlg#jX}qlN3#=)j)wcf zqs;@TzUDr1?_=%>^+o%ddy(`pN1D5%J<&*cC(_&l?tzPDK9K5xMpJ{(L40-tNwQ6Y z%#TfjagX_K3?h4O8c6yaeqwrzJ~urv6+@CfA%Dc)WB8G*&rQ!b&rR8;Jd$Fx82`xh zl&!DSQ<5Tl5%kDZO7@g{;VV>RdI*rTV?%8hKds(D+O<{0% za~Rdr+?Abf=v^jZ^lt3jHRYPRnsez{P!6}5g?2SZkcFXL%{k;LrU-KiJ(XD+c{r0a zIGIX8!_DnTBG443{g{WF+vCE_QMfQZb`+;4kH&CwCnn*fok)6_dzSRl9Z5RzO4N~8oiuzpNjg0Z zx((l^2U|KY?}*+ezwLgDTS!AYSQ2D++dYAu5az+W3Wji6!X3~A_Yjh{R1g|sX+;(S zwX(E;ByELjVe!ZLv)vMIYYE`AI^$q+^?cn`QBfJyO^(#cQIde?_f?Q>%hH# zm9!(;(cHlt0(C(<(1V#tNiZ7BBO?^;aqpT{)x zqAAEIxl8m^dOCSJ&lBlzr11u6q%qwTVZ2EeVeAe^8oQ!hjSl+Vg1VvInDm6B*y#*M zQJvvVXfPT|(%IOHohY=EF~cCa&h%hoM|@9QZ|H`h6Yho~!_b@Lp`jNW4-Gw;^+=u^!ISR_-@=K>#x5<+8^$%?}hf) z_tr;2lJ+L=$zCtGr>y<;{W$&gq53eAC^QP+Q{RWJ(NrIj?)dIdPyGP0KHLkVq3-%f zcmNd%_do|wJ(v#A52Sja(bOQ$K>c%FcYQaqFtj_qhdx_3kb17`hW5}ugR*tS=rdg& z{TcZkk~}D1*A?!@wOzUT8RLAiFnt79cSR)* zr-$)%NXINXT}MZ@*&NF&e`@=p5pB<*oQXeYECJs1jwJ3&GEwq$MDZl@2x1*2`{ z9;)vE2kS#P!Emyn16L(;?@0G-GWT8xX-9n`oMK3%QVmzxNk%&|Nu(#U(^20=f7Q^1 z9s+gdHbc;>hAU)==v6~!@)r6lh8FYyW`X2MOaftlss);4I74y;ZNc;w^CZJrT%sWj zm&nIXoYGL$e;?MOhjefWQ)L-sF z#@5D*rq*owkp^-CNG_0Ez;qZo3?CssZaM)sFxEGofKO6!=wVY6V*_J7Qb`*an;3n$vOesK z`WhSJ+EERS)o}HUO>qtRirPW7Az$*^Xj8Z@RF~cqtpnGg`{9~Vb8~n-6bMH4Ny?|aYoHv|g!%&?V?JljEpFE%Xv!GMs>$@#sEoI0c=8 zPm`a7jx&>bbA2s!GmalYhDIj!_9;il+GLv7i$(%05E z;uieK8=;N#O>lu!6Sy%NNHu2K5Z?%GOww52nxDr&w4pvuC%MM-0D2qpHat(Xfv@XY zlU~=g(O=QECA*?afv@YXqE~fSbV<;4^a?!*y2iP#i-Qx%64}0@i^p9<6Xi6SEMAv@ zOVA~wIrwBWm!5^@kY6TA#pR%x^fV|LO=gk`r?GPhPNOct7twe$f#j0z20Ll!MO~0q za+m1wx(oPJTsqWRdlA=K8>CGqiPYX;BT}2n>?S)Ie9TlRgCjkUXXtLr&+7N+8M<3& zK6MMeiRM!UycXo6H+9{$lDkFEqZg7F>h4nox?$P^(qY;{-9YVqvVqzm@G$KlbdYwS zb^tUC9Y~L6CMD6b4$}_h4AXYk_9PjA4!}oi2eUPq8mx__57zdjqM7zZW8wZ#e|g$p z+Yj!Ci$#ZX`e}>AzS=(YK2Sfd>cd7KZGl)M_SE)K1B1WhwSuX z)*F3D@=$yrX3`&sy|fv!dnjhG6UDqIpKBDSGu#W!5Ti)CQQgrfZ5OgAsEalflC%ph zjOq?c6sqmSq!U+m)&}Fk&`xsiu8q*%)J3qFj^5OTGmBsvrVS_Q3Wrl&;Yc)`ibNx| zJ=h6Hd%!_(4{Zn)q-`trw%PzF2o2JmAxBqs;sxgTb$csf|y8> zhNj_D#hYwBpl*_+;8UPfF^lXb_re1xMZ6AYQP<&XXcl#iX_k10x`t*_cR6>&{+bjq znJf`a!Cw5v*bfTTM4|mOVf23F9Z15UaLrXXnQO0dbwAQhWc|=!xC7dW zepT!Uhu|dbpy^1`1r4FPXcEOMTzwUlIEkLf*D3WDOq1Y?R05hLo*})0wjjSKo+UYp zi$gD>XXx=z0(=pQ6Hk+!X8VkI92bwCmV1JD9*!5!apGZr?Rl>9=iZU-S%2=mbEFqU zKe&a~j|$K>XU8ACz{HR4&&~z$ve;aEnSKts#BH8Kn`@hq`Jv6Vm&lKb&9q19$C;fV zZ_4BZe1tlRHr3W4X@(wU+KzcsZC#w7HW25>#}4EK@MvtRZOEi4X+x6M+BVt?x;FGc zs6E`C9tgFA&*S3J3%YhBjkM==jpRuqu8r57V-nBvvef@$at=L@yQVu$#i8eP$H>k> z$8<*_Nsr-3ARbLsBv?{K$z7nny+g0FN`f8k7T;W4j8Lf=3q~FCy@zGa=D#De>tLdx5 zyLG#C)!`acZM33(zizi~C#j^nb^CQYxN;Y~1Kpw9gF8d*(QU%*)E&g_;VU`=ZG(1@ zZ$l5l|3d%L52D-Q?eqhCp0FyH&ba1-qz@+R8D zy87B9Wc9iC50f@P8))lm>p@M>`gC7rQsRsH^2lfeH_(XoUh^(uv zhOdX#rdNX+L$#PxLnS&YO59jm9X`aPyPCEpR1>a6UIVJeOzMZlL*fB8Bt1eu2pvWb z&}(Xs$$VHm2G_vtAV0`CCjJK>L~Cfb$?llAP29^Z93bC|?iKgrPEh;dedq~lAJaYf zz34uYed0-e9#5cq#M&Ck?V}&3pCUiS^Ta8*mF6UAE6pjfndUTEGffM)m8Ln`T+>X` z6l#Swqc??Ga$0F>!+vCbY&X;R;##79a_Ud!t7(L5r13{Pq2Wbt_uOo+OiYG#|(giIMVZYkfy!-tlo(pq-lqSQ|;ikXgC$YYe6{LR+Az~t{pv$ z-j%$orW+NZ$rU0Om$&txVgnX={zIh=EJw4+w%0ba0|YL%SQ`1w}kGh4B;mICUlFdZnAMx zh){J`r3&d#IxJ~dRfH;>>Z(c?BGGUvlARmO($PqgNL3G2FujNBh7csXNL3I!Y0Ojk zT+=w0;2UU=DvczWN z3Y%@vwwfenSC}RWNhDX{B?EPr;5hi2aE^)-PRsqYa2$$5-^Ox`&r{0IMsi)VhG`VWn#E}$3q?9P)kQe6;Qt1jYN^WC^W)?RgqgBGdqDlMRH1>o>H8J&yt*g&M5p;&Dd&=O75&;r=po^r##uI*rC`; z?PRAZb3eW|sn=oN6m6#3%51x08(Z5IwMgrzYN@u9HC5GRzK!%>xFN17*EUquCasIs zmAMwK9p5`CZ>aL+G{jZoHfp1_@in=%T5wIWnyP>0kM*x&x1y$MH@CbE+6C9ZRYPm4 zc9E=B)KIOKC#w~!6w9d9Osg|r2CYymCtJaeH(S-w8me-t6->(Ey;aMZtyDNj%BdWx zmGb^d#h)a9k}rqWz;@gkcou(A)hs!irI@LhO3hN(m^%314?DQssrc!NX-uZGX=HaA zG(+J9+u89#r{U+2&r!@)=v6bA>s52e465l|tw#+i16LYVdX*a!E#08f!g^I1$O!Wf zmpMk2iCZ+$`JeKrEU<;H#r;BAP%l*#x()ThSyWcYO4s7dz)@>c|+-sBaSlqan~!XHiLJN_%(iB^Iu(VeId+?ZYst&Xdtsti?@ zCzZLjnyMbY8uz`_n=q+|Hb#9_^{GZ^Jyip;dQbz^VWEkv4RA+<`pgfbM}#B%6id$l zNBAi}EF5C%kWiVc4&aUm2dJayA>0AzIJBMl0q6whIL|5vgoC69$q$j76ix{ZG^gbJ zgm8xG8D=L)&yt^|pMcK5^>Myv1I-zdy+VD>Uiv|1d#JsrucjVzUtV$RX%6E5W%@54 zXB)Z)-A>;I?cnU;ifzJHvaNi6l2+h*vWdP;*hK9RwvcRvw~%cSD)K$tB2?wR*dqKx z--JqJytRW}WG}SrPNOqI#;oaA6-f30G*CeS)uMX9P>(YI2b*Q@N4sjQ|yV1JvPWles z?MdA!&+GCR^6eD=hu?)t{GYg$+J^2F|0dfB{Vi^UB>fw=QQUyr!1n*(t>PxmR<2k} zwh`Tk-yqt#<+b8^Xg$1ve3Q5t=C9DxY=-}#wxR3AUo{Sm7pbHU&9538SK474YSWa% z)uGC1e!+QZ%HzuMHP(TAs0tb@-p165mWMqdPkMQc2h;Mf2Z;y00=iMKYAkdM+V{}R@dtcA*I{)X34 zf5Yy$U(m9eb@>0WvkrCFERo&c!V;$Z?|wAPNSDLjxL^1Ry{TViCo*-{h+JXD8<@M| z%#f=_14-(N(`eKYWiPd8M5`_UwrS^qU%L18*cDA z++X4!%-5lRiN8aCpl;09iA%|r;3WM6w^rQF6>GU)rM`+}9khz+QgpNUFK!964Bmp< z%>BKEY&F?-{AwnvP>1$ka))*cbBETBvujr~cWD0+`NQn!Hql1z;D62Nz?b8<6>ol% z@upWtYiONh-b~9u)wRFEPU=^<66&NX!Hv|Q$Qwe9oNnBZ5f!_fu$cc}( zJjaJ*3&~b~Pu#+9iskVYNh;FILsj9bbQ`V;RTbT$`-f~3xZ-k@C}e?M1? zD@3hUkJpnJw9EM(uMqXxmFRM6CHyD4oca@X!)Z}Hn}3RH#0BgxN0-aI1h;^DdiM7e>39^n@i^2% zI=m6qp^L;HYRQ>2Khz7w>0Gx6m3WOfmzswz6lahvgl34-AW3K7rioK=Q`w#l&lP8K z=5obEvT5iv{8aI)`iFX=I0c#lPbHrz&Vs+Gzp7`!v#ELL6wyWVP5p&b(r;=P&1bIs z3V%jFtH0xne3swUuW?`0N&Z8DEorf-me}jILr@smF;rY1b z=n9_4mZS58xwx6=Jdzc{N^~X9iz|7Jmb5JI%FI+*)k?t=HB+AO3Y;18;Jus~UBQ>< ziO#2cKpNFtXuhDu>DbZn{?UU}4SAq*1r<&Qxv1vAbNL+R@LA~aKb1PlP4z?R!u*Hw zCtU$)U^S$GRPc8upOrt93e{)$hf>Kz1uIlaj!GqP%iJ_9s9a%J`e(L85?6GNFq>>9 zI!6#mJ}74kACyuui)<#}U#X8Ln}yEC{UJ=HrlGTh31qXN3Bou?(h0bU)HGP4al%+8 zW4V63FcLQr9V_=~!ekyHli3_eI*BupU-9!2kX98JPcA(=v-1kHeF&?iCDxoQ&n zPW_hbHTq6Hojg`}tB$3=R=**8tA31ogTCc9f0DiCQT~&1(MawIlQ;Mm=nLFW@=~-E zSIq1Q`b6eOxJTU9W0Du@r<@mT-6tzXi}8=tL;2|U)eoVE@FVi4>JoUEFjOdkpHZdg zL-hz@m@tG?(qX~~VK7$?g$JX9g&5p)Dn{so8zPLt#qjk`hXz1{$p@gL;6czJ`Y3cD zJdi#TH<}uV4iKX0eb528fkLq|ni|N?XkiRGhI?ZS{7E^Q{F8Ew@K!mN?5*+x{7Lx^ zeW!e@d;@(#-_l<*lakl6eo}tqd{P!GpOU;m-{4;>-?Jt1czRD#iZ6v;E5DGv=MgKa zzL2~k`$D~fU!q^AmrTDXzfv#JQsoQ!Q?wNKQrTVcf|7Q=D!-xMc+`J`M<~9Mk5GJ5 z4pm6W2*ogXm}0162s8p6N*@9Z=ZsKvhX<1lhq@`ksP6b!lJDF?EF6P=SH>!SDrZA6 z3O9ZpWBGk?4$e&#OAq6k2tJ<(dN?jZ@f?1^XZxJbHyq!Uq$@ofii9KS;ZP67Q{^+Z zo}-eBR0JxXDFfw6pdvuwPX)45!u%=UO{o_!FF~Iv{h75?v|y{HB9F8{nWtXOtYuMX9Lui@&zUW#iK z3M&&2HqW!mA1_vTDpKHU?4+Ppyo21qUlMs%>B;=8(m@u_A4B$nJ)n55Jg+>fJj3KP zJzjYlKC3(jormM0bI=8D@dEuEng}P-Pvb69iD-)Q4m}x7!6hn_pd|WfTmpFpJ^{W& zC7~J0yCiqeB&Ij<8OqzZWMvvInXfR7lgf87LwSoy2I(!58_IOPHZD_{1!c*TEUvw$EW+R8o|gI(CPnCD^uF=|Rg6Xp59meEL-Zl@{v^>tf8iln zf8hyPADoo*!}UQW%3`yR&==|_MBw_O{e&n@>ML|5>jHnLb6g3p3eU;%$zI~~ndG6v#8>3Q#OKV1i9>Ni z#eC+&#AoUlF$OJF4<;Wb4yIzDUd&^}QuT0g2t1U02pY?5I2;2_hDz0wDHqKYoQq~6 zIz^mBKACrtlh8@x2wW^Rf@D5^BJVGyK9(ew8Vk=yW2uqcax6Mu94EW6^jYF>`1z>B zbLg{pKRQSJ=K7ngb8z2Wzv8~Sj$``Gb+-83^*cIG{7nAM^)n?U^TeO7ZrY#p&$u6) z@2)>xbtG>5zM$j%{tvthb5`LtQ~&V0*k*J!{3rA$eKooP-ay}^+Xrn%H^4jTJNfsB``Fo_Tg&aQ zM)&D9;`Whm#BD$;=r`gj>MQVXAbrq^`n9Bg!R2uk^d8L1qZRZP$OHY0d3im58HC=7 zlhgy}qp!miKK$EFsh1-u50zu;iB{Lw#aSU6ToYHFf9qM3jK3HTtxLB-PW^5}UGm+A zn#^|_cHwpzoXmF{YUuYE_Mo-(JIHq%c2H7MTfdM0wrL;z1bWi2muw%?J`n87j`1K?k3|@SX z?fUfw2kJ#R;9pTM>R0$L+*))!o4@M4^}n$1g?h*kZJKsDOs_}@r=!_7l~N9WV$GLw?Ia{jw+0q1wFo=Gwf zorj;xuUZ;@x;0vrcBXC)eh$f8osvw&Gk`*?)XvfIOBr3I6<}9XNx3prYDL%;ouix0 zWF|UCCz5<{ovr)eD(#5cFFZSa;aTbn{GR&Y`W}8s@)aE?e!;&Yd4(%Q-=i<-FPKTm z3ps!9`kM3J^@HnEl2Wu3|H5@N&zU2s(c)9r=lJI&FI-2Fjpmtlq&P}^?m7k@MU8Oh<|1sR`&{Y6#P3%%7sqUB{CT5TCgYpbudhO$|VYP`%OKykbP5(P%Gv6x4?k z%~q7yldLDNF1^HVxISo4In9w@t@715>TY5rS)`bw?kQ&T3YMde6m!vRDiNIr^F^zsxeVgnyueq6UfjR?@?OdJ7>Wy@XISl=l;%yrYn`mk>;a zprJw=vQVgv5C}=y1{Wv<-~xF6A?YRFvjvj2dk8&^b7tl+WQnHuq{KM8>bf0pQ@+Ff^_y|+*>%`<$ub2Im>s+bGb+5yKG?kw{iouNqG;S9lA}qn`9Tdj_FqX zHs!y#4a&{94Sa>0Ih*({Zc}b&vW;{*$v?_1e8;!YH={e?9rVrUR`?`+54sn(L%9>$ zDNlBC?H=V({2m?wQa{DyD0&h-qWq6KfgV*JBRdKmQ`Qwu$$AXuEBwd2F6t}P73wgl zBkW|e7S30wMI!YR%KH2a)Th_N)#Lc$T2L+d32K4XgBw5%==D%P*pKcnbbwl*e&l{a zLvFJk+CgY4J3qR=5QO*VXEKP>5$=FCh1&}4s1P(rXipXdwHGd{JIdM~m#A*X{4$!T zzO25)Wd^&4-u~L9CU@Af!-d1dn?+*9iS-m?Ng6|-cSplW!o*JO zhoA$+aM^{?yNP}A-FUU=%NYa@M8n}eVn1pC+E?sP))(q8=DH4&wLdP;wIB0bG|x5H zHHS%#YdD+taCxrxNTfbMEa0`RfPN2`&&k7;P|tWhEkX0)La30Qk3NDQ(Vx10gi6py ztMVJpC-@^;48L}LOMO7!xV|HM1HE${qx&T5JKR{^ zTjpcXvAQw3(M(3`irE~A8><^hBJ~fh<9UZMo<0&cjx!cFi<-^*nOW#KcmgzmJ`SA< zPo>Y){Q=EFr;<pwr+5x<%9ybfIoB*+OWs zPS7uvbumt@U&LHM)p|j%VxrPdV^e`s>-mo)UA8g%sRahcGK(0jd~@j z*q~>=*kB_2-QdQpEk=Jg{LXvYKX?cH2YrEIF@7EV7w@arp-b?87#5&Q@Jrz()KYjA zx`bNA=63u#bQQ@e!!q`lpxX_rWw(mH*034BmUrr#Isd}j(be!K!#~tEbhBX#*=A^q z!D0MY)-AYl#($VQ&~iqH(aywfT+OBpSI%f7k@_}+H@|gw(``8Z=Z>hiu{u?Q-(RYu zPWV^oSGp6e1XrS0Gd6~*qm|%#^m_bhoW|@_GWu})PPDPHGOjUsWn3lnkf}26u;~zg zj^_Y+*yKZ60X~R3WZKUBAbQBO721wgV1Cf_FWEMnq}y=^OlP>_0DneE>U&5ILVKA0 zi=Hr@#chLjz^8C0__IT&$o7(*!S7|V2W?UgizVCru5_4beE0 zFL?vAFC`^$rpEjU;l}hpw6(brS!1RRp+IvJxDnL^_D360{%~isGk?O_pTytn$MMJc z;v{ZiZpNRjZYC#w=B6A!l2at7`SaJO_!HPo@y$t^)0;xA;8t{BTuZ7IddmGI*>Uug zdrOkq=9BKV>AuYBq4oGW>cO?B+Gss<6_WbsUQ<1MRg$W>%4jXL3cV6DDXApqwanEx zwYb`cq%v9=U&*{n{(kN??K1h8E8;7XR5I`6d%Vk3(YzboN$rOBqdTena0Q$XT9M8D zrhTSO?C(T(%DfG?iFWQpMSZ*N*wNJn zFT9Dwge!wuP$S*IOiB>cV*G_;;c6{O8MF-EU|hk^?=ory|EgM#*OM5G%gI*o46w|w z+@LqEgqKq*;Xl#k)Ss{$PK)Z<|I@IB{pF~eah~k{G|VGeV^~PdGt8CyT#|)`Md%`) zr52+m{X%9lpdW71Gn`5P!)>8qI({Lk)Tc9<2G2E2gJ+;~4Kq1&xz%Zgsbo{xm~NPe zn~6@P8@ZM5Zc1+NyW3R5SGOPVcehV&Q{buWOkqo@|K#?O{G;@ryP?x`AMl^tK2YD? z-s3;Q@5w&nf56|N&(K%5*SOEp>}YZy$8Gz=q&frpVjW%kVNDIc}eZJ6OX zT!NGIncH)cS7-_K3Lc6Zj1DuD;9t58HRQ|vm0P~seXc4&OUR44wWn|~TI}`&_l9}` zKStkBkC{Hg7o(3!9=pBeJN5>BeAnN>GjwlBXXxI!P1e09o6IZz zL~1h06j^8JrsyV-O-3inJca#{B$GHZbkpHU=yW(1o~|2(j^aJbbbJgnUDkmlqjdv$ zUo#3nh0VF|UJG33|+}oq+>L6y#p>y)P{&e*@l4kfIQmHp%(i9F5o5Ib}0MVZlz^yhF z{mA^-XeKtq`J;aH8{A4fzfs&k{lqi41n88y3GByC6SflYC&^Fpd&ecTsc-^4r9MH$ ztB>PP!pF%@j ziFlsmpt`YmkbZ>OQSwGij=~41gJ>hM21#S|Ak)^&8;Lb>4aF9?hJ4K}NPNi};eEyG z%xa=FWv+&+#+5Zle8pPuK5n%Vy}DS5swGw>sRmai+rw<1dJiAz!tB9NBeptO(y_Ku>qI=1Aa%+3wo#;;WZro97H@piyO6_90 z1HTjfKT~G`*Hrtyab#@F&5ex(11wYw48#Is8-o45c6WDo>%rF931T-k3YZML z#rDN+f8X;c{Qo|m`?{~|y6^LxvuE4c*@UqkXT5SKtFZ%Is|@jy)p~LwISD_BRZoIf z^4f`8$ty`2?v;!e&b#2UL^w`_z)D^bUghw@!EnJN=r4{_j#0_0BD@?}5gr1s=v4wN z!Tb1%=pwL+0`ud9dgbT6ehG8|`~s+aU=c7sIf$C<1fhbwR`aPsK5D^?BFvN*CkR}_ z=MQ zry#m8PGNFESTT4paxPR+q8PYRxtiWJU@`bA@=ER%IR}V(F|PoxRmw%^)u7C`DVGw< zz*Wjvyj8GRka;6n5Qr5`iTQO<|WhcCd7Q!a+v zy!^Zt!{do%;Cy9HFPoPYS4NvxPA>~v`oS%r#fv{R!R-hj>rhs&+$eu;V^LTxB9E6Z z+CtSA%ndig%;el&CaSsNCLF$q8D(O1eZ7oiBh18BMruZ{d3*+C0F5{Xw83jWpHR&u z=HthLbBS0_otF$!+ex8{OAUXz51^_+yW$a5MvjZe|0!6y=vz-gXig)`Ap zf=j3|;6!jNc?>LuF_GReo})$YSkF@)qX~JtQ{pqcdmg9wB=3~RNspt%De#oXae9uE zkD-ox3}@Rhp2LY4&r$fJ;iK@5Q9I!=%JT&I80-xE4EY%BG<+m#I5^7lG){`gNY4~e zN%2VbNF-9Ij-Z|h+v%|bZznx{=^6o!^z7}qlS*%NU(X%Xl016h^!DuKnI!s?Ja*&k z#@_+k1@DR41z+XS({q*ZR(Y)SSW2t{S9vV=XzjV2+?r}zy4#Z5c(x`t2ith|fb}G| z^=t=kM{WalhIb}6N3|z9gWd6Zf;~B!?nH0&P%7QQ9$;_JK8)Vnj_#fV@cO{|aclbt zr;lfU{Qgw>;0(qeOzs2rhfgLC2S=a=dk%pO5zaW+aP9*+Pr(}pP6lH<#}kvlah?GIFubjv8bq+XRsl@e$&qd8sPNqH=oTr=!n+$qWpR1gLHwh)@}>-g5LzDlQQ_Y&&-Spbxu_e|mSB{Dmj?5}i+hKHB~c|{CA~MR%Lpuq+N|D$ z+N91$b+bCudyBfbcPacW@KS6U21XNM-U;f>>MiO7`Zueiy{q6kz-T&4d2drYydzQj z;4*F_?^jpB+ppe7c6d7lk0d*|W^fWw;C{8!J5`+uMtSd{bH92IAv;mtXV|Fj?q~gRbNvZN6uH& z4Y{6fNUn`)z^IREL$u{8y$#p^-U!x++yHD2Z%%Hl=?QBCHpg$SY0R7rz@C~GLNzD1 z)^tI)=DNQNqZhm<*aF^J)0OA}KGt?6cY$>SyHS6H^H}>x+YRrLwin)gl;tu#gdkyaa?3(rpOvY=d%XD9bU&gzFzRtMK78h`? zfLG9$wM{wN#za%i1??sDC7jFJCU{M`y^S?ZG?%o^;7y2T@K#_Gq7~I9nwCT>@RIf- zl?&h{ZA+Y5nv2?6qNk;%4xM$lH|o$=lc)vO(M03a1&^ugpsV0iK}CTz!Dw=2YO+&V z_%$_E88zA3juQn&p(|?+^JqCp99G*kk?2UA%9=xXhk3jmR3B1DYL37U5l7%Bz(d3d zs)y9ai4$O?#!1BvMrw}Zq^O;m6wz~By_e3tJSX<@Y?AS~I+;iT_o}z!?S*YuZ-vRY z9krF`=Qf_9TVPw!iSVspB0L42sNO-OsCSCIQyr$+iQ0iqf~TlUa~!3~B{fNSC8>sK zc2L_5-%U=ScNei6OdvLb8#y2B!dVAf4&Mak^WKQJmRJXFRIk9>2wS0E29t3GYAJoo z;Y;zBp;t22vPB%uGH@AssX7m5uv|nQ?>O}m^b(wXu*i369Y^W*q>$E$rsPkwJJomS4%R{D&DFKG4F;`o6xl~!~PoE#`V zv`1-RIlQw|lb!6sH+t(BMz&VsXh01*ySGccUd&XwluB=Y;DK-{vwKhDHN>S#{{0-_A_@81ZP8ZKNiY}tkMO=S% z#(AZ9P5q7HA(hwQ8%2BEj_^mQ`?xZ8#Cw2#qM*q1;YHB${~0|sSbvXQx1aKdU6XFRGEu@frN0`l1@6{HF5u z{zm?w`ixe=y?Oit-e1w*R3E^v_}}4QiSO`isIRbWbeiZ@f!XNK=KX{Iuc{v^lQ%!` zfXYTzdh4kxc}D3OX1EFTgzLP02wza|ZNSsR4Bpe#W`PFO47CsS>EI0YbhV3$OYKSL zRMZUhR2(_`de7qQFpE4DHIp#|wU~(KT(lUR37-v{O`ZuZfG;4&sn^36gA4E%sOK=} zOmMw=p->CRaq3m*IL>IR7#ra0!G-XZ>ea+LaFu!u-YVD{bzaQ|foo8CHF;2ZGz+Qb z)vQ(rX@bCY>RkAFHMxi&n2CCjW}P~}CO13}er_-ywfyiPSSW0rI+T#l=b@a@^WhZG z6o;1tOKQS2C2&H)0_5W4P_`?eDFQ1(&IblFTRyOarXs31SOQf<69Nk%=Ry_4FNe+r zD+(6nSPJ47B0|7|L}9S7rWja^`WkIvyfxZlcx$wUG;6hM!4UXryp`HD=#}s_+M@Ia zXjW?j$hq0lp9lbR6K2rNt@j1}K@-^*W?}f#<*PB`8CfZlMu)P1M&ZumzL-PIQ|mMa zJcDMQ+Nha}H;;RBj(V=zpqUS!OU#GIf^&&js&mzgh*;2|@u8vv4Vpzblhi(%NuprY1Y1g+Eap!jcX!AGKogQMu@ zSDCy&(53JmseUVzm-ky{PO) zBd(lZP=y;)ejCut=Bada4-kgcXg3nYvQ3GJzluzN$ z=y^)l0CZRUuAHw1g3lFQz;4PeL~mthbXRz1yzb~e@ZPZQu%62HsP15Aau1m7bcgkT z^jxjnTG_)n;GfVU>vfKOC6anivy zRNqm5qPm58ta^=l%x!*+b06;s`o8K0wOimV_&e1D@HX)PM`rI-@8Pe(cdE;Hx8eVx zda2)&U#s4Lz107aUo-O?;w{)q{YKSW-5Y$X>aOku>&?B~m;1gixjU*4qc>^BLk?AC+)LZHSA#;*rzeq{I5C_$zCi>EMeLIZkI%?@Tq>p?Gab}D*JAUP10 zo!J6~&WX}#tSGA{C#d5*VrAG+^R+q2RvbUj4?bUOBU?E8_`&@&3$zQs0L>ijeAoic zV~aSiEh5iBEo3Y}ts+))##;q0gvY{S$#YO~V4QX_BTgGnECUx(T?#HmuL5JqOR22V zZX<7lEoHWCLT^W{)NVv=)NU8JnOs=6UAq})6IfWcnY>b)fZhmh!r7!Pq6^j)))mnu zXt&}N!P!dBI_fJqJFjDGfhT}l;cK<)i4e_t_y)Xn=ndK(Fc~+Xb`l|)9fIx9rcp^_ z%PrbO>N~+SkwY|0F znJr11tSzo7g;$){xl)WU-s_arRG>4No(eeS(PcrIm)4X4%b*-!X|O!m0dw*m&;dF$ zf8p6dnN<+H8qCi7LplGAR}K6Ntg5L_)B>w%YT#9a)zBQ#{w=Tu>aex~{t@kAyrbIc z^d13^qIXeACU$8LqK<$^v`4jv@DIZefhpX!UEIcG*dgt1cnYx_o(iTAsZ>+6dx%u< zkoG+JAb1Fss&&KMqGykGFP(c?`@K~55pHm=_5e;AxD~!nyC2+-iqP#xMd%Ko!gX7P z6OM||?bDXml?UD0vbu0xgsv=69#)jDB1BP~a_Dk6;kpnWRYiGp6@iu06@!Nm#o%FJ z2oXj#L|2>$1A~bYjN-abdZO{lg5}U*x>8^%{Ae&tw?!XH-VAQhC+Iipx9FpFRd5nu zTlEfjG}}7BE&5WrZFpPs+w}Y3RdoAcrKm;1_v6V}1?A8=!TtJ3a#@`n?Eqz7fn1i` zDd#Ah3h;`ATU!xc8P^U*!7J)2ft66zz=~jHa&?$nTMev^(-5yA-IaA!QPshQBD=N! zaDV;7+E&G_!KkkLM|(=R2g&EPHPB~ZXYgw1&S+1=PooZMPr^=tr}0l~YcgjIT}|Cd z?Kzy9IOpg&M*SdFP{33XQ{4e?hpY!}H zoV%zC+PkQ`%p&s}unT+!Bs*43f24);bKDs_nlU>#i}oQ7Z&ysoYuSPykZUk`Og z-w1U^Usrcle->;2KaF=XIyJQ>_dB*Tw`TZu%TeOtlf`V^s($qDEk z;12yRB2mASNC9`~cjN2=*THw{lfWcYNkbB8bQUxeC4vowh!C)#p%_k4FaTc2P#7$XT4OAXT4OART5Svv&T7;eV4WSPNT3*8*Y@&MNdOoYlsK#s%a#;6j{O_(CEUz7$+YETy{87)LAx zR~fgFSAwfhOO4B5%S2C{aWS2XjmwERV?418Tx?u{vmBgh^fS#QFE%a_7*DpD{7fsr z6@o9J--2Uf#2fuh7P3Dho|!D<0Gt3*F4!_-Ak5z+V-QX*Fdsb7loQN}DhLLGLF7WP zWyXSFAyaAk{F+#s;ax&EquLa_ z{jRcI3+q*!Yj{`C*Zdy9WW0uY;P(dg0QQh^mEQX}5B%;E55ecChq%4)pP`>tgANh5)KKAQEt(Ub6x*OQb+LO_X z+tJ0^8Lua-Ik&4hxiwx-urs+0tU0_VtbypLO>T^8Zfyi>L~a8%gf}GDw$_I=02|^r zw67dkZ`b+=&h`>;QM74^Ro`=nohZQ9HmL_@^UyV#B!87JMrh0g1(DkU+1<#o4kxx=POVl-;rKdJdRj>}KuBid6f#^AFKF8zs z9M6Vxbe|_0n9jp5<6Ho*z|Wii0sleW0MCP$$?4Q&Ctcuq^G(Kiw!V&Y!+f2%342Oc zTb{{JaUP%_z|zg_cz!=Mw+7o;ADAEEwL?Fm`VeeqeMD|etv&J3+@7BMIM=}ksE6h! zuqUFYy|n}9jSifFI?&ybcw+7d?=GB<)=uzFs6JpvusgXAtS_S@y?v}BMQ?X&4_FVu zdvKO}%$cx?zJu&Y3(mC zci=13TfblAUz}%O`DLKqfxm?7VSDX2)c>`ghb_bJE8bVwFTY{_L;XE$gTZ0`U;V!0 z4MTsY`VBSA|2ugwwc*4!zv1+J!N~x>qQ3e4g#8pf!~IA24<<$v!~I7RKmA6+V{k@; zZpm%-M6%gL)@bKz@X%lwz(Ev0+8{{qx% zaH+_1{pWC7=FqtScOhdnYMO8-l4sz|@t+QxPF@JQ;4bn+|EaKPpbOvSzla$Yf>ZtV zHd(pI6aA;4Cvs0rVQ6hrQCgecHU-CEo6NmsfakDjL4z%aO#_oLhs|K~A%60)p3L~# z3M$#zQfteG@&U7p{L}9TkEI_xnzG?~GJI@5{5}ddgZ#zM6a5+X8PC)9+3yql6Dq^+ z1MDOC3I7vchL(-36}At4BdoIeM9%PgPd$U@!+XX%zfsorenYJv@P=APz(-k!fy1mr ztwUg=z@g+Ju#r3~hk!$@gYkNUG8-ZI0N7ybaMS>Bu+;?{4j%-%tkY2n+X(U)^dQhB zssjZdWF5$C{plV6%Df-BH_v}Le>4vy_qBdD_vPI2+1$_i&fFjWo%tjDv-v&v-u%w| z7WNr@NB#tR0{;wqYtF#Sp!=Qq8R`?5A@URRW6o)h>3oL!obd^DN4VF?_i-MZ@4@bo zpM!Vdcgfeyw_$g{yZCp_FPPyuc-!2;B&)mR>*ibN>zt8qG1{7LquQD}m~P>8GTr2? z-3i{#)E4YyYG-N#ld&CsN1_2-W^GKZskCOxwx-6Yj$mt%8<^_zno^(6#<)!w9Z|J} zTa{cJr@rZL*x%$P;9u~+$W=`>VYR@&@c%M3WrikTP18A}to|ZbHPt{@a_8ku?EgR#_GIk{sTW_JPrP1JYzfslkp7xdBP2s*(u{mDks_UwDBP7Ja|%Mw=tF1 z^i(Z$ZG$zARz+L#ejE9-w5SVPNV35@=a-uN_ zoyb*45+mG@j0!hYFeKqrGVJ8qr4sMNEAg&52^|4O7{U$Zgj)_>2_8-^POeClMHL5S zRzdJmu;P4DAm{RUrNFXan4vV0qAv|EgI5Y&#^8X-SO)bM-R0qbflhRa-T^w%e^WWk z(f@6*qa2_EzZ&{4cs1|{x9@MmLGXyNnxO`jBj_5`s)I+2HOL349VMz8j?z;V#|~CQ zRX5av)e=2NjmKEGW853Z=sr%=G8~7W#W@L{gC94Z08gO)1&@Pg$#<#A&Rv1WjTafm z+4=&`zs3v1Mc6&Mn(|1xhjRmc19sQgjK|kKV`H$H>4xzZUNiJ9syD%Ard#C3)S44F zjm_z~j&lLLfx2nD1G^)7nwwhixNX6+p#|M7i95!Y@b);Z!4B}2rdD7pR2Q%%*q%I) zn(Pb|*wWOM(UPq@<8(1~Cc44~(e;97@*tc(=svK4rk6aw2brFMFU@^S{qSC*`%&!+ zzBKnEKcn`F=xcgKPj8&gU>{Up(*W22(eujun)AkM&PK24enSi}y@7wg$pAmX-~%$zHbUa4*{w!4;@%yu$H=_qNGaC9ij0Hl=N%bsAMA&NQ}}3TDGqQC0C8 ztAcwI)2!Zb9Zq&o5BIjIK{d)3^age0Jk(?-k3etv!zyaitVSGPn~^ZV^3t`4>w~;F z0q6i&9$PF|4S8(~z*zqPTTZ-KbWW;)V61;m@&amcM4&B>9)BDo7=Q}2<%Z=JJ#qev zxf)r_HO^wXQ=BAdOK{psBZV)2H%D%7P!s7cwljG2hJ9}EwF8DwMFPe z)L|kKXCvN5*cSg3yhQ(GFa>8bJcZZ{-vp)*o9ItKZv;2dnc}~T*aRjMyTRT5dtjUV zOV|>KP3T?zk+xm%NZW4zincw}E7~0JNLwYalC7ex0xS}&NG?xJcFGHkv^g1(wi325 zoC;tCba|VduDXOBryRN*th_A>&u*&>M&U%jqlgH2I2c8QQ;o7k6X9SvTUl}#SPm6# z+iNXL$UV`vDqs~`RU+DU#u|-(##+U8+*%dyxb+nLjP(R~!g}0#40Z-QPCiOac8&@> zV?E6{W8G^_#W@BZLm#!Cr0XVe(t3`3(t3zEO7#$U4t@l7L{yJh55o_m&VlC{hpp8t zhpY$52VsZV>L48ltio^_ zC@{@hPN*7|a`d>Vr*f=r#!h$|SkB_c*+c9F-PR;LH!R7z114h z`_08Zd_V0L`NKa6S&E`8I_;g zx!JlDwai+8+r8Nu1QuYe3UGg}qqd3aI4X_P(1#IiB!E|h}uE$xA7mTwJz819> zww|rl3Y~!3MMz~gftY?XBld@HdAz8c(0tfsovx{X*3uClHqF9lbj zR$B{NRuXd0HtTk9JI|i&@CeH`{0Pf-YiUa&UTL1Q+i}Z)Wh|vFrCu4f*$ERE zVF_nMSPEK-;FJPOp~Ea?>8ehY#VLU<0SmKKz$?r7p*pODr6jxpQ4$^sRv<#DRX4Uq77u;9^5Qv<=6GvVyrlKe83(&&b6VR$mLAg>FAzBg!AN zh@9Iu5bp0A!0;E`OeFx8)7R{~$Y4P&;u|Ld(0P4hO*yH=n)0IJOo7ZC3&xoOsO4dv z05I0Hh`JHx>$?CRYg$0Wnex!1_g!StlYOb`2t8;-nLrc!^F^ycZs;cX(~_%@AA;9Oz>)w$p@_rA;fJI0nPpIsH7F&a0yRFr^jhk_^yB!kQ>BjwjtA7A0R3N#P>t=$N8fFO8uMu4VACpH+^s1zVQE0uW)7Ti}xD+ zpZ+!K4cmMW{6F#+ez5y1j<=7@J$<}6{%k&S{z%o6+oT{=pr;Q%>djD7@kD#!c%dYI zX;uNMQ8E1CDHU7+lMG|=#u`5A)jp$9F^17Na#s0_=Uy349*r8uh(XOHW^upI6c|sQ zX_$aFj+g+CH%tYm!p9L)(bK?j#6-qa)M%8Pl8Q{PbZH?xrphYm#+dZ8|dZh!Wm&u_>LftrZxr~!>t(uA5M$_#~23Uj0HdH z$Djw{3_=Y6hl2yj17L$0!`Whhp+8=Kx(6D1qXvWhh5JtbQQzCp57p1`PT${8Gkk`>B|gLZqI!e<3~$k&=y?nFH9QgO zv;GOyKGdJ#KG*j#bcFW>pP)YJ9}`c&XQ&t8OZNE;_L9+8_X_u}Q2lu9J=fnuJ*WE~ z)j_&`x|h@j>H1LX2lms+yf>;d*oQGlHxS+je4+0k)F534_+3O!rRt_44()Dmndcq_cdI4v0Mb*kl8 zsWrMSthK;SI30DJ_?ettEj=B!sKws8hfn6d0i@Hc$0k7*H;9h6{5AZMQ zFM*f%8KruLOQ?E=Yp8mLi~9P8`rs9KUA(%6WAxNE)WfZfBfHUfwGDM(b>MXkmC@1Q zVSdV~j-d)(6iUWuR2@T2Fp8)NZwb~0>)_PnlQ=tB#>yhsTF7l~dD?<~aCHrjxUgER4 zR(w)-(Rj(&#L$e&C3G`tO~FgXX5`w2#^@$sQ#vmhFB44-m-!U#vhfOdh0owFuc01*SHaulH`HY3jliqMhm5OieIMt6@jmeo_8(nc z`Bd&doagB0us6nTd^YzVpVW0Vbu&FTzQpT>eo6HO*v<5k+?iT;;)St0JG0cQ+)3~apVJD<=^Fns~Po5z?Wyzgj<>R9l*St5U-_JbH} z`oSl7Klns#jA=CfU~mlHSkpMzIGmqUe-YzMzv%j9_OSdUl>Ewyhvk=91M`6YGHWeb zaGXhF@x$}u^Eer8wLI{!NTZ#)CyPvV6q>C3S!Ir7JpPBFo^6A3xEYv2`7Sa za-(y@f-E6;!MuYAhvl~9g@+J%;d#IiA`jINOHm>ZnA?(z><{Kf<*}?XP_XImk+i~2w6wmvEI3gZ@32Gg+C8ot(XUBu_f-k{afU}sf(zF!5 z7+eZp1+FqJ=e8^-FF-A0EXB!*lZ)G%lUuwDy#i+ic^PaCd=1&(5=cEKxCS0TUPf&- z^DF}cEpvrhW14FUu=r371m{v+ZCVH}gV#)#65INumkT3W2HPAnq?kS*wPK~b*!CM2k zkFO`_$+epg&QIfH(@&!T?c@7{w+ugxKa8HfpX5Jx3XU*%;(o^YZ2V;W2>StkB7dMJ zJ0FDq!}x{q!}!yff%6gki2h(4%C+2JVyGd*_#XWp=Yw$w-cYXS1{;PL-W!L(hY-Wy zqrf4=D5^sYBZ*O9Z=w&?chob$_r{UO&(&K;Lu*uLu)S~}a*c7Hc*v{$eXyP3p}sxUcGMrBAK^R_)kpfL@TWKr zVCjsfy!y8@w8d*{xPod8mvuu_eWD@rv_ZGQX=`Y}l|e&ZG3&!>6OD<6hDKByksBDA z3#Spe4bceIoY%}YhMwe}u;$FxQ|Ml(hr9~*!s&w71=bVZ8TN=*#9q8UJ~Tcub}@9L z@(A6HN@qh?uq*tLu^YKF>(Uk8)$rK(80^7Tk6@2k;dE9!oqQklgz*@4pZv`D7WR(& z`Yreb{uK6<{KWW*>J#`YoLA&$;A{9V@-Nscw)!Qshwp3SP+kQ+d^3z+@xH=-QT+lN z#w((S?_hA4>8tTOm0{@bRK6I$f#2|knZA?1@W}fH|7IL+8V>&CRdpC_IFId-JO@US z2ct$XhNA|PN1G7*lh;XQu<- zy3@h4E76|c?C#*%4c--O0`KVA3G9Trr|5*br|5>d$8UV!SKL)J5&m7gyNZjb+lqVq z{`YMv_rUx7HuxR|5fz{lWooX3hM;1lYP z(dn?qU}t4I>Iv+rq7%HcvXk;Dsy(^0@(J!s{Fme>uow6psdNHg!aI;(;NMVmRNfHv z8|=MQKsS^Q#6OQR33vLCr*Ja zsJCRE=E@ez>#CO2uk-tsH~9_8>-;|DW$*@gjeL#jb@)}-HB~FNYC*J8UQ@LLTM+Hw zS5YlsZJDzLcvV$LsCLRa@YAT1#A#K1Y7OXV!0l*Dtv0MJcvAHj>I8UF)j(ODYD4gp zqJgpoxd9zDlvUBy!QDX{(EE^-QNpJEGnACZi=1(exd!FRy6C=wNN-h;OT zOa>DbJBf0hI~8fLa-KWDB>W`mZg?7)M0TT-c+|Ota~hSZIE^~ZTrxifJI&GWg`I&N zQ=A}I;Z~i19|x-_Pmpt{XQ^~*9XOY-?w+lh1pWg1b-)!9@(0O0S%zno6Du zbFtM_I;N_$O1&~Wp;b;)O+in=naZ!jX2;0}YCw(BhtMi>D5t1$kTpt!aB`5Rs0{c% zu{h7!Zs<0SMXoXPNcuwkm9s7dg#ganQxBz&1oQjMTG zj2HnQ3l1a3s%{0{4!RR`i?|QoMBNN3;Bgy%Kj<#we$WH(LD0RR%XoLeo8&7n*|`h5 z0=o`g54r)~2)c@Y1-uH6@VFdwjV&&tt`QL);U01h_b3gE@F)qE#tHW*1urG4VIDW> zE#(o06NYy)D9ob(JQNiQ3-hSgpr(h~qh_Bzod?uzKPa2W?|;(8-?@2#-+5}~NawI4 z?d{tS|8g9O{qC+ebDX2h{`+pY0WcQg1u<^B2oA7m{Mj6^PXZ}4-d)NBr0#Vgx*gg4yfKbn(upTPt4oN8QU!) zEp%1yiW`gQ(%{Z7tF}1rO{gaOPI=D%|L^a=$~c>^pO~8ICEn{}?~ywwtMA*_g3iFa zd&IsJHoCHTD7;8!557b$n@6^6IXny=p0ZPZ>;!{{yJf4x_On}~owY+V9D%-z>^)rH zC70F1UA5D0`?_7x&c67!|Cw*^9`i%mFzZ07>}xZsI8Q!$FZ{mv5t9z2%JT$0t>WB( zFVEB0^+UQoPZIt8E>v|ki2p452gUr9X3da9|KJn9eYt-S{qlZS6IP_8Iv$C0nZx^;4Wlhzz@i2fD+kdo`G<>P;HwzAXA{PJ=3x(LcIUr1J{npJy71+B8pV8)rk-yt{LkO)PG`Uq;Wv-@BAq(YTFleoo!yxm zU%tJ~U7y7~@_sYtk@wq3`aO^AXU-%0&806=jWw;sdak@~cMkD?BG$8Y@+&F9Z?e#$T&5~bAo*i3@bt^EoO2xq{-J7T{b(~n54=Ee&@>SY;c?|_@aZ<^D`x z?yn`ilV-HtEsnF%iQ>*mH!q6gjC8${V!Q1Y^W^=fxN{}Gyx+)}SCXdoM&Uo%8s_Xb z;;Qhg#{4I(tFlqdlfEv@SsY)!y;WWRiFxGxX3it;H&XgNkL+j8Bl}gQ|D?2{8^wCQ zm>K4b8h%x*XRYMNQqL;8h5vecac9XJ7lmIf`Jr_FOM+Opw{60le+|7V)~$8=L8+&H zxA0BliaR5&T@-$c^aIjd#W68Y&51>v{ha@Zd7_f6UXnjq=<8LWd7u5t>s&GBh4AI|$@Jy*sVKdWT&|0v zzi-iC=OXqi_lL(kl{Vwc{h7YpA1*zW7OP%~lXbbk}pV6Z9UWE*TKaj4bG}D zZqZ-RbzNGV_*v|C|9Okk-{X+jZ|(FH>3Xndnta|4i!wONj&=+Guk<9TP0=r6Jxlsp zoxQvciS-PLxh;HoeKLJ{eL|$$($dbJY4YpxhZuu%Bm0%_--0pMg)jGK`f`6k>ALi$ zl1?1w+T~u(yRKd0IP_K?>BQEdB3@(-}A_R<~*{WPr58sy6G*}b6uRqInQ&S zSkI!#XQlFmb;1vy>E)a?ZI|#1C7+Z!?(`Px7Cczv-2Q8?Sht$#JEU_za|nNAPcP?| z$-9JKJ$;)rrKGQzr`g=^j+cH(Vx9uYN2QNdeZ}!Rc7AuX_D>SWALu$G#bsDU|J%iH z94|I*7yUuW2c-kvexl!V?;FRM&D%x4&2>Urtn?N8b=CXs$Zkmz`>mS3Mf&@wRrqgP zy>VpUuwD4k=^Leh+P-2vBi-K}581DLe+9;z6~4SanZCR}fzny2u#cbUZ++yA;{p4X z`~6~02w(2c^yPj(>4fxsQyy`g_Sj2~&JPpBar(N_q!T;yhFNA}Iq z5hyU+v%8N@5FUto`B?JY1Xv-;`p14KIW)B zd7U_ZAJ<;#jYlETfBN$-N7c~PqTerhyEMSRP}=2|hwX7byB#SdSBrj~D_L3`m0#?4 zY^h_81>@F<{W{WDNng(w6n>7=yBv9ntrmWz^ySjbx%tI+BP=SNQV! zWcu>@_(*%D)j@?se`&wnj!I#xMSqT%WZ}#GnZDegLrRtmm5Ynx^k}-+ku-maIL_>@ zP11y##l<{DS}%4~Sg=IQqmJ1m`LqoY{`yu4j_&uC3ttnnT}o{dBIZeIoZxtPce$8H z>)I~nk@uT9kGx;C^m`uJ&zwj0HPUwJs69li=dZ{FNBuj?#d=zjH%Y4s6&L=*DvKSz z<}MMwDS5qgNy~mY@6Gp1a1_0{T&!Eg^d-`@_r-)iGtXkjjaf^CUm-nCs+k%p=DDPC zIqKJr6Z7~cuaW|colT_jaw5n*RtB{mODf9iF;{qTi6bRO;hbO7t5W z40SBfFBJVs*9s|lD)Y$a;pfvF#cIWg{gzK(DCIaACj1gVhd6F$Unu;D^m$U^-B7Wf zgY&u^J?h4Z^;E^I6TZAYnZCR}Drub*oVS$dk7+s75$Ll}^ebal2w(2c^yPk~v_hIR zx2!nMM==qOh-I_HaVlI3q_**8#XK)3M>x{(<;Rt0%tC2Z_AA4jelzEh_v7+28BjH^Q-Q$t>aPljljx5=)D9TYsvl!*G7CShw)>+0v>gZWrr3rDlXf ziktPvpDyJ{EGOn^yw2um+-v%ud1gsBPL~tMKPt)QNbfye9KWY)wp3zHxajZKI>R1S zd8+8wB~O!bZ4MXx_4;MlFGo%N)9;enj$|J8tDI(Ygm#}U_FFD}s#Lcn{rKC%Gwit> zQ~&srq{ElWiS;bA$L8qMXZoLYo-KTNeKP&u>o!}mC5Mat_#qkgmeEs1f3_Hx@a6tY zU+&K)xww9g5XU+0XnXtEZ{x&qW^+kg_eO|$WMBDx+@EwJo0`s=lQ+g-}A_R<~+asiP9dw2(g|QLlf;Gfs_8M=R|2n zmEXQRkM8TZKfWYwxc__I-sMcRD{Yg+x|K~I&-F9M!+Og7Pd|?P<4aldr#3lMss6sP zf94sHb^Jd{9;!6dJ@(J>kI1@zBPV~^_t`c4PygVo``4cQbziPo!~fjBgR+jN(yBw1 zY9){Tv)@r!_ixprpZ1lRH2lx~JN*CFv%sNBk!fT9tmg>fi}m^A|6ZRFS@&{ou?Ws4bP*S*b(+?k(o=jOm{BcstuX zPwL+81ONDavmXDis^v+|=r-`r?d>b($;thgIgh+wPwDqO^6_WR^V{#6_57-%&y%X} zGEl6iKDl4k^LMgsR_f^*z5n>Vq<(*%FM-Q)r+T*=_-EaQWIcapo}HQM9o<{_;pqdV z{(sI7Ym1*t4K34E%;S^XHS7FSx7E2+V|Z6_{9dk3S?A};4OQ-sh1!dLLvn|#^YgsE zD))kr_M%_uYMXUFIdlGOYL60K|LnJ~lu=2IXm{n1#^N}$ zyBbLg{=EKPx*F})6m2Z#QO7jOdcEk?CfHrAP)p&fVwz{Yesymc>>gFHrI^Rt)m+RY z?>BQEdB1Au_dK$nIgjkCq~=+#k55YlyKm=jDb~|BxwW+O&+D&iT{Q3W8Vlc)+$`($ z?r}x|cdOhj#k!SG@1FJgyR22TyHmc#!mp6tCF}KFTHfC6E>%~|V@Yl#o&9tD@Zv;! zck8ls#qn!hbtR8%zpt+@>BqXms@4?!e#v#E@qezbk}8dL|5LrD=-0VwWnB*>{N3Jt zxOiQ$--_uSv#zh2?i}MT8(CBMmD1ZudH-C`Ouy3JU9enTv7VZky26*&C)1bLMM@bCGH91?cz9nU6GO^<@fdT znUE#!+7s+z9%D?TwEWNYUUTzI_wDx4!uN@(Dy`u9Q=Z2!$4s{gU%r0!aa9%b$otKl zN8Ybd`aO^AXU-%0K2lX_&7bRA{ks|NU2USpdIludk`65Vef@kuwZz>s#xDGv$*oXi#JhKnvJ2mt-cp*>|M&Iz&XffAovqJ4-yi+Tv&%jAWtiyqiwPIL+@I;o{eDuobaaLyEmzaS z_Aw2gy1O?HbnME$$X?J@P&zwLAzpu*wtMP+gD;;q3dRIWvFp5qKjYP7x8Jy&!p{>^ zTnb#_C2sHMdyn07V(@b;vgdIXmpZIeiT>EK_ua*lbBq4mF(sr+i&dh(K#}|IbxFA$ zqkQE45@Nsdac1sUKF)&D@BPYt=6+>AkMw(f+0UF`_H#=mq&3sM#Qoy8@3DK|*qn~w zp|SSDDP^T)BNb_jN1m`>D)!VpuVJ8Lc8^$lXi9M@r8CFR>vf~PkKI0_aytI&5ofQF zURPSwM3I)%?38`a{dD)!x`B?qwc_lx(`!oEC#%H#IlS(>FYL(e2#k^EFDET*%k5&G zeS7Y?gSX{&%pV_Tuby5{8t17K(~d&-pnN6VJ6_Kw?hQc0sC?L&>j_5~r& z+-aLp@;8^)rtbOY;`mcJX{c;?(_cT6p2k#7U z+{m`bzHO35YV^P}?b@4@_G0^9pSo9X32;38 z!94r?rR>(<_wW1gXYNAR1H}E(F2+mv@_J_a@_M$DyreQWet)jwk^7l@6Z@4P58EY; z@a6tYU+$OvouhuFriY)gPd#7RS-en&V?gO8_OU-FNZCsNO4YA9ZO^HSc4idIaExEO z*go>x5~=USG~qXNRB^t0@Lu?%@I$A$#XJj@(asfj-e=9@vPz==Y_6)#0{s7iJkMzQ zw+|X4`e!|ic1A7woYjA4*1pux?q}@(g+)5=UwrRS{JV_fk)*woz6gJ_hm+6iGP3+D zxl@F{%)6p9G3~v>u3v4Jeo4}!ns0?)`fhn=ji3Kz`4dNs5Pshrm7O_ef6khxbNE2v zU%Xk-IepyctbY5rK(~B6wT9cB``W(B>d*Eyms?)9*Ze^k>$UQn=aPp{-to|NcSDFK7&~| zQ?+>E$1N`7bot#B{=jc>(t}|sV!yZZ6?29ky(soO`saAbk+e(nE6Wsj{&VS~=(!#^#@_VwPV)c~JO24u9tp4{6E{OiN3-UXA&pDITZ|${D^ye!Z z^u|DgxMVy<<|0C9?AM18)|G&aNvFLwPU3pv$ z-~ZNbX(3A~Su12G6`C{loh(_(zHcFGq+2JFmaC1jL=sZA_PWxYqAY0<3856BEY-D@ z3cqvSb7y{^@4wIMc|Gsvar77TlW?&UEBkm`?59@aFYxVp=&-uOIFa98OC^)eR~!52u>;p~z;`3( z;mp|2z#o~U%U*D}E!Hi({0nf_xed!amW%i^>qhWr%F)j3#pc`Kj}!6D?1M@sotNBI z+p}5wIKa0wAIDuEw1c|$*Q>E3wx%iT9>lk9Y6D+7Or3ptFb(*dn?rD&vlieJY}&F$ z&FM<~77venZR(kHes12Q#X2XXi{t%vvJK$j!78l1b()CRhP49x zZ@n7(W_G$buG!%lfX6tupbbw_MLZMh0{*Y&7izhaB1%HelB}ro4*mAzE!^|oa_c>0)jkyls zPs-b7M0T_Ve>OD-ljq+qfcyNcMYpLvsM0U1tRNg7cLqV9a$T9*AeW?+QArXICJJ>2*;jT4DhGe`3l|+2?EGc$Wqk z1AhMbBlN>3R>WT!^8Vbr_#AEbye5uoNjqNW`T2)vu}Q3mubSTjbRKrSgE|h37Ii9K z_JV$@Zsj1=_0h_HJaNIp-oPK(E*brL8YS}AtTY3@#qLzpPw#@rUz2PEeBOF;?VsKQ6e7wtvC47`^{anP!bLPtZzPw$GMvWp6#B7D$Oq_aVgGn831)V zwmpSz?>qx_5B&AS10x3l|3~F1bjI%t@Ygl_Vjo$5z@whTpsyw8l(-)@4DAOxBPuT= zOYWT5|E+Ik&}T^EC3N=CIdQzXx%~hy?s5WI*qjmZu-?4@e~@w>wdrzB9G72JAHajW zkD)ye!$thz>;Zt=u|CM{+euO9ljdOPXZ;7}$`@gNS75$wUD&jXs3;}=ilKoKr#8cqU+GZcD zzH=DhuOs&&iF%k4KZ1uPjexr8L#$E0TcENo#w9hDz^`m;gT@~Z1pb<4FC6YL0&riq zMJPTuM5*JAFPjYqomE>FBE!TGQAcgr5a|Ex_xb39ONcmL`>LUU%PmKuf8zs1Trt@K z@HftOsHts;IIb^uc%SEo4MVq{1&H{`&clH}XH*xoprcgOu_OJ{`Fv!m0pey##eVwL z^L+K5wTyO+kI0{Le-B@TYyxY+L)Q9!h`Q zvEcs&+wZp+xBW_7BA);IPD|yh^|p$2h4X*xoB+A~sI5x=0W2KfWtAp!`-QudIC(Fv zJl|f;HkO|nuuIet&d zDc|~Wi--%?m#o)4dH)mZMIGUKyx$>D-lb)|*pD#({63_@g$Jw@`NI5@;iAqBRIF6; z-LY^zj_D?sUw^qytSihvhf$+E^w|m#7v_g9mIZQTwgLQE+q_?#e~dW|Zfe(6N_?L< z|Hlp+$GLpB7wZc1zj@_&&b8|T;IC`miytcIx8;XTxt*PtD0N)0FyFRo+lO0I>nQ37 z^K;KLJ-EREj^cP{$Flk#m)FQU&Mv`%j$!U z+|En0MVR8Uw2%ty#Ia~;ldeYOcnXU{kKHJjT_Kun#dRKNBX|= zxZ};U#Ja-$*Jj-|Zm+>q5f|={_wKCZx|!K2ecL16f7=+lbDeFb0lvO@7mjPquYat_ z^WW6@jIyo-KkLe`e?s<#bI*1&z~9ik1E(tQ@9(xA<=)Jlpw!ukh4sdz=~8aekO^Y{ zJC*Ab{}^9R|K)gbynBN9_0Qy0C%A@IjEL`6t~Xx4@Z#b}j~BjC z`0v9!UMaiCtsh}6>STT8*JIxwT;_rfT8raqvF6uT+b$$<*LDsQ`4a;8^=IA3WbP+7 zOyqy+$@3@lJjZFCvl8ppeB;-jBSiM1Ef$vwg!yu40-o+M{}! zac?8-0J}f$zrh&t;SM6?5Glo1mfRi4J*BwJGo)JWoxE ze9P_FWrS23&M>j{3$R^*3i$Ko;s>rW(Fm=}KFvhe&&RLV{e$naiXOk^Y-SswYm3h? zh4NuIB25L}e-11Dz{MOjLa9?vGkM$)TxrHXuQiW(#cgZpinP_wGgs;s;Ddh}K*!qY z73cE2D{5H~$rNS`!#878Gq?PB$OPF{bA|;*NL6-<39X%khX?cTEkEw4=H6U3LeDpz zVzM}MJT*oI-b)|W_{hcO8#5cG9z`#_OtD<53hztXB~^2~Q#v!qQHlz@jB%r%D!gAk z9meAsYEqPUsvGvZrULJK+kXE5I`0)y^z4NB|J0>AX;1tSt^42c(z(h}@o$in5d)NQIr=|G$?|z8Br~U7HSBjsxLvZrmwRq+~_`WWw?kyLr=*MWDA>#_` zi&u;#{*&Jq4*uow4d0HUQZI8n;e7+}b$nlOZ(_$XIu$%$zm)h)_@__s_*Sa`;Q#kH zQhk*zM-e@a|2-~Lr*#~`$#EHM`wzaalc>Feek8|;4td}HJX!_b+sC!z{a;c;>S9yi z)Azjs|Io!ikxy}ff2b({_^Krhpg->n->27es&9@dPWb}vS50-yvHem0J@eTN{x~jZ zCdU^W|Ihnp>Zjpne?;FiQ$E!Z_)D|{L_Wpoduht=-XaD5oaQoa?BQ%i^VV(7?uIX8 zvViz}$Q*xbOTLFBewODx;`T|_GvGhL4|L(bt2EBwaX4Pb`{FNe$~be&T&CFPHuvR{ zFQfTQie3bo;~Rtc?<$W+@_g!lQQBbqqpXaJOUPpi7TxC7oc3iJ;-u(lOn-b~>?1D8 zERUI8m&n;Ron!uy^S0F297jER#2r-0VRD0#xH;V-nK4HRe$X5rQ_be8))g?JvS@N& zNMu6$`IF;rhM&C2=Hi2Mm`72Uxv$zuOwBWbdzxe2Uxgey{}HpsHIXwbILBB8`lIK^ z&2W5P7T3n|1@nIOMJ{7ZA`{cq4?RC(imm@Wg5wo)FNrJd8_6tTi9h7HNYu*#FUY&i z)yDfW>zjC-@~O`Pf7KlR_)o0T3CP~cbP%;v z%cF%{W?EOIIyi>RtNZZzhFX}1V`t@aDQ}EW^NkoXue#&lXBFJK`GpJ{z;SmPyCV90 z;P%%Q`}^?k&7yQ3aJ6kskhDWA<4)$`GsCKYzat=>^X@@@KYA6<93c0R-H)Ddn)*+f ze;?zy9v!-N8CWYCrrk}MDFfh19W<&jNu+z;<}#YTnH*) z5~tthCOD9~vN$HGYV!Y_Kdo64$fk3r}p}v^X)@e7exM-!qD@rvpxU5GTrA?* z+MPis#aE4+ylRnB#~nZ0(GzsE+I^JUU0*Kp7yj%5{1qur$oELgME(F0F-VVZW<;HQ zP`ian|H<=gVjI8%G~09f!{;b*SL~~$o=LCY9MjiwwK{w7!Le~S-q}SJaLe!N+(8pN zz?U@c#1s8=Ku6)l$!{S(gTJlR0=~`bzFfqr>0({Y zHSMAQ(YaRK^NTY?-$v*E^T1(?^OC0`QiA@BLC$LQ_y*fzGYNpI*a(wZ$_ZAV{~rD*U8(JIv)7L zKK{Mp+MrwMHl=$-{>pe`;GdT_jUMcX%!o{<@PMO&5rNbt_t?Ez1A7%7i> zv_ZsAk8K0K)vT0ctT^ce<8^3s#r6wY1OEF}cR3TWUWxA~lL)Ure8<%>zhCZB>bT?9 zHN4J@Dpgyrvpa#mxY3P#XRZfzv!6-jiKVNQd^c=z+z|TzD?2MU9JfaF?N(ncsH<^N zA~%U!sjTaQ6D|1n$^FuA$nCGJ6@Az;wHxTr_eCXzSgC{YF(dwcCdDU*dMf!Cn=0Sa z_AR}__$GLX_{QG6j)v1^W>NJaQAh9}B~>xAi;swWJEi~9mt{^<#;jq-Gs+!KhABih^xJp|De)0Pke7Xk5m4&hwe%oi~iT>JZDT8 zZ>5f>=>PAHkD0jRhn4(8Sm?)IrNOqJV!x8_frat@TvucJY0m*={~lQAC#kOrGyKLr zrH;Gk+x)m!w)a}xME`~Jztulew07}PrH-d~{+m7?fGYb2h`tHOF@&9pIxPtnap8RU z!?DQRFG$o8<{y=fYtf+N$3?y{{|sgv(TF?8fbUA)=L_ds#Vl(yDLqg*-b3Q~KX_Dk z^ut%G#L4ep%Ja=*#!%#?6A0sVX!H@!f45VHXjQqt689G8pI@eP&;~__QpZc2f97OQ zL1hy{fbZDohlT6$#y52|Z>6tTSGeBu+q6Yr2l^?;i?MJ$9+kC1!%}^ebq`}<-Z*Qa zhfPm5P{H2XS zShyecOx%dh4hd88y|8e<+v~I&)wMdI?B7$oANBdU97#PxLC3Mt9}D-*Dcv#JUVK9I zVa8&9eP!$^L&oPXD|HUxQ>Fa+YQ+3I$bWl`$RAtFH$*=9UK!RWlDL~_G`a%g-TBuC4=Ui- zSHH7vpwQxIC4K}CJ;bk1hP1?^jiIqH-sO#|N1HP>B7{1@0U;m7l zn}bfrUk9CCM1OPvzn%%ux`j;JUI+e)#xN|b_ssn-pli+-#JY-e{CaYZ^cwoWUR3sf z5Pu5e*L$`d&Y(FtQOdd@xRr8U+9M(b4Qzi&^ug7+4xS?p_kNE&wx)p20rGqLbT|Gz zPvjj1vKf*p@_&8(0nabXVp`BS;t{{@^~5)KegK{2YwF1FYci#d7am>x3HW=0)YzR? za*=;Qy$tyCncwKBdxpsW+2IBFA8GX#O|+81cz6Hx!$WZe;1Q=@p!jRaO5gnO+g|yw z-Y}i~9Oax!gYm9uJdK|lJ_THNSRq=YoecP@##1l5PQiZDTk#_N)f}>&QZsW|5$*>x)xFx&+a;gE6l_$Np{(>T@I> zbXGQ=z&q~q@6*2T{(x4bB#M5P)I0#4(5D)#_tk9BaU zIlQbf0q`Sp>ru?kJAkimjKGHsV?ZavRFmzs=ppF15S_BZ2;hIx_=lL1T;OkNjKuYS z?gIbP^dD%+%1mWle|*ED82Z1sK!pwJkfrqB3y1350-X@YYSg-b1D$n^XYjS{{C6qy zkF{nKva^)_d*Urq&w$Q_-JMz1{)yf1MQgEzzdz;fXIreu|+N@V8|dv+eUsMgHD-M_|0xUD~r3 z{YzlH`~DuqQ++}JuT#|_`w~1Bal-@;7;nMH*6iILB{1HtjZtL%;|F-_R+{XN1&;xD zB6wVi3+VLvq|f%YF9n_be*%&D1Ugz6y0?^sqcpj&@CxQ?DBaGN(BOi%AL=-Ln zoi7bN+2M;TMIWrt8sKjmZoy8wRVnfZ=S=~;!h0Ya?Dk&7yEKmhoo@a6u$89oLC2l+ zbN<%=;F|;tX2*}K5%~pqy?}qVgBff4vs&b5jU5W(J@mRO8&*&S<2^w9x#}_%@U?{o z?D?M+fV&br`;a+|_i-P6_P19RjCXhAB|L8}1Ng(??b+iODgfWvcoBys8Gw#|v@shV zTdmX&#PxIafPeOBN49u#HSqTkodvU20)LdGGrP8TnOJx6=)2jv%oUZxAN-w zptDw0mz{b4HRw2#x|QSI!H2FPec8f4WugzPajBfX-}t27kM%lNuk^tiAIbax-;tKb z4`bgysTcXKJFf%YD{nZfd+vvbFB^6NbbNICv*Y*u03DCN-uQRq2H>O65p1keqsR}f za{&J3{Qhjpyhf29u6jyNpMSI0^k7fU{Q={Z{0+q6fq8(ZZ|=@cbgCEe#Q{Nb`uzKL zsR4Un*bf-5YhyIFo|6T5_>L~@)p7NJ?1%qf1ZrolPU?xD$Qy9WC(fGz{6b zeHwx9)_58JmHh!e9$><5^Zf#RH^M(NOAGwp6K~G8%KakxmXlluI%*R;v*Gq%K*xpD z9ag9Z{x?k?%9gbLD*8}bn8sZiewVor8qO_yeUFiiA@5Pi`^j0a(%?PhnW%7X?yGx@ zN(+xKO345`+AWfE)XQXg4B_8rem#`IRs70fRHsF9kJU1nn63Y>L*H9coq;dzG5vJ- z_ncIR;)0IZSROxGcZ=)ZRLFe4evXq@a^xFxKk{DJ4Bw7T|*kM*}8}s8GeGZ zJXpY7aG^TpnBwgw-v!)tX907=g74q!`3>MdjR@fu7MC!xy*!`dluz;Y*Gm{pC7EaT<}hoCF9r?}d$T~MRn zY~=AZ6Sw}D&2?B9j`9v&F7}^XN%*Yf1#SJiRO0erP(1`;>?euT0_S^XIK+Vce_3U679RTy(7I3_h_tnUmWD zqsu){a9U}dkU9YeU( z!JScV{sMIV_fed5I+ZKm8;r7VhH(jg1}INH2OViThx>Xba}j1is4gUk%k=DuJVWN8 zF!Ft-n{G1KrE@T{UT}iDHor64XgUvNS8u>hnlkQiZ3t>G3Fk7Obw4(K90L-9f)cj zL%6gPolsE6h3HPrdTj9H1~*(K5LLQ`aQ&BbLK=n((aW1-a7bJR_wsKjszv8Gc5xTv zv~M~ps5*fA-p=MG;c%2T?h>ck-T<8#x=FEMxGAm5!rqTA91SSG6(pfn3(C@ zN)u}ou6iCND9+$JrSAc+dTqsVS+;;DDo*1?n(sj;zLgahaLrcKQIviH{@T#qoc*@( zz)w<~#C0m4fKTtA=N!h1{7Az}uHzFwWVC$-w|tN_DoKh&FY*%c7vB$nuRU(fjel$l z_{+RF+&bVh;7&{*F3Mv(;IH$p;)lblpsvJpBo}qk7G=eqN3#^`@a0G4fIrTg%02&O z1-PAJ4L*PH9q9aVvgEq^*rJck=aE_dTpZA+9B>njsoaSVR)F`-pM}5nuK}I?s=c_H ziQ_?MreY&5*;5Vt9gaP@HzURazfb-GtfpBC{P>ScxNfV40e_BS74Gz?l=tD|QckvO znCQc$S5JU{e8V=*r*r`D=PFiUMMN?1|Lxn(E%`h^~jPD4mz5V z3VF-BS)h}mIELT$ZUDT0!9Dr2Yx4n5RRrVx>@Uz+dE>5pdf0qXr+Q`+@b9k z1kTrP=6x7?My`F#0r0nZr*ZqGKcVi4z#O@o$9y<0(-qtC`YZ+Dk2==L6=|~opP_KV zS0ebjZO>=R&p6Eo|GVd}!dV&$&`(yYm7lyc3-F%#%kVth2s&H$oRYW9aR8lZiXC`c z7T@Qp%O~aY83*8-quA)SD{$;M4F0>i#Kf z$4#l80y@3(9dOWwI?$2a6~K3n9BvyleTNeF!C%|+{fF%zka1Og3-~!zu@7He z@(0GHh)|P%(O;*;_u?-z{z6?lwqHh4-DdF9IDaQ@I?)2Sg}XPK}tPvvp(!nugYDZjR@M2TbZ_)0+OUd^U`+4$L zi<#ceMalnv-&(F}G2~C6qW?laS`%9{lYZ`1>KqXL@48rv*~7Xh{X8i8Q>CxPSTAr< z`rsvAza32U(L5c0(P!cM{kUBpEhc-i(EGkju~$5Q`kn2E22KkAJWcWc=V5QFe(3G! z08vMnpWhxsXrFtqlD|WopRXGtG}t*<+27FR^@FI&(A*J`=Lhr0Knhn zZ4&3_>L!HN`2_?1HgBDHy_6RAMd!vL7MQX<*M80tUoiTbdnx}md`h1hOOuWDB zU*>@pJA?yXp0`+B*ZtJo8izR5+&~Wf`2DwiO_uutS8&Tl96H5FT zUa!309msM+YfZz!&))gb_?+_oySQot!p~0t-ZMW6=PTEBZr^;+$-@z#GgEOwT-Uio z_#of?5y0=0e??pm9JQE_u0$LM{&YoP{kZ6ZupUrLnujt%j)PA3{0N+- zT>o^OW{>c#DCJ&^s55FJzuq%`8INpcUIYFO zvi{WbK40X`#5YIq>&dz0mr+bb4B*f5reXDu zPvO3!GBW|aU33lb;=D=t$L|+#pIW&q8f}rqfS+^7y7WRmziv-_c?N|}y9Br$c^=t0 zk6-u3wT?#TuEl_#7Wt{zk9-$I@B8~*&Y;W8CBXaUC*nJDeq9~^APx-}dJS~ul67pO z5x-83Sr~^rO|JoeV1D}lKS!t?LlfSe2mWmGykn(&-Z`=37`mZ2FZv)nN4&Wlf)+kM z4?1S~H^k?rgg3`f*H%&BXCiqX5uR&yj5&__X-9z%FZ1T$tq=kTqfWlkMdBDZ>fOi z<&D9uAEW_(qSaHhSeg#_gFI_&e_alB2WdS-EAvyq&xML;{Ji5`z|+ERBlFQofZHoB z;)h0ZzAm}rF1wuyep=?|;Hw960M{|NjVcBw0X{tcHs1It1#}vEKS5p_(m`jj;xhiQ zECu*sVUN*;rRl)8$-j^Njq-tCQzApj@o~VPuZY4op67!PsvB;ilN>oG;JMfXm$~JE zPVG_|8gMBNbcW>1@#EtKpkvf{6D`e;13#}Tmf>Z?3xVHxM>?u{9tS=Y<&DFu8!myq ziP~Em2?{g+^I!9AJqDgD+f}i8_i}14Yi-0dlu0XlhZv&3<3vjETW1utl zS1p=nkqbI26gP0!?#F;1Grtz8_sRwSr2JwWQFtBrZ{L?9=XM1XTMWX)JAWzV-jA}u(MMa=lBG({fq%0uF;GtGKv6SqlhQR(Ft^h-uj0EeV>A#bMs%4s~H16+Mx-#B^Loc zEB^&PvC9E;P=YG^#pwm;Y*ZxS$9ao^KYWoYo4W1=@E7F2#_^;5fPZQDPjsa&ANZ>j zaX2&G4}3^z{)sj><%>T2d*ll`z5Rcnw;%FBXIg#tw|N2b4)QECq6d@Tz0(; z%MGgnJXkRe&zfosI_kD<*j)pvL>ys4E&-2n(U=@ufd1QdA;z;MM-k{o7>oHd^}!;715mAB}X`_icWNIvLk3fzJ)rV>8<}0^f`9 z)wC>u|2IvSebBm5M<49+vglM{~s9{gRGRn_|e_|ZHgY;H3W z@C(6u>^$v8z^GeTO8B_zL(%;pALf#8n44% zR{sHh?#!>kMST+iU$9Y|ouOF|_%?zsTr~o8&^TT8n`R^E98kz`MagjBPc7GBS86l@ z-zEP&R-~5$|7}7$HdFTt@OP2AhkW0F50lNc*##ZHh(0vwmV?f_Iqle@wqHPJQ~o;~ zu&4rbPMy|fbqv3NpHgzYkbRDTf3jJdeQEp!deD1)pfG5auN-avs@k7#@ zQTW+{agaw~mRpRn62AfNOYlYm6~OmiA#-r=2Ee^*Y)HPtSjcObr&Ej$UjK%4U;3jU zPgRo3z~?x8Eq;u~k0pB|5Il_Flu!2?6!@lfQWS)FKE(w-#lr|*daM=br+qC(R-}Kb z2YyJ+7~F473-sA=EEnx6c@2GDmA1iI@hzZZmz#@Lm%av_XjvzmZBY)m@5+3% z#=H{nC|O6``9m4#Y_P~jrM)XbCt9k76*KG(24hKiw_OgfqmE6*n7w?cyuW)l;431sQRRxKz>k+1;v4SWfZw2zgNAH+ z3jBx~7N0&~1ARVhxrJ`%=R=>FQhhus*#>m<2WOD|$@4)+CNsewLM#B^qMLRzZBk2P8>0Jqweg=l^OogX4= z#^UOk7U1XLyiAlgxCs1A_te8K8*KpJ_~jOQ(LNvWOiz8_Q{MzW^(`Iqe2NQvif3Yd zl1DHZblPO4k@rOpKqtqu6Ml>)L;oKhrJ>QP51{{SX=jpCFdz8znf2M9Y~VleG{CdY z&j&ucCia)>xIO@P;@U#3M+1p<00r)AG^}u;Q zCxbt6D`ZHe;{)&~x@H1C_I5t-?;TD;$>dnl`TVx5H-5d=9{7!KlhE=GIlzypnS|F^ zY=!^R>G;Q@k>(lD=VNIP?7eF%=me+6qU8fKKqpt$52sYF1pM9Y8>pCkKSuTM%FM{d z4J%>11;=lo{B~KOlP@JZ!E0=Tx~Fumpzk&rQ1^PxG~C^372qAZ#Ub_XS%6=ynS!?+ zUI~7tAHIP~+GK&B1)j!ORevksWIsmK%`^k>$DZARPkj^k)HnJ+M9QbQz^C|Q+#NFm z_JfYg;EU+dOd05uc=pC$C+-IyB(@h(^=ujRUn1>|rRxp?pNWV-x?ah^r~lW}-gOZ8 z;a4NjH1A~KmrBh+pVk%hY26ac>rhcbT%B2 zqJcOTbgDdu<8Dhsp#OSrDe^fO3;kC~M_>az^8E_=E@kiE!)SK>CE!<+eK_O0p8)=% zHr~kR+a=(Clv;y6tt;r$x>a~M=ulkHp?Edfw{wJV2>9tAD@6{zvEb)R*=W4#9qEVo zlUYm7gRofeM^uaJ$$i%yVS z9`e81+BkP);T#1zpQN_<@uEnmyW+$SbXM;i)RosP#Xb9;0es*F55##z0iIFgKyn%Q zT%OEucT~SM3jF*`_CYO8ItM;KFLg$b8p*Xp)=^){KD3lieG~Z9x6fpMRLZBgz^C|E z*l+d%=uG2QBk!Pa(5WZ;)~>&B0s1d}v>IiFghT)J(n(~$+{?g!XJ?NREKdUeJK0C~ z&G5^>uUuh|bgWMT|C@9=*%$W$)D`q;-FmX0E!Cm@2s#x1PWIisRdNA*o}#`6C7lWf zKi|t{VDHfv!Jpn+*C6}L;owhZ%?dnj{bk_4475k(%t_#Xl-c3Q1*9KxeD&(>(efE5 zfuB{g3U6F;9r{d&vO=>i1Vf*{r1toB&~?zcooj_!VuL~Fv&;c^zr^PXnLV0>3~P@A zUL&)|fzDSz=lq39Xv)Xqpz}j&hmSWCeNxxKz#2KG1w-BJnhn@k_bT9n%qOFh&Bp=1 zU9*<#SIp-kS%pqQ+V78ppFhby#-Y=$gU_X*R!IMRFyIYjA8E>`z6pHl+fTB;G38TS z;8VPT>=zyRCJuDW9QvZ=8v{V+H`#YOO%VtEZ&}+Ho!lG%{WnS-uvO1Q;P3cgfc!@L z1HXyvgS~BdBJfS?4bWX%f8aMsSAagPE9ld@zsY{oREOe%4#k_uzS&KE^XXw<+P4*=q{ScqsrW&G| zbNrS3t+@Gm3iP>AQ^9=x=LLPXNH^o}?^8f0eUO5&(mV`0^)e?MI6oQi7wcLhSq~q; z>tq|SNw;Lsv7FT!&Fty}I?d9x_}zk3sQcbc!F2};Nh5w%O#=rzd?U4ld zf5|@f^nE+!Hx5r=Mixty{M}?<`c$YZ=<{`X9omneL-D_OH!dgpFVkG4k8>Y0>wkGF zecpjj1QC7WkNMHZ%uCgSO5gV4m{xo~*Zau{%)~bm;45T%@!cJK4wrme0&}TB0{r_m z`|-X51Sfsc-_1+D?0`PWXZv_bGOt7N^Nl-{IvBoJr2TB|7R&^`b5Y_4@TJ+j&L90? z20wRE>bR2i^G)cJ>ipE(sjQ1}btB)8!_Z)|ABu|-cf)tb@OfwR^n#h-Vi%>Kt|Whf z$EnVT>K#fP1E2aP@Oj^OKE)}&f6Wd=ak8C>sJ~!KFUC#RNvU&K?7!{0Ud(2FCuRSK z#p63_)g4>k3G0=7fARS0O}%4lIc2@_`1*_e2>N_KybkS0(BW}^(a-L4dol4QPD($$ zM1Lmr@5S7)bW-|rNIbsF8gJWL&s(qL`-;c6dGT%AI~&(4`QGC7%XRs2tLbBSYRw~CEBwoM4?#;LEG&@4w zdo@z={7mFjYzJRmslhB{(HF4UtSnH5p+JwqQ(1#dXS^MU*G9~f00Fr_pc-^NBJI;>7dgnjTY~}shgzo z%^4G+Zg$N{@&1x{eu+F_^mJuEq4x$?*~Hzp3l}<)h9{1iXRd zC{aE=jsl=O@Ws64nos4#vtg2eZ)s4{5x( zzRG)fPp*+Y3i#hi4wSIIy4Q41{_*Z8;D3{*i0c7CpVs|J@|cA6m7qiM?<6-$SkKHV zjg{A1vEXNo?5emvS$5=#Tyq)={@kt!$E%g=E1Bbcc|hSP;D40Gu03ViaXh92=w_?nu*Ug@ayMtrWJRy+Yr!sE0f{Z%Jp9Ggev))?UsPQ zmnDnq&(xRio+v*o&5D$OYpOvs5hIeXA$=T$E40s~7kbuO)eB z<$?VA{Lw`nt}d@X=zJ!*X|K=m>;Jzp9d3GIf9U^{G#iJR^3O*hAC1U<6sEwhCOK|8 zmi+Tkhd)N#)i6`wf0RA|eOg!0r*%J*JTW>-Vfb_*o&7 z?lGPF z(%c^HCiz;WY4>seWG}dnFM2eMizRq_@_&=J(nmP)g*Whjubsr1^y-Kt)ntDjSuUOu z=MDTqx?~Y^f6`zdT}(TVBMTqTvL)BQY-XB*&ibDi@}HCKHis`&JAg4 zk1TTikgWO|zB1ql;8rS=xhs7;qPly2D7E?qJ`(K(>!`A1zMt!_{n0zmNBHFBLx6kO z&EyuQ>cM}=YdtyOQ~w1%L-yAqsiMHAIOXRg>me!GAE_2|BoD$HbUwCBY~@* z>H5tDbSO@Bik)=Pte;ZQd2sR&M{^t={hY<^)7C?pKm1TbtSdfJd5EL=3yB`Hxv(~R zXy|i4R8h1UcPco<(Hw_8@w2&B*L2Z=Mn6;?GzwS$KE%;nhSJ*EoW>np)ZwikdUt*l zcF}9ag;z~s&Ryqos0~uRnN5;E*yYDRdC_=P#x-yPd!OVlA1}qsCf61`bX^wU;SVN4 zzB9$QyZ*tKyt3p}=lcgfhnnhaCpvyE82Iv-Ns!k}`MX{J;x;6Qn)0ph^EuR%zgzN` znY<6zJqs+1Zf8{@sm6M!kif<>l{wxf5`W8O-nc{n# z`P^z`c0|mrE_abK+dcT4Yl;i`+7#bJaGGaLaUsu|;=4&;1I=ruxRA?C@wFb!*e#+5 z`1akH&yS}4ua)q5&6F?XGE@Evk0!k84Fdkj;e38H<*$%5k?%`;aMb4xf5)+9BtM$^ zv(~j4Kb+lzqdv^MGmibX|0|4lt#dPu%|yU&(|IiW`9TfvSGYFeQ5XULbt%ir@7Dl- zh4XK$J;n{{&RELlLDRbSk_K$t!3}f{vwZ$Ct!wYvfW0D?0p6~JVeLs?GsPWT8?klv zGSHdyjn9LoIu4TG_<;NX)NR%n!#>>n7V6qN|H3crmjNDqnql7=d;r|hxe@ZFsXsza zH1)^9<2U3=Q(VZErntRF1LP)CT*ytPxShvO+_l?L=%;Z9pYKfjv6Jw5%9JnUCR6@& zkMHDu7Y=-~k1^ysQ~q?xcYHzpD2z8|feq__ryRy>=lT=BD3L<{T}^D*l&o^--_H35 zZkrJf{2zuR*;d_N0e`ydH$2fN9QZpcE!j3C51O8b)1ANJ70YE%cglS}ubI{zEBT6( zSQ+RPTpPsdl6++9^H|rfczWL}d_R7}*nj(;13t;M9-p3Y1$16r;`5rR&Ll}ac2|`_ zU75=u_UUu-O&F;=*7+;WuZ;!V-hLSSVefOmCpp(a9yIkw$Z@9rO!DA!pD8ZnK2vD@$Apqk>5wC4`W5nmZOzzsG5Nr^ zcKwJwx)cMy;<+h1k>oW~AFQ1};?^2pq3+Vfe4a9`J6KYQQ_8-8&WEwa>;jTsOzRGI zt;Fx5 zWjNgAH}n(Tmd{6~{a8r&JYvcha)&A3+@ln4T&|i)=i4mT_N*z{s*Cc?C8c=ik46}; z@sG~z9+JOI$7|tQMt<*Zg#N$Z>&))>cN_Y*aDI(br>bVs`ATH#`y_dO-Qo5zBVzH25{tThJQ-1;q=PV$1OerMMl zob7H5I@*ihl6~y2gH9(&4t8GB1L_VQ^Au^2Twv<6zH=tF9cB!;Et_;KG4r}w|i&+$@!&z>Ph%K zU&;P$3&7WLPQl;UK~UFf;b{~? z@`7pI){?7uP@h4dgT|dE-;b7ydil4Ny0Nh8HWMaHL2Y5T@c*rBB{s=k3)StE*hwmB*I%l@npfw~v zm)2Et4Z}ApM*zP1=OXm&aR}h*uHpFFzY(DGT5mCmCV9S8M_m$*pIMEBx@O~SQ0d7) zsH^52iho=h0r-HdMQCzi2;l0@;pDxLWhV7U$oZxIsC)3az!Vp9fhn%)LEmdx0bj_y zKa78v$cZ$(+?RUpN&%GxPtIrsWtFtI4YQbV|{_I;_8og+F1j?c!+}8 z!}tPU)!C1%e{7&GeZNZcc4?m~5{z@m2RigVLh;z&2bDS)EA)AM+~5S}qmj1~Ka8cr zcpbS-0uxU1c6lAL--xOW)TKION$xE@?kdih{GP@4bH^}&S!Up^?B_7#%u;`Z9A4fZ zKDU?RREOsO@;IN{3w&iREswj3{m}eeOOl_<_rvGaQofK&%ky`O{_nlmbn9inekFgm zI9{z~cWm?0J(S~h75o1bf5)~d$wS${tLVSa%-^?ml6+ozyi{DteveB3buRt7Rpqr` z$=@TM|H-z2^35anE6;~=^&WDcb-Mspb=@wWZ%-%o zkYC@pOR2M6JpX6O1LSGrwnAMs=gs2zqwwl3Pg}lAiEkIrXCWt-`lIT>=ju}5gj`)7 zr@zba*Nc!FOL29Nwc_AXUm|LbxmaDV$RfIeGG?8W*2&$$WYJ;VagY3*t+&WC*lnQ@Cqo-EbZa&-{r zTcde=UM=lkQ{o`b|Hd;XaGiQBfVyp*?ePlb{OS76l$&F+1aK{9M{zzEa%`zTnjU=a zE%i;vy`^|-5Bj^O1NrTw&(@OiIPN62-hd~J{E zaQ~(J@X;RJQIbDP`P!1{;{C4w$yJ;U$+xBBZR=_$-oNIIUd8PiXb1hbbGF0RmG|Ey zO%Lwt#A(3Sah)#Sf47`-=lZkLfUo0B@asJ?Y2A>Xe4Z?=+d)F}UitM;Yt=K{d(422 zzUx?VJ#ee`D7TyBz0!X4TqnVLgX+|@<@02zj-F%^KD~@z|2)Yd`2ZAfDa2g@%gZ{e*=j%-n*4w@9jy5<-$q+EFEtr z*D?6XD1QC+aCYK`9)@$1jdS5vtiRl|U9 z=xmMWki1u`T~nEqd3@e0t!pkZ!=?MxGPirGGh6ysb8|>8D%I(`-waRnQwM#V`kve8 z(GBn(u7j}GId$m&;Tt~hmFo1648mQ!G=cB`w}J~Gxu{g9yX#=wj^w>kf1dW`^Ij>x zyJRq)I8QCJX4)xR%hHeBC6cd7?-v8N_rgUh)Zsqzbo zTY95A;60p&KrSuyS;&W_KKJk#1bMO)7xH8&Zth_QxwI4)a$_mp-D5E1pHf`NKc)Ce z4|V*yy;|m=-qRU9Wlk&Yf0cyKMWuWp|CI9MJ=)^0&r~xd<7O~b?fINm%8z#^`_-$c zWg^>lj7cj#2bTJ?_JBIx`9?MKK~aM3hLmcq?1>SKYx^EmY*?V0>2_0(ajxNWU@1Rd z(w4k;Qq2smdtzHcau8^)EA=hWtsQ=HSp|-7xH`XY|H!lu^uogw_VcHG3j6aHM+N~- z_y4E3u%G|W>A|R!_%omV$I;`p_Ya>(Fmlx~!0EpIlrQYt-x5Ii=D6y41Mr=~_-b!T0fwRIxx^HsCI8?#*Zw}wKRfj# zDs?r(PDv_op42_$`EC&>&@~p=bb|xRpG9QA%_UnB$wi zs=WWl`FsIYi{mI?VuUx5TnT!74=3`tc5W~#@G$-#|7niE$F9c^_5Z)em*PdTAViPv zoB;kf_IBcR=EsMjd#+vn=Xg=RO=Kvd$BX6{P(OwIf~$#vP?zTIQe4O{2#N|o^t@W3 zRSrJK-{be;H+c{OKGXg7DPP!czbqjLaJoM~#fAO(6MvC?_{nkUs#*j(`giz!{yXaM zI&>d?$`|(G51PsImk-PV{;e%qdzIWUS!0%Y*fR1?uU-x4+Ij@M$l}S0k zZ@I_gj?;;bn>pUB&%Z}%C*$)1`18#izi;ye`hW6($NBTw91rWmzb_gc#^Z3lk$z~t z0QEu07vQf8bNsL@4RoXt;oQ-Zd(6vR-scJL)1c3#A>o`R!HX>TKD%UP0KVRd-yf`Y z8IS);%K)9QeLViGh1Xg5BMrvYyr0(@pFn&g;~H6%0l2w6&u6Q6obDS&`xN#KJMn?! zFOcI)_ba0~-Dm97vwO_GBp#>xXi=Q*qg6b+fZ0aQE6VTjED8ECJ#m8TJEH*3XNuE( zv?!nMqqS*%2{TK{=Spt?|NZF@?)S73kw2m=3C8=x?*tb*tpKhUdb~z|PJ;gD?BsEJ z{?l;Z(weg=ms{*4&;4)FH%~SR@I39D?k4nM@pNsulT@tBqI&&;v0qi! zME%%U6?x%PNRxYS7T`JP?l~6qD;TfxIZH1*3_*WkiP&xs^Dkp{x#13>=rhY?1jf^Y z>7TJW+qb=&1bDtI|2|fTuV_NTS-XGM`_Uupdl}r{3fT8Do607njOFdmhBdUq%}oM4 zUtG_Q6Yl-PzC*RzN#1N2K#(iady!z4=TEFY2H%}Q&%ZlcvFq}Q)uZ4$HE{l&8h9nENBJH(j6Sy> ziQl`yr;^p9U_Joo`FsG-SFw832ZsdIKm9GvHvoMVt4H;Ia2WF+;8u>`&7E2PD_K42 z=C4@f+M!~cz(2Bj-4>T4cwMIVc!_$rE)}d!b#g%*^6E@c5B#H#K<_U}K%chr^KhO6 z_ zoWt7UcXrUfX7$N7{q|sgkNgq8zk~h_tABPFv>)4@64(U4<3qdeSe@|6wLQp#Z;C#^ zU$c59eD{ZZ^6&DH&-bi;2;b#_^Y8M&->|yts(+HO-5(pp`6SS84XeMwyb;jzc_W~& zVf8MUX9AqhGXegC)w^DPIfFi0qv<$b1$=(6dKb*+0X?731Nxt=-nHN1Eb7$*#Q8#? z|HSK4RTA>scf~k?*RXn^QJfm{&?I{XwhMXq&gx+848{9Z zpnn9;lL7vX)%}_-KZ`!W7sPhK=O?R={eFHHeL5st;QS@f|6uj8loR6jrX$b9c`~4{ zX7xtRf8zJ1S(`-;@mI5Y-WO z|BCaqz^9hg-(X%P==r=X(AQ$U>jH8e>(w_kid z&WzAQJ@ogtPb6(N?*iuGTD{+>7rBb9%ND=uHT!Z2=K+GxA66f0xk3C+*LRf2L0`-2 zWB*P&kL|ASmWA`sK>v%?8^>6j$M~Okiu2PT{$H%#xbfzBZ1-J(2KC_c3+syKF>idn z8RX#?t1ITO7r#G3T?^(nig}Vu{J{+TawG5%mFp5|RdF8T!H zd``$4pU)}gAy^v!s|-Kmd}Hvb4O}dZe?G4m^tD0aJY?|U^N@l6V)ZUQ9x~XxXqe9o zKEGJKi{F3vd~eYIWc4n7|2bJH&L;=`Pgd{ZArkMZAQh({65 zqXvB~t2grBd((a*7xT74`aRa{6uHxLyE!sk%LiKUiIH)D`jl%J7r8UIu(VvicjWivc}f7X$i_tlkCdXn^x| zG{E1pde{7D@qL3Ni|cW~=RK=;!MZ2V^Yu!gf5YlsG3~|ojlXQ&6Rd{<{To*AnsY;Z zpBeH+^nw1qWA(0-AL9F!%Jx58*8}_`s|N=35#LY3Rt4cYAn5NqRtJlkC%#`L9~Sk% zKl%)&qb7*&KN&s5cERU0tB=h-FTT&%`-&X&uUUPJzwc!=n2+m#Kwrt~jr@J`W%z;FLAA?2cHV8D~j)>e7z6kp_0`VM@QS&x4LDz?2K;f5ElsPZ#OF~ZTQ>*m-N5H@pe?Q|1U+952zvM*SHjj6!guG8 zQ{s9<&}#$PIh%cy_`JJUZ!h{le;@nX($gEoc{qEk#W;bNu{vIOm=f>*u~S4n^!JgE zE%kiD>ZJ6(v0uQS`Pk932Nmc)@4nbB_-OsD>FBQt)R*>%#r2P%*ZNq~j$3!2 ze%mQ=ogL`Q{q1SDnL9B4j8Kt7{N;i6wBN@a=riD($ie4@j{~l!gFNu{bdZPgAbVQf zeHr?EXX{d7y(jn-1zJ)UwyqQOd|fB#i-N>;puqV$P~cD(YIblA`lPAE^`zia7}yrq z+k&32w*`HEP)qtOeiG`(OcU4hf<8a6CCz$02m4!mMf8FG7W%iPMeCL!pOqoT3B1VP zl9~j}#s21YVS6C4b*#|e0-ts?)OJa9{74y$iuy$j`Z020b>4Z#r4$SlO1S=>#RY~*G+>yJ4jq-4V)An{5@bxbR>{rFhW=*w zo6x@L1CS55&%$-zz_b0$sH~G5rq8|F2;bY3)e+DAAiV^j|vwh5HV#jvq<8@eU z7kpCu8`C$+cBpU5)=b0tebA@)G^U+5jzGO>y);}W4*FbwbJ}6>2#o*BZE^iL#Gf13 zoZ9M-M4#?UL_PTA_?Y8*aL5B+4-R?A4Qfs^7yQO~o?TSpeg)u@7}x;!F#tW^mjLvM zLE=6J!1+D~z>fvhrwOkgqmQb)xE})e91EX{o4({vP!)q-16-@gLcG^Y3<2 z`0Nf8_Xz<#-zNn0yMx4iMS$~tMSw>#9(QCg`poGd?oR?fk<1776#+fpKLqsQL3%Va zz7FcI=-tKrMnE4Ps7J$I495KYJ5%(5{zm%OW$UWMdBTC6iV5s<0(`f>K3zI*2QbwZv8bi zIvDGR`xj3XmQ6Ay?NTGjgP^XouOb-hb%z#A6nw`Svopqak_Q{Q(o-Jd^YN|eG+}*l zLn3GOf2e0hxGAw7SkH2rkXPD}`Ff_5TCQv-=<=_Eumh@p4ZQ(i_h8BPep&uZ;V#r z^Q(WyX+qBr4au4~@wxxRHyC-Zr4xnO^NdME>^AH#=wW_4=vSHd z+sM%oSmVL%>dMYj2o^?mxF&1W zX`;~8t1;1k8%7?6+R)s=p?IEhK;~p2d5bYQxITh< z;HQcnwA0wlxE|r!8FwKovI$wDW$O_R*khhy9T4QX!|TSR^$VtFd4}r_9IpG8WMeY2 zoaKjIcNizYVVo?UXhb|-it)pB2M*VLpS(Vq^Gf8OW&{iVPYPv2S-TCxOh`p!7`gXw zCynSHg6AFkj-4Q^o@jz+1XiVNrgncq@I0N9!^R1hYE4Op4s37pbJ;XzdWc}r@utk% zV65Q8`06cT#L9gX@1eLh2p`oFSKLa@9UX~WJ#$t%gE zS#Lw|+~nVR69v6iCZxy0E#$Xq6`dIpis$lFySWRa{+JT$sawd0JsRp1u?2a)KRd5s zYBO@(V+(nzx=n3TgM}tXZpiHN#t12F9ZkEGFmk5y2u(P>SdMxS>~*GIk3;dCS?|g^+OI?2vyHJqrRXdg_^k^#QYd`ZYm@=+hTs6s|Bk4 zB%Y_Xs-medZHg`S>#Zt>X5HG0`aAKK!uUE}Q2$JwLq9Cphj}OqXfJ$i)dlshRC#p3 zrZd=Xrz6`mJL|Y$yZ1|CY1T9~`WQXjt}(H8L7z|R<8;?g@%*^JGjlcj6I_v3s1MU? z9nPXp$B5aQW*c46r?g~09paLLKIaQMYLfeoNBw8@L3&~FdDNFzTWQ)h9*_D5CDAm~ zNIX}r;gd+spW!YTXSM1iopk0L#=m3re9ePASL8LSqtxkl3i2l&oi)EFk4OGp6-QZp z5c7Oz@k~wFbXUxCdc_X9Bk45q6z{DX&xga2!|%&>+d1Us?b~aHy>v&OQL&x2&?F*v zJCUgAu}F?QwPFvo-+l_?_clnsCuN_B=Vs!Ty^HoR$w2P9 z{*#lH^<3m%)!S)C&vf*$D6e*U`g0EYJSvHxv#Lb>qWc=>2d}(z`Y>9zX$I=enrAzY z&hXOdmGpX8I>ve9o=Mi3-7_%GUn&*-dp!ersp}i3v95EG|5im(3$=J2U$3A4j;+BSaWBZ~x&A2rO^Oji=%FfwIMc(9*UeSmYD(9x7dhKI zMD|&+R>%G6#J!@=pmk9)r%7vdJ^_^K^54<@EL$tML6?6&DgWR9Cd=F=Y|!O@4Gmb7 zg>gc=Co_F9&RP|vF#|>3=5mzm+R3##?l0xvKI*JYeR6{?|9-T`1u>sNu71U#L!&g;{OT<=HpeFmOI^Br&mb*4c=oVo2&HJ^>?$B zpJ$`2WJ4}^>+%yU#a~q4N;dqFw=Vu*Y5b2p_(e8pNHF?5ELkCqe+%a-*~RI>=u@R$ zDqY`eNe#&kKPB=nYAedpuxB^=JSbTz-G35Qt;vji;i&(to-5sd23fTxE;L-H zUnGtH3)xk&hbw|H&R?n}()cO)+mJL3S0ewZS|HtjF4VLp7V2>1-&M1var^E~17b2% ziFwPY@Ri2@hB{wlhBm>vJo~YI^~L*7$jMfuiC4Hz?<4(=WR*p-?JX5L{aWewp5aw2 zThm*C@johADcv8~q%Ya5(F*MESGAAy`*k0DN7j6n0^|IxS|Q#4xAz@DHol2MpZg_q zr2D`A?E!@7??9hV>Z#KG&868W(s`5$`3LnR+EjNx?7MIz>C{t&J|!jpNY8f{)2YNK zIvVxw)Z?V*yXE*PWL#i0>hG3JlkWeUCJZE@t#@FY)vC$T{nPo#C~{_&3VD@ky!3qc zQBNfnXQGjRR*jMF+nrNKkWOYQ%v);3zta7`-CjqMTNs5rtzxP4e6QI)nKYUgjr>A| zm-HN|a<(C1yS5=uuUIBM??SKGka}mfVf>{f^QGtG%yHewhHKlfzZL3#sJ-s_<#n+e z+4OW9##y79POo1S->=>~t|Uc6V$tVz$pm^LSbV=)-F6k3Ix`l1UaDQF>j?3E;6USz zWNmRg^5^OyG&Dqf-`KsAl4hy#=yS7VEG(MmFS z=`rN5R0HVitKxgn^464Wjfuy+ovoNnKl~Ekua0>55^w8RfAWx}SAiYlx{Ir00X=5<{;t~(({j)NAA-VB22K)P3Jz9D{ zY`nsY>}#|i~JQvTyS@={e-I{y9(nE{pqt78PHCgF;5q;81`qR>pQ&F${ zl0uRv<)S`E-Ja?Xn}Yh015(H!=UmjMlsM2{{d_Ub#u2C3daf*t^R~*0md#s;d{Qzy z7i0BBTWb7Y6HfZV3j~dT};C`@2Wbn_n$%NEK<|C#%h=-ct+Irv_aiq2YH?pHR}BPG97VaZa3-RZZxVlie|I^0t?VYkJvA;hzWRRT`^Rd5z+Jc7pxni7`EHg>(h4~m~ zj;aN#8~oKkT_P{@1}Uz6gg&t)HZ*=#9rRfiRX~L&Eu%uA>r9)FuG+WQjq z(Is7I$7gjgPVZrbB(%+AjPs<*h#DPyj_2M!e|?Lrnp1}SsHy?&-8cvN^}fYKedZKmsw7Lqyx%P?;{Dn`)N?thSXcy*l&{PYOB_g*6-ZkJ+z zPpO;HhxVq}uM4BDlkHDRG0rn8V;YgU5%ciP<}L}F@(Fz+OFGkkJQbL?dkyZ9f?1!? zXP4TT{-_>?Jac3T*_rzV`F3?9`nSO_^jYe4kBk<+pie|eCz?}Q7xhhg+$X2)YEU1> z^ved-MSbLGc9ytp4eFIl|Migq^XZv$k7O_WgmJ1=^=Q|u;mEh?-zP=az95fO>C@-` z=p#>jbDs>buR$Kh`1dwLF`qv+-z9%izhK@%D~3~z#YW^UN8ce`$9+N`#(2y9ddSTd z-6O8nHOPY*Z&ne9y!rVe(*NCC39AR#{Vm-n5_8v7USQ=#!u1Ocr{~GMi>%muhKs`NlrOU4D+h)2vX*4*qCDB)2ZQO(D;nW)h#^sp z*e}H8wj?`9p{#R+4gF@6gZgXJV}#H@t;w+e@?=ih5wvIYMby806D>@B+L|N|E|j%r z`^|ckWeXXmZArQIfH23P6-loxmi2VAqs==D!nSE`iF|piaQJl#EdM1WxZqyl)*58th=_{4&0Lh#B2|{xbSo`R^0#E!v<@ z*D?KQwd*zX>0J^l48GU~_4W>OdaNi*i0s{tObCt@UigUZ!gr{EW|_k2eTJmm{-9uF z$IcygER-b#8`5PfGllqh?Z~|y2Zf-qqP}oLTWZraL+Bo6NXG0sAh10J$aaT9*)2so zdh_>Xp@qF8*?Rtn;L%Qu^TJ{i+QIXp(5=9UWMsz+4nJC8JhuYd(Qgej>>S?DvNdDl zguA0#kj-QAWT^+6(vLBj!q^^_vM<)LLQm@!}uWv|qm$Q^1$FPo(b&e^TV$gBH=z=AwkvwNG!ecFkxEzS_sKK5jo z#X;d+gNw4uTPP_GYR~p}N)`UyWk>EB#R!kP=E*iarlf@F|2O{=Q#7(!icJLa|G)Wc zHsYLYqA?|qPnbWS^s6O-`SY`53T5@mHxW2@8+iKh`p75lE0o2%gdm6c^W87DBrtz| zY_k$}o;B#jdG+~w>m#=@Es-r90ebP=?RyP+O8(pQHcCFHR`!s5-ZTR)>QgH|<9z;v z-G#DtHcH7KIJDcReu?apwaCp5hYD#O>Jx|l9>R}@O-QqmA>_AW5nVMe6o0=asgs1Y zY@YTIQzfYl^`=h>lsJAyt(YcQuQVp{%)eY=PsdN*A`GirpM3K76gGA?CI;g|*uGDF zX#R%?99J1;bA>MdG$2=;l;k1%jxZo@tI+nV0nz+7Pnh%0kUX6jg8YVJi%@pcoS5A8 z6kLsr$$6{I%%?YvN(&YKvh$u7&G8Uk-fcn(J8mYw=|T$n-O*hoeaxwilD^Zpu97}D zWh3fqA8y6pPr|Et!pvMl;?Q<8whLV7X+t>Qyl*4&(@m5@!vu4}YLmiE_FW*1wF~>j z8S5#9zCG#_g_Fn^vERj)O&92<7GbDw88k+iKacIx)nPO4TXnEO80tGM93xDb+l-tW z5<D1xr7UTvk z#|WQhHY1bjDM^`Rw(|I%gT)KU=%GQoSRukVh3w5YDL_k+*dl zLFcHe@V+|4#YG6smEnEN+F=51QuPt}G^go8aq9udZ5+nZSDv5IXVg&}cCPqP^l9Pd zPA}DdNByWPy#&L6VW{uyFqtkq`3&_VqZSHozx$xx(rpOM@_T~u@4hupm{HsZ<2Psf zRHux8fO^Y>wQT(NK)ux%87=Eliu#6^{e(j!d!W7*+sFIY&DYrO>ut-0wn6sTuC2pp zdVg#g^1Nmn1!YYSw&z#){XAU zJ}j(Z<8XdVJwch#i~N;`kdKON>bC7L>T~AR6aGEhi=8E)Bp;R8^u)MWuy3JFN`lzmNgp)M&HG{e zm5L1N@12Nx=SMd+Gu976J^bF?XC$J2NY+iwx^;t4U!_Pve`uHcL%ZM)KESyTaPT>+ zNWgsFd-q;b+NdAqvr?Hs3%VvE&!2Hqv)yM9@-NC1wqJJ*j;kxrYcz9Y<8WLxWczZL zHTs46yqMpb9c#wnc<8R3OHFV5L4Mxvwr0j~59GGmh3tv_3w?aY6=-%h@IW6!wy$*u zL%nQxAA5ZEu%>m}>8S6f{gmk1#pfC98xg)o7 zm`QC8)X9eTw@J6+HDgVtqmQZEJUZu0J=EXdlBjubYC7sI9Tw7D!*AHG>zro7*W;s5 z-`s5yy>qAv<6k?!sW3HQ6vp3(?L)q?s1|>B1$SBt?+1=XpN9_RG)!2C*HNGC zTYfx3AII&xf0}CkzFLUatE<+Bo?1~4dF&03EQiNSb$k`2>2=X3e$I%jk1H~gQI9ERT5B1jCwY0)hAN83rU7cI*|4*l1MXT!8!|~a)--N8P+e>l0HFoo% z30C^Z^SYaADjzJ=@uh4XUjrPshnB3$>bcGv$6H$mUpi!@A@bv8Z8dj;ypXqZSWaIY z5&g9@t(;pG|A#)tZhrLEebL9@VFTxaKwq8D8XEdX58JJnyi}82F&p(w+`MS-j5-+q z(feMSuA12xe?7KOdsW-|*slJkb()&UIp|~Iu!JTpu8VmHF7npg{52c%V59Y>$@Up| z-BY$S%UX0{2444C1>1+`XF6W5j_zhz#}jAZ_4=*cO}dnXbE$HP~zljyKqcd7MiI@~AJ(vTmo(Kwe9CqaMZ; z*TcBtdf;3S9Q4T{ndq~y^>Zix<#TmDk+h2a&w}4$UfOdfv!!!&{feXyy|YmN{%WT4 z*glI;|A&UtU!Ga0w|k!He2DEg0?*k$ig5IYcDcXUuIK}t`v3=@Jx-aJpHI8XolNG; z#r)JNBk4aKvXDRRljS_4<09mLl;L#n192R}_r8Z01MxcQv3=bK?Gnc=@Ir$Px^YWs z+Degc4T_c3nk#gC6YZNJ`Ye8VP}aU`qs}K-8vlg`H)V%<1?%*o()bT9Dv-@K4%UtT zaN4}S0gktkp0TnOCJNp7WZ!wMMGo;Ke-G4g_8r!_A&$4yqBxo7Vg-)3HV&KV#+f1q zy)FCh3IDI#I8bT)4@obSHR~3v^9hs2f6R&7GNaAGy78}+;$iF2WHXL52kg>#qnc&qrEKVkGIYzm_GX^j<-v>?PVkDF4K*- zU|QB$gX0kVS3mdFaf*5vS6nZSD^U-e>w&{Q`P{$bizr!q@migazZB2vr%|$VH`nUo z@t4N`kUM8(syiEW`c=~S|F7VzY{9J!I{hjs9_}y3BlxM;5w7fxK3^Lb~7j?7bsX`zUliE2R6g z*Wo*|YrYB`Z?$xVbpIbW?5nJr{odh!1f1&u_j4FmTo2=l>w$B<$QMh`m$(T=Br;Bk zK5%Xbe;(1%Mr6uCCC2khu|RtNx#-!3JiQW*dN`kjzyCBI--cYx2}k`;#cb($#QmXN z@aOM8+y^-L@aN;h-bUoz9wp}ImvRBETr9r-B-^(k12o~te=287@Bd|Yyh+%=XuOUM z*|`AOy7&Kiy;qQSv!d~Ob=Mx0-eX7lDM+2f800;*@zVQnyG|QPWJnD9G-CVeXX*aG zZ?oD;Ui>|XdOPh=>HmAj#Bj3f;X%|lX8YO=2YwmVRdjI#?x15Zb z8jZY}TLPV}d*ALdBbY3!yC26}M~7q5`~QwvtJq!w(a5bF;-&xZFLEM?!;gdL)51+H z{eOQkDUujZjYWNDhm+F(k%4=s5f?U30LFh)w|MFQPHMxcWb@Zu7{4Jq2Z8?|X`MKe zD121t)865r^uKAEg(op@t-?ImYWGR+|F%~L5>?L~c-?Ch9@6{&tk{9%rS%THUNuS& zx<~hZyRDurx%gol^6yGd>3#d9wJjN2wGDlKC_JV2^X~SxL|MHJ#~Yjz#NYqx-Wf=4 z_1b|P&MkuXc^Kzh595mKfpa}@(DVNn4*f=x)_yAVfpd}g|B+zp(d3D*3gf9(xKmHv z|KI)Nr;+PdqEQd$PxaLO|2;T(8rhx`jruButMq?_`$N0n4?YkN_W=$*{Qr^OuTi9z zw+i!9t#p_E|IRa=MueZckir3MMotv<3rdYqy791jOmyhE0 zve%xXM<$5%lh-+kq($!&$op#5wC%rQJ*UCj6Xcxn3G^{%=MMb1FV1D?flQNn)NBvw_@iGL`94BBC~OcWJ|XbINmJX1R4=5)~`CxK18xJk0NjD zmQLf(i}fGny)&e1@Ch7mwhkBQ>4?r^eW_E;c~TmC3Vk}b zU8ZjviS?pi1?i;g&r_)H;gCTcboI0~z4nl4Q{qwI+AT$@*Twx-kp~0fF@6(vP6V%~ zJ!=+263@k>kF~>TsqUA*YY#D;8IO7Btvx}fYsC6e`%Qi%T^Wnl{i9+qZ5kogm#C{B z$=eu<*XyHluvFi8d*6#Vwcd}sQt2YqTc)r%hQ?O=(Wg@3BGqSJTPz|YI_}5u2Irt< z6^iwup}YOa*RWXRa4s9vb6{L?J&Y@^2hR1tL4TipcY*qCckM=EUgt3Sz`1V^{KR@! z^INRWTN{t@yjM8UftCAEUy#Diq*5G1J)Ez1>6uvXdVf+$?gkx0{TqcN`a`?iAKC?f z@Bz+!fP+t&i&%dPQ*R_jHSw6AcSa192TO6h&`sTgaZ7(FzZVmu{(7Rua}cHo%Z^kEB?PoxlP_Xr6QMUvuKd_W%S9NbCc9- zn~FXiBkob{8}WTLtb>*`x|@Oe!P;#4YE1^}cdJWCpYs{0w~o-#|EA<(z2!`Y+vG*R zR2*-%ZZ~Q8-y6uMEX*SY$Ic<|>UN!mY`u>4mc4iGkz%%wG`#2cbI7H!tBR4YyYsL`jFgN9D8x`TO}@K7M%I;$}c z1GE>YQAs4e|3AE_A{!Eu@Vb{N>}bfzNYszsuOhdOB;oZcQ?hlt#VX{Jdu=C!8k|I4 zuC%AG|EkcZa>91x{d!?@yl;9L(J^y-yt{RkWXbM*F;imA!y1LsRa(;n8&BYM?Beu_q_BO?;XT$a;u*c2F4jwj zKYK&`EH2~q8llalhvMVW$EZgo3A}j)`Dkq(-KC5}pPS1+l6T2h(8nR7oc`;)7xgDi zYskFNYp8eAUZdVa_Mkr2`75#XzJ_|oh}X2KMLdqTpMe!*&b2Ez-Uhloq)ZsRLw?~cKJ?Rq}z3?(};!sF;3DM|t@1JkP zOK}Z-WNuF=eD{Sq>b~K%#Q54Z)Vny`p?}|;Lw$$s&q(7H0_yv?-J{KH&SLz%jy@sq z+km{;Mm(l(_obtc`PElMFIzw#Cx`1)7AV%`p7kyx+g1sfhhf^wbc*RpyzZGzl8A3Y z7GC!vg(bDm^ToV5zBom?9?HV&Riw0}ox2AiU%V=TbSO+ieoxtvepwTQKGP2-kga#p z(C40_Bb^f!B#zHh3FO$lG#qbmj%}*VO61lSNhJJ47IHXO7xXyZbb1(9To0Vd&g~7d_riGg3^+^LY`KW>6e`-%fS=P)|JEjz9Q4mcJ)Do6Rz3~& z<6EbagtfV-&sVfWe`uHcL%ZM)KESyTaPV>cxDfM08=WO)n=WF03YBfC@8N04^WR+{ z&wX=|=PO&W{RcMTb@X(rBhRS0jn{E-#7EkVtrLX0ee)Z7@*gHec)ccR3u*7P)yQ+B z*?#*^?;@X~y+xmfu0)>ZM2-kOX03q1_w7tfcXe!8}ZJ};kzdYkOM?V~IzK-?e)er9Ccyo1oMORq|Be(R{lOJnTgnWcsIh}nW5XYPH ztD!u}oXxFa_x}kFTIw@%i^$CkwWRK-Ld=7^_6Do}$nd(qsm>;wX#rmMY=s%C|2U)mQf@XG z5m12FD_dzs&sDf0kJ^w)Jbdzz=PJ$F{b3CHgq_YLHGcW%ldEV>2Mrk`j!z+z6t2m~ z@doE~mvxpQ_pX1DOji^jhjYV0kK;|JhjGRAz_}hc=tEA~p-7l^s>YJ%*)In6+3QYelnCM)Frk(@)>jTNRQOJ$WxS!DV^6BujBi= zM)DzZpW$`%i1xmqcpGNfRBp4O9LL*ShiA0UMF|^qX&a)?iu5M()S++CXP#RHZP>pF>Jx65$v-Z5gZhOIWpq)|7}R&O zYAAQw`Uv%t+}_jDyQ4AwJ|7L`@qv#pe)ov4^zHD8=+nTUvHYs=2z@*q9@C!d+%OLj z!42hyBOhTNW@?M+bq_tf?t5Mol0Mdt@wz7}8qnIFdZ;I-3(3%qkMVjXDjU!jTTGGP zOTJFvcM8vOwbF<#N-;&BVQk*umiMLTqgEKv;v7>PZ+B|0lb;_-alEOi5q&vV5BZYn zLPEPfMxIC;pdQ8**TcBtdf;3S9Q3M`?`h^DW+ao=06R$;On4e=xLwZP&gZxl@G0~>HL>{L!pxL&m8u6@6Aj z)Y6tC2BAK{u9T%IMXM84eN z1+9}b5Ph64naShKzoUboh??HO$9h>nqehZDT6`VE+O2UT&Xh zlX2x3|C*8}^0ICpF#ZJ*zvyM{NAz(U&|Dtp{sDcKI6SAD$GpZoR0o^NU-bQedGOZW zr@oUm;dLLpw1m7_`U$W5Zbe<%zQ-oik8&s>m5V>&_1dk}r|W|bBiFL?T$UQYLms27 zM~V6{`ncY@%ijOrp-+sW9yPdh7{}Yyvb*H2$vYfxF|;1tI%gB|$AKjz+4~dn-Lx+1 zVO()Nj4Q4O&h@}SKYF7J`pnC|PfTxpL7zy*XD)NWcoe7ZlPx#DU_6nmUv*I5#;aatwi z2RP3UaGpzp38_)WbLg&hr2q z@&N4u=RUx}2l5Y`Ul-tTT_8Wec^-g69^gKY@$2sM5I?`q1Lya7;BcRZ=LO_}bI1d~ z|6_i1KESyT^q1?Qzg&-b(CLAL9^PA^UH;wz?ZSHtaPa3G{5c07&cO#bJa<6Pp9`Re z=K^r>=N$Yw2OrMChjYjq=a4txkT=Y~E`H#=zrcBafkS^Ge&9S#;1DOgXF@#uy%FN! z@0q~8bnltK;XQK@d;f%faSr|B@1MZA4{+`S{o;D)7uN&ldf=dk|4q;?|K9}d!v7}V z;Lkbua}GY7gAZ_c?*%=7F9kikmjVZW&cUB^@ZlVMIETD(4tWC(c>~Vl2hRHoT&c?& zaOf|@51hvd9O8ukxeyQk-wN^Y|GB{D=>F#dhyS_o{}=kjIrNMF{{_x{fO8+{7uQ3- zxE?sy0|!0SZJ=FVw}Ez{ZUY?rIR}5v!H0A30S^DWLC^megC71D0|$T3!Jl*R;T(K8 z$9(GkzeC=DL*9V%_<{5O0_Xh&4*iArf%7Cbz^83>c+sqpL6i%9DFzjAK*~;13jt$@aG(SI0qljF`v5nA><7>HtabMWUJd^iUm&LMA{L*9Tx-hlJ?f%E3foI~D#L*9V%_<{4h0q6Y{`3j65IFA!J#0m4PARaz% z3gY>zn>PiV&$ANqAkNo0uE@cMbJ0H>=Vd`Wd|sBQ_eT!?oQwV<2OrKwACW`eI2ZHgk9h;m;|I?B3!L{? z)CWuX=W&WWTpIs;-X_Gu=XpY$e4Zz8nCHpI73a_|KK~Q?%YA@zALtj?L%+BlIM)LQ zJ-`1n)XiIlc46K!zyEL!{+xpk=imbz<|#oud|s#+51W6*IP{BivA-e*AI`;iL=O4n z9P(C6Bc<`r;}^L&KNj@7zrdlt{Qkq^1P*cX`#+yI4)O4L<`5^JXAT_ZnZx}P`o%f) zi_bp?&V7J$ALtj?L%+Bl^QN2M4jlBbZUWln>n5OGST_M2{5c1I&cTOs@Bz-BQ+!@J z=wV(uaPa3G{5c07&cTOs$S3EJH{ksK&-)9U_ZRfMzrdlt5I=ApCvb=p*2O?Pe4Pu# z!`H&@Nv`1MTwlHQ>)V z_;U_EoP!TvcLRF9E(Y|lE(YG;z@KyQ=Nx=E2OrKMZ=6HkfJ5GZ^Z0@D{sQOy1rGg% z^+CXSoWLPYSXW5aj+NF4CO=t=>jZ(Dq|K7}B9m3fVZ9#oi?0U^=p&9p;LtD5AJ&ND z7S{2Bp0DFe?+^bAig2AE=sCas3;uT$VLZdby`^?XSo=urLVmb^^jLA6gFkTYGkzlc zj}X@tLVvmbejjnXLBEds4wC#|b=-jd-~)Q@ljH#J^F_G6vdGX$T3^}tS0JvhgmsrU zyv9k~=D=Fyu#U2my|c8A@>f!zw7$}2_;`t1Sgn=Td)BElNAk%|StB%g6cD<%K+!~T=F&->*f7ubGc+Ighsj2K~$UY@M&qLpl&Z$~;~c$P3_!(x&@ zD^`#%&z1#b|3~fwS<&adSpw|Mvm`WD$X}N&3(;GOJmGq(uyaxXaakB6^skpEi^%du zAJ7la36u1LFD=CN$e^DP94hH;7A!)2bCM$@eq2quk2@+1Z+TueW9D+)SA6NF9HDwq zC^-^-RA^*#UUvQRB3!2oyjgmr#G|w4kz(2&*B1}{xJFtRY_e||uD^zL$BBirCBDdZ z6>?a2+-|0yv|c!P@N)eB3w&JVOo?wgEdH+tp9`8`$)}0yzmm^K+s%@Gfcawd0lo1X z7fHW!Kmh8k*!e7vT}F|^&M`vL_p7pCwLj(o+Re}mmwaw*3P7KiX_-R1qOs(8`9Yz( zTeeKLejUqydvSoUm%po>&ON5H+mdN3JNej!m*+<>3lZ+)LLfQ>W@{OI(4Cg#{an{S$cDYXG zuP+ts^DPLR+uVii0}T3q-`tY)k2bd@mh68z=!ajvCFy~8VfBQzY5LgiBd=m1E7=O$ zwP5?ue%9z?yKX+kY<;{Hwrde2a`5LId@N`$y8cd`>^{lY$m)Jtq0c{JJTurn+lII5 zWZSmMA+qjTq00=hztcC=rz>OYWY^2jC&#R{LY0%Khkd!D_SebQbH7Z~?X<${L8AT$ z(}RDC`z^^I+MU7bir^EyPN;@_2CK2j&!q+u!{_e)rDH@s*}BUbQWp)w^SH8K=e7x_5t<&z z$RewTmk8tYEioQAS2XFEKJulm#e&5dE94gbz3BLIz3h!2Qb?mlB|_62ON_^Il^wmc zNgw%%ro}?XlU5@4>qYmhY>n5kPvI_M=m%%Kj!grH&?goa$a80e3Y*i0B8PKk13O#b z^;N;T`ShVUe&F2L=KigbZ@IfmX!Ow;dDEaFsE6y$^^j-w6&&@zxgK~^I)r{#T4B4t zYkh_6y`!*QIG;CdyA}FJ8LbpX>>GvtaGo!4@ZlVMjM@MFoLFR0Vc5-M~0puVNw0NTvR0`(>%LxrUmhN9jiz=d90Wrf_i)K{3lXB2Yd09UqO zRy*{0Z4oNeBo9R&6F(O^+RX~NCc;;!*f9!uV?S4#?rV*C(>xz2od3@Q^9JWlpZR2i zyyby*Lcrqb$l?6xoN61)zuvKS!tf>2G5>HLbmBT|$Ca;=z()R@CK~jvanTmZ1?)pT21@KbFf{5z}f74mhR~P=Tj|Pk2weZ;hb*Z;KMoi z7_d6V&QqOGU#*!Ulq$xd9?qdoKH3TWz0Xb&nlKLcXE=u%^x(tw;A6z zrwC_*#$ld~0^I4DnbycXat8|gS9lU$cs9ywzpvWk3&{>qWkp z{#w-=+pTzYBJ+fXy<@Wc>jkc&^Vj!A|KdR>GcO2h(O)k}+lBi9dDOuHoYz&yi#R}qW7Fwgb;7SJF&JLJcTHfz4Ib+zz((f3=z z&L`@HK3?BVG+Uy5(Wh>}3VLo0 zIFP<+6BBkF~ z^t0w9rIwu)z}^Gv21H7~-@!{9h;z^F$n^tuOTVvS*P4?%Kf^K4b^Rix-|vJm4s8Fl z?a1~0RMP#SbJ_&rGH(a^)C-7_?#~n0|G>}tRmcqj;-vdSOwy4cK|3@SFm^=lWqX%_kPQ5j#(lKi3A{K1?)> zL!OO-)Y9`eW08s&cG-`-K~SRfT;qDkn-Q!3@aHer18>0UUGQE9?ar=DCU-8yW4p$I zDbjo0iEqio^Kv};8?$q1`FkDb;A70{Nc=rvZf*!^@iZFs_1U?o@LmD_AF@N(zIoB; zU!R?e%HI>X9(?Mvx)y&vdY=s;mXD(`&-DYCkM8-qnC)xYr_+Aq4FVFS=i}BrA!OEr zXw0*r-!bX=`?N2tIoprCpJ!*sv%qZnalSe7!pH~Y zjrJ7s=IlJ&0ZYX9;ezM~Wchu$!*7Y04tKS4j1 z=^<~;S$zrgz_}i{8QZU>xK&eZ_x_UCq}?zzw%d}OtNY$ke6Rjz$By#ZK z9DG``Iu-waaraI(NpF1&^(O3GWB5M;*H^zVn|Lq|zh4t}t}*DrhwH(|gw@UX`|Y^2 zZ1SSzG0d|`Kn8s=QGDM%!{$(r@jHRsEFfEYzqQ_;O*)w$!#tb#vHf#;i0|9AEec7P z?+N5)e%Z9~1o3^oXzc^CxAYYHG!Mw7VfDrL@KF<9lf)rv5A^+`+VuB2c-1g zDfBV-%c0-PO!4{K!16UQmaCDs^2?_i)rQ#L^%Z}~7wc5)uO&NoyK{71SH$arvUl){-=@rR|f&xwGPzMt6@I{s56|L+ekjAqk#U_K_Ukq&cVl;YH3M? zF~)Q5T@~4P_8jWl1{KoE5M%7u@v6mZ37EY4?bKEK5c0swevH^=WNK;Dw3-{ zhk0%rP)NOE4Uy*;|0TIyQjuE*6w&Jwj4{t0BCAN3)8{bHZT$*qpFl(8v-kcbT{@*A zZ|_$`<3h#%-JR16n~!<34=SfKFTOy&wb)#q%zWVYWfxRN^_d>>#`Taldn)RI zb3Jf7T1LCt-@tae_iHat^DMx29RuIcQ-f}x|1hWaa*OE&=rW;dUtjO z>OZEN%10f)gnHYc$5b=9LL5Km*}T()OXzPK_!#xz!}Z`}OCQrcjun{aABRolDaS5h zo^1mj)0X>QAkWS;ms{FjL2egNM%{jW!aSR8GL?HCxrBMP^?OXu%z1%)%U*MNd9N$T z?fjn6lCAgACnTzk{PpF0^sx^pr_rr$Ab;Mmz5LX)0_2VXujzkN@1sx0!dEZIY4KD!a=2?7D+|aL`B8L*BR^^5#NCJ#elEKA3)_ zr&Cqf?u4Uu@|33!uwB={D*8jCLjR_x?Bw4Whjv|qL=HZjgO4k%qV47gs1FM1B+vND zewR$|6!e~2uxV>>e{i9l*~Pd(?vu*MpA}eNQ_K7BJ5Xmvxdat-6JIb_#gU z-k+0^+pg#;f4<`m^1%Tg*}nP$=J~?NPIA>}_J5204|4W@E+|}<3eK5%v`&(ywU%9!{bL_82U=3Z{WHRz^Mvn3`A73K(4E#ao zww#Q4Yis5xzs)%0%`@l+Z9dBvx&H3H^8U;RxJOV8>LG7j4|(&Xq8>Qc1NWdcwC-F- zY&WUzKzaAWZ?WCkfj{Yie;v{Pxzj-TSjNGBc96)yhjZ|mO@GoYdqPqFAit0NQuq_p zy9ZU%D^a27|NT-Qc^u<#ecc1AQ4c;`4?ga+nr6~a%=3bzKJxovPcYB!0oBx(?OP7_ zPecE{@@0dbBlifXp~164G0$x`_mMB$@&xnj?)R0>{Qe(ugYkXk76YFn_wf5h*Hn3+ zPeyfrc{i3%u}=Ggeje?J+@k$J`O)~d$Y%%qq!}6y^yzS;zx>zxm+0f^_nn5fbwvKB zYJfcB&|BoQ{eIHZrr$I$p07kW%RS9MV}BP1*3$al(vat+%j8x?Uy-k1{6%e=2A+eK zmt^vxj6Y3>< zRU8LC_^pG94}M!jB|hMmCO+VEIXj$>GZ2cdaTYDwyU)V3ozwR&poIS%9Nx&9aOLC3t2#0MQu z`itJ|*Ao5Q=xYznb@#XEXV102X!6IeIvC&UD_k{Sn|wrk?%Lm!*DpaoFSye~^L^r5 z^t0#kU(|5rs}A0ese@cKLpdMjwb%0Bbm8N8)H!xSt$CFD1$7p!{g1wRwgU0mYl-Ib z&L4;`Tle@C$QJWn#a_Ef#1M^id^++CJFVk~Jk&{r5hZXAd zu|_ z39}p0EeTod_p=#f>X!)S)LgJL%B=r{rS)`PyV6R)F4ML!8o_8g7;|MfrU zzklUP!2kd2Ptb`NJcWQi(-cNFq4GsCrJL05xkh7AXXpC|tYXO#qOnS3f2-|OXWf~E zIPkNZUy=F$&KZgKkb!?Q;k3+;J~bZkxPD()^UZOj;ZDiUxm|~&4&cRabTVG)%V6Yx zx}43n{n<^L{f=Z6T#u{gxX(a7;1$jul<`^DrXasu|BzLE8b$V1PvG_JT9S|g7ZU&a zENwR=hi%$_l5~C^!KNN+L3;JmlDIc#X|GS&Y(m6I@-8Zpos`DcASqQ8Q&6EvxO4> z$(;!}Uv>{jlIP2_2q#kTgyQ`DJ}F6_zknwg&td$(8hcBQ|G@b?NB84xIDc2pz9r9J zz^|2F#OK478AualQjz%y)?&L3{E1 zDq)dPq+sS1_U5kzNophU;dwG;!7cfD0_`T2M&a`TaPfQqJb~jc>*lg-vy;UA{sp#U zXG=2irmzus9?{NW1HX00=cJ=*BputhLNegtWE87!R~ z4=W*m%Bh~r`ky|?SE(k@q1$R9|KrDj?CplW$ZxNlNL#e3pA662E(aE~&^uauzI9ZL zqZ`s{BfhrbR_0x+C*qwIJkRQurpfTUo%@p4C%M!MpG%I)vDC9#BgCV$0j$NFo``qk z{Ti=nggTeTPhhnV_Cp;h&Nx;|Uz!9+yrM10P@KBi%`=V=r>ecpUWs z2mP}Zoe)nlp2Gfu4)k~2Kxfne9NGmwwEKE(d*mk=&tQLn5B=?(>WKVAjzivTPxmka zd9x?0yOH?F0ca28sRkVKR98IJ331SeJk@|hp6YBf2gDPNXK`F$9*J>*d33GpG{y2IF6tr#u0Rq%Fg1r0AGv?@O7oZk` z;uiSHWyf${fFEF96dl!|ADHnd#v$-U90Ffob_C}I@L^sYnB5oo$;QJN=g_W*b7=QQ z>2Zu(z(w2wo>Cf)^AyJA8K0*khY%bWXm=COXAb^^eC9QuxuQRlIS%s__%KiXs`o)Y zvY^(AjBhf0+P zt$(#9;+894>#FCCMO>kpNr&8Sh&tZ6e{^@Mjz^ugN>4gxRc+*tZJMZayD|y+_Nv*` z>SSZ&*FKP;GrXIO{5Hxt^wP_gIPZR(uE{KWPQZDmQh3sV$D1R*Vq|N!W7H_b+bO2g zDK~9!ew`cMh|Skb#QD{Rw`(`c3h|pNp0{AcXvCpkR*%h5N7eI@uCc>Z)M=}jL;K~m zLjE$la@~q<9>`a6dzv+Eiu`LqgiT&D1o;k%DfD*Nx@iB5ZJk)7VS~|r2jvu+nq-bT z??MK$&2xsLPCJe(XH`W%1n+Il4!0YGerT(jjQ)o>0smjAGZN$EhH*doAI1^y73^|13F;Omo9@*M{f+n{CF_#jn`FXpK1)laR(j9Uky0qukJoz z0OG)h{z5#9{z5$8C<{aX11|gz_|3BY*k6cS(O-z$TcwB4|9}hs1Ae>o0FE!{i17uT zl(GVAM&&;r;CjLsgu1^c(PyaQr z=bz8ZO#D^U>9@5M|H~dhvliE;oj*FzK(NtI8#vO;?&ERam?d`K^_! z=s*6J$bYc)w62T76Zvfv^XVOzrfC0)+o3vzVFuc-RL-ZDcDKfMBYt1jDZ2lIItq@T z`(6kA*5B4o_xA8~^h0aaJoG=r3Hbkkeh$XTEn@)sAI1^`br?VVDdcbfYjaN&Qz(@S^a_~LvqjW6h=mib})fc+3Zy;B#O z{NRV<1$;4H65ki&2lx;_ZHks5|F+Q=;{n6hgb(U_LOtZKj|tyGtH($>ced~X6h3p;lQu^Vv`A{^85<=$Dn@Yx6P!pO`c!-y-L;It$7VjzOHYr{Qvgk z4}IqPW#Kv#f1TXljE?VI+tgocvVWay&k^l?SMSjECY^P%-_rm5>-z4}YLg$XI zz|P-0s3}e)|HC)}eqz!_9LL*6$^U?Zj=$?_6TTVk0UfZX{--r2oz0lv8^#@UR{E^R zaZlwskPjSi$iMxs*Gf}7Y)1b>Jd6HH@htftaL@t&OSt5Jh+ENLh}(=($^U=@AN()j zRMr>cE9pr71p6U=_MY5qvVWaCzr=V+{MGXOg7|T|>1*PzM*l;*A|9l6*U9rsjIT7m zR^zyUKOvs`-1IT|bDiuT$d~SyzscmEb@Kdzcy9G%t7(3%mgg7bMRzOTV&bos-(Sv$ zS`p7yJ26fa%0T)3RqdJu={qL?vYcS#+pG5D`yJM^Rieg`>>YcM-$ofKzc1$7_aW*AyD^^IDE82IruWw& z-!^37qn(H=6@l{mqWSbeQ@`L-uN*X%;vp7%?9AC99Q#ChOe)M={- zmA?*~hx|UBu(SbrF=U6S z-5v6KzfD19l0y7U^D97pe}VtY8|}n6xn*1`zrWD`ssPhCE|s6RptGQ&p9xCE@x_&N^sq22_{FUap*zs`13Jgku4FQUIvJg-3i!~7Ed2mE%~ zQu%!$`YXll3inS-SHS#&cy8bxi2j6j#rqxdv8PPiW%3*UUNU_j zLOf>$1tb5aae@4O2zl2#?c0s~6poAa*U8&kNb?2Tj^RD+k67V@3`6|^J>T24z>F#xy zltvvzetYF=6Z`Cgh__Q5k=Hw2T@RBsiAOM=+wpcA zo7P`9d;>{`g<*(8zxtW>ZJHlGN!l$qhB}UlQ#91HZ)3Q8p65F{j(o63tOr;4tsyJ6 zhaz942%|ks>&<@$c@zKieQ1AMWthAkY!~^JD&kiw-uNT?_&wsEdCvhL@+%$U0>o3Sp zKE1_$9Cy$W>kG&qJ}G}M;=qUg!aNfFg?LUW^ODzJ!vBEZESoK_cSL_7Zc|I=qW|GN zBK!~d?b2ED`c8~5=-ept#P|XGA$}5v97g-~Mo%0sut$s+@bzWWF@As#@iX)&&#BG# zqmqp?X}X_u2o1p?|<0 zvA+TFT>WY|@}XU^zX9)-03L_%9J_9uPG3%y_C=pIyh;YlKZ9}7Nf|-gHJA297ah7t zqAs7tcyLrj(Hgs?eYv;O<4C;adBi)aF4N)03b-EmwTkCaymuaToRpWSVwbdESN=dx z!h<4^-&u8)vbjGQyuT_0WssYFBaz=l8ACg?koF;8gx?{rc3!}Ec2-=X*2&VosM|gr zd8aswcxS~$N>$RnqUU6uo3rgjjOWhEXxiadL;P;Ey^}(|+&qhTN8Yb;M`_d z{uPNjT@_d8p(fHkq<82e@_KI+^1+@OrhVF9>S%KE_DSS-RGgy?O#8sgrkx`@Yn?>< zJ1Eb|`?Q~*$B}esEA-K>tIWfd4;DK7((6MfK0&!;aKzl$3?D_KZ1nK||`OhIvApd!#4X1G2K_Bvy0}lDg zoAL85h=*j(hka>?XVG7X=j5`f=zqY4{{d%ZljZ$7(O-z$8>Lgw{}9i@|A6aD-En+D zM~pA%Tq~Q1@dNfl{3vdpNBfhE?l@k+7vlx|#IkW1Kfs6hiS8PS`~>58j0b2}!~?XO zTsj`d7jQAYfa^-fU_66AA)aqPJ%|2;b|IfU_y_XI?<+rx{z)=U#CQfi#PfJeYZ!rkG=H%JyK;?48}t@)ip|t z(z)%9kx%&ZFdp$9s$@E7h5>cPCch@PZ^WaHTB)PuoikDA(7ZAdc0LLDYSj%osO^2^ z|D67X3>a|@`5NVQ>hkd|p2K?g`bNGiNWgejE3VNzm+y$Ty6}ddS6xNCry_wq-t_~| zXLtPiODgyk9q*U!YDx*9sc;?HcN670J|Q<~!6W z8(LMvOE)7Q?6Is`0oQ{yEh;r zMQ9@OFB^x_0~=E?P8vB?)@-LYF;4m_Z}I=*5-=W?c>hZtzr2C*&|8&8Cuc?>t~*yj zb8^>h#QUkzsjfvL>Rj=tuBmL7iaG<7Y1H+^Ddf+aSw$00(vd$%l|_e-k3xR8k+n7L zGt-ejSeZ`8uS~)CUv67ZQ#(Et<9VPWl`dYAgLtomnwsC{DTwz|q)=7QESwiXMU6Fw zx};$|L%a8`+(*2ny1pjkNDAV8mA7f2MFQ&d9o$Ic=AMB%Llk%D^{IN~f9=>p^X_g2 z^1+_#HA;~GwMkV?GvDjT@2$8&Pw{&Q@czAj@IUhSMKap&ro2HP+<1;UaWiXa40ZLW z-$HMpe=ZpNV>|;N;(2%dbmT+3koO+=koSJg z=sU7AhWwiUHqdPCRgC-zs(W->r%lM;d!mJA zcw{m1Co1#k;Hn`Q&(nydX6DR7jOTHR9G>U=7~-=YwA8p=%0qm#B8&FE5Qgz=e#}nu z_;w-2^H}9wx;W@8;@g_rXug=`BR)!*LuY$#N1gCVHku9QC8*=BxJx^&*@gV~28CwR z$`a&*JVG%)T3<}`eDfP>YB)}S?GtMsvPt`#0mJnx-t*rr-&`Vh~+hj?CNS&V#W7xL-@AM)zo z3b>E_BSsB>Rqh5Y}F&;jrH`OdCeTwnmp}J4sUu=)~_`A(D z&91*de5R_H9w_dHI(wd3YkJjxi8`LjLYlU=De|xHZK?TqxD5HTRVDO<+6wuzuG?yk zJ}X219Ay!0*1`?r`Fq7Sn%t=`F`hjY_vqdmlMxSM_L`&v2E?Z;3h3?YgD{>?K5^7! z9D9lJ?8$XnADV^uJRb+mTRjHJopRZ zOI43(?!j=>DLQShiC)OpJbZtCnX-h}(Hn^Tkk6KyJm(+CU&;BI_G6KsGEJcwIOGTN zS8;yk#lqvrGOFBs3u6vcFv>M7#=s$HFwHBAnwia@T${MC;y?N=IP8IsI!XeN7kQ*{OdKkYA&q&f&5j< z2efufZJb{br`u_qKbIqazM_au7*hr3SHp33n!X9;X#adZALHIP#Q9Ytva{x!-CNX| z&;99B`6v3}Lt}HzfsN(phk2?8=zoY4@PCEC4;Uu_#vbT@7)S8``!OGI903O%z(Hrl z{Bpzt`8a|-pab^oj44MQz#+dqj63AFcWV9t#~pMa|2*K3fBuejIpTpFhyFr5i~d49 z2bQ^@{{a{N2Rwk|&|ipK(O-z$pwh1Bf53(R0pD5L1;-b3#Q1`aUs-pIAFvqiewrFtJp%|A*KRM?uP&;OvSHZzl`c6QgODt;tA&#TBTLkH?o*pva@s7W`C zh1*-icN;p=%io$a(5bw}MPoMVE$Zwow5LV~C*&s$=%Vr3%HJ1UC&bW+HjeLte5h5*ss<3JV$g7&6x>rN$4MY5~^=X_Ye811AK8sSBw`(t_DY5rdT;Nrgk!1r+cT6R~|Z+Wr1rrJ>>>KxKH!~ZydFaF~I z{^8h$)L}+Ew!6K(TC+3f3-WjIcH0b$L%&^X<*EtK_=5HaaKCkSU4i_`RftB#{}%xJ z{q&7#cFHp3Yk#Tn1fn z(Uj}?^N0J>-{43)Pgsn2#?~I1|2FgI2FJH?e0(c!^mE6$PMWt4&#>L_!nXAHt@$`E zBUwj{vdJ^#hZ≻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�XX2w0utuvd2<`@!z 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 r` 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%0DO)6{)U$^&f`0Rm*pIC zS|2IBf*MB;bMU(O49rcnyFIeL4Zos?Zd*o=S9&-)!q1F5I^VZ)KfkPV&RIsKTNV)9 zy?1WPKliLv{pBhB>3a|jC_O^vVZ2DdMeE(|%ldQwWpwvPVHw}7ZEo^7{fD*c-YLEJ zdJsLoI7-GdUg-QH>kq%X`ijRAa%5ali`S8Vw?>ECR^xAXbgFlO)cVRQ!P8@Y_n8Tn z>(w2d{(K-6sk>V6nwZD!_#7)+rb9YK`(PTEGt|NRknJh4_=+{t?~txFE0{(P3K6_N z=C9ZDiPg$yj}G}Gga%Ce%faWj490scyJ6w3uP*Ei!T)Q!1n2RMdOx@Fr8uOcD+g1- zCt)%V+h6?OrIv2G2k&o(P|7w3WPCT^Wv;ETCYL>|BllqZ1p9Y04a!ZeT0XUYFK|W| z>Ar#@E!+Q$H*fyfDt`U24tyL;*2Q0Twrl#tx_0S|PWi_QYW4NkdbRd`WDV)JSC4-i zLep~C_UFeuZCgLL;?wNY9g2ohLZFSa{q37Sv&wj0)!}!SQPOhu`tt8KZSufc>3vV1 zYqo@*Zdfk<{EqS7jqh3IpI_DOGcTtp{eJC-mJJ_RI?H{$-@Ame&a%hzdNr?q&$|9B zT({N{)cEUv4vx3ufwvg&#>!K5qrPxDjHVa9?YM^c$@Vnq_sXh#dV|gt9!75KY@GdH zam5{LM?kn9?hpQ0C5hsB9KfrG+_#z?*`TLP#XoP1zw6*Q%zmzLE5uqlD_kEK96`=} zNoD*n;MMMiTggHf>lH1d=t_r7l6QC>5LfHS+r@g3UlesIZsTlc+d=QF6B+#U^2e+3 zy=8aB`LqSbH;j5}J?ZSHXP~Zl_`^-`xftJJ$OmiQvc>wGR}{@xnPq@Skwr0#LEm`Tx@^uwr{PE2^;l)X~OB9KA1iqANc(qN!=FRCezI=5ymj@AxW)9Z{k)71 z=(X#IPu^QF1YAG>2I-RfWS_-=S_Mg4xl>6a&#k}qv2^RV9rz1?ihJ3ZHVJt&qg z&2A#U`zLVUcU!Esh0;1bQ^rxf6wMU#8Vk=gVdDoY-RzsuwOzr)V$&1D|O zt@nRg>z<}{o}U&+y@uK2{ov2Z-M?7HBj!1)g75#8#3k`Urd_sic`nQ|Z+n8X z$o5!#AI$bA?}yRY5BCP1be6+9R*bQ6o_`GH$ND>t)8 zwql;;*gx2B4zu4Fe+GLN!cLrDWzKIt=uSL7)IPt;oL|N{e=WuN#eQ>`{l@d$#qTc1 ze#7}y=KS(_#=~%a;ZFzqv&3%=MaSUZ{R95Q`Z~<|8o$lOy1>s4<7Z>PKm3gKb(r-v z{+RFpuX(P8IKS9$4zu6bpG&d6GwprlF#F1^iy!s_;MPVU%G5KgtFwPLpq@efqfGt7_-Oc}}2yL%pX= zy~jA)xdZhc>TPA}ZSEKF_%n9BtxUbmIOnO|sJBt?DO2z9JjL+438?o_Z!1%8^LWP3 zq25M4qf9+xem55N4C*Uo>MP^7wWzO9=O|O>82i_v&Ov>pOnqhivl{gk>TPA}ZDZ#K zyWUo&-Zsw_i+UUNo_h7O-ZSg68ucFPI%VoQvn~;+>%hyD;bq*nVn4XR%fMfh;V;~` zVmu!F1$;*tzQcH`KDp@<_zrlPVqVs{)ClSOFn$%h4E#kI{=(y{!f*eAzkru1!^`-0 z8NUu*2HvL(?<22iQ6pvs(7g12$vlidopjI|oARj&E53-D7Md*M*>8^z&pbo#u%ll$E~{-y68tJ#6?YRuC)&sBU_QBLtt#{I@4k$m zV2$3+fgroB{&zq_yYH7j=RTUF^o06A+MN%Y&^ zdN-|}QuXOw9FF2{8%efM|j=H~!fA9ys;KRf8ARXqHM+M0PTc;A9VJL4Uf ztsYbVQ{H9gQt(L|=jYm8&fNJgdcy)t~4!^!sz*bk@boUjI*PeRAv&!mWecqiW}*~Hhq7mV{0?WJp8-w*Y&YH zQzfTjKI3W9-6Aqx@ThK9?9Ak}G51vR_R5_2yROQott18g+b{+oi@ zmzqGIs+LH6uD#_>S;6&_(%@XPsOx%X;<`9%T(mCl0A6VprJkY_*JV$&OR~N-HVz?G zyMyNYJhHwOwfJ-Go{`id6UqG?@lTcg;{Q5+Bk67~CAj$0CtTLI$D|=NsAhYahw(S9 zg2kU-8jPfp1spP7{1(zt)_1652=%DzBjaU#gWAge**CQxeJMFy?j7+wubVEF{q}WZ zKdRvvAvoJ}vg}?tzqgn7pe^@iXuhu{=eOZPIln6o^q_iU{RHRn38i<+eoJ4sA925e z?=|u7zFpj0&hPBbJ?MLXdmhGL|It|dx$R6pD%Zp}@pqji56SxGzc_@ZR_mDPH(lna z`1$D5e)#U&$VB`1lsF>mJM;Yzs*}D`qJQ?3Iwt40;_V)kJJrlYJL8KTkn`*Qp$Cng zY2$K!iyo5w_T=G6TK4+ay12?7lYJGIVHD-tTsv`H_If5re4baQ9rYX^togp2#OETL zB_6t7ccOPW7wWCJ|Hl3~QDU3K&l&%8q7l;;2+qIzy!L#F&(V3?;Tw-DWgf<#)|@5r za8N)es*=SFMjLNf*$v? z=jY#j{CjoDzg3cXQ%Ej*9>(uas3h_5>5&!`Q*CYH@9y^4EAcsB`*u_>@2W(5 zaq><=3rcmt9?$k~&*zl*{Gw+&db!CS&-ji4e@Xs*-5bHp#YtW4R37YTC@;sM{4wrf_&%zp1`gO&Qs*wJCLGBw%{akP`>(#1h{wj2BpM4LR>+RiHL#5tJPBkc5*a?}RfA`-Z z#if4Ejqg-m9&gVh_49zjQqR;2s6ih$o|N(YyPLCbk@~7deWE*bDA8|Qb8eM7XZ-XU zv}f3-IlzH;|XpfirD%Vb_pI79mLM@kF68qWC4Ous_UaelFtwIT1|4n?Z z*lb&+-fL97KK{>cU*fuK&$C17x>uF4E-B&@*JVqdJ;IM}`EpF!rNYxI1v*!0BL{CT^DEh;haYg7%5gQl%Axjt0H+()6q@zXcc|_mH+)4C= ziH;(8xB8RJBYHxIY@%;uau%d#k>BNaMc?qrBKk>>bNT6N<)kit??d#Hj2%R8$$B|I z6_2)Y(OXjB4`88RP5#Y;^rvJleqToPs|-G@KdZtyJSgYDNNPY@kWshh31JlNczOm;ZzKSzCiHpZGzC2y5=vQ;Tf7!VxRTS&bYU_o3 z&;e5&SY( z@h87`$@nDrhxLEse}hkeKe@kP*4NDAi}hta-}sZqb01*>{K@?Vv%WlD`U^k(Y}SR} z(>#vfwf^5aCgMNW(X0#OW?i@sV)h}wzsdcVLD+}fH!=Ix;J$cX?n9Y4!0+cuAIgpc z+Qb2a4?!H@zKPklJdgBEuy45!W#Ryjmp&BY0QUvVy6||eS4U%AxKF|RBp3Dx`$75? zSYPfJnDsJtj=_3ypTg`Djr%5M-_o=y$+zfe# z`=p$w4kJ%7E`3tuspsfBo4n8O%X6Q)p`G`&$@`4+_zuYX+$S}8isz9&De{y;-`V7S z9?$*g2FUx|2Q+b*$8%lR7jd}oU*6i}1-74g!2sk1?hl&yZ0zih_{@DtlNXGC1|ctS z-`V7S{#~BGr=9n;$@|9s-pKphCpCGB{mH*O1bK@4p(Y=hbs2_y#P$s0^>L~tRf%NfFM{(cZ)Lo2A-yd}s-z(s{E*0uJo`>%nR7YLMeSA|#@p$RucgrpJ z3QS$cSuhS!XgX_Z(1X@;wt%xAXTX=PHGck2LkC%HUsN1=ZZ|W!>&vjjU)KPq|z|?hYKi9pT zP}gyP-_%#e&Q7SW_+Ejj>x`efqORk6CZ=xZ-{tw++I71&b-S^@J?eJ8=V0ng_9y>t zSJasf+-ETLq*<>Xs3-Y8lHq0i-3+;p1YXAXb_@^V?}4y?>VXIGJs-oH7?*oK;7xoV zY4J~9#`DO1B=9o6w_|t^kC%Hp;6Z#J$?!5BFZYqa%lN*N;eGtQ4xT4Jcpu-7GCYxS zxgQ0dI0*NY4DaUey~sT!n|Eu&yBU{zP2k-*?p)S}C-OY}yB^?)e6PvyZXPf9n!vmH z-j3lxJf7>@rr<&0xJTsp$;;S&#+!qe@x2|xkBpry!H@VJQ6P9(Z}2kX=hon5dvX8g z)=%Eezsq%_x6Qk?;oZjm=HT6YuZel$Mes!SC;x6M@I=19WcZ+2uXf;r(7mlpmK9mcCd$AIpk1EG6(LHA&s{h1rO2Xt@Ex=K3eDm)M4*`cdI z_tr+o;PLFYoX|0#duyYs@OZ|vL073&?vpmU%|3i@hv&%(-3Ge1HaZXEY)?h#JkY(h z(ardKN?&^Arr&JcOdH*daUNd*x*2qDZFC-nfx=I3c731e7&{e#{e`uqd@$d3H z^=#ct8{N#<-w3)HbZ>2R9`+}XZv>qOy0<<9J?H-UwX!b!yiK9!Y^jmVWpq*gj#DMz z<)DjBIG@C2bV&Z56^}0u9TK{?%jlMjvp+LIw}kHPGP)?w!+1vMqR_ovMu+6_rQo*= z&>^9FyNoW%;~7s6T@<>v%jmBBJu99k19VsD-maZLby~*R&a%*Hp?kZG?#h!TJ|T8uM3?Py0^>dv1Yv*LXSmX!)5v!{5?8ZU-UKDpQev665q)b|Dcb+ z{x^LG#>JoLJMj9Nz6Q@D>x;ey`Uo!5N8s_|H}nyBeYvj@mFBU0&rQ}BeGT3}rfKjdi_7#`7?=HqJ`0~;)3@U9(ee1-?7kKL@7V5JF)rs9eJkE?rq9Cj@b6|o zp9Os@ZTeO`Ud}K2R_G(ROdo;Ai$BpvKwraU`WpPavcBkRu%AtT!Pwal{RLiM)7LP5 zZiv1H`c^s)eX9$_7RYz%xp^Dcx)k4}@c*OK<*}_R zG9I-vt97)*W)+{h9Jw{O^~vTRa#4sgyVYQKq}p7t3{}iy>zs@S@5^R&JG56VK3j>N zF0gf7o+o;DcB}v8eJWqgO4RXzjq~_0e7_=l&=Qp=pal9#whmbf_=>$*EN>mC_EauO z&ZD-jxC8TqY|CslI6qT;ZeA4Mm$CIp9={CVGjY!{Q}y~z+DYvM~+6wMqIBJkJJ~yHzR61NCxKBiix9#z$cMnuB?*=X;N+ZM&+G=W|hL>hwLz#@Wubdvf4CltZe-+3FN9)y7Zaxpu^6x3c=3Rx4&H+L+6> zhwhFskDRy>%=I=aw0>0&NA#2NmulPU5jubOGK>8`uV1Mkfg4V|2 z@70TKZD{8^dmet?n4|fv8ioE->o<3&f6q^sJ{`~V=g}foZ1W_PqkVT8xW&eKp12c* ztuA$6s6B4Yscvz*55@DWJM3ZAyZ2133TRH3a@#oDxoLks%i8@^g?w*LM}Lmz=W=b& zZqL#;;q*Qx#U;NLqjq^NPj}^13-c3TOKJ=xB!-h&< zm7nX-U!|=@-pT0s`@z&~csqG6#t;APWvwoloPJ9_k|tHJCC?@JkqTC(!O7`v&hg~? zq_Eg2__503pTo1JQ^M$b(ytf$FIEtH7S5YVhpKLuzPZ?Qxw6=wd&*2|`{$p6i~U#1 zi+`?+o=!29?#Mjyy#JP!{nOcR4i#86Q|@W-JbzxTD*LD5q&YP75PJka zQ%n4Ld(})Dny^#sXZ+B4lKt~w@f=z)Y>wE&_`yqc<$PUg8bF_$M9BRUIbXMG%6{&h zeGw(ukV(E{Ap7}_lKuZK*CGl#WeG0(|8{jbU#&6Esds@gkDRYtRVDt=;Xr!TLd$m# zc%BXSYD@e%lMqOG)+Y$gSn zji-_tQA;#XhPp@$hbyVEP=oR=zVJ@$gAQiJ#-W zgK1rn^@25bfe%bnMdODLnV3e#>f!*v-vUkE`j91r;Q{J?wu1tZPT6- zT=F2^r=!2eggaxeZQ9Ei=o|@QL-`>9DIL_{T%n8uEbm4F3YH3hf;#` zbM1T3THr#2GgfjQDVQu^QY}4f4%M(LMzW55_=?nJ?|uS z!nz3&bh&Fv`EG#J2``&i#gUiW){dg;!P(?H0FswqHIqDkuzM8ku9Z`8$>T2?NS)xj z6#wV-B(?qh0X$dmv-*;+r(Iu7EBy+{cLO9}ziux1z1fe|RI_?v!6m=reO0bQ21kZb zx9C^$eFLdOp4OGRW%ArGdcO0i;8M3d_m+J9U}6|`&-zes$=9#CNZt<}5J8VVBoliW zU;n0?)Crk9qiAfQEMmXZ3GaGHJx~ho(X{%SPwZiQ_4}UIo8nE>#YJnWrAHOH=Nyf7 zS@O1}bugi%8Wp{cD(zEppLq%JMekZ!tB;maSB|Zt0iksScZVMq;63O$ZJMg69c$_N z+iEgTY2b@qHMaKcNuwg>#L(LF4dlIko+sdaYwKUXw5r4A7+SHvvHiY3#{0kVwtD>- ztkRBLLj_KG$@d3%o+YmuS%uaNQdwK9p)qO72+npcf78P9{T=_uiuYXhk1VP9UNP4> z;U9Zjxk`Ae+!NN)!ATXx9>!OF>SLYyP(u04Uq_EK)DrvW17H5RpS3GP8r6Sj42{fJ zPw~C+Nx%cY^tWCaT2Jp$ZQ>8(JkManADmxp&M&`T&-0AL`NetH=Dah`c8j1dr1uKJz?`_d|RJkJBc9@q4M?a^;n$nW4^+SEV%zA(?z)~QB}^ z81IPs6Z}h?dX;gWr#0$T@Gs5vUcP(pt255eRU7pl_?I^IA=|^aLVXDSrPuweCs_|+ zycX(7@Gs5va~9OkY!Bl#Q9px!xeUKx9qbr>w;A}wu%pnme%AA>UkQ$S9{kH?>VL*t z!~S-t|G~dphF|bJf`eaxf4L0*VqH|`vH6$F@GsU;WxUP5T!z1}UMGG7e*yn;8NS0f z`=>eh4)~YL@CC;CxoUtfM0zK4J^#rs*q;5stAk&Ff4K}FVfzIK9|8Yz8UDp~3U2c+ zm*JY}jk1oR>85jG(A1}Z^*M9O-o=2V+{Im=95A*k3;P2cQ zko{xxcbDPsjLSUW@9clWe_7v_dBA^py$oMwTkm0CG?gUoEM{4FfQi>dPNhQFQad;J&Y^p8+;y(9>VrBUK@G{_?Kq= zCj|Nr+rxNW=sz5vjXuVGK#9-L$Ce`=8a;~pcZ_#}9>wv~=vRz$-su7T>K)=U>tmgu zkMTSbpP`R&{xUiw_k|^Y**c^)Iwa$gzo0{M{5Sd=_bVm-Lx1CZVe~r2*&ZM0bsTRm z{M5S`mv{@ki{rD=$Jic;&(Oy>o*O-l?Pt6R^fb<2Mn7bGB!59ay<<$A#A zv~0iB1JG%?{xNzi+avW4^jNMBw=XR~N7Ma~@BB-BxFv(sW0QvAe+|mm-{F^fY;$_4 z-(GCbM_ne`xYTdE@I7kOhs|#02j92nk@|2~W~rYuuFFeb-k^_%`$e^Lqh8&Vj_Y21 z`>8t(tZRSIU+U+b8KwT5Hn0#a@we~QNd37xv(&4l+zQj4|31lm8>v_S%qaEVBUfQ6 zyV}O3-V045_2F_yK{~tcyF8cFhast@p3ImhKlT2UME-w4>dD|#Qa?X!myc$~+jdI* zyfUTDFB-T}P&@mcoA8T`X{DZjyFL$P!+k=&*Ch2kaPTi@+h@3AU&sD_zSRFaG6=ue zJ39|8TxZWC{9=dwUH$13^3ZbJGvs?v!oM&N^PSM$;M8MnT=*B}VgB-Hwj1?YXMg{n z{Wc!+FyF~r-<_WN*f{%nEc|>Ee8KhBo%ZLmael5*D^m!+X#K&BJlt)2gkP*kE_@`Q zn;YHUWlYz56-Amy<V}!cTwthwm$n!tc(8{mciAJ$!Fa_#o_I{%GuH zT=*mGXMSq@!}AC~1%x8^1*?!@(|IcqckMSGxVqTXmSQqw# z@M5eB>i}jS@^gs}fPKh1i8-hI{dv(za86m5Fz15rON%anbHO@>IY*3(j)8N;I*B=_ zJdfxkIH#>4!~w>az;BBX2Uy22=ZJC9F>sDp_b}& z5_3-39??l~PBTo1RBa1-QU0jMa{s*LSiFzZz|-=&yGh+hSpoM$Zp*##p1{v~m$zJJ zHmSgb@>IW>jq^SKgE^*H&jv)Qp^x#uGuiEV_!1G*g zR@r(pd7rxSqcUxO{Odi1e{x&a#^y`Zs`jO*LXB66_vH6v9%udDb&1NipcKtNYU6C@ zp*p3kj)60kN1o#3x#QP;_-z@+Sj)m^s&1`{Q~LTJ<(|C4c&&EB=L z?Rbyicogvd*{xaWBh~CXUZlD{5kFi7esEAOt4+h1Dre3Tl>faw50Bs7CyNy_Y?JDB zumTNOaYy{a=u8*R^(!xu%v@tWWu^U+-mHEbMRP>2y|AtV)!8;^D;iWzOcG zgFg6u6}j4*W`=H+J{r&SyhkJJaoBzJ8Sne}=HEZ8(hjLf)ta6WoS*Cbm_kjHrrx%n>pSr4Q%YH_-0!Q#ZJJQRZ3ce#-Jmws=~7?SyxyH@d;Z1JFJt`Uhz{18EMJvpvCi~7_}6<$cPfQgYu>%X z-OhH@DW^RTKkvH zwE7Qxr~YW_Llx(T%5!B}jrE;h&AK-Ii+Yl>3yseaD9^?ClZ6h;W8Qy?Zug`U-DiuP zj6Yvm*P1XTIUV;NO5LM6OTQ@)zx&M^Xw7J!f~xf!g}zT+={GU{efDsxfp-d;UThSd ztW+oQy}XBwHe1a`B&WFaL+M`lulE5T)Q!V=NkKkyCQy|PC8a+l^Z1Xk8U?1HRE;Ol z?oGem_k7rFo0X6<8NRjCkN&>!>wUxfjy2YitjQ?8W`A07Wt8;Gc%HA5dRv|MC8ctg z`qRbxV+7~tda<&R^;?nTRQC2zy5{UE&&Bx5ux8eb@5yQMr%@Ewv%c8R_^Z{etv(G? z;G1Lt99 zg7bd6*Wp>oqcVDjh7GMR4)+;)(LSqbg0KlfKymm*?8l zRs3^v%?#RB?1MZP<1e@M5`W%^n?(&S9g^o_{KfA6vVU%_nM>7+FBf|lf9@P2=c{Vv z1r(j+jP#q>{&yRf%YNRTWHFul?7NTqO|qZ2t&;u!?#3djwy(0_{9M?N~xrvoDnX6wmW~cZ9^BiA$E?JJ`zw=kb?)|CRH5vywlx534PG zF~;xoIWFftOM8FH*0;XkJkQ6NMRH!IFY%``!7T*m=X!F$SI*ZK-vt!-=)Ty)_@g6Z z9$efwlwLgjOK{Go|4e%*@xPMSa;oX?A$>8P=i-=ak}oE;T8{s7bQ4_i zg>#L>Tff=MDa+x^g7b4-zu+hFxoPs1l)gs~u}9+b-&L{ z_baZ6q|_%r%X3NIf3#fcgot6QX-KK`V!zZ0PghDkFeLpNLVr%|k$T`oi1km>rpkBO zI{I|m{$7w5_Q{qThb=v`l&TOHgY#m47l`qgTSu+!qf4orvt#IXuNu;a;`hQL7k{>b zpEps%My{ik@#Up&#rV2~AFbBS)2gluVkt*#ZRt97T@tN zEco6i+!J^eW>ucpMBQ|)qyF)pVh`i%-$YpDvX;VkEn;X}*D7LvEb!=eQPz=HY1Eiq zv6OnEL+oKZ^h30DVe)*(sK4SUO$~5pe77nCes|Hm6V{a@=^QgNuBR1I&7|MN_*~#+ z_M~%oK8~Z{NzDc4_t$1G`;K!u-%%taj+$p}D)aFBPytK72|wyld_4^tX@A%2>lpN> z?j;DGB>8$OqUl zuef{MYBchsquQW2Dw(>Tj9-E0TK;j3HN#`R@jPv_b{jh)Ff2Z-k`Ci;a_zmmj zH0#AU+c_R~;(49sc{>3gkLQ|z=Sq`*zSH=J?dcDEByjlCY5bWA_A@>R{!ITmjW+v- z?ePKL8~X?6OPlk>{ic8LyDf3Pu%ETr&)jd?4ZJb-GxonW`=4=s-=_`sKhBpn=Zojz z_n123e1R`$6Mq_`KgILZvEz?6@rV0XJWn&kADmxp&M)`H_=V|I?(&l`zJ@tXN!}-E_)XRRJN4B5w7C4XKBih6twzCrOMugMfP?9)ibd6F<#&L~9~`g2!nSpLrgB52!ZcGkBaf z`HTBgJWnw@e`%Ay80Ys&svv)X$7vJ)&G$ANBL0KNX_GG)XFF>kUx1fs6K@&k=c{{BB<4cknN5 z@+tS57|(@#3jU={{$-rsHz|qy3;v}|e&=}@_e6dN|I()Z;r`TE%#+owf3&H880YcD zQ2&5`X;VLNUyS`$0rdm;mp1hV<7`hs)EnSm+T?4-`MF9XUxR;Xli%5%q`-?Izk`2i zQxCBHj2A*Z0RE*-{loS!?t%ITF+`jCko!$+e|pr1;9uI*W880IJPqnG@GouZH*+sH zAL=*oFKy~Wo`>%h7eIXo{^c_DGxw+ZVxClX{p>RJGvhqo9rZK#mp1jMxj$SO^(Xk3 zHuWmwY)@v?tKeVw|5Ll(W1OGM4fP)Q7w$RR^yIuh%P`Vjm}n|hM%XFLb$N$@Xi z>Swlx@vNwy!M|LFUvR&P?N1JV0siGO^*r~R7*B?J9{kJ2^?wxVf5!Pfe{R(O-9{vL z8Gga@FrEke0{qKm_!sxfWFDJ;x!yOj`ImX`Ah*rGT!z1xd+%=GFW_G;!*>|xc~XGy zfPc9RUtpY{D+~An_?OG@3$};x-@q@xzg&iou>Fi@1|I?cavA=`b_#CuFPGt`+;0;9 zfS+E1J%$f*ze(%?9|V7N8UDyPue%%gBm2kjQ=UisQy1qH`-k~^8Sr=RPw_mdZ2s#4G8GVE2VY~qJ4URuX|Ka`=&y&^Gf3(qm7?=11{fE!5(ND~KPx+vq@Od|S3*$Ub z8t5%Qa9&ui@PS^zI6qeo=oNgvjK0D4FrEwg#%Y{Kqld8lavq_Fj70n~`VZS9@dx@3 z$7iFDalc98GxRZzhenU$ev`yQ=usR$jefcfH?3(}0kNn{?W57YQc{haJgKI)kyrS#Ewo*tDwn1AU_ z`|{C;T`2^Y`Z?t=sXud8E<$;K|CacEdYg2kq+U%rvgnw0V7yR2iH(K}D{-104E(GRb{?fHWUTTE@ z`!?T67?NU$@SUjvdFgy#8yCJ)DX;K_-#h1{Tsv)C_(JD2!Y_t)$xGFD*!Bp&=#*Oc z$j1Hd^tnYE*E#eDg^vJd{#9y$J58Qp+sU{EocXEo5BHCRpTZB!2aP@4ClWpgdze2O z`x%ew4gLuGnV%Z}@H~tMz(362&HmxOlJIwX|0uJ67~hKV!Pq~{e~tgm_flrVZ_Jm? zdNIy^o(ntqxs0C^zn6mXjGJ{~+^h@pQ{x|=NBAlHze@b)`oKw~%_+0#rbHV*7(Is#$SjRBui1G9A z&qkah)=A7cHQ&`)hjYrh3ZLuyIM?PoLXkMvtizZ%z_{ozhy$!+m~+H9+Zl~>#JYz$ zcRau79yoWblbCbL_J~e`b9(%J6&1duJN?t)n65aaHTA0OMHQT4oiD(${5PRCn|X%e_=X_25`fs`2=c{-b$Is#wX3%IrOEt$pdE zQq=5CM`r$|cT{Ok9hQ2LW8_mSa#lN4+^Y}mF0@}qmc{=#SM;J{JC9hSXEjn)y7a>T z6duuY8@8mE$33aqqxn|9D%DiJf<0(a(-XQ)-`2G5geN(kF0gKX_ED4f_o4IY{?=1U zG^Z*UU-ABID}_f1H91E&tm|q0d3sywnc#{4QCe)>YMx6uYjmMjxzFqF;XcskJjwgj zQmdx#aMf)1Kx!VfQ@h?Yrr2^`P+u2T;KC9eUB{##C^z7gZi|&&siIvf9;WF!idq zMfbnbkQOZTqVfZ8TV3x@RMi^{p=Iy3=zq^O#5Xg&DChcJmRB-AW%U|HC#%NkBYW#p z#syyF+3&hFu*eJ*RBJe0PPtx(ZLd!wyu2vux~*1`Rg=}HJ45K(k*&IELPPp?)RT%` znP}z8>Z^Ry45IYE@7C9!Hm2?Wcv7hwzgrX1_^CoShSSg>OP~7 zifG-R)<1FT7U`POuw$O&b$f<2<-&aRW7-%>KP^o699x^_mhqx=q4-YG;n}KH>ycFd zTC^^>tS*iA^rB2r8?2ri=BO`IeCbM(X#IC^UE1)67nSOL*?P6#U(MS(n&Ov*>MoON z({O)$!>#*y>xEjVqJNB|nD5K=mQIR#&G(|Bolje%n=Mf94vt4ZF-UjyQRFJ^MX6Ur zSPwh`Ram!46iAEo{%W;o+&nKT-2Q~Mt@vWKC+}oh)?l$NRvF*V#Q2m;f-P5rg=)*F z2{b5XrB2&g;hi~8a{s5l6@C=%`VM>e`2qR4HPup1QCuIWfM#Szjyq+ftPle_wGY&`-C2SCz_?@}gvO z7g&#bFHu|lrqb&1^Yy9hHE1#LoG;7N z`zVV%M$FKqKj8n1ffs1;w^iota_pZO^!U;^z3Y5sIyVQsb#HC$e7j7g+C77oJ0|LV z=PKhnqh6GB#$24=Amv+ZCiOZnQ2JR1czlDsxM#Rry&X4`CNvx(_`f`Uil5c%%W}0b zmmm3dpMw9hs!THuc~Z`uZ7gTf6EL?EN#81N;`n(+SkF-&4bkOe`iunpW!l( zjNjVa%HMCP%28t)?a%Xv&XlzVJ;eCje{~iATzfNz$_!|!zl|(w`)A~MvHxb}*_5+o zH$6MBylwyZ-{pA=KAuHE8#?P%i_6>3TW6>E=V|O5s=v0GF6N8>7iRy|`cwRQtN%Q@ zrIkL=!qfI=wT)TATxcCVs{~@Df|D^Hor>-f><9}L8+xw?ttn8n8J^blV z(n{K`JiedI`={Sfd9J0|=TnvO^>xK|p7wLCCh<>&PIIYon>PCF=(4tdV(QEOsdvnu z_Wx5wM^`Fs@1L+5;^#LjXH%+XJ@v>XLKzB=`m{XZmq z0R0(NOyB#hq`m)p43P7(AmI-hHLtKxVN6LBZ zoM{mqpOIECI9|j)kHtde{5l#eq9W%r=<;Xqy*EC;ZM#YQ$rZAgj+Ff3oWH)19e)Z1 zOZ*8wwU`{!ljzld7P8|{^Nw;Z%I{o6tp{h;=Pwqq&&5JdIbT=uE~J!|^XljCi`nOE zX$6Tt0d)guXzJwp#I8bi{P8a-=TuDypw*p9>c%-r+UIm-6^YNTolB|cqO;B=qdn~S zT(_0PPw%EnD4@|}=fuDQcKmGIPU39}_a!v3<{jr#{{nWr^$3#qJZIigI@ad6^Ut9k zc6@eUD)GGN1N+#Swm&GXvvJlA50|3iLTP9xsOJ72cTYsY^_Gs$Z{WrOJ6`v_-f zSvNbcWnUn9?QHuXnzSIs`DYb3JFivqmbiLy?sB5I{m$fF^V)IscMplr{XLga!(Nx1 zeI|L>@p(o;$!nKS2hqxs8=Z$7ZgyUq=q7Q#@Lx;Fuks6L>XilTI6u3n)CoDGSJK|S zeol|CIqW*2Y+c;#YN$rdT|pnmEOYWZWRjOFHIO_W&}RktZVhm5&4OM!=kY9mNSzQm zeI;F8J>J>;T@JfW$TZ(7p0k8%JvW$oo@noEekq$>S7ewgbx2T5Fg3d0-+AnMHoFcf zO;SHhAGeAcrmF7Tx;KkmKct;4^~TYqtEfm1Z|AYUve@-T35VqC%f(hvl_evb9q(nc z^Y!p7lJ|cr7)sxpYoOno-@0S{ABqeR!TiO&$-cRrWjnaE8*ZhAEughNQ>;3}c@BRjun0LT&5cr|78JrO# z(o_5?PwLtytyLoUp<{StD9x)=z`5{`j8qx8Prvk5>F5yrzjzoeZSpDpY@4)H;It?8 z>6O}YT}-L|dl*8)MpSifiOo!#QUA0Yn9+LkB(G!r^Dv6_i;s`am6C4M^r8{&mAFoJ z+>H*SdAm-=_pg{5=gEr(Gv#Jhb>M$dpxN;=JYQ9HDjf1YsM3;i=b<+o&1 zu$C8%cdI1);z*Wos!-EEzTd4Rlqu2+-~F2=c%2gXKdkE;{o^$I=kA?XDhI|#VE^E`oaVV2=XkGX;klOKx!@nC@z1mt zpB4LO0sMpg<23u{)YVt2Jn#_gANV=m_<8A^?~46A2Y$o(a+>osY}6yQ9p`Hc&KLH- z)9n8%anIB+?B^Klf1DSmIWN<P5fDw;g(9h%8NGI@kg8ZQ!mLabrXEY zh4_PWq0PDQ@w%t}!nxRjbAj{aH0Nvlz(=YB&Q~1H7kGp=@#pp1o2n$n??n8;Id$?m zJu@zY(>3|@8_`3t;Eo4C5Z?m1Nu{ObtfDtMVT z@j36*OX@Q41BlPyW!mJg3#m@2fr!H=kiWpow2AZHd#2?&gMVq0-zoO6+71474EY`W zOPhKi(~twI$|5g1iFyG1OPl)PO*izj!22GfegOZ{rv7Lc(A$nW4^+SEVIvuPCs{&fxY5BQfh zb;87B$J7?^uQR9t}81=ZOV3s!-I=Ur;}Te`!O=4^ZR+QKZX4A?jDLXo8T?CgotX)BrgdSDN&>&#M4fr~+fr@#MXiWv z^*4Cdckm1FFU|Eo-YeG`Z^x(-u;&}Hp^u?e2rAdznW#M;!fWLr$Y35%Z;9uNd^XKt4|I&tk zF+PIF+x$x#UNELxgt`dc^ccJV{7V~tu{b1JeFFXn`~v(-8~(-f9OCgd|I&u1{Bbo# zF>iecp2Gey{IpHT65BuEr)>tBV*REJ%`v?4# z{b~4Y!S)Mne}d1l{|*10-esX;KJ^X!H%zrBCJ-@$XW;kj-%gKR&8=kob7`bO$i zGwkyPePb#1ztJC#U%~eVdH+Ly;Pb+I#T@7rMb6H)&kOVlK3_)Pc)4hXeZHV?@Oezs zLn5Zw=Mj1cpI@V&EZ#N6KEKdUIQ|&@r$)gsYCFdt=s)v{%+N;vxlw(L9e<$z@VPL$ zMBbBA>~jHKVn5E8(KkHS%&^ZF^bL+bM*s0^GsccT(0}-x8l7ax-P!gzg-*ip+2~`p z>-4eXGxV`=#80DNRdWup<0tehj<-hdO1gT89dDs`aeOxVSXi+>c6^3D#_`FH*!c^(BF9yuYn8g!*^aBw zwKzT-eQaR2K6ZSDKF0aW|EI1vYDgP9e?eE|IB#^e5toM8aUMDw=Xayi_UKi|&hOA^ zIsY16bnhi^JO4r#<$S&Nr;a*gpSPW_p`&tsH#)6*!#Z|;hfd4&fYEjHo~@?VayC+gnsf_{*)gk8TKydw49hU6V-{M+-mzg^s}_a=Xm`f$O*_W0J& zC7sR6Z`X%YzDPZJxU~<}>u^Q8XU%2TlfQqJ`g2>)_7v&7q6ZevW!IlaZ%O@pu4y~+ z?sH9-U6aYKpQnCf{^fkq)rYbix~4m9%VgKj|J;$fZu{N#=-*w_qblXH>$(piQXlp# z(2+_vzoN^=33$Y!|1D~2@{Sf{V9n+RVJ#Xp2 z6Hgp%nZF#rFZ`&&xHc4!>6Tvh^0H$o^Dm4~g1%2<|F$%Kpp6G%yoK@13(AyeM!Y`&wzhnJoA*jS$$-F z{}!oip7J?d_^I(vNQ>UY{A&dK!~D_M-+XXist0?oalrGoP=ArNd^I7B1Bh7l-d=~y>zHj#1@NC^} zzK{LJyx6Qu??HWu*JT3y%+F=~&(CH2&pL@YryFl{vUL)iQ`RxeIePb{i>+he9I@`f z=dLf#UDf}(*t!SKUHF2B4s%Xp?sl?u5}Z@kRm{1*c%*}^tKeL-4rAg##RDB|9R_iL z^$K%dBI7$y80!@{FRXi*bGP+!CtLTxxnrHgoYTk;U2L5M=d_T2CFh2iNHw;@2UUOW z64iC=Mm4tRzt+(Pm7SY*MyVtHKdLb&gH)AKz>8hBLbFYF7JLw;P7V5i|LG1=j>enS zsAB(G!^Tc@wi_L(l74)r&P6V7Aoh*&83# z4b*A&JeRGQBjcP2$s^R{Id4_>J_~KU$R%stttAdjjhvWM)@6^Le{;K&*jK@5UTYZZkSTIu2f)6TRwS_7! z^9D5zc2*hxE?zx~RN4A{RI_M_3VXU!^7zp3 zDCM>OlZvevq*AQs-@R;A-nKk`TF%w#w?d!QY>eL@2ORU1ZBxP-8WF1cw|t{wlKR=} zTlk`t{kW&I{IW3hgx;zOdFQAB>`&lfb%#4ARSHG#!2RgT2TBUk+ zd8rD;%&_r77c7eF& zqM9Xs7>{{+j=dM}TR&VC+W$`ZyUn!MtMDbuuf^Q>70n}5$xa_suOBm1IQ%dH7o{=eH<3le+s5AxWS9l}#}>B^9w z{yArL4r}CGe0sT}c2Crp?tKIwTi~2ErHsQFyk(hcT ztyFaHx%yDAt9m=q{@wqcly^o(ELAOwJW_l6w~_JV@}ISCPfg;i=(|ESE%02edem0N zPk^1Ba_x%W);&Z$y!Bco1ol)buCG@Uu`abL?vH=@Fhms|{6?jmKTv%KJ^^@@u6^VG zei^2GzP?lWy$7jBYvR--;CSCDzDb>Mb+y@hHFB)4%DE2y1YWqphWM=4SE+_QUaNms zbyQh-{(={*LPy%ipNk4peK);R?eg_jkW)KwvV&0V*P*Eg<r~-YUt=%LYw(^{TpK{e4=@fnubgZA(s(B|KKY84Tx~;( zAA^7WG=1~CHH_y2_E6Uo?;xAbG&=Ywxr4v+#{I^$al7c@KdX}Ld#!SQ1aGba!0%S$jA8g)_OWR_8xWI zRDmpKgpfPvn>NrIqq=XU+j);^{lXgbbXzcafPTx`y2cIt|D-EvFX`ZoW|$kt$OGdz zX{@WU+NM9LTa{O|VsK+}$~#8x!2jxa#n7Yv9?ErkM;i|Ip;bGMk_Y4#Gw-osS?4|U zzVAEwr;MPXp%Q;*@zqeS-k;RY|0PYF+Klw6lK+}Edkp&u?;)4+`2AQnZ}KR0lsv)b z{M13lAvu5IH`QLz-6ZJG2ib0qAtj8ZXYZj!?(e9c8_`AZ=kb~m5oU0{w}rZHeoV2q zzv3P^=njKY^Ui``To2*|wxRY@U{9L^X_b8%93F$7&4FJ6!^b9`_-$KP_KBjKJWSi*qpifTt z9y%p@2kq(plJZYI(G9zPjJzP{Kf8JwGP8G3x#2HqvrSPtlXQ$cfq%KNH~89u z@s_4e%Fg$!_}X1AZsDRg0hF1^H`~ z{P#2(Bi=#}y>VZVk4DL-@YJy)@K7-E{X(7^CC_F9$79`C$_Mh-D*3y$9xG~&4k7RV zl3T#2aiUD9KdwrD8eSMKj#(f7IlgM#&$S#X#&wXm-?zQ4N`K~`_*GPTD%)joDt%c0 ztgD!113dwM*f*`RZ~N*G5gq3S(=x~b_D8Gi&;FLfgw29r@&yiirB(JS_U14#qh|;$ zgFIp1w939!zJ&c{-9u>#lOevR9Of6*%c z@?qIP@dorOpjYrOTIFBveEe1H0{wE(!=7lBJsJMnKvDa~G4h2xVc)dMzOCsuNJJFi zurpd^XBxflC!+QoC11#)k;h|=vTwbN1H@S1KEUB$w93Df8#X{Z0H0;jzi5?z$#Uu| z_Uw~_;;=H@ADJ-3Mz{QENacTJ1q zS`}Y8&g>zsf&U5_Uuji*^+(xmq9^9da`4&M(@(47jhCbPiD3BmWoQ?1g;vECe~jxb z=K3@LG>&g|D!$#h)J;6YeXRtJ_*19i&vzTTiwR3!Ta@j_&MKKyS(~ zu>V%(7qtg;63zwmh$powo^0>cSu8<(Z?`x#mDFE#cJen%m?wd zR>j-1=V4sXF7rWLtyOV#bjPkD4DmCM7xFuu%I_*Ww-fUh2GeTrdHvN|r}D3N)IrSV z`vs1CO{em;ogN)b@>vT$$nSJ2zuP&woyq<%j(kw3^1+=QN#fvx{86X!$9oM3H89yO z@^PKY$9LLlP4w#;X6UQeY^GEB`0?6W;RpY+8u=0ODXq$8#=CU3_*S4SZUV+`DAkaM5pQ}hUcv%4tmsE zbgJGGpVU&~sJEnbX{l57nU$F>#b%7}YUKNu+;1@zfmhta7zj1jn^NBu#o z>JN=xw-m9s-&Np)dWcrlLo~J8h-{WW_h-U3t*SpXwr(XjFIb8C1L`4KRS$`s)MdGTZ*iOMY8qeW!*Z^D_aNQdkVj%h z6DeoA9FrWPlLP6FH};;aYx?uPSZ;R{57G?mNqPB4Qz-|#Y?GYVwLeUn$UOS7s7V2y zV;YxMr-JByi?38^cw>p%-!P41+Pgz^VsAe2`%FyZh;~`ei`6|!r}trRi*S7JPuCO@ zGb=X`eb_F656`=zWrL{Nx^MJ4$41UO@L@YJZQ)^R|Nbl0inf#TvClQxRo}xw^q0eT zT63p?C9?@Zu~1f+36td3FO9p>H}(kezgmWA5Sc$pF)4wkK`OZPK$#J z3AgX{r5{0m*zc@5canD1Eg}k?s4x59=$6S(^?h)Pew-;HZf&$Q;j0_n<~odSaH}Qt?H_lHY2}IHB@Qq( zhbhkO8x6OrFZ~5@_ETq`9imR3zEY_tR?<%a=QyET_E8FNTu5j?){$|7<1MbkXnU?c zOvXRH(Y_&;GEM-!$#2pTnsezp@$Yb&{3dYrkNJNbqP6~C>A=Yb(m!HcI8H0MaKAUBSqt|o=hOHo9m9LGDYIW7Xuao6+8=creYVuIh{XNt!lACA++k8`x( zaxrngPIZYp-!a8?y|T{Jx5mYV=l3cm+|T*0DGuyZ{S-OhFM>UMRb?Cq{v0Pa+VdAp z-&kCfzWa-elR?jMa`nJdRKu~Tcs8T5;Cj(=w99ePQODynGouim7pgAfB8&^iY3;5Y zqtJjtVtXOHvz+5J;2bZV>mNj2Mt-M#g=@)p2{^}T+G;_RQ2#q!j;Srg?pK*GER27&2<>!k$*F;RYK!+EU5Cd116(^8) zECbGYP}-~0^f9TZsO?fta2?W@`6I9V2m4fFj+YR-rI7;Uod41M@mRAkgH zBTjDhumOcdT$M_qUk>sY;G8d{l{-S6 zYW|?aTfd0BKanr6e2}N?dK5&B-hHROK~=p z=?H%F;0LvW#PLkf!yrAmo1naKBna~^$nB<#b~A2jN8X>njP@@U8bbr{Wx zUyo4D(Ld;z@PE%V~@~{=|AYk)Dps?fDhLhf-mBI z0sGNM%Q7OZpk1yf4C{D=p7;JibKNS4r+>)t;yRd;f7{((i0{i2a^O0ZlFznL-%Yp| zaIR}9c?KQ%W~%pkN%CF|qVsF~HV5dT|6F%c_iJ(T9reQfdP?~ll>BR!%A-S&8{=G$ zQgR6I@rF7;4xUo}1||Pb@p-g<3+iLQxelrHze3mx`T+hO;KOxDrT>?s9#c)|Kl9neLP^RMS7`7DKexDKrB&$K0v=>h8VOMr9TSlO$|x(5aLT~nP|*|#^2_wlYL*)G@N zmHoHIe%CADvl!#fb$Dg}oxk6r4WM6w{&3w@&G#4Sx2Xc`j63d^>%hwXtS|C_Cc-W; z&h=Pj2e#MFrayP19t$~e9a!0)m5p!Gm7S;q1Lr!tvj6@!ZqRw~Un=dtQQ80S<>}OG zujIpZ>G%SBXtDJ%vAyE);`+0)d(OIh^pfk(;LqzI%Kvr>%pkU_i$Txp6v{t#PtGyn zOMvsbhVrKuB5s)Evk3Cxbr9u$`z_Cu>m$%-`0Fs`uMc%il{nnzH@=PyW+>nz~U z>rg8G$t#^C*P%eq>rg8Gnb{4$%Yc3^LjQT)LHWCB&ywW218`mkQT})I!&Kt>(h}gj z9-;i;{m5A2ddO1vL0$(@{&)PaMB0iv#!~oSUWb}m5dZx4I!>-b$@s^p;-7jhQM7~C zp}>dNWmG)y%iT;GiFTKwU0#1tem~%KG8Nem{=j)1P{p5BUPj7wK;XPir{cr=b?|!) zxZj1qd0kJ%ljY)L<+>i?NnQt3@u$W5YZ8Y%dEHROtL3rJ*0ipQc$L=~Ili5O__ouf z%W|C&{pWR96`z0mC0x>@U0#P(@p-e&VL$0j>uv?{Uf{Qja@`GlcpXs1pJTsVk?VlK zc|A_Wf!C%RX#%guAr9nqKox&hDt1Y(1A?B{VO2c;s4$k|d0h|mybe2Gdx%Q7eWf;; zf6H}P;JhxW;^A-aF)oO^7K0D3KdQL5?anK5{Si2?gRA^#vG$x?2L~Tsr&jq(z3~_1 zIyG=!*H-yXeCh?0eCC1=uY;@nXz?HCrSdEbJ{AKR7=mircvzbxqY-l+1Ldkap=b!Xtb4zBW}x((0Db#UZI zydFKv{UB8tlTXDXPRR9W(DOQY@9hVv?4S7*kbX+8g9GP%3o73nmwa6ATL8}c7Ot&1 zNFUttY3IV@a^Hg84b!^3%GVwi|68uh@R^F9_;A2>d9ze%5Y9}DlhPUGP2-m5*Eh2$b>!f8KX7X59gLyWbgB+UQ&UwQQX>=C)2 z1o)x!jiJFS0x7FJ#%0$xtXm!-FUYOz=-AMQgAdV@^IvIiiLW&A5^&h1GEHk37W6rU zy!9(JZU2ITuN)yy;LrWCLTmU0Qisy{^vl;rl-Y~<+|*axxI;^# zBz@4~iiTrL11Y0OK85d3rzHa#>@2!T87KfGNO#8Pll|BWM30Y{{L98BR>n7(f%Lv*J}sVqo{Ud{Lp~D<*&Cl93Z$3C z@+o%Z8LIi>h{>*QIQEP2RP%$hc~d^k>20LT|42Tc;wu{`Z#h7}mCvKc`-14$$s@D~ z^EaYt4`b864p7n3dGyb#Lv+0y_6tD|T|%|Sq8$!UiTz(_)_H##_4)|*5#{Ku;))nY zTOFV^L0_oV)&NT02tL3&SJoK^y$GP8J-*Ok>^sVO#q`q2+GYPzd`(B=u4Tz%L%4+xUWU98!ewN zH2O{tq=21yRD0$zDmxlD^KN_VD&jfj9qVn!huvM3 z{)e=yBxXSW8OMBaRr4h_67O`!d|~~^d~{Xwv73{nn1lJqIOeZL&EJJhtBLJbkB~R` zU_NTpd`xhyCkA6a>gD{^sQG*RSaq=?TGC@4Y1BNL+Q&*19R*y@BaNCz4gahq#$7)` zKHv{M*C;(7&;Y-g5HI-*pVv&I=Ebru^##uhZWr@QqvqF?->gN{c*#F$@-dB?kB7?F z5f#%U|I3l9HEw+aX>Mj7O&i`oxJ@nS&*jS+H6Qifs7qu@ddx44nqR?_>xnhDj*u_r z7v_sb%@?~57NXM)iH}(EL!;(hgWUQedkv`MZKAYq`LcN;xt-@Y^a*q2%Rj;p=`UZN|&-v^9v3K$lm6)(v>L=DCSf9fu z`qSmBpJ?C#KdH}HU*LIhyJi5D+5ef6L)OW8fprkJ0};*rDRL9`E1q9QAJI?VpT_fR z&WZr?sq=*%9os7B7y85Vx7fx2>RaOr4L|mWoWH2s^L#(HBY=WGex|~!w#oSpobA$y z)ctg-=_l$H>LKkC)`QqC?JD9=dq;nwvoYS%E?Hw=9PH26L;LARu}`$%?n2tf_6PKA z52M}pQ(VqRYFK&>-M$BV2%PPzzsr6K#6HX(Lne|N#@!t_+tptO?x#U#K2oa7G-+3X zv;BNiVL!c}_K`~XjHX{;Z<#(5c77H1=}qnZk-Fmfh-a|39$4RG|5C-xpD5`QZMIrS z0q(Hp=qLM&umS$`IOh}jHl0I#7D=4_OXu``)e%}lIG~cf>_Tt5# z`&G>M$r$5{iApwd{|x*6qVD^sM9v4=f4hNr3HdM|juSrG`IA-1CptXLQcPYV`^kR4 z@sfSylJ$W)XX?a7AiAI%cDeOHYz4^YK4htQ`@+Goew$Dlqv*Wr7 zygQflkOSLW)$WvU?ZtY?hjF&gs-H#A_YlKO`*zYfj&fCUn9`=7V86!wVLPnk=2)k{ zU_b5+ob9%fbH6IxL`l@3m_No*qsH;x@xFrN3Z`eft;TUkbvLnj1n4pDY@d}L9<1C& zR2&U@;B0S|o@7?*D*6=Avwc>2HCo$8d`y=7p@$l!hpw@`#2Mf|XqWA<(%VvldP+MC zob9&K^AqJeOS_GBF<&%lzVyA1{R3==LC`9w| zj?z8@XZx(|&j&+0X`j(g*h8(dhacR8sEBxg*VFBjD{GbA?s>PZczF5<)`d-WTdVAL z-EwX5JL+=1682E5>|vz^t;C;ikC@gsVL!FXe$Kw%N|f6IKD;h@Fk7SSZTy(lqVFvD zDQV}m%Fh42NGqZ$$n|L0d9AYZAJTQ=_cyYi@E2O;FXFpsMCY+gpQXRhs%lu&`*`Yf zC52*Q0;%OIcdws_G);(;bTN2iM(rDqQAo6BB zv!QqoF>vS>>=A=M$-l zR~mhB4yMVEKo36S>n9moMaN?=Z7LmTaD=}3dx%wNx75jKW9#bi6uT~k=2kgK4bOUr zmB5#mS#MklT-;BghN(xWi@m1__de@oZ0`|AMaHI(<>iCatDD4^KT9_H{hmOr5>jdD z$KzPL1%I?_@8NH391>5Pho#b?UB~HjKJ#y=cdHX+jF}%t*WV=5_7lkaLP4Kxt4~g< z8uqP9JgvB&Ojj50r>NKHKk$Joql}$y;koFc$))r%_ym3ls@HD}W!{ z9Bqufoj~oor%{CiCn*$qwGw>rd-Gv&%aW*YUub8aQ{>8e3;KwrKwtOFbK}KsspM8Gn;ctRqq~s*O2}u-tp;H| z9%qo-_2+xk39FNtNuNS;v1T7f!wc}%eeW30e@G<}nN3L(Vrg9g zpGFn&*5bdjsOzSiv}<4zWfX>-Q|jr<=cO3y?ntA9lXB?ZmPBd`dOx(gruR1Esi5n$ ztzjk!O|(fqD=;n}ckVSlYjvI8p3b03bXCd?xa&fV@m%#pnqM@XR%Txz+uuCJa^NLX zIvcB`CQ$0dG>UJ3iB1k=d0Ok|4PR$0Q#F}>*$Dov;|us(>1z*gF|PhCk-B$Gr}s0X z=y(C2DVjsZu@{r5t0seHiAx3JWv#DJ^|SHE))ZPfK8sovkD!JH`eQMykFoUH1d3ji zM)!k^NL7PY!bT+tf5MlVS>CT$1bQAN&4ebS-*=s^{LOd8KlxBXGZDOZ~OW2aU;;K|?F# zQf9Rq)Ej)3gU`tgiAJ|WH>k7M9h%(!4ki9rDpr7A+vE>phqDygGiPATMjIEw~ZXHgXNe;LN*kBM`!E|W~p`(@El$22+*d^zyU6=jUOzb4YKC+Rd4 z|IcTzr&yM5rFV_5VZ0oZNc!{XbaO`{3)1gBGWd_Cpq(tC>qr3i$UK@x^e_ zF^RltWY7^~I=K$<6u#i!ILX(zc~LU``970^n_f4`pW7{R;i|EOOFC`%kwXVBrO-d< zzaQ>5b4o*FpUsI>(JP%Q6_2Birgp9Mc1=r#%~_L8y~p38eVbFMFZ6IF?zhuDjd#gA%i!qO|cDeQdTSHRm zpY&{ce)|Ra7w`|Q>}_a#GKnhg$)Mzik7?F$PvH$d_0wI9!Qm;i#WkC*l)pn|xZSk+ z`WNqgjTRPozyI@GIy&J#Wf#cp?+v+z(!VBAbUWx)&ul7&c6l7{oG_3C`Y)96ZK?21ve0*E zFxW7p>Md&d;vTg<^Nr2{*8~5xPF+LCd077H!0OuA;x=k{o*4AHPpvkwYU|6vFQgc?dn^Jk!wE&~-~HHL93H zLACOz25@iSN2dCOKF&$Px^@Qr<5)x-8|f+ZxZiblMGPHMlBmJO406iNqpAfsx4Y(0 zD$TOap-m1&MYjU}jK|(gqSdh(R2l2J@dfmbMRpsyFHNN;pR#Fw>^n+>{JGtV$&U@c zx@OVM(zhrIzctphK!4V6>0qdRHHorMW>CvVDr;DkC=Gem$l9HA?V6Y66+}tguP5aHYnvh(CI8Ik<-}d!UcjOM8m0eNOP3QI7kPj`^k1X&zf!SEq8#*} z`9L3Bl|JNMC@$)I`;nCWNpq|qcpR5X`=eF%r^%Y~*t@e-EP>oGkF;tYc^#}M?wfE+eTh%LS~VZn zYby!1C(H--U#skYC%iwcHRj!7Y5%p#{s;H2ES7_Q3F!M}yJ*#Xukh{{u?+Uv9rGRb zN2~15{=ABU?Y}$ZfcdUb^ZodsYGOLT4nz)J*y)6 zgU?dnu>Trm|Ib>~5S!sgm=ElsR@uXjMJk9q(DQh~-XeLB_I5n+rdjSrAr&a#0)||Rx3gVWf92dpc z&?^6X|7dMt1wXhHei`wPR>eQjDRo3V_$&sF_(!YapR;W(MGE4UCE$a2K&#?`j0e?3 zy@K&VyrJcIqb=f%_G7AwzgT~8zlaC4Dju+UP*bqq=XMddXjR;@@kSMK9D2A2dWiT_ ztK!dU*DS?H$YCMw7xAY~#h)Ya-o;Pw*Ym+2ag>PZ~*i1)NA-fOj`fpA9Lz8G_9ngS3ZDXbBLC8<{Hwf$ofri^^U;6gUwH4g%)iDzwH3P%ug*pOg*-y1 z@`(Cn9mFffL63Yyr}B|3M+af?MDjr%ty6ilOCu-I40*>KnMdnX9$mhTlj!jf^vF|? z?`T!N^I@5TII-VDECi1HORMs)A1Ca@=F^Ou@*SJBHz@h ze6wb08xg|#104CFR^@};ZS6!yjN>BU$Xj(PZ?%YRC|a51Y0Y&EovLFD9p6OM1fTh` zj-gX^49A&G#0r)haOBrIm0uUbdu}-|o|9$D>vbxxzrV7nIEs8^KJshi-8z+b^S*Zz zJ#ggpI+fS+zIR2Bx`9^J4Q|YAYMSp0K#w|xR@E`ywr?Unvi#8>)B&`r4lqF1RQ!tj zU5GjW>KIy8$JqG-?-F(c4tmrXw5ra)``%q(PniFh84I>GNYKx?>Vq6mBEspJT^$B;A{?G1!lqNM3lavPu5Hna{u)(d6N$Pok)&#TxEYi&-#D(={54b5=X1sYNh_)aNs(U&iz6ZE%ZsielM-mfAHb^ zEm|Ummdr|`5Ia|Szu?32e{?hk&xT*84h`B!`2*+s?K?1rssius?kevWILrS;Mhwj~ zT&Kwk+erB{J@kL+@6l8$A(2j(*Gm0IyR83~H>1gSRT9m)rIGr7!;b4n+Pht1=~~2f z>h_`KPklfgN#{5)md-T1PQJMKjR3crU%l|K4uI^&j1Z zl^5xcF<0^a?;g^R0B3(Rdu{~fb%>^?XS+*(1U?-9xE&6shWabiyk##@4t{6BoyMm4 zr)=_N+PXiAFxO=K1A6v%U#dh>p^b4Au)Uk~cNiD;zv0UxDY9@pRovaxgf9Zl{;qb* zD9X1=q?zNoN`D8O{jYIR6uD1G#PbfFrT@L@V2XeC2VFJk$-d1!Wc+i>(G>qo{BVtI z?uQ&*FHj{dbmrAAC68uur=}rw+u>g;iZ-ya9TS2d-U=q7}yz z>1A?984p0t9JfrFbD28#xP~>qE;4Sx{c`;I>DVRmUV4pYzUeFDPso$w&zY6NsK=Ab zv}Q&>Va;*o9cNPsJj=6H#2e~F~k#RkZD4175L|NVji z&$(Zs3;4YTQ~VEl)PJ=9oV`dhmqn6gje#=$$GC93S8mf4s!~3duIT&8cn|&L_%rh1 z6}%q+bK9?vj6Z>Myw|+XHF~E>poZSPWxNM@a{TGybB$ilNTB|qJ!Sj}oa6ug9k0-k zi!qeFcz}%m!H47jN>HSga?#_hOY&cC|94o98v zDwWa&}i=k^%2g&>kIOjVR&qY#_Kh^-Y50v>1&Gev6=@OJZpC zoPjbQyzOMlH_Pp{=>v=?FY z!FUC8a-!h6w;uGI?|-fxK|i)dQ^MA<;@c(U`;ZUnKbmn45qP&pG}Yfd3co{(x&&~} z_aDuQr05ax)cLQGVk&-X&kOg<^@sI~Bk|skcyx1^2pBDKZr8GU1leqkrVIBch+;m~;MXgNW2cSjuwe7GJms(l1a42!1QeMShb*KxaCZ%K6yrxD+;(DUh| ze(Dd`L(cg{;`grNshY(QSq}jpuG@Uvb%B!Sh0_ze(Sqw~9?(OszbW}wZl153nuq$E zl)pjA-~Dx-&QyPc+_;XU_}so#T-K4mhwD+QKOqSvsBk{&nNt6aO8?h&sUYj0py&Fh z(*O9fmFUzLNze5zb-#OZN>kyFsCP;E8R={o!#`macyRJ>yE>##YJJy~q7BJ=YJF{`749MA!J4>?hMJ zeb_iPOINo5=lUn>e@p290Gp>eQ$4dlpOv1649(UlJ?HwivTu+2S((;lmSJ4DzOC%r z{o3_peH-J#by_t~E3dSpDO{(;Jmq??n(xCy9Av#0e0Y69`IkMPn#lD9+!wDeDF0&p zy(!g2Ub!6fTu)Z^q~&NASx<&N;rjMZ`_|l^K3_(i8RNqBWMxk-+}Fu^GRBwd+seMh zk8DK~C!)R$oYxnWf7#l-ja**<&g%=xzvLI~jJ-9eO9SV6yRx^}z3S1(Y^e`i&sX-m zWm-*gd5?NN`p@-tWp9s`cgDNVWV^gBp!`BYNOid`0D1EIj`Htr2Rg|09o!eM?lDgQ%^uiIu2Z00Uhh!;?)jJQ#B~xs@Zt3}6<;k%>L=INK+o%ID!!UC zU;uT8ee=Wp@_LH$r;lp(mFqabd3{Iu_hYthrgfj?zA6{=#@kZa)?I;WR;4-w!>sczE z>D0%SxGu3A_si=|D&E*>+mpCX$nEmFn2L*hr?jD85ij{c4|#o4#kZ3xj+g73;Lq!u zD!y$TKUS`9f$WOxw>UXWuG^yjysoO^YMzrzOR=1F=QScrt)a}ifiP44CFh!Zm#mCMZ5ecj@QkB z^E$rDUjcgF51{fv>q2^y+*YDLyx+j0Am8k$^N{-u zfb;$Ym7kUx<}UXqKyJKWMb#M=&)XvRs~{ie{VJ-?;JAK^+^+(h_fe>Pd2YsbxsM{- z&a{6+<=viFxBuL~!TUW_p5AOD-am;rf%kjx{u5O<_|0jH+WVHm4eDs$Y(xMQ;-Ep0~c@+*OGWUpQBD|2FdRN=bAsx0lGgggQUyPp#^y$xn$B3i;})~g?*Z~Wuj@9YZAe(ie6z7KOS^h zGfPBM%FHA@gX$(qgkn7c<7jv3q-J@8XnHgtiLUu|6Mq^czVu?U=C2Xaq* zXu6r4L|+UY#np3?zInf5TJIOpbk72NAX3|jL1!fW;b*0_4XVe`vM$$Y)+ixdPor)O zJ=|I5jb_6A82ZaGnFhUVi}wnn4vBhBtY3YtZcGdv@w-l))@X%S0OR)hQ~4FNgWAPV z&aCUS^QlhMJtg@}9+seSNsFQ7w#iiNA6HTQF51O>sTy)xW7i~>_ODH*PE%To+&7Q| z^ki*lhNf8SSZcj0nVLRrB|PtdKk7dL*H3HKOphg-IP?egy=8Af5B)4xB2(i$H9b<(t~tPr6tdG9#I4y0;R4pF|xGd|D;iYF|B!p|<6d=~|7pVg~xZ5bXxG zsH3gEES46Xm3;D<9()ci@1dfQT&F&RG~&`CDF^6nsM6coxkE+sm0l)2G>;q0 z>BfrN(-?Qso5z{!MvWE&!@W##CiFH`>FqkNVOXPP-0?r+$?s!Fit$DCCVJ?zLFw~d zo8cm$G~=fE5~}7)4;m`=wUzxbj}P5)$Kl-*vOmy&gVO(B=Jci>F&u|D>Y?WbrRSY} zf2BC+IpffCgVOW+{f1KYaEW8S7}R`Oo7I&%-s8B}H1B@)(>lK$l`1Ol3-iLD=7rsd z33LbZ!WZ)b`fpJBpAduhb6$X71`ho(MmVDEVMs7}UH7 z9OyxM=>Kxe3+TUbRDu34`qP^RV7@Sp`C?G>rSX!5bmBbY@GoWF7_!R8VgF4EwGR!V zkYwzGLOmb)Y;dX^M?-OIW8QaH`#hg^~*m^X!_k`^13W>)@QG(2~?zW8vXJ;fkIiILC<>ItZf2qosvdt!!qgD zE6`iuJilsmO~5mGX*6NO9deA6IM4U=AqmuabsE`K{z_+~;demK^Y?SV1RCm-M#l%d zpkJaSJ^WYbw2=w)YJD2@no?XOV}3C``>*e#63Ay`8s7h0R&vE`#U9{BP(i2e+QiXosz>q ztVf&t9dPz{N^XU})Rz7ZIQu&#{|8g+N`D8O{hb=$t$pfAe<#OLqsFoJO$+Joi+P(0bW9%<5ui3w-`TO@{7wKOx zf7ySj`M!6Fi}YW>+21Mquq3~U^mpLH{!!TzgI6QzA2CnapQ`ygXo-XLr|2j9Up3!P zWIIa#i}}ueO4)~i@{OdQLjRZb_z~UnHA1@UUv$r>^B>|UWk6bZt$Txo<|uw&`9uf4U!ml1q}l?(a;SKGh`!v`LPFh_ zr|Sa2_f-Y=_22X?AEw9s3U$9s&-Ysq_sjl8#Y+wKYbfJB{0rix)Gx0!>rWk^3vKeK z>-t9G)+T;_il6)b7yq`>N&LEA;uUvAYv#J(J?D{MsG)lk5&Aoxo4|8I7=7wtEzO4U8~;H+ z`te;FZ}~61;$JD&KxOUz<*#syIX7rueTj!Uf4y*h=>fV}DUaOs6~wp7l8-t5@L6p! zvXaEPpNh|kzYB@iwaoYwJkR(dw2CNGRpOHx?KBK(A4opYd9J1eJ z8V*i9KwEx%A-{vCXkt@&UsY0<8@xvypqcN#P(|BddZm@PIlW`66Xe+XUwYM_^!mGL zR~y+b)Bj(%xjZM~`FB0ufy44Nr+?gIAJ#u5AEsA)ro{zOiAECt_T{`G%rX$~q0XZt z`G3<`l`+!^?X?*HP74}L=$ z?=JsWZc5JYs~xA09VBi(UT4Y}OwZZzc=5RWU;IxNePlQubAU4Op11SiCn;i?yf1Uy zCgcQdTq$w$=V9mWJ5HLl@_AVE=VzS)1Id31=%N3ZM+P;IR-HXaPsT%kpJ#Xu z_XI!3gn496|LE!=Jf|z^&E?!V{V*jDmG^5tE;fm$>9k(<6Z+p)&5Pm@w&E1)Gx}qW z_upeJy8ZGKzo6t3vaNymQc?EDL|-s3o?15+6$^08BUd%w2m0BI=CzrRXq*(Wv=*(C8>cE6K+k&+F(U=Ij1#SMi~f&Bd$&yTtVW z7k>0zkS5hdzE7aSWE=4i&jb2E5BYg6^&GBlY(o(X`^nD*Lq9c2pZoT2Bux5``!dI! znol%GLWx`+(=#c-~zJ^{1EZKjU3Q z%jLWS&hylLOaM*AbGxUeZln;Nr+8kB=e6_P0IFLG@4Z~INzQBF=KQB`TqW%c_?Xi> zuGuW@2I$S7BVM&@i?lO%-p%}Z??!|0DW z|JDP%rN00lbNW5q*Gu~kdUN?~8@fUI3*hGRY(LhQMzMbZANF56Tmq1Tey01VH(u;0 z+hu=e(Kdj}C4Q#g->#MRAAHR5t7TVHWA+Qc&F`yqoi#M805_LI@!kul8T=s20ru*` zTe|?dWBiO*v!*EC0(>B6jvvw-11RDm4i zd#L1jr;$#~Yyv+2g-<@I6EB!QaPxjHbfKU9VY_h}zrS;{weZ`7%W*i!2!enHWD6z?ULv_jnv^jv=!b0>!Kb;(ryicZ{e1&;b>%%;Atbukfe&z|S9RC6ubK$g_Mk^yl<5`TDX^KyYVT9a;LrUr=l^RxH&LvRA&{RDMCb3DI(S5fGj#LfFt z_q#S!}rVd{}*n~-&nMr*!EQN zZ{PKprp1aFnwWK+oIdNs{D-{$;-ELjEx(hP_E_TP{n@dit?jCbLNNLKl^EpoAa?+)JDwxDEZvkAEudpEQT(ByG|wE zYQ=^JypH3bH^=ur(})YGKQnI5$MCwfsKMio{+PF`)=juSm@lDfK5pzeK=}JZo|up3 z_}YEHiLg5o$9yrUd6fQmh`3WpFZ5^^`X8$1@9vBJ#FICmm-9DN*@2Rydx-jf0f#+d zdNp3VZ}$|d3xf~(gZcgw|JbRch=~P#0j~I*s?|yC@s)gF_kP+pi-&zgzlp&A%f7Wf zOk(m7NpH^IW=m^P_fN^++`gR;w-*a$OC0mapyuP1&NGPZgE#Ki9MAkTn~G!H8OQuG zsQHyuVF7-xM&g*K1~q?EzOJG@6~Q0!fqgJ2JK&VPiYix?IMXZn)U?`7ZK}xrFulUt zp4meaYW|BWKDAe`AxE}9;BP)&uET#P;`#Vr<5k~gJ(aVP^yd6ePY$3;^(BAv@j5l_ z1hr@)adZAPGAHBxWRgGTok7j(^!A=){~Gmnv}=w(cJ`+D7ZS(3GpPBvUgt}ju}{et z^q5BmWe0AzUQeQk?B`$SXBm|J`Q3gU4dC@G+%MBB`EdPVG3*lS57YnuaK*>7)>_(G zO7bxu#}Kvi`XxBdy=XE8uPP%jPX7Ykx@WnjBd^afjvvu+&`t}8O26DhU>CgM+x*8@)zePQt^?$B+934tcp=XvClszstuozkr+f^F^h<hirH#E(Xj{os(!PPeIlaxPG;-#74SKdSxgTO_!GIJR)-aNuvi$+Q zIiK)me@XiW-28sCI-QVq6}WjnKX$q(?KAkZUkgZ$qmMSJbQAB~A5faxZNTyKg}CfE zs@Eu$YTw2C7+G$>*;w3fu8-yxx83%9*pxM`w^1GNI}04oV|+308l|7PU9DyOEcH;M^l)rrM;W(EJ^4xR)w6+& zlR*!?(x`b9qj8e)Ht3;;KlwC1=P2WL;O6(MJ>Veo1>olWbk@|D`33l6{%X{GAO4$- zjKhIr-f5J5SU${F#>2ol?p1c6MYl#W-Ufej`XXcSyCfXnf*$i)qwLEaPPGH}7ZhTa9I04cwgn>529-4*xGc@8&j<@h#}h+pWLYNyfvV@7AGy zp)!w(6sqc3&9jPUce^T{z3jT%^|I@YV`UT4+pY)x^|lMN=?0{`T{nEw1IPZj>Sosu zpFQy10esuTt|$KWu;cT-_@*1K`rz0HS3QC5wdrfu1$aLk-GJ=1*<;hwZjVhLyWRNi zfX!}P@3q;7vp}35z}Y^W`Qv;SzS)l}e;oa70&onlIc)O>zS)Q4K3x9+n%($3Y;zFj z`*A#o^B^39Y!2CM!{;I32XVFyXMf`Or_D|rciL;S**xK6O% zfzJf%IGiQom}ngjB*8k`+K8)o9OJDo;&{>elJzyv#Nil?PXo@3I9@Y-Ua}6uxe>=O z(A~7WW*r5p9X8SU++h=Cz02mBbtKLWI9|h5lyxl5Vu9?kiM3`4?ZKzPIs#}PyI5<2 zMEls0U8Hpks3LHTwC;;*9dI3_tHF7!wFZAN)~-Ov&J}+e9J}C3i!;VMQ9ga@;w6$x6PkUTD;OJoI2&5&jmUeA$w851fjxF(NgEM=awZ=F0 zpmPC#7kt{|=!|deacpNNaMc#ab~tMBDeOG0_t-P%kfqDtf7nzRUR$ln$ZFSRf0g%O33-ITKGY?QXqkkSi7UFs#&K6lUL9acm zY;bI1x6sNRSQA{k<6A!*o7lPI(+1x)#h;&5Q_!pcvH-`0xbm}Fg|k&Anx=NmAfINC zT{B3Jk4^2G<8PH!bDXyT)(qDz>>4|?HXU2ws&7@b;nNXkE;ws}Zya&tvsdS% zNK=PqI5xvKO@UhD=zy!HICF5QhhqaA9q?HnXREC0;aDI4R#~mYJ+8!ETH^cq4!)-A z1y;U5t#G{(czp*e;LGui6|R@#yJa|9IV{KL0xKU}`{K9^$TF*j4wj&9=-^|OZOK>5 z@VNk6ihMxng-^XzhNTa#GAy$#^+0khy)c%!IM1}qz%kb{(=r`re9Q!%gTI?N=d&D~ z-N1PozE8vd&#;WeRSu46_>9BZ4V>rTEDmRhI3`*q;h1C@4?GUXc%1vzjI~V0|A@s^ z0?x8cI|qAE+G9NH;pl+t zxmGi*>>XxVu|_!H)6QW!uI(IVSn=m{t65glKrt7`>G+(6v)TAJ*XoVsG^^i%{SJ!h zR%7waY#e{bXEShlYu_CF-rE0eH51=A$JulH2{`{9G!t-a?(p3H8EBr_w}7@jvwvm( z6xYvjd~W~N{t2$1;rt1XuW>!g>M4$|@oyG*Ji<4x?H}RWr}l4f#>i`&y}{WeaGwO4 zH};dPCgOY|t{&l=cleuV^$vX)4{R)s6L2-rYAVjA0(k_A_x5A0#^L%s&hO!Gs?|OF zaaL1+jK^^*{?|NwKhA10uEtu;!PQvY^Bf@afsMoUe5=*AQ*gf8cCzVw6|PpaqqqNp5WfETB~)S;9jV>+d2Tn_1^#Uo$LQR_w)RI=QKH5YTxhu zt}p6=n(pAw$j{N|y!GdB9_Io2JnA2s7wErmUep`(4XI}I8&b{ae@Hd>=_HyOq#Dt+ zNHwGLqH0IiMju2~rKu5JHM%-pHJbmxKiW&KiB`qEP;KZ(CSFv~tPsJqqbtDELuQ3| zqbos`;2-HLLSAOVXM{`-naYOHnfNql209h56g^kv86k7wilh{FrlOPal#ogIX!0~P zMeQfjjSiVeni!I*^0biI%;%yLL#EKphUbM;jGm`<^Fro?jG>#uU9+Jv(0Fuw$OLpk zNFx0hG!agQlX%K#QWDn`I0+uhNk)@G#?d7~<3chVQ&b&Cy6Q-!&v0C&yXv@3%5aPg z$#n2vIpn@8G*=y09M|wG4pZVa$7ON`dIi4>WuiqAui(icH{jc(+YWPLk;Kb%SzMV8 z(cfZnnI!x!^DNq%@Ey`^+B=REr#bO1dKb=e+@s54L->7~ThM)`cN~+PlTg7ExnrW! zl4wqx;7p;NK$GH3rkMyQlaieQiI&7<=R7>wIUApV3Yx3(G-$SS4rv-X+u12{F5W4! zGd|5Z18xs@ifkX*5pN&a0dGN`<7~m1!L%J+yT~=+9U_}E?}WC)n?o(2RpD#GTSU%q zPUmUU*>4d!-Pw|9i^!Id)0|W3CZN;kraNarv(#oXG=c9Ud?wvwbSgT@IfZlIF$GSg zn@mo19(2uAHI;PGb%1ohHH+y%*A(Xw*Aeu-Bc1-BE1h!$I?Vit>%L=~Yd?H|em{DY z**5qHv>CeZ*vz@-I0|odZK1p8*uuGq-sD$r6a8k_CT81Q8=)=eCe?2^w!>Ro+qrJ= z`(nE*Ib^462Wcn$c4!B*3*F_~i|%#prr&|?hCe$t;(Ius9R&{I1&&39gn>KK zq2n%pSkLqQ(PM1<;XF?NhjXaY$YiMV58OXO3lF0cY9RSXXwYF!E&kr&NA{2KQ~4|D zJ>NsPj^-=;jpG~fjZR|AFG6DSmG(Q$ce*fUzNl|RsR(<-cP4h4Fjyj$WKt@kBqtmV zk8sh;Ok|!SMc7DTXc#jaogH^YIN*|~1CE5FnK+=*up>hJk3;1sCN`3Ag&i5y!DaF2 zh%$IIvoaAqoC@5-Sr+c@)G_Vh>`vFiStg>lvn$*K?cwYV^Q$41@=uUD0kd1D&JT8Ho;X zCa7s3-qjgT9!xtL8UznO6G)?+V>k)uU{Vq~gumusXb6}1RUhIUjvwcDz;JjhdfYV} zAHvR9c&zgTe-9pa2|dBzmr2g?^e5=YJNMI^FO5Q4IS_78rhGoU*s(3VON*PuC!ffMBAFKC8sq_JUO1GUt}wODz)aPQ%fj5@;A5@ z=Qp@5+KSVbX{*TJIc?GS$i8?NG@jHpa!z<(j@bDF^?+wTP!} zquI&MHfFn-?RD&Sq~Y6~``{h$ZgdyE!?6?JL*9$-b?l?rPPg50CTyo;BWX9f9p4D; zflh^;3ERWoL7sLH-vjMux(D6n+)B3@-R9g+f5@@bc?jR^+(NgRPb_=~-4=8!Dc!lB zvnYH&yq#_fdAswbYlo`aNjF_LNH<)E96R9s&fBir=%Vne^fz5sIk%x(%&)qxL)YOO z^tWAi;4IP|_!4JP_$8W5x@WXPvq(AIc?-^=%W)mxGwXyv;4V zPobL~e}-*ld^^ar4HX2NF&&kCNwhR`|q zOlUSb13wtHK;_xN3*ZB!sqD-^r{hzDr{T%undnrtPo+x^P9>!VH&c0L@I2-V(A3~2 zbo1ba!3V+?;*)4n*`I_qV%7w0icbpu6>bPOLVv*<2LFsVCO1KwFmD+A6Wve2{eylE zu1#u${)E?t8bf`9`Uf>;uO&}wi8n@@Gi{7c3Qi#E96 zg3b$`&sm6044zCk5tf_-U>k#$Hd z_;$^M>jdkW8X|oo^-Su})~BhD*MSXg9nKGyv+#qzx*lm&yZz+QL0aZGzfE?cuI)JE#pa;T`Gb+j^f@A8#MjLFJBkd$v0S&9W_IGRrmxpJkhkr;rz*v($bjU5afcX{K$S$_s3Z zn0E+TL^GFe5!{7mb>V4KXlAlM1%2h6M|$ObjZd*ng`dN(ywANa@#o$bcs6;iEt@ly z=`*@#-h=2P=C9Ca_#-GAN@J4kooY+vX{qdIdsA(XnPz(*d#BhY)1{zO=u&Mnpc!g2 z2}LEJ9`7l9H+dhr2j2}Hf=)8ojSBjo%7?s%;nSqu-eb@)_#}K3+RaS(3A%G^ z2>lEH6FPyO!;g87t9$}K#`baVS$58$=kc@N4EzlFPxP$XU!^97n zJ(+PA(Z5L-ypuf__{@_%7rhfb$>?OyM9&0B=tTMnp7Esd+>;DX_M~u4_Dt~%qnm(E zAdmN4i_44~<{1l(g~!vUc!tA&#$AgW4o~7tLC1Q|$Nd?1npWtaap&VQxbqsEfo8;A zC-H6YQ>4>zcljQ4=w0t++6?;3=v~^Y&{ev--m7s};47p|_U>`6#NA{665T2EGU-a( zjhIWEE9~6!-sg?o=WX8SeG0wj&5F6_y%CcYbKiR@=5I7B=2FZ>Na!W{i!m2S7kK+Z zuizJHGq|#1Zp8dWa{;}K{}uB9KTp1h{)L~1GNAiR&ZB}J!S`bx;$T$1n7NU|1} z};=-G5=@d(6eS@A#LP?=e11eP}+j`<3G(e`R`s?i6}4?ki0} z%!RlD{4*Qh*!;#{^Beq$Q-FSpc~9djzmLg-KgE1NKhV8HKcVmOx6DNI7JVC&OM1sF zpX(FPcun&b{Re*?^9Ii*ze8W+*-$?8ib*yq=s%V7V;;l*lCoo-LQmmW@DnJTnebtlF2M3zN%`%E*e! zCFN4gb7D%-$aJOPmptnwPjk|gVc&_?VJ4$>ai<&!SBLAMHSy|l4ctSPQJHylxf)$H zxi;!1)j_M_ZpZ`GV&Y-X#nW842QA0cgF5BXq%hP;a>>z9wAzG2VSGm6QFP&GX|$B= z;Jl1+z!7xe}NblmJnZA#6$hmR3DBqI)eOwMF7y7_FC+-dO27X7M z8}|(Um-GyN#CaL>h~^)4 zw4z*@Qx&ZwSD~u}RgvpMLaUJK%fFF+R_wCX6nUR%l65 zdG0I?m!~W5PT;c*Y{P#z?En3i|D+#V)_Xa~~_#s@)vz<=QVNkce) zpdPoI&V_p1Luf|GZubbhKeM6eP~PTH-lxzZ@-WT_bf`R>ZYVTdo&X6QPMRRkBhBOO z3!RTopiSl)#(gts=ApCkner@rJb3~-6CV#HLo=9+M+MDQIa!_v&moPMr$AHS8SrFi zJTu`_={B(;bThsXnu>11r^u-)PsOLOohq+oXA`;}Un{S}7mydCYt?=Y-2!~=dcskFTjxVQK!~Syg2(u07QGB_)65bCVK@Z~lM|{a5MUr?)q>OQhm4%XS!U6rZHV>TA@uy-MO;`+?}qwdk3Fw8)t{yiqzV@owS2* zw@uzIcV*h$-OAmS$#&YEG&}L_&^~w{zJ;`lvk&d+?n2iJ?dsk|lO}g@r{P*>u<8^E~T3ev9Tl z`?t`K%(Br>_$~Pk{2u;@=Hl<=5BM{3Hk!@+z5I^uot%&6kUpaC@EqtFl*i;5d$)Po zZTuPfoar<4mVA?xf!-qBmhVCL)FuM6b(Pobza=e1k3%x*<<+-&OSn zX@Yw^X}tR$(+Tb@d7^tFdR`tzKfyhWGZ9K=KFmD^8Uv4~pXeSACy|E3LpbN+z}GCZGdzWXJg?K$VAoI;x9enEQ4w|g$XkmoX;?@n>gW%7dd70oOB1@s^M zAD%;c&G`?V>z+fGg3finrg#5S{^U11i=bi4voVVB^Hk$ zhoNE26-B0#6%Xnll|yCR0YyM=CK2qF;AtiB2(&cQ2(-9TjATNKlS(KdP>9-CAQPWa zcrcv>ErtdtfgCMrQHs)8prXoNcd)8ONqgOUNPFBNO!vA2l{9x6s#P}7?{#nBq(S?b zZ*Xsiw!?eq)7%^3ourNMI*wLZN3(-&KdsQ6q%+*P4?aV8#_i&>mFBpVbkcseljP#t zl~$a}X{Kk~>F(1^oV1ZNk+>830saAZkfJz0pr_rZ=+e>C?kJiV<&--HcQA`aqj{Ur zyicJ~N*PWJ8m*M2i-yW76(FHyNfnd^qz1fwp+DgjXe)A+;lA254bZxHZKV$GC09Ue z<6fvDREvoh6;xm4ib^H89?7dzg{s1};2$9`GvU?g+OZ+DJ^nLP9c_nKRjR369k0rE zHKjE>?a<%x*2-^qL-NmPYqf7h*HCFiYNfPQ`Df)9=GD+vN*lUg;F>(ECf<~$75h!m zfy~;VgYc$GbGR=&5bcNeRpRlEIn5`(viJpJgpht z5$(jZBidB?mDCVzN@}LGgj%XiBd8&tQFsfwM(D5TFG^!hO|+5Hgsu_PM0xCPp=uM- zV|O+w+uf4sV|QcasrxBfQ^}%#?9Spmg`P0aa^HjQ!P)dr-8bL|q#N*cPEF-H&3(FO zv_c<{a=G&foJ*JM?!ss5#Ob2ske<0ale+NjIw_r%_e^u$IqvsNI@5Ng>56xTdcnQ$ z4y10JUg&%GJGvb7y}KJtZ{?l4H{O9+ceFcivperoXg8$?r#ISN=}Ffe>ZuHdg!Uv2 zR+34{ynUe)@xio1xO#A35=}BX4o_0X;tAxzXcC?P4S^DwB%p#Os60d&3XdlxC?lW| za3cH%l)y~*D7r;#2wjX%f<~c>@Da*Ll}F(t*dD3OWoHpOAD^qt!&AtU(79?qhb~2# zLz<&3RC$sznfXX`jnF()%x1pQyjmjo`DR}|9 zfcZvc1KkE?E4qZV4c&k*ftEsBm@H*)22Y!TFGZIzU5ZXurjb(6>7*ITY-qOHOo3AP zjKXKpO+lxjla*A?7<7szJ#=jvkr~$IOs~C5uQ~v>lKG*J-&q5YIHSk zb2aZ%=qhCmXFa-FSxdJXTC41Ygsvs+R8Eji@b-nC#COu};#$LfhiOirNAbhT5qt-E zCwds)0quegG1-9%IXvmrDSKMn0iuj6S-y2|_U zG`7=~%j{f7ui}@LEBGn$Y4oz%U!psuTq0dkuBm)l`5*Ii^pcW6_doa`&pL>or@6%b zdGtB64DJyhnA~9RFP`=n zegnP9^agrf`IB@CJx}^e`5XFMZO%Za_>96Y(w#y7ME|Fp1%tuoVrjQ=3Y-#s485GzOJVNT%A+_F2^~jl%uIe zSD#jBby7?2tOK{CYw5YoXS>O{t<)pc_uL}g=G)y=ZYj-~w)E8VG-q;)_72S*{1)^O zeu!t0?s6WY%{|TN>Y>d&cWE9e%{-6rEN1u6d%VqiyicKbmHV7W=so2D-96}m@(L3A zfb>fFLi)nn7y1={Mf;lTKKJF*d_h0q`N~K9CHWPakH3UoLwQVIqJloF{91Vf7m!{m zZ=ttv9{eBll9}-LbUv}4RrSYxV+-hfV}0S z-{RejuSNweR(TV&**l-K3Ek|S3(ZFtsm%g-4m=lKh|lq^!sn6aqw~EBXjam#^iDx% zljfo;@!8NkXd;t&>@DN@%kX*V5~lOeP2P>9)#xU49lp_9Bv#Cq;p@DHSkV|_1sh`x zydMK^pirzH*V7t!hkEiiMN9t1yB1!Ui5AtPnplaGt4OepPD|Fs_VyH3RY&UODMH`d z(~GXRM~aR2#G|=N51QVd9-MfnFI!9aOnqs3l6%th@+{?(_Vvt0mwJ18`p_*U_hC91 zUFz+F&t|rqGuX47odlX5Xiw5$&roQny0hH7f_Jil_qBpICUm)X8fU0y8k|D6f}G+_ zhJ>b&lD!j16L`NuC*#Sqsa(^zZ#>Ne?|APde7tuSK8~D>j>pGAsnAR&<4{2(R8I9y zg@=;Hd1pW~;F<7rXdE-)!{`RHA@mP?2s8{GjL-0nR(TjcgYD7Y1a=0a!|?>~SbPw9 z2%4bwNpyp}Nu(ripe%TZcO+*tn&dUff$~T=y8Lv`Xm27-5<7{^3Ntgwg=Gt#=rzMe zxG)-k8)Z9Qgls}hvYEz4XOrJ)?XrPX7`5RBs0j3*_MNr}dqF%c2rmK^Wm*JH^p2q$ zgeH26(g(|9yutV&?yKTuvt)j4MVe&bKQn7nAohJrI{3x1UKd+7dJ+@M4e^ zw&Dg-2*--ADW|m zs(lCveMP&$VCi?>>6& z$i+3jPnhY^r}%dtU-$w11bu`*@O_A1BkNJUuP@Dgy8FJ5(G1cP^gf;eU4ycjTw~9N zr|~%0$M-tZYv^~MZ*;lncc1I@{=VOQ{PA3$k94_wR^fj1AJK25e4kI8ujogg0=kb- zflr><&sS&xDbJis$~F7@`uXOW**52+Uwz)t=b7Jd@}bwv-Q_?^1 zN6uHDk2E=S*|b8Rl3sD=Yxou2D{~f~?K&sR_Yo=EoJq>!+gPAzfyhyq zP&#ymNxIQT|DC6Q=XvSI@4Ed=(~bL$-*jK;^3iW}-*tZauN=`7(B<=qh5PFL^abcw z(kI<#PMF_k_zPVD`HL>Y?5h|0g_L2wO1f(H)BEZ(%%64F%-7H`zw`7N=JT9u(4WlD zo3B7u;H&i4%zwcrNq@oDIbnX+X-?4{qZN9RbdEd!gwN5PGaoei>GyLE8jq5WnGf)- z4)X2x8xI)IGCgNLYCg;40PP`~L-+ycID8yWBOT@(N6(ti&>cn3nh(>QFrG1=z|)u= zL67h@kMKT)9yT83oIsBlkI@~0jv42g&Zv5fG}p9}w9<5z=}OZoe6H!Jah_=&dcwGj zW~FJFX$8K_v>cy9o{KKS=RotIrA+3af({!5&oj-34;T&`=9m^ki{Yj8i=a8ogda2< zFr>2~^bo!uI*6v@i%rK=K4>@wFCy(`Cmr33?>6kgH)xT8TQc~fsY#&nU3RIXm+u`1+5a0Mye7}72jgm23Lfu1XK*Dj8_b(g#Sq1XZVq` zjcEnC3IRh+l>*|JS3xV_anO%Yf@!Gf$AE2ytvqcj`#%P3HB@8zV?eclEr!i>8__Lv zTMav*oocfQ+Q?@VzJqQPx*0uUILbMWZZd4A+XQVlY&P#ubvtRZc@t@qd8fF;eAKYj zycIoeSVOw6&>^@c zaR@Ys*)Xn=rctJNHOJEpg9nh}P5tqBQ$M_)>8Y_lJj^s4&M`hU#+yb%@nqqzj5)@B z&@1B;W;tk%QSf8Z6X==o9{dD-0*^MmR=Zcm*EA2AJTzvj`Urn$d|-S;|3IZ6f5Fd; z&&kF8gZ%Fq??d*@VaJzNAX#8bZe>HQ0F1;T}x7&t}HLjFd&LXgqlCooV|BdKs;QF@=i!gPfL zi;#Q*4gS7?zGxBuLNtW~3k4eSLV*VSyQOfT4_b)+yTymSLVH2Ku2A z6F)ZmIYs>aY5W4Us5Vfd_Yc$r+R!5YHjX{eO7=(nY5iawti%0KZJ?Rfj@ko@p~V7= z2b!4MP#f7y4uH*Q09*nNWo|`vG$jH9p-mR?Bpq&|vv38_n*xKGnMgrs5XnMY6klfv zWwOq)$zmag(1$QD3kRYh_zzGCI1u^)ih;{8DM^Y!V**Q~r30OTVN8BNe;|jkQxcOpp{~HHG>*WCK!sEltr}PkEf-imunPT;Xap`p3R*?= z@`16ig2uAvrHy7QoD&UKMrE`LO>|%+fAw&*a^Pf(NYQv09z`F;=Z%7wS|VweTA~8y zSwyqcG9R9AnP-^`Ek)7mRWRj(Yb5~k+)ic znQWz9$ZjyS9$jx)XW7hb5xR)UTH3AXR`ObA>(Mp%8h)MDSyquYqigUj&_Z}KG#i@3 zUu!nH1zrFxz_*|);g$FnbQ}9y(Akz1q*>@}(n`y4!wSwyrrRvr>6bIv4i7MIqaR>i zZW+wR3Us((mSq|9<(46a!SE8&EWY6qnvsSfhUMguh6H9q&>;rFgGht8b1*#8@CQ7M zGyqRP6KDp~41x!u{mjEj{mcXKfrg=Qe{(;x&|##3hD5Z#c_=>6Fa{lf4x}NQ#~7OF zg(u=YxvRgqCug9!4^Qg{_d)xZ<4N23Zt-wmbh{-U?`iH$?t}KF>1*D>+t_Z|Vd-t2 zWDuz@zKXn>el@=WtKprTNrs*9Mw&I~CU~c11G<592;GTp#1AqP%|TUnT8?n-it4mVNL(k`%a)pHF)90L>n{J|$ z!v9N8-b)J2M8hmJ#W2w@77{v)raY+!+IxMa$~>k302~ z`NWF8BT8X=b8x;OT}L=nT?7mKmgfEVD^(`28T7H>7_o(+&Sw z{zJ>?pV9nddB*t<`j@RQoPTLvl3&uiv3%wC)W7^r`vSeRyoSGWUc;}@ubfv*zgoU= zUZF27FYssROVTULYQqbT*!gDpfPUb2^9O!E3;kv(5%7&^iGU9lDzrp^CBO^`wFHzv zO(YY)`-KMLX4+z0B?49(^faabeSiVi2Nc4!WHYMAwNNog$3%+?Dxz|+fZ}jrk~Tns zBv=OrL0V?QjdTt+ggWsE$cQ>{DIi#7BQCKW98iiK2U;306`)Nl9S}l}Kuf88NxG1L zlBALWQlj9902e11Eg29_=Yp3Sf;hneHky*$YeQvb;b`GRDbW@X#v}%o(L#xZ6JrAO ziG>ms=HUSfCoCY6iHyqR$N(K13ay=I*>PQ>A<@WltfUas7EmU@kf=+H#C3^f0)8Ns z2`Gz~35docQ9(0Jf}^15fN7?grYJO;MhS>TW0@#CQTTMzH2zmB_JG?)E5}X~8!(&w z*{13Aw~ez+Q`wk~PB+aqrShz4a4MQ=nn9XMJBw?!>9%nqO{!_4X%arsl!7Ocr=k<_ zL}(V2%p?&NGzCsJO~%Ke$@JsUai$5Rai;P3IMY}>5fyaZC^!j9Tu(qBd|;TMg6((_UcfJSwP!{%`u*#v8o78~Axr7FQ-sD2xh7t<^@ zY%t7&mY^H(`Os2$2{g~Jo^Czc8w_(v^U?LHFEuRWck)6ui=#mS3z#irI^VE>W)ZxA zvj|>=F5s+!i;;@)cl9coRfc6;s|>5TYk|tE4J-IbvO;Z^8J2S`qj^sAf}b|e`FXRP zypm=mz8qQyufyk()^OIL&n)lQeU7e!-{Q~s*(cnl7xQ%noBplk0r?#&_&>{IP8t1U zwjR>GB|o&>hlD;PJ>rzn-&g6r=dSP;G~J;VOq-)!%s=b9!7a>9;a~JW^Uvj``d{ek=~}S&v%a3LDbsqo zhRlA^H{>)$e}R;Cz7bbbeKUQ1x`t>&wP~hrq90>uqV|pSjky}pjHVgGpLj>} zXWqu-Uuk~D8$+$(*7yL!DCVQl*7U9Q&3R^Hbd=#YHMQ3N#?A=l1Nf8o2(JF{DD*e| z2$~)=-AN;$?uJf~(C(y8hJK`e?DdCx7&^1vQ}rJBAN<+Ar(v0;C*F~HXS5%_%rcX1 z3A)VEnT@V+3TXzd(5`gj$SIa_q?!Di#3Yqd@Fo14#U##TbR1_q*Cf(dHpijk)Mm0J z*-|+$S?$MLCUA|XsYp|qe+R6{zx7QZPo$ZMPk^SvQ*k-40`rRKRQjowDLiumS|RWc zHBGhr!A=}=nSaZSx7B(YQHYG%nCX7YBI)e};s5NWXBru%KU{MsP#s4Y|Kk zU^UV&XhXa@)Cm3sst(mb>jc(C>ju`Kua4G$>%k4UqXtw9t`S(1tA@(;nN%YQA7W|9 z)(}2_gTSGdA?PT}P_#Zim^>66Y8hooU}FfJfF@XmlcsQnTLzK_TT)5Gc_&k#K~Mty zAT$*o1`Weg(IhwtA4{6XNkRu%67hlPAX1X0wIPv{#LhI!baXnuhST}g7dp+-$1sg) zAH#G@H-3jqCwDV+frNIW@51k=uKbSb40R#*g1ex-;MQ<2LvK!NLo3x=8Ja?^;Z}y0 zaBD+z{_4%~U&*advC$ju0C&JUlKOHwpdC5!Xgt4v`_lZOk2eg`_ahDB@11zM;rhO` z!{G$|AauAsK|c@@nm|8*y+QB*Rfp>ba}C%3q3=sG5FJP!pl``mb52W|{^b790DTL( zmi#^29O|!c1-Ia|g4>`iIBl4=(ErY9gZ9_=!~3HBNp191bp1GD=XZSrv;jX?8o-rx zztdONHPF}5{X|zsR}ZeNtAtk4)zOuMDx-Dq+RQ{#Th+?C@?4d5RdgPja%eenZCzcq zn)1`FE=>(`4XC!R89xo{!nH`vpjvQEw3)dUUPD(M^`JFqYU)~=o3P&uZDtnyE2#-T zfqx~{)cIKBHLbYL#q7xcK6Ng&iFkLVjOe%qfp+UF}3e}cC zZ8XK{inAT0D@wAV#Z?d0hVa)4;jdPd*3MO(}D9NrX zsx8TL?7EWtN1PTqKQvHu+7eI+wJ8i)w8cq%5AhR|A z4Io8H#c84>lggDym825vM@dDr(NZ)TppBF&Nl{WHCmO2EJW?tLm4hqMM@wa3FR2V% zmJ^^YOH-cCtgEc5mt@kF&{n1~(V27sq>`Kf-FK2%SBmc$!1pZ)6@pCkh0s#4k;aIZ zLJhD1FG>pM7|=pGJ^o$NL*Y;nauK{JsTf*}UyWk0gHr@8rVFJhj#^=dE(8rBWm!T< zS(Z>zrp2l@nWQX>LwD116D^{s>fZpFp8{(Fa3eXb2v}Of*5NhUx8GVfq3;BTca0$gx9Kw$|_`Y%5J5IS>lc zujS9(R{dObEq_*D%fCacB^P5_jQLtaQN3u2>5I}7rCU!^0=AGWP*I*H{=+$ozBtK* zT4+qDNgqHm>CL!FUj#Rzf((9w3qwXeneg|12EW2+5t3d1$+j-?}Ohv zNazRpTuuQj=$+qNCU3d_z27TRF8WsW0>6CTZ9bc?X!E#oX|B**<^5mbS0Io4k>(?w z2YrRV;+HMAnO{M_(tq{)%oFm^+m>%?`s(+Mom28tFTh2j3&y)V*6w#ei>73;(le66Ur{x6mztFR)7ts~w_jX}^AD*DS!1b4jm{tTCta}k>;C3B7c75U{B*u_-z8sWf79#8I-0*NI^89UuTCPJ zWbYFDe_Kv+U9$WS{h#HG#fPac_xhkdIxWdZ7l?nCERc_m|Ah=}#x1&vQXqe4muF%@ zD@q)oB6p5FUWY`1Cs4T^jWQqSOB25e=qY7LGkCEJP87WTXI8qtu2T~b+ z?))HCGrQqx<{Ef)a~w@|b2YrW`3L4z=&PBln5*Jd%s=Ag$kov*s+W~&!qv?+xytf0 ztctlZTjfwezes{>n#;pKNxw+t%oU&taAkTgRF0YOhSE<`eKv&tj5mN9qV@3#=Ef>F zlp4ccQZ07sqjm6FQf<5nxdB>B?Q7Cik!q4^O7&E3AT?s%7_BMQrE3I#)p*TcHI1ce zG&R|;hPGu^7j2JMlWM@N;I`;*cq^$j-i}-st;@WX)RL~H)CO%rYKykSn?UWL-zYJp`@YGNR>xRiOjpAL!}XPiSS8HXHHisfo3TC3FuU2Bhcx1f;0q9 zfv2LA@f2wiK8-vA9l<T4~=`=J!8blg^ zCXfb8+ckqYq8UgxfX^uWkY>APAUcSYD4ozG@|jQ29M&8{PiPKn4njf?(;w6vARXYI zL+}aB5v~)OlbStr2hoG%1DY+&_h{0fH245~L~|70N;(Q3f6dG)ZiX=Z%f$ZI0)C3LPg+;4IcmfRpLQlar-okkDk(GHEGkDQ{os za(o%>3a$ytNJ@gwLlrbo~<(rVI5bPZ{(G)S|WBbrroEBTDV z6E%Z0tI*Y?9a6Gp2cJ2aCP|ZsCTo&3V<4eP^kX!mNu#+Z5l+^ONaNt~oQdcN%@DeNv_c1v;<>Xw9FN9p29l2PnFngRkoswM z@jV7=cA~qa-n8-bz0qB?eWAW|yQIFFK5!q>PWE8$i8 zepWh%A17Z#&*I0SOVAl6$5BClseDN~0iP!wmrg;a;4|<^=r}Xs|D(IZhR}QXUFd)4 z9sHDZTIK)Yr`SF%WwCPyy@_W@H}K2kyJ(i$XVP7kGD(@zZI$mz_nDtYGo@Q}_u-#3 zCpo9344O>#GtgJeZlQ1R4Cy+Y1HVF_<2lkZ{5AO&dW(6E^px(Y^b&nQdWAm4A3(36 z7ffEWca5iA!(XHSFnx_?NLNXh(G1cxsl4VYM>JRHF7p|M*V2^NTtTmr?n@0c_xa2X zXliR}p$#;(H8mljwdreWYLIGhPc68CrVdvF%}<)jbT!eMNU_}MhGWrKO*zs(eCBc*7b#Bjknd4W^8kG)#n8sm$Dj{s z6-c3bC@C5lmPrrTd&H47kJ$f#&V|O1WKB2}PV<0`Y~ENlZ!??sDfE%_m=msf3_qdE zCO?tBKti98zDS=*pLzR2zv5qLzi~b0zC4=GQl9h?&y(`;f5~6aJp5ni89iEu;6VjI?UNv( zsiaBvIixwfeWCO4Nwkx>rgGm*nmP8F_SyJM`z$<#JPDnNr$CdT8B9`8K@(M;Y@Y&8 zAf?!+L(}0I@H8lenedTx1auHS zz&;S~Ngj+2W+S;Af#(@O@Gie3g@d-VMD+_mWoVebQ&{d5k_E3Ac1KbX3 z#Y}iZx@K$$ZGqQ^8luhc_V%AuZiu&M`)7L-cABA0@h0|P@p|O?XcM(>Ojpm|nAF%_ zSLOQl2F!m(8{2EsHGoalcATH>jc6LP-w3V6tTtK)Z)C3wSBGn%HSy~98h8bAZL~J? z>h@}M)$HX_FR2z<4fjG7AP{a1uRqzUEMWz+dM)qGw_0UG7Dt3qU7mjFtqN~Se z6kgKmu>OSpLTX?yZEe73E=^O)S`sa7EoBXZgqETYv)V~^?kNeEwnlK3wwkOKx-c}1 zY`2Cpw^)OrVAu{v@LzBawuX`d;UXLp8f*=rbI}S7B~{?gaJT|m!CH}2kLj_W zmG~YNtzNW}-A!A8-i^{*%R%MnD%s0fJ+O!5W$#Ch$ND4tadb}9P4Za1ke9~GMpfQe zRo-S*-lxzX?PWP$YgxDqT~%@!dn6>Z3@Os?Cb@b0Ld)Tiv{77Txlf^S+ZB5puGnL7 z7daADa2FH>$xK|RAg9Vv_GmbQPYRXG%o zVcTji$&LdJ$4lBv;U&mHXi2pXqbp$#BZb+Es~ltxW^P5p>_zE<;fB^9I99uzCX9VM z8py0DS`4?_4X_ywL@l`49)Rn}MbV6x)OXw;ccxQtRbk46m0Kg4dydJfHR>*JoRT^}9_&``zZtG+jF{X^ab5Z+Y;+@j%c3JW%C(@FSIVPK1H9Cp4gUIpYWNN(JZnq zM3-3?Srr$>|))ea$x&`P0@_g%J=2NV*pjq&Ic&RlNooqwMEb6$=$^_~Y**pCq)WC;C=GE@NAV-}yL3nFhw)5XmdZEqOt!OZ zY4)Q`((L>3G6OuHa5Z|lsj{dc zsfN}NtJ59O8n|j=nrn5c8hbQi1?RJZvsuCUR8%9LcGoaH?OtIz=6)1C?S9Pt2&CvS z_tWTM++ohXqQ~h+NKdj(yQjGxAUW)Q!2J;YfcruEUi=aC0DUiX657vXFRIWUl~1~# zf_LNgy6=Pb!TaGe&|YRr-%9o`I~4toz6sij{!8EIzD?z=^nL8!=Dw3X|DylUce?MQ zZ^UmxcdGdgvW@OLa68=pQhAg6X6D<_9q#MNHp6)?XQ*xNf0OKB|KI33X6w-n^uOJg z!K>kQ=o1@$1p`%vZbrPWHR|pQ^5DZ0Wv5$f%d=+akB`oM8;BHEK4=hB0ogzt^^cIiVB zOBU;rplUolnk*5GrAI?aE-^0gxM+GT)e9HnGL#-93^xExc1eYX zp&4p22p$2aqUrPzE~Dvb_+jWUmq8?>$VR!0MTg^3(NXl_P#QFbNgDeGa{B}6Y3N9% zY3Kl#{hy9so4x9()xa6X_JpNqHfTB4rHYyLzb&<(( zA=zb+>ljsK++bH5^Fiof*Fmm1OmbYuvNOjump+hWkn2EduxkcM4xE8zxMt$c@H>(- z(M;EoBqLQG>3YsH!!;c@5Y51ibj^mcNzQp@yDGmY`8<7~YYJ()YZj9fG~Lxj%yxAY zQ(Q;jw6LO%be)(*rW3XF6xZP@kDw299fnUqhcg|{6{?{C;N_$Q557c14}VLJ!3m=+4|u zp@$LY#?+19{p<$c@vP76j;EXW!qc7Xh36~yj^}Okw&x4aGUyKag8rPDk~~-Sj^|C* z9nV6K8zg0(H>jJ?OLmRm_dUP#Oy&0-zw~?rJ!kp|O~pTfo~Y9&o{!vCzu|coe-Bmo7X1eITkRhA>9EI59@Q<6Tb@@u?lQmPaRa{PaTUGl zamC}ZLg*EG8B_@0f-ZZMl9jUiibpZ73@ufAp~o4x%;P4j3_ea3qJ_NYo}i!PJ^DCw zOr0I2A7|$okJHd;`c3o_e2IS4<05nny#!yN--K>+`!~^x9_!r{cZq(%W3AgolC^FM z|LL|C-R$#TDtM(=p6aQltP9sF<1R-$)2exnyNyGyNfyUU*CBumj1xRq|Jq1Ec1yB;On{}Rqt z3A^u6tKIIw*GWpz8}L1kYv?uHNS|xCkv`XPBYp09Wcg&FtKCNWWRPX}++a_N&q&e~ z5+%(fOYupCQsE4r(fCZ1XMl$t9ZjCjB-h7In#*&>?lT6;L^GM>!eiKz29KfA;1OsF zno5%9GnPGL&=EdwJrtKlPw^R!&&7>{UU`hbz4CbLF^gk2XOE4qnG4xi zqu_Bq^}H09ha2ak_p0YLj$`y*HlGP(Hg-<%$!C^_=BYd#H_>N0J|ABI=cD6&T)h-G zfj*wwboH8uo56I3&rGVorG-x2Ld)&UMdJJLHqL97st z?%>^?tSwm(+FtE-y!^e|dk3n=b)*L~^Y?0t2761)>Uc?1ZLeU`mR`+CB(x;SD7P8x9qQfO>t`}wCKCEHy&+T^mY{}^6OYr0-Vm(`*QER68c{XT8eY}u z4rmQrO|R!3)hQ*>kvVX7mHyb{xrYv|j?;R*@z8R{-;g}o&m1=;$tFwTwXO64WZ7sAF3V>Kwc2e6Jdi9KKhUQ?r0780AZoQ+f0g?C^kdSG z;|K8P>;BC8;QFI|>3w}>y7i;aberSWhuL8A!Tc$F5Xb-SHkkf9*RJ2WdJXp3#-GWP z(ZAu}-BzKi+_t$bW4at&MPG(r#dU9)nry`_b=!*D$}tN61uf;;s`Tw-f1z95&hcmR z?QTWLXMNv4rag9_ZeZ!0~*D^lesdW2Uv8i+NrJ?Yz5?v_}KsZr+{I&bR}n&bR}nF1Q1xZr+DXhfoW= zpKQM=kUcw12S|64DBa?{6+UD-%sOOJ_+KW6p$*VMct0BGeHg#qv<}^huBUH?EZ*zT z&Fo)qI>NDs(RHRjaXX=1rZw<7bRBz+kZ!_nqVK{Tr8c2EasQzI@bz}#_n>=myP&QNLDQG&~(Om|Ip=q2b~lGE^A>NI=`y-S^9 z{|Wp_^b|Yqn(k4j&=RT?Ej3++PMOZK<1D=tcb__omYQxby^NN@_f6N)>$q_7Ixbwi zf$JugsYy3nxOm?bAx5BQO&!E;Vz}6Wih$a)s~y!|G>h$UVN^G!VW=6lKo+_gwZc}q z8I@R8agJ-47)lR?tQ-}}j!>~Ht}_}+(i!b62I4x4UFe;~PV^3_LLn-5ggS6_G;QzRTj))5~h#sVF42#h&XDzHb_Tv=Dn^Up z-r^bhC7z4LaIvY6*azLmt@Vcb@T~63v%D`o3fG<02Ny+;7E_=RP+zeJ+=Jeat|UFg zo@h^XPfuJl+>6;T`Y@;`JBO)$IBuXg9M_LNj2es^C=Q|z6bI1zp$ZLExj)p8*Phao z$@-%M&@?ff+GI+HhmiHh4-xI`NJdA|^PnN9ot_7!i&^A$G>4ugX45n9d1#i})5Xzn z9y*%cn@m|^Cc83Fg=Ba%=|-+C8@V!M;Kr~z>FV4UfFq_F5$8Ag^$rmSyQ|Ob#$@KB~0(266JTw!U$YeaK&~%k&inHKp zxbflyXaYPDo(+v>ru3;~%h;jl3i@(rD!Pn5L7b!VRQd#V&k+}}XBoPPzCc_^pNn6P zE>QFNWOK#&xcTBzm6wYvna@Gzi%ZB>!Ud+;)Esdh$$a+DLpL&8f^MeI6Bom4;f?4z z`daZ%`X>AmbP4md;u^9w;$P@$+(vW_eKoWR+Q4KJ`+n!vey49jw=ms=&J$PR=A!d( zzl(XMRg{waMmCrGsPuWJJkxLJD%?sj-?WnZoKG^{G!M-;O*c(~6rD~!$ut)?mt*F^ z`KHONd{cpGBH1K#5`L~Jm-$4~9B2+a7oKdI0^4v?;HgvrI>$7IEQeH48!nq8bKz_> z+hoUW;Xd0M$iW|3x-XQ5k3Wk@F5D$1q_@C4jy_HCmkn6|NhJXt21 zg_~eXfl^3Tv*QoW*dLtDKRBO?ZWFgtDW>i4da^(8>&1PLqU&+{#J#w^oP9<2)Ax}c zU~T8PT_k(OUE;s=UE)9Vzw!IfUG%@91JF(;f1?WRQTc#)5dIJMx3~k^0q=wlL4Pw- z`fjp9b|`v|eiqt|7SeZ!hgIH9-@)#~;&JvAq9^Ic#S`=+__OG7H9tmnL_CH&CZ19G ztXRbSFnUZpO;!Xam<~~g#iJz0*nbqg!R$18lYUe@1((7%&@1#(@iM&(e;Pf_yi_b9 zD-o}wmvA@G68a^m47$dojC~imwTtvJ^cK@H^r(0NcLY6(yC{a4E>KExp6m$sQR)3n zVW#uw1zeFBZz|$G$CLCj^+)4Py-YEXqP@stO#N{EIHo@wZ;EBbn-WaXWHD$AzMmYY$xC`3F6pFjWeGWBs!UdXc^Eg6H zm(bf{XVNa@ozdH*Ay5d}Z85~u9qx|1#J)RJchepAN0D_xJL9^W+CXhcF0rGSGgi#m zEarSFdPlrVwK3g=uaXtxuZk}qMX%ysh|h7)Is1yfq`x42#k$LJ4@sVj55>pyhvFmp zJ^TywA^jfo3VOig9;(nYm0yXk;itHJ;(h2o`~ZFf-D9ToCuCpQp=c%FXW}>L3Hp_O zUwo_b6Z(C2zZEOk^A-I_uMj`b-?8%>T0yT6%gNrM3Vl)en^@WR8%I|5Ef+tNRrY-= zHZ{GW-iq%@%Gv)Ot?By(SJT&-{$Bh9YvG!{T3#L(X;XjK`)F-9_nc!Okt;W12 zD$uJzPEd6wPQIT+jqiKv6Gv%$4NRTT_hMDtJM_J1fV@mqDJ7}mTNSPBt8_n;m#GR` z6<67}iK()0Q&SU?#wI_siK(&41S#5>++=ErYsoQwa1)crYGP_?`jO0pn(!@6Zp?o) zwSZc{En(5*3%lcd;f7RGw1w$^Wc5iEb;r4Kq#Nvtx|%$32JW+`sUEIAANgqT^)yvO zjlM3VuH-JLk<vE1 zDq738Hsxfh4Lg!K;2nM4Aw?Z=?!Im~H_pDI9&~q7PgZS?b0Kl_b@8oFcky+l*TK7^ zF7!H(CsdC~9aN!Wqr&{bA3kp^HrDa23)O||kvD+qFjM*k<9Xvbb|`v@UIbl0&(Z7p zURL>n@iN>1ca}Zp(2Ml5#_RM#d=Yw9&99La8n5B58IP)5WGrER8NFsaNLB(rc5dMN z*!i;YD#0 z_xlmaE$5r)Bj;PrWsst`$jh8>;BIitP56=XJ=P=V$IjQt%Fr_W4d*+|uQ^|buERIr zd(QXa+qnDi1L`q)-T4LCM^Z&^<34cY9ry$K!TA&J829;;^Gn=E=i@w%PtJSMQ?9c8arkiu0-H zN#j3Mh4Vk~HnLOrZN@E-qT6s=jGJ+rIs1zKP2WPgll2eBZ6euh++^HN-(=iF--zFW zZlZ65c0&I#*@!CihsryRyWrn&8;!f6-SB_#ztBczN?%2`f*p#krmuunp)2USjen}V zioToOe;SvwX9fB@eYx>3`ZD}Vbh(;uAX{eKfZJf4r}9eU8s>kZ8;rBa*1%fBzto?` z^&}hEzaE{zY!*6~zTP++E`VpCbLa)erSzHjS?Db01;!<0ONi+(M&^VI8F;Ysr>zAC+F);9^*duEVV{x*67RpWR66 z7;2+#hB}5?kfL?SYw@AMwJ8_07T%TRX3!d($!ejs@J2&D=FSE_G?=P~I+NCi>*DIe z0;NR_1}`#SQbp_HM2@Tni>PR5h?~!SZfIzL^EE8saWpjKqYI4Rk&5Ksp$kZVfPNrb zVEn=GJ^Vc`pM8s{?+uIC|39(@=y$m94JOD$lFyFCoUz56&BdHgMHd+-QzpY?cr4js z{8-~?NYSyl(Z*4@QJj56$J0lXPGn8yxIB_k#ysOVdY*AQ-HsoP=F#oYL}(flJF3t~ zl_we}!KpaAaVj(wo(4~W?97y&MmC%sie}J9Kxyc3`cz}K%4zhe?9Mi(uxB`$PERq) z^kMiBXo{NK$c7nhIGeG*$|H=K%(GFOu{T*JEE%Ry*~VNF8~bz7L}tCwe)L>pA2;3_}*x5<_X4RvSed-G#;0TCe!1gBq*Fo68i>mYlG-X=m4fkXs$5_Hw?|i z4Kj8%B2bXCKGGua}gGf3U+M_{+4u*D+q8-TF8QS97a!h+T z$k2rqWRMKMkhMeG;oBNIG5^KzEA%Ve7VcsQggfE_VKXJ6zZ$~G;z$+kh>PXOPH-$5 zYv_R+zhoJ zGy)fCh=F2A;@L5TGd6^?IfV16=wM?k6=R5nBglr}BaGc3MI&(Cj9qbEIs1x6(YujG zvtl_ejHIhE%os@zGxnl~;=7??^iU`o>d7P&Rj4D}lg}FKNYVr90V~>${wviEZD;I4 z(naMieBM~7F%I7YRa_V2Ktmj*@IXF)EYujoB$ThD^uC6Hh8Q#s7i}D3AT1XJR z4l(pI^nn!ZM?OfI!3y;;^k&kVqn!c^Bn z-<)Yrg9WwdTj+a||A_vmx9ERn)&gyz@=v&*xUJ?S7QMu>=zr8VCHoou8UK^sk9kvl zGpHH-6D;Zd;g&dm*oXQNZKiKc)`e8jmblIw=?8a4JL>~+$vlcceH&aC{ZJlRpgs{D zYG_N^nY=AJl(aq6o@}V0y}ljX4wuNjVN^T)F!ujS)&^~hYp3r7bs|Y*M-t~SiSI@d zoI-Wdr@#Y9dZPp36hnWsKQ0GNK?l&YnJGy&n$2@%AfHH=3k|0$n$0YS-8MJ}wZWbA z!|5`K%qP#ueCC^?Hbb1=#w<=R8zT8EI2j+Q4~G9q6%WC>%-;!}Xv-(O>i-^fu@(xKRB9Z3q?0 zo*w$1GLlFLNrWepP$H>?P}s<{6*R@|D?h>LvOC_klfM z;g@_$%PaIL^$h)>`NZUd<|Dl$pB$&?CtOFTkD4w{UC=L@c6_>=!e2E0e4dU!y(Q|$ z=gxI;3S@P`wRDouKuUt!qJdOf_*e8-KAyTQ`vaYVsJ3Vj>ddFu1@XCcL68%lRu{zQ z)jj4uJ>#=so@yTR=`Q!s$M`3lu_yE^xT~zkB;80NIIG<_uUGLmNN&)tLS=9n{R-|H zRfcvFy0W($S_TKwJMleM`ek)qrn#&M6vFXcQH8q*K~xwTCr06`{ zCTan!&_?ZFO#b4?McVbaP3T{0U!dK>m1GM$gV7NEW@cNMZqjZh*$Qu_w!%Bn&D2gf z2-gM;=E~EB-i7yxAdcOs-Nvz-(IEXUToCy#+)nK-Z2;7o_m=>&rf4($HqyVfP4%sC z0s10bD>OiV7An%7Wu_$O;d3}ei?rw2Z{>)lylW}FgrpTz!t}hhMC-3_f;$IYfPcXG z^RD&-St*$nU&^FJTdHjU|DbO``Jjz)jhQupee~WeAKnkW$Qqyx@QwAaILe#!JAEU# zF?l1>|1tXx_J%?Y-!Tv6Jvxk^07H4l{ssNj5JDabhu}gC-?RUJ)c5*d48izc_{mY} zz9j#neDxuCU)Wb~;+Fr11{>WRoPLI%AVvLfKN(u%TC<}K zY&QJNGV_yZGqRu1pVUM$wBRTC7UYxADaPicEtvjnXim}+Zcep?t!Q(~3QxpMG@9V% zlt0UAFmY6Kl}&~p`IFR-YT|FOu>5h}YTAJQKaw8}K9CRHf;NSl(wpI0QB6^ALlb%f z)En2-An2P=P1)1R5P$~oI0E4M`c~xi^#O)j`qpH%I6ncTwb9!8T6!Z?AFV|_3;9ayC5z@Df`c`_CC4Jl95 zi)zHw1LuS~<305iS`W&TNke_Pwjo@uZ3MkWUu$1!Uqa>REBZ_54Xa#R0ly%7!SnBx z_6hC{`a(@FkzJrJkvu1R4!zJ`B)bF`qZg@S_zHTFx&l8#pP&;?ofFfZar6m z?W}*b|G?YPGujkEasSfS(>IWB;L5ZC9wz)lI!xH09Vz@pHj?Y%2GXJEP+_Dn5E_P# zq-QWwk_=Uc34>U}gcM-_$v|`PP=G)Y2(a zTyq#b4DX>1q>hYMS91BAg$2Jq}rdMepqbU1F1 zFoa4$2Mft$gP~+$9HeM6ZakF&D>P0R%VaFarwW<4@#t8!rw9{-GujF4JdK{wW-*(< zbi9y7BEwmf4BOEx$_`(~UFKD3C$S6JEW41$QCTYI3Au2#ki*JWIY$@;=L$CRQNn0+ zG+#dlKL#B`HV4i{$I$0Od2lW?7n;WvU>Hnop81OlJQi^nm&RDEfC(4yrU}6x7zn) zZ=v_vn!1mwzQ;M~-Z8Ix8 z=St#038<^S8ks9pOL85CBO<*($`>8gClF|zv=j;zi188%Iv7hJ787%H(g~t zAI(ZuRo|GT3Gb4Pd7rF;*N|xFRUkdAr#CP(V%`|l!@hK1{$8~a`}KM)w^jvhWGL6^ zQ7^idyjXjRG)-ih1E ze|vBwaWwE$Kr5Up;S{cLF6X~@l=ELaD&hFC04;ZZrKT_Gula$Y-1$B9o=k6e@B9t^ zhO5Nh>eM&q>V{X&U&&sguW;X-OLSkUZ|tdVsKGs~!Q-d_Kh{+@l;|GoY8dY5YLeaI zJk%h)i{91U(cOj~qj%`Hm?_CERUhjfvL5S7bY&#B(cAc2y8G;^pzf30#NUK&={}I% zhwq^usC)2p^aJ%AeukEzH%XrBKIvYt{{#9#<=40ue8*qop6g=R7ejxcdr9_^XT>Y{ zlkPM84);R$1$u#3`d6}-&{v&K{~p%q->Iy{edC#^V|~>*@+{Tq9ra&y5>rPKiK(N$ zI(cwZRm*8QYw2AR>H=uMd^NmEtLy5=l1x7m=S8QKir zR9A;xwWvBIP4G>irn=f>b+`i5f|}^+!nLWoaDB8kRi9~XohwxzZK7*TZ-_R*)z>W- z8dJ(1S6y|qI@hP_@G`-be3?*P_lHn}><_Mr)k&A4ONBp#1<*3|5Bh3mO0rtjWx_(% zGGVzepJV~L0KZz8%C5=ORFdEEzeB5qDP&W*0#Am17pB2esA=#lbP6>KUWLv_e;S+h1u+!&AY@LbPT>gldqXAEY&FQFk|R5g~j-p zLcT`ni#1C%Q`u2~E~Za~rm+e%li@{Vi`cPPGX*ydT|^(nt*p|F=JrUfdM2b~S$sO>N?`@rd~~IdMV>*LLB2xB zz|9vHF`3VESLwfzEkak|77B~0<>(?|3E3iOiLf0~bP4WnYB{XXc3~TnZ5;obum<-x zx=roNg&n;5cCd2|=~~v`B#lTK^9pUmYjiFCFOt9LYoU$sMtVb?Kl4WDM)HlqpWMP) z)L*wrbsL3E>}kQgA=i!;EDP+9ZW3CMw4@}oh0c$x1>~m-g%tI}g;5f$P^d11NeD+; zbV0Z&9W|l#)Dlu504o2hqLI2EJOdx=ibsv?ed# z8nBkC0oO#eR880u=gGfVs!3AQq+`|OUquNxg`G@}{3|I(HPM;)ix)CS)AwpxkNyLR zqp3PnovufXu#qm{oGByvz3Dr8J@k8=(X^<+ca)Jm&L#tD;Bgq>g$?lQ9j=mC{Wac6lZUS<{QuELkm zGr9$;E2N*rUqi3)`nU$qrxu{sbTdh=qgn8L-7It#ZU#CZok=fXrX&Tb&ezRm&FAQ; zBs0(%_yS!9yV9r(l6-tVRG>>I%is!-2IcEU!s*mVI0sFqa^UIcR5YI?N0-h1bacAz ztf06Y`Ve|Dbyg@8lwL@ZtQ*SCpg;^;fyd;w@*;6aB=ixT`@jccScZpv9M1# z&W=K~n0_2O!73Ea!k5S{v7=ZxhC6{?qQ`P8dxcp#R|a!F!>9pxwew+&}0M`oEBp`~&?9{l~5UNBH#OfnqW8(4S_q+JMbC7oittX!Ds}%8`KHyO78}B)P#|Dg*$2@SsnRY;ZW6wl10K{ zxJc6Ongb5q>HE!+r@=>tjPG(Dgm^iW(p8qYn7B}pVtq{pK1a9?_Fv>z@}lLRHv z!*B^y5*kK@qv1T_1AK?V(QvW@LW1Uya0pG(?Bu(5i0|eh;V^ob=g1);NwXC?Bq+L` z14h6?DAA9 z9X(+`X+LE@VLwhkik?7^(T~~>%E!?C@!%7<}#{slU=~wJU=w{kVMHenLLZIw42MMffA= z5&0-dggh8`T-CvHKe(UV7wyZm4?Gy{OCJbDz=NSaa&NMp^nqw^wMWR|&;a$gzVt!N z!kG?)LZJvWLhgzSmqX+*TvxQK+zss}$H+nCp=b!bGZcmfsXa!Hgu~EC_Qj&Ha(6k3 z-km%Wih`oiXt@X4LyjYlLgV02sWZI`6)J^DN)M4bL*!H-Nr)6Ib-}?@5E>*!NS)Zz z84ad)gu0-e)E*&)!ClZW_C=ERRBk~IrgxHhpdHapBt4}-?nxI}(Lf$eAW1y4c=jkR zn2MKznFRB=2T{Rjusnnn%%mr7h}=W!r5pkElDoq_xc%ccpjaaVR~Gq$}KwibT6gv7}LG9NbL`N5gRs{kt)L z=pQLP_J80X&g22fLpYZCBmal~kNqD}PtYg+FUc#IRQShn?0wur|NGP=sEn<{~7D4%CDK+$0_{-dn(X4>5cz8`WyeZ^f%1j`hUT{L*K!l+3^AX zO!fu;)&C>>1^ohl_8-8b`$}HUk>&JHB%hgnV%Cq@0I476C62Qf4Sn(-NRoi-hbGbc zLj%wO(m;}a&?o<)aDQqjthEf4KBAxe`{M_(r$4H-3{%}uX&BS07Of?Lbg)#_qJy>Q zFx((%2sI2%z@?yxe9Z(Xk)?ds6Qw@tbD%FhQ5uf+lKapT*)tp-F2(a2>?Oy`DN-s) zJV`3grFc1kJb_ni0-Q*tN{MiPlHTY5I8jbQlW^H+BHEvx4dt>DIU-xmBFkcTe>s^+ zE}EtGR4GeJ#t&uX$_l43846`eX>tyng$^Lel*UQvq*>@VdIppVXF)^dandkubErH_ zPM5|qPli(DG&o&KqcWI}lP2INFil}PoSGmF=cp7p6;0(Ur;v_7N8(bTk@6&TI69I( z37Wzh&T*6EiDWjiDd3i?I>kz7*Gc&d*%=;Z zj(o#@lJtiC4CxK~efkaiJ^Fq00rg1LhjdNeBl|)C3an230;?0Y_E|gRf=Z-wWHrzH08g5IWMxev!cjS>OkFbq|@8W9a-Q~!d z+{?SHKIC`h+w>GDoi)q z$z*6eT1btD$DxJPIQg;t9Q4@!ivHMMD4)fRLm%5;lD$G-Q*Tv$L;pyk_D|GvRbSAbQ7_P^^e5;uv@ZRf{i=Ljeqwiws7rEIR=Oj9jdWJ7 z9-(x{i0be-+!$&cXJ8D@hAK3H%qHhSdGHu=JCrAn#@S>UXXAAulZ+zE!;g~ZG8>JK zhUakn1b7bF99hrT(oy<|skphUQSv-_Dt(?ji|HJA7L$r_9eZZUU-+k+71WpTS@PHL zFX0u`S9m6FDmsguU&B9ym$SbDtx#FuYn1a##e|3tOuvQCl)ur-!z)KPL{yH@qUG%S zh_8w(53fX8j#qjWvdR&a=oe)zd{M5d@&(*Qxk|((xk$bsUqmm;3ZKVaBCp0V)!11i zUnV<`UXd$BXvjYDBY!3IGyP-uC;CUe`X}lex89W1;L0^Uzzy|H{#fT@hy<)zRSe2 z&4cskQ_$($&J@%x$+$Gsj?0tAKx60=arxvq_Y@eKC1m+%fz?P-&$7f?kFIA{3$4XDt_9bo>Y=qPt|Tt#7^xP%4oMxH2U;6-rMojz z5_g=trGV#;2QyDrZEmAJnFs2DcVp@fyOFtBX7H@br)EfQmbqv?HCL){F)?#P=aS5o zX7Y^9M@^P_s+%j#Bbh19LTB;1nZ+wk(V5b0Y92aEnnN}Vnj5ejC&M=mL2geLk~=)P89p zd-joRLO0{~O9!EY>Yj!2BCfZKxQZ`gx7oH(J}8-Oi{$3E#bnKG)gl&=wjgO?Yi|1) zGNaAuKQU91pVZuJ^JAH92c;iKezyHU`9Uq&b&2qLpD$@U}t2h@ZUZSVYkq?E*m><7+{(u<^bem>}rI6vEQ$&WL5 zT=KCUlZw#e(lO~Ur06m7Bh*1yp~KQSCg(W5NIHZ&f}T_RLFoYB-vjJCM0%8U1oy9+ zZldoaIUxN9{YO8F?uK{MH%b3M|DwCecS|R@g`?;{(q7f=rf-sV;5YH?+`-xd|AX#@ z|CV-A>(Cw2F0viaF3D=yqv|f4)zTT)*|L|Z)v{A+Wod=3lPu&`i-l?hbz$DhvQF~1 zw1Yd7w?hM%`NORs30fyfl=9k?cy$Jlw6yrb4bg^{MwaFz655jPOP4sVrKJVbf*ydj z=GFqx=9ZsvzG!n?3yT>t(=E6*A6 zwP#m|C73LjGu6cshzmu7)$|nKixbo-DbNx`7Gyak1zS#%o#MNBLOLl0Sx&L@^0OgDhuAKKVsiKKUto&Pau5A1$?qA-OY|lFh2L9tb>fxsmgG79IrPHM zpV!b^KMD1>J@r6#M-N~=zdr%7RHW9jtxVv;=4iJ z$gaxWY+d25xT|tk{#14yjUWjn3x&FJRH*91ah+{JxFB0N+7};=_NNEgLf{0rFPcP8 z;7@c(wto0 zJ=D>xHw%!WdU7pQ4OU1n*JVfD0PT;2THud?dC(x3U2Gk?ZwqnuTV*=Mw} zxtyee`h=GIeIP4`KKNabDw!4ifV(JFFu#CalrBhjncS5sn=6^m<1R|)NtFJ{uULw* z6w}Y+F0n33#Zm-G6jzl9t^t?uB_t*EOVBm=8a>bw&O8FWMt)5y|uk`?KFIV{kB!|fk;SXEe1)PN2 z1sqYiE3Rw6DfYJuIBabn&^4eNt}VS?KwGMPKoCh+I0%ho)(ySL*9r;Prc zAQ+9Jg5f~4EgD1;9MByKQ+qHyoTH-9DDntyEfS6(iwL;HBf3CcvPJ}yq8F%AYj{8} zW)Wy9NvXA%vvC3K6_8|6T&XpQb6#vMAur*(Q35Agib)eKCDu5;TbI%6QVD4fk{*^g zODvR##?fP#DM^f)Ct7;45-mxV?j*5jEI!6^g=bMIbw%oKiN;5h#8@tqUE%pwDqWVM zEmz^o)K&O4dYQV-^s;n=x{XF#1~Tc6Mq6%>+>r)a?x=fiNM-CS`c{0A4qSR+(#cs&LnlrZ>2iw9%r+God&K( z2KE`LI;g?yLQ)rXg^lJ~Xf2!vYD8V=?#z_LT~(vG0n5nI^+`NX54^kCi(Lb_mU@|E zxw3kh-5__SZfGpt6Y^B2p5}&dLpAZG*Ejp(eYsvM`~&1`ZiM>*^))wx8o@uJ&CJbl znOyywn+I{_Z*KmH^hdOry2nT5AI(18&i5Si1FEn$y*~F+=^}|Y{6DG=>TNcWevgXq z|IFW^-{H!o?{MXk30EQgkGlS;)E)GR^o;BY^h_FJd9CU*T(adU^C4)mWr!tK-LRNuw1qFS2Y25%^J`ADtgU&)%ujlQ|kbBUcp_nULjF> zlH~^1oE!8jxa+KI)*IFyB)zzT_2Bw+9bZOLM!yc-h40eC1LBzXK<|>@wcg}5ucL7R z_f&V+dXGKP%)_}RMzeatap*m3G)W8b66S8(^K z$7n*paI$zbA>cmA6YKDRC-f`K9-t36_YdHQ)D!f9^%==ibb#dn{t?L|+$;1U`i%aP znUcIz^M}^gtcM)^oa7by3jfkNoae?cYPjXO^#%R~$xCYr*>Ij+!z?M57uFGQ3N->A ziKb8^nWk7$sgdXl>t`m<(HGWKl1$5IYo@v<)sn`}G@kou>`SLI(KJgoNf!D>O2cQ6 zWZ+~p9nGfOm??=(&C@M*Rys%LkjSWvw^=^(+Wbg;mU1k)_*@d30)LUJ_`j!rrKpx(?!hQ%0-8S~4xWtNAWg*3=qkHp2lo_~?@e_hJOKLj5};^Obha^blUf{$c>B)8*=H}H%x&|Ohy*qQE%*5?*nQ78YJI0w`T z=j>k#s--55kOR+nr5ni{(VD2C@41@Hl#oWehYH9Y;RS zlFw~UN5@zus%{)T$C8K7;aZc&ngEYMC&G5iC@K@pvy3LogGO7vStqDE8ds^+DCXa+ z3VpLyZ#BVEz12i^ezktHR%-Q?MCqB9FI+djaJ~GBtIVp@>Wj6Um&Rg{RF?ZzNMa^ zZ>;ag-azlHX#pQqeTPdAc*{HuO%F&57{z2%z$bR5;?e_BNtFKN{~VnKToj8I#svkt zy|!Wp*fl#lxq(>M?!s=x&fUdpT=S{d?p9D#RO~`UMa9NO>=s2uK}F&HXWsnI|9szf z&J4BeF0zj+jpA`@6n!*q9LHGPP--NPfJ5Op^l;R0`ZzcYJ&ZmMj^{e#;80}WPyLd>K;YKSrd*B=gHryr^(kGTD)L8cqXq(5o^9H0zD4N?Zf!MGRd2$C1-KvRFi zeN#i&f1wUgUaBwQVCA{`O?{z0r(UAIGk>loqmt3z$X}|j&|h$`(66b%%4?F(WIss_ ze!>0V%q&7J&j~0oQa>oi+9txEv56K-f7Bo{B)8TN>*-X*|@!V%UR{=iVr#~ z<%7-zvr@U3W|e)>x!`nV5tC_fy5dWcTVAB(Hg|mG>}+P2^U!_e98_+YUCv9A2hOr) z$LA!;i7N7L3{yu5#Ox~s72O%a(;Y%k^=HVvPFEq zFR(7O=9m9NFQooMFNX`MSCOoQg~cWKWhBdR>)=wjioTYak*qcIrPlQvOF4Tr$vU_Wzt&os`^=J5X>ql6 z4So&DT5Bn?(%ko!6ibO~tYy%ps50mZuoP8+X(_QRRRONChBH|W*I3JvR20Ll70sQp zq92=nJR111SB|O({lv;7m0%me56^#$iK;AChvi^pdUcdPM>)=@E>0g=%7Vd{3b}k2r0Fs$wv@3%WaOMeo8RPAj1Yz9;M{1PdL>y2I}H zE<$JK9bp$-u+Wby^fPyQ2)#)9!Kz{dvMR8u*o&mU&_L`@@5rn-d2J@W(S4}?u(sHc zqyg;Dv=;N)VqIJnF#uPEk0gMk4q0t{9Z_Uf7uGek1!v*Rh9q@FD|$3nZA2HvMwC?) zNGxc9Y$UVM!bsj~e?bt(phw{hjuys{OoXGTiD)OT5fsEx__2ahoMiTi!X#k`XN`iR z$cJ;ak?7%YxX>5Zo9c@m1bb71m=41ahl5B42?O|S^oGNP!KNET?}+aNJMr1=gdRu@ zhMk0NW-?IditdV=zWG(qgRl1W}}0!!qve%uY>svqCH7l%6M+o zjy{>Gi)|Nu3eU$}JR@_t+|bQ)v1QN&r_q<8R=}mWr94YBxST$lYz16OpN*OW=kR_k zWV#f+5H95P*~{S~`fS$%)IzujJ=Zl4&cn?^&!+|p^U;gVWWMWv=>Ori!TE48Jq$Hi z*apMcTI^Z^mvFUhuC2JO=*6y;xG=cY?1P06KEok=W>%7};s|qv2t&fcr<7ikr%|3q4+#!7-jQJY@gCfACX<>C8PsC@K^^6+J_kiJpd= ziT;|WIJ5bO-{odcDdQv;W|uq*tHh7np*1$C)wdz!$-1~k7zaOAnGvrLAVCJ z4z-TH25v@grmw`Ur#8cbt^@RNco4VQwFR|>z7n?qZs2pj0lksh0yns}lWc`c&>LNw z;3izMdlN3%y&aeA-st+`{sOn4Ka+iSFJY%bXfkQ_(9iB?g^uI!0q&HFbr;?Z}V(*Z!r?L(JA+K zcYQ-s_0e_UHptww4Q_MS#clP3p|-gj;kLQM=(S1f!n)|Ko(Se!Jv-?Ua2K`P{pk&tX`LUK7?1 zZ3Jt=nxU!gM$`}Z!<|M?bw}~hN4Zk@==Zv!_{gL94E!Lu;4(0lm& zM8I=wM8PPsXl57S1$>(OjO#S|G+CPawCkt4UTB*8r#sqpimYDfPj~&$dZG108^8vk z4N*VczuXN%Pk9>RqdliQC#h(7f_@yHgh%PeJ-ggTQM=p`?&F?4ZlmvV7k2NV3|-h= zh0jfd$tv#h=<<9n{a_VXj_!x5#8HJ^KX+NOvV7jlxr^f}!Lnvrfvf>lfus~!DO6c^ zL$V5dMH-+=xyzs%Qf1JkVMD4kx+E+POOcdz3+y+9CEaB#hGWxG++6}+4Obmi%2LwU zwv@3{C#h%=*r;f!#>}6pXsLkqcL%T^z%8J1G$!V$T z&Pgxsu1r>(uZPj|kX43Nah2SKsKT(aJ1<#fR9<&(l)=2Xd{kkyp>n%(G0DaGdE7a0 z`Cu-y7j_rmHdBDj9HjX<^5J%y=`qi4X8F+tNea@Bc}{!Ic#ct#=t$Dt?xN;2lAa%B zu&BETSIZA0-C0dnlpg8c3(tD?q7ImM{~^m#r2uZ&#n{hWM-+ZWc(MH>iWi!%5{=mpU6(I zlY&Yyb&AWE^G~>a-Je`v$@ZhX+}U7?D;xFImFe=rWwMuzO)qyAbQb!4R1`-RKF67^ z46+PYR@@KH$Obd$87^<8MJR8QbbLBVhU+gfZ@!L2+<&>#U4O{_!vA6V8}}FLw<`x( zG3vLg7(2g6e!z6xZ`XI>7iH`ebLZqbIgQ&NI$bE{{w|~oIo;VUxyZ6}YtKpgi{ux7 z)HMy2E~KG;3BJsX#MflH@Pi{=_%5W9q`@@2uO$atd8izgRKd&QYw<$)TJnD)I1t@RmWywNM6|$fTpnUK?=1u`iK{gBWon4SgA<739v=ld! zLYBhl!nng?Ve-Rbaol0CkmZPY1p1)QkriR1gyo!A!aT2pdH+$AOAv9 zVl*lmeNL>zMioo6cm{WonZYV#m+)uAOStoFo;LLvdbD^79)i(KPm7nu3+!Bim(Zug z7&ALfzaYjkiREe+(U-+IbXDF~9Qq0s11saJS}JoNSB3k!N~p^C8kShG2E8n<8dU?v zinqxwz*w;wNlnXbu_nDNv+A%q_qo;4{!~p^-BO377Oac*w*(CpbjQ{y_ zMng*jvIcC|vDCv^U<0$)v{=y=3qPJgL)T{_q9l}nZUF0&NEY34Pn4M46Ls8u(aM$Y z!TX}fOy*n>-V z!62N(hKiP;igu9JVAr3j!Q-VrE|3ahClCgpYocn>17JOLJ$eAF#ZixESb=UQ-HEEl zSx(b8##!7NPIEVg7T%i1^WOS64XslSsJU%sqSH5`4BE&yvfJ3b3FScRs1=?qs1=@# zrrv;C;aTt5z_H%5k=kr>6WuR#vu6`5OD_Zccs^e?v2!iC-3Y`zrbAR{N6cW z4xBH{53|#Km>G!=^zr5o-l6k*=jO=IHM~iDU^cq9cUF3)mk%46Uf$%HUcT&kdwVg- z^ddri^D=a9?>y))Uf;Yjy|SRPpuNZoqB6bm@JH#gcz^Z!;+4#X!4&#u)K{2H&*J^l z)L*@Rq6^~Qv6Box(BFBzr@zL3hVRV$E!k_Yx45@npU`i;KGNU7x8!f&8?PkX8?WE= zH(u%V*U(TIrvB{po$LLCuf0-9U!#ovhj}VY_ww=0p!@jx(o?;DptGQTe6#p^)3f;U z>G1vLzmIX=2?6*eY~h_Ofr44`eyS@@yWt|iccmzh0Sk1zsNIvQs|k~Z`?1R zbowu!pY#-Hs0>r5qJH}P!KK2VK81ZV=!Jd%qNn=&K<7gj_RZ&8fS%7cKfMV4k53Wm z2h+S{dAUXA_s!0{Fw9HOjw*sG$fN{SkR%sA7b>rBNwR|6o=c#LQDvxtzImADp_lZ{ zZ6xu`t2+}sj#`R1hOMCImcIhp13&C4w+HeSdiw^IzuI?Wfl-uOhx_K1G?Q`55|#Pa2<@ zG(PrJpYQbVq-lIszvEMUzR^iJ>l;L)($GI(DqnqrX?z`@h|hS;c_KcgKS8~Ok8zL1 z7w|6bC45Z3i@FEziTCl(nco!?PzmVA==+Ia-nZtE>UA&2VK;0y{hJS#%LBBzN03V{S z(J$~k;~MUU7*CHkC-Gb}PP~P`2IJ9J>2W;&xGFZ6ZkfD_>nz2SHLPWOx=G#PAbJm!k#tA3Lv^NikvgC|(0jo4==Ss;uqT^6U^}TTt{J^EY)fy3 zYL4n;ZndX3!?&QWh%M+>c&^k;YQ;t~+~25<=(f<971YVTVv?goC zthIDq?ufoFw=wl2+#|UY``6{x(hd2V{7AkIugf>&mQoNqH^_synv=6zLPH1A|K{p} zk^^Nh5a*EWI6E6obW^DbM^oOumCPYoDI-xA`U5kBFfl_2=bB++xcFQ6LK05$g`JDS-`+(RJ|m1yp~72dJ=j<3u+Chw_4_)hptk_5k?-wPk$2iywr18#-* z8MjsZVkTR0E5!H0N^vDj6qbuy#TDXmY9(qLTjA6;k`4F`BwNKD+~&4%+Y3i+5I3QB zP@B*j;SOpe(;ebYY9rhruBR`D8*m%NEvPN#&Q39c%?Q3TBAD!=w!jE+Kgk{#h2ACZ zhP!bA(r#RUv>#`YqRhmC3y^k+HKZDFi|8*|qyWjEs(}*Ok|~j-KE6JQMN;^l7x~_o zQT3&UXoYHsZU7ak0aHa%sRppVRFCct>*E?o0!lDF{7kgT10hj}~oAz3^1w%lHA5983i$l9vy@NLmXkCWS= z63p`+$_a7@vNlZHs~yzVs5rSbb(y@4`nTE~wuXPxJHQs`7W59VBWHDh&DCZ&JH0h* zMt7ht%XaACxGbONqdU(v9qM`c9Qqv2&csQblbvdee3tAKjKQ6gkE4#8$r;osz7j@1 zLUsn8g{S3{lpvi%A0<13KPn$a89a(RK?%}fQyrEMF*(HfN8~-sPryTF7owP79dI?`UQ87c3TYe`i}_L5X( zrzUfMz7uM4R6^H+Rnax1>eLpoI=V7hO?+jkBFbQ8Ts3NoSkY7!r3y?caAqZ`B=c&p zg4wr-oB3Ye%=cYM(o!7Nq|M?QGhI$!FP6fuL#-n#C9Mpy<;9ByvVri~f zN-8a_7MGBeCRxJHD(1_%CtAg^2)!CEL9Y~-QHjDb^nYZl@c)SmQ3n6REu|8Lg{E34 zE?}~NGZ%^fGG7W8m_1Q=#C_=_?)UyBoyD$%b>|H=#5iYZR)$CX3H+Yn}Dx|rt(vLB}4A0TiT#v}U!!*}rHsa8UxbHlACAuCm zdj#W{B#mE~2UH6$Lzy$mg%18|L1oh1I+x?9G1oayIntmVm zl6nn)yR&*;^Y71DJ-^*AN#b2uJ@NE(x3?!N|C;UPG5QU1ZHi74;6mX)A(oB*gaxRD{APRs^uSQ^|AZC7QLeHAzlix!)N-bC@N-BOkSrIr zz%9Zt-mfjfHem^VIb6=UoAF!Fo8eOYf9MscrKm;1V%$==nZ68VBui1tQ1iI{Jo+*? z7d@B07`Kv|3+D*4=^i)-&ZN&4{%20+(q{_u&1Al*XW?e@TmM-?kT~DuEL@P-9@k#{ zAJZW5U!jTE1WpnflLv{7DI=LA1oDcOKzd_bQ;sG$jdJn|84Wf?+fX)oQ>deLdLvOq zX;3HE#b#WyDO5#=>2!J{QNlOkH8(tM5bbCcI?z^8h6+wXDdKUf-K2s$ZoP=RXmv0> zZk5FoR;yT_`~v8J|>oN9^TWg8+$O2$3HtUN=tpQ?9+!3_Fqx1-C zJ+cVv5qf}F!_+nD0lcQD22~M8SZj#8th-=EaVMJ*)}54*R1|mcYONjgow(f`yKq~m za9$g>1@1;~Lv5q)hFj5F>8q`qQCr|v@~zfATyr7_F*-x&)q=p>EW?5W0xh#p%S6IvNYPmA> zvbgdb<#5HQ(!4gW7%Y!2fhs{S4~wIV)APwiQN>_!^5Sv@u2~)yl}nkfI6a?S7@v<< z_!Z_Ti7pCDp$o}HsNAry{1;ha)L-%vrKHKfa7&dU%$LBW$`WNGlZ{F#HW%ZTDvL>s zo?HHpS1bNUUyNJEu@pCtTEuH3=fP#@|DpazUk2x+=hLStb5Zl)eDe9qa;~`y&Q%tg zZa#gQG7CSAS6I&CSb&}j7oz`FW>cYXmNJKI7HSUv!NCP4=iqW^vzcdyIrxtb7GY9E zTgav_E{EnzV)RhON6V)9(0y?^Idb4KRU=JRGkGOxPP`Y17d8WZuS%&IOk`6O?E$c6`R9@%$i~4N3KTOh5znT12|DZmrDKG^$ zMfcYJz(1y*jhn4!)x5PS`fuaUJ-`%ovOZg%qEDt=s5#6h>(f!w(X+{2x*I(c$N%A5 zpG2jolSpQe{g2e(Ox%3VoP(ZEHeb)f`<#o)qs_(rPtT3Z!^fLT%dO30I$xiw&tsCC zG%rbBdTvx9bRoJgE+170&eKiFSGnGKVOaf=mJz>m|y#gqzGK7 zDiz5p@%>&wt|)I&Dx)h>mC^pNBIVDtqFjaYhg+1rOg6(UN)?g-d9M;+?o^Sh zvRRdTqpIvxqXJ-6xh6>s7-p@CuTD}OR~J@;HR*Mj8A%;8uO`>ysK(i~Nb176_&V}l z?k)FFd#$zP+W6Web>v90z1-jKu|`^J%lpug)IRhf7)c#s8fo269fGxGnMo~JTi#D{ z*ec71&7J+$C^n;bOo-yq#NdAG0qQV}vK}OhLLIc8L>WAYJIUkIQ68aApibgXp-;k7 z=)>q!)@bUm^|aYfTXp#~E*gIZeb}n-ekgQJK0~H4)#Yer7tj~z$JjkfU4X}^7#PFj z;aQSc)Ft#q=n!Mb&QY;2#(JJC26f(g6=m=|?h1RC&{xQ=;;(U>AF~ z!JAPn#LLz=d>qLYYjd&|JO^kdHW%Zpf1{gIf1}&N=2Tmz&Bc~fTNr1(&*UQ|_V9l~D|{Q0Hn=XZHS9p|%*;qSn|W)oD@SY2 z?nu%FcENWRSM#iCCAC`UD0aekBIzuyB3sRKu$96pp_8}0c` zC$S%sj)2aQZG!8Btt6Y_HuQR71Kfby0oTK=^l)ZI z5^i$6u#00oXKyFj0e9fTg$TCp@w_>LBn%&h3KuT%Y&t@?2rs$9gq>uU@H?3vhL>DB z=@*$@rVb02**QeA9fsi!3rA5$&7I4xIG)4D@pD5QKVKNU?7Bi76|SJKlEvY#x?Z6S zUd6rQ=b2mlbn_DR3jYTE3cf)f74Fj?kUZe0r3d_MW$=wFT6n`OT6o|(#ZO@m@TY|1 zD1)cSkMlEI96z;PMjgkWKp%%E&`04>;Rx^Z5&ALQNsbe^eP+6yeu(6V5QU1OpM?9- z`{~DUr>XsLyResZAKZ`LP2bLE+2{w&`F{Ft;Q)RwH1sZE548#I79z=ZqauZY;sKM9 zxIy9`<^$m%aiBPs$yo6qn*(rz!~rBm-z42*6aAo+~Zv5xQo68@1d_*Z&0!D zy7ea6b<|C3EBUU;o48hTcU*V*9@AFx4Qp$;HH@{kByT0Rq*|kTFmEl#TK|?ip}UiJ zf^C@njc$!y1I>L^;FYUZ!G-984B0KehIfpO8J}tNGaa#2PF=LqDOOp}FjyYOq$doPpOd_?4wK)QJI}2z*nGil?FD-;sWK&ti#bm zsp06+a40pJ=}>V5H5z`f{$TPRez1-p86*C%jxl#eh#_o-@Vy?w-biW;3=zkXjD-h< z5d0{TQMgHPBpgSd$jnG4n)yg^GRH{H9#1j}PQp(V&vIXMnmQ|t7boB+kW3WMke%iJ z?X++Pp5b4-&fsH&31STWjBwFRV(1gZi{$4}m(VkCGsH`{@o2-(#LcE=@)kq!p(HcJ zIsD7rO#TILHY!y72R(=S2R#+ep{BC$!H2@BY|atqQd8l-)I2zke^Z=GGM$a-^m(}X z)O0vcT+DOe3B3gZit6qm~IFQ+B=7u3?I!qQ*pGSpw_BCrfqglQS6EL8*+mI~2x!NRyAQZZC9 zbEmB2$EF|uzU#-N990bZNmWQHz^dqSQh8V&w?QtC+aOoL?UJjS$u8Umxtz37-Uy3H z>*ZbY26;WT5w)AGz0_`!Fnk!vE_t84m%az?BiVu8N9{m|!+lgZ(|z)ODjbH%+v)3J z7%p6nKt-54`{gJ$qxkprC?*G}2pAwbWQ}S4?B`#KLqF&T4LJfVJ ztQi}v)Z1Ds^SoB(Z%bN`TwofjU7#+a?l8ZgT}NF<-_|;^(OJE&-NfBzX0S8a1N=?x z0qzc)H%xt#eqFl;FTm?eZ)gv-yX-uG575`Ncr&{}zpLG2a*wOsM?cgO&|P?23Ft>u zJnV$;qITjpI-U8=PDfNHd{6bB)|1{A*OlrC?`bc|?!tRoSCU}$r4~$Y%d8vh#&4Lq zp}SMTu$$VOq!&z(yWx9~^uYCp-C=Kff7Aeu?wrwI?MK#+?cQo1+yL0m?7`|F^Z<1r z#{g6JWik*oSnaF6l>6ac$_es7{0Q}pHkip9Z3OPEHi#>~fp4{e%!Y8Cf$)v?jrkCg z5cQiDVopNTVd(F;p-hIcIRrHnH5?9CN0AIwM^d9;AF3}kO8p=k{k=RA^&b6Reg$92 zFXh+x5AcKhR(?VH9=^xFVD?IWgL(_!%J1Mi`6KyrCeQguUdoSguiU*$xrD|QHh-O zl#QoyFJ70@lj+}Ao_NjWPWAv*)lN;-ST&_{8HNDUsNA4VO8hv;XdlcqjOKf_;UJ4p%F zlT1%aCpb>x_ON+a+Cv$MU~R--{cObF?W}F8NU}!koRA`=+Sa;ck@&hy>%d5Fw4J^lhT+1c2vmf*vtNp0Gm5W36kj`o`=tX^1dNgnl0~5oO7)dvCJ*B3 zb89%ptwLAoa~zNwaNDS_G~hVEdG+WGsR*gA+3PBGl)AWvuqHY}+R0nr$z}k)t`b1i zVY8-E16_k&57&sQ0qao$6u9*@BB_m1(N?IT8}YLGMx++BNG6~}<*=%n6mjQNjr_2B zj_j~%QI4obU~T0P$zk;nbp&;ut&7xol4yK1$vO2B-)ZOhj=PA8R?na>QD@Mn;U(%c z(@W}Q>NJd2Ptgy-XxwQv1{GuOTvp@QjN@J*j>#1&2F9tkNUp(n^cD3gyozhCU&S@o zZ{a%Y@n+H)*Id7%w$NL^7`2(+S#Pd4qgtT4u+^RFLedW3j-<2RL+?&+r+0uos1E4% zum{y1-4-^3?MT||J@u~a_kcZ2-3`~3`_FE;_IfAwI?=o8eaZTAAKM?@Qx8VJ;jd)8 zqTZ-o^*;Enq()C7c||3ueep@?B=s$SVdE9-qklAAlKN2%*84H<0}b6%??rWj!Fq49 zU{r7YiLIZ>-nb{Wcer=9k7_@3Fa4?QDeR;_CVygkOg%*n;cAadXNHS6%st+bLI8-0058})r=s{$I^!L1nZ>jg{0Nh~x9qv6J#as2AI*{og zeSkiY$ve^yBp=M_JM|MgpZL2W$?!9k0^hOm6@JAJ)W70Bp;OQkaTEEC##i3TM6NfH z-*BX;W8g%tKL(D`$Kl-6IP_TPrp7WIjUNNYl8n_o{I0|eN9z+zH3M@7erdduz&+!u`+zKg>2rJnlb7%w z`T=~v{GRPD?k?$lbfWDMMH3IZ>wL& zw?VZbyKZZvw??lvkEu~4GD#FWN0}euKJ+NZ zUi2{-g+8Jlq-rY%(fi1b;`gbMD1-ZOk?J1Y9=7+Q52^<^4synJvPgA1bpW-W`2o^e zN(6cjc?1k2tHtI4ls~iDia%vMg80KQX4RDn=l~eN<4aX`{9$!^1-d^w)smmTEWC_iNzdYiflZc;bG zjm$Tox516{4XCXg+t}Tpt|wbgwiT|Y@5FCGZJ|ftc2Qek1hpIP=A#eLcjE%|{kQ;q zms&%w0k@znWEMS&9e+K5)StviMKYNZN$TV4lUQ_xucF9TQ%2R-8=@7eA-Vxns0K_G zU8Nep`g%ROKdg^ypbIF$+);InO^w@{#zdzCsOgPK>@Wze>o#b^McZt+Xj^046hLbLW;Vp3Qi^86qdknXwRQAzv~#qj+M{~2)sN~;(hc8@q?e<=qaVGSqX+Cy z^+0!r{i*KguCOiaM$+9ez|n{O{;E`!Xb|Dru%05ZX4(r#(6`a zp$9kyQNeJaV=&o3)L_RO=P;9lac`Voa9^C?ZNt!m9B-X(VX)&h`5WhJ>Md$CS9|SD zMkS-akiT`lLyvKccDzHsqJkZ-NG3YQI7X2g9OIbi7|EHV(Id%5I==EAex|b0m^-xoJl=i?(+f+RZ(@eHP@&AzgV^06k|3&{x5{jC}BYUXHX}lg{I%)>f zJobO}447$~#?CC#S>$=_vv3Pgvv@Vc4Aflu0`j~}=Astr+0l7;yV>Ca_7;&XfCbpd zYcF75M3&v2ldXa{gL!e;?KxmUDhKEK;%i7LhG-bQ742Lyd>y9TQL!9h2ZBT#C~}lH#0T>TH1?N4CIF_EVhW9p9Ya;3UUaXSTo; z=T~P6K3kv<^RLcKRHoA>Fk9eP((iaLCg0Ji)FekLNtQsbz?`H8y#liY=HN^pbPlo{ zfwOs^|D|R-d~rDgXW?e^@&4fsEWs^t6tORL6v7v=7vlDmn_FED)Dp*EB>8ZKU;%nz zR1sLj{ufCh)DlNYbYZF_dLwQzT;eEyzKI*i(Z-UGv^Jxs%t zozxy!RcpYc3aqN_B#BfSXp!d5P9=iP2wrCt!QL(^5=JQdNcO@2IRd|%WH;_0+y(d1 z4=^*517^NUImEGxv-gu6ga`2llm@)Ms28{YvDzW%mr1wzQ(3jzL++F29bsgTq zJ*4g{56};l1en0@y6@p1!^dQuv|SGu@m?3(5hTYi-S> zh4wf4Z(N-IH+h`i78j?t(5~oLpaXrMtR)-mwEKEH^SpNE*RwUrWu|fZW$Fs*0rSgx zJSrZ2U+>CBcP(DOgL}lxV0W@a{2e_J_khjYroKau*KfhgFrMjc{jvU#okW<3zNOzY zv)lBCdIFOKuJ#E1Sbu`W1&5CFp(V9dSLWJ}^Ol zOZE^Z=sijLYH#(v^p4DeVKCnV!RTI8Ul^?QC+P>DD8cyNB)xHiVK3O9J{UEGqZelk z)&`LcV!OXK05=2BG442biP}Wj2EA422)`AIt}!LbUhj5Bhs5Ngu(^8108Xh91InBsB&Oz>S4td3z!F zQE(hC1T{{Z1V_Sg^hv1693wezk~WcSJbf~pNFR$&Rwh#8xYAhdlQI_lNg0TG2j3}g zl{ctQ@Gbof>OIFNB^mvi>@^?fTje?KJ$!AZkH{WUkGL0m2wzdJnZAMv=tNYaIZafa zp`YOr;8Tugysqb!@{;}%^^CJ#vhh;s$E$bxQ2pfR$_xApl9x(fvVOdVr;prMexdY7 z_oe!yhrqtn5cWT_{Q?eQv#&gW8UlM#1K~hktuugRsQg(ON*{5?+!8g`{ z_`xKDaiicMIGjF`nURb%^Fi`xjzOF~f@BmNg&!$@<`p}isL$3BatJ(3l!G9nSZlpaD3zJUnGCvAN+5ti&yMSrd;ALYdSui zR+1U5SXO+CsxybTS*qu7MSCFigH}Tq+b-Z3>BWi`b3cZP1g#GdaJw*Zo^enx8W+PJ8^Z?2s5dJ ztEg_3E2)*>8o7d6N3Ez$&AgQA^w^RT~PbN@9f?+QR>#N}yEruqNUT zYbx#>50gf6j&@kHs7JITu(o=Lzrv#h_x$oy%Grn{m9lC637zDh9@Bw@9wRc=Q$R zD!htoZo7(WZo7qRZo8tju(g0O=+0!FZSm|hvo$AeMq;F0$eP*Oq1vH4+q&bsz(-uU zovi~|51hd+xOTSoum{y1-4-^3?MT|&dZId+y*<4vXZ3(R$h&d1?&xl0-E4`x_9lT! z)VkT8!vyNN*3~wMSvUBc&G|IM9ueI)yU`lwB`rJyI;Ceer5zLE^J zO{5RCePlj{e4=fPZ5(}!Z7h8VekdGc_9Sf>dZ=v}M-tZ_V;jxZ5NN0g=wW=u2J?9w zOdo<9&M^$vmm0)Zp)VYc?vLtE9}fGW`_YHsMo|4=S6d&_zOWxUnBJAIrO^kP^M3ST z+W>qYXy~4{UQ{O-Z0k)HjOuNBVjp0#H|~i&372Fa$n=T5m+h(jDePo>O#a0Fn0ku( z$o#SW4eAX#iTtVk8TuXW89I^bWJ@G@OZJ7-;5*!B&ish}O!nD6lJ{x^HPZG8_r)H9 z8_CBw!WIHU_oaG%hI|AR|| zzqw8tOtb&QrP+Vb)9k7APtZ{5rcObn+JE6vV5)tpGo3!w`42tC{vAC9J=HnI>84NN zKNjqEj=}%3kDVIt{+ZJ+?n5eazR*=r2iLpk6Y41)tgPl}~l9c``5 zv>Cmv?K-{0ncj3&GZoc6o2I7tacK0l1#Fl)J~vJ;0|fWP{-j3@)MfOH6{M3b1u>_s1gQRpMuL8`WT5WSD=D1M(7i88nkcYvy`Mw%*8+rwlJXYSRuGd}?L zn7y`Ii$~#FJYsGq4dXbV)l#dPX$88!8iucqs!kTBRadK_tKllBRZvx7HS%g|IM)o* z!nG=@A4xcgA3K$qSKv8BWscJ5D$oyINi9#Uk;|jYkX6Q)QA?o=mcf;y*2twyRZ1<% zq$FpSRtqsN2TPiLjl7y?L92PjQi!xLM>%!1yu?fw(3i`F@yk%l$O@~=#`fF8vQZhwMN69C;SX z;2hk1D!VkxRI}uNnf%L{vt0?LK9GI&Ow1)W8jDo=%JRu5M)beh%8&jW6{2lo%hRNMs0 z#ZMm-;6La|s7dsH;6(I9x(7Fnng~b8<4GsLiRdx(5&Ya@^eN_iB7KZJ89yExdbB*2 z8VbkApwlWRv4?-;}Y;Q{XoxMaiO0mb0i+*!+t7rhFwa`cU}`Kbw7_f5m<0 z_=fvHededX4<_H!KPVr`zEdC3@0BE&g#Jz?;gjKaDwQJ%_Z4U8WaS4x;r=j_R3(ig zm1F|RM1BgMz|X;H_@5*{>1n78bO!w^?iZB-CulRs#={BPFOp1UhL%bH$}AnG^U< zQ8Q$3H7h2w?ZqfuGCh- z{OWRTtF}U0POU_3V=J86MzR6Ffn=+;gZrs%++T&GHfWpBJE%?Qjc^CGk?9U?C$$l7 z(ALwJ!wtBN+7{Fnb7!X(!Da;arV&hbQCnbywx47Vj6(0ycEjDc0NZX{fNej{Vv8~p z3ogL6ORHh40k>%WHj6F5=11)ezkPDpUie zicO^&!1}g&bbnYM*T5#A1an8VX>4jdnrTdQN`RWJF^L@pp>>-L+Hlc!UN8Y0jrg|Bo-e_a>ag=$LXs)Uf)2)+ApDRQkT#d z;Z5oy)0_5N)I}I;zd%0)V{sSlai}+I!h=WI*0NA+f_AJvo)dz3%VPr#5!<^%o4Tr-`Jr*~b=Z@nzhB?Qh$H5`a5Yr8#kH$}c6L|JH zf#;tF$2%udA#j3o64?aQBxhQn$K)hjT41)u9%r`3p-i(i_MxW*PIUeV`~gFpnSnly zvo+2P^kR}3n5D5-<5c$30#gGs>8XKf>}3XKFiC}m%G%h_KLUTEy&Gpmr=!x*8JzVC zmCDTMf5>JBWo>M54t+|HcjG^SQ-WsG(*u7qpAz(kp3e5~!0GJF4w@b`lRiCY27NMq z3Y>1{)5s@JHCfV7{XyVIW20NLkTud^X{1Y^l zt4(D;v&qz;EKD<-WN8{2HFO+ZaB6E|uy@1xPjlDVM=x`HNADS?yFkq?l$-XmRLFyf}0QUO=9N7UKobWT=Qu0V>gKnJ0%%foG8l zLZ?B~;39Y`RKQO1>2wX1vt@0BS5wZStEOy-PYW%Sc{)Cg(}kff%0_Hll=W~IWnJ8f zTn%-RduKW)r8CJ{*+AxM%IfS3L#xx&r>hQ+=e5T3YPD#bIbRDc4{ty!53j&$DeJ)V z;PUW!;idSz@cDQ#xxTWPsl&E}t|WW`TExB_Ey0VRVyKKwad;hNZCBf$W0B%iO*5;Ds(l_nrL;UBQrkK5w@eNLAF!=2&*Ei9qC8d zchdJT2ev=L9F1IQ7!;_=SWSvV& zj?N@yMlWES8J&eEN6!gQiB3VMg_~(Iqs`G{aC3A9ol0 zDjcsGp-PG#1&xA7)0?0qc9KV{;#I>rA!!000Y#(3@lnxgnWI%|*hDgLW;i+wH>hH9 z6*&Sm$bAf*N)>lwu^iV{b2JpLa);C zYC6upjnJvyv3(oyE<&r)(5X-@olX@Bh00A7q~ddwJeV#D)u558aAqhPr5ZvP1r1RJ zL6Qz31*rl_f!q@ehpWQ4!nwnPE(i@G2dYBYd#L;&e>e~hQ+dJ)k|(TWhNAwe0J;Ye zA+jn+uOdP@^C03C-K&V#q<75gi2F1TBHr_^Ui0qWLC>I9^v}@u@N?)n{vQ1g{ttgc z`oR2$K8tvY-$$R3{)>1Cy~N*;KB6Canjd+dl75Kz#Jog5Mtr9G2z`zaqJGHwnIuHz zk@BLdL`s^E3sIjU#zl=oUqVw zE;NLl;d*FY+&RkyuTO4(Hpps7Q-`ijR(z&QRy9&Rv<_Ykst?6w#%I>&oExv^hS!Ih zu&s|a7n;%4Lz@dt=$mFW6Pn`n1XsFxe8!TupmRl=k(vl@j5W#)Zc67$ZYs2q&Y(?6 zZG=vwPTbQ1b`#oixp7Bpx;8>y+GkZKx$^FsKy9IR^lj1Va4o17ULCCs z*T$=nYB06YwpnfPW@uYd?W~B*HcV~K)X1ud*5ql{`=mq(=H-nX#l;p1!2R@nN(HTq80gGW9gEr~%h!#^BN9VW=LDh7uqhn`l&`6B!aG zWUAq#87DHLGqsQw*3oOAXm*kx%Q%{Gm=ls7$B#hA(8IVk^OVfTGETu7(gDsKMi1c! zG7jQ<$Vbova=)K$PsV=I{)_;##78ntGN;h}{0BDy=9BQQ3{B=Pypm==XDZowv-353 zoBi=h{wBV!*#q`Qy>Jh+C(eJ=Oz*?^(eRI|nU(3D<^d#cbTB>u@`0A6uT1yhTp+I& zi2FbawmxWO#y+||Xk~_izOQ*-MqhkS#$LKTe6EsjquYz_Bc06H$?QV+X8c087y2b* zDzk&cy|h@E7XI&D>@MF4t2)| zqTS$b_yE!%rW@MT+y(E5b|rN)&ra{cbmPn*vped}({$%~N;=5AI(-n^)#>i$<>|}N z)#=OAe}*JoPXBZIQqoeMzN9PgpJ`WdtxlhvUO}@IU4&PpFT_j8Kcf|R3A73-XH$Yo zv_$4r>GR;lq>}Vfs1z=T=R+mzBws-HF?WfqpYcz*i|Ib)e#A@D%Vb`FmvXu+{ax;7 zHt%vj;O}zZOx&l3iX6>l^rMu0x&!Iz9axoqgUnItNZT@v*+;R)MO(cJvN;RpDw@ zCu>zs6s9}mO;0aOuaZ~GTFvT6D`_=rEo)Wobb_l&C#}^yWDR?pi`W zva56AWA+a=b!hEq?C?5J6}Spso8-(?L4Ra_r~8Qh$abc2uzt^Wz-zN}L0x#7E<8_3 zovn2l2h_z{kIn_EXT6@&Sk`)^>p9m**K(S$y_RzWzn)XqdNb!H>R`Q0b1mm`&Q<(! z&K3L&`8s+TKLg!_F0na-O7y2i;+r{V;Tx7eEoXAhL+9a3^yi>6>?FTwxna4+2}%FJ zuR}M{Yxwz`zh%B@`5Qh*y3Cnt=vDl(y?k_m}9-ST2z+S^hLheBE-3`5V1t zxncU#bPN8+axUi|={0FCappX`YwT{Au9^P8&s%Q7m*H#ZRs6E)3Vxk@1HECoNpp$r zl1ZC(#dMBz4ZVb)gRVo-Y1*{wocoJc`wPDg-C}zkJ#RTjcLqIgxkZ24bk1@bKVvyd zcZSbZ@{4q5(Q~9*mcN*P(6g2cbZ4OpmVY5hFOdGVJS08jo{R8bmj7}6#T~cl{zd;K zKeU|SW8JpggYLl(>HlYW1fMjWFg=1FGykCXEN4w8O~+{^J!v{?I>wzR;A7}9(<#y| z=9HQy+5bec2g(6jjI)HC=o@_F>M+@GR5mU@bGDs^az#OG75 zFjvu2sbMKYQ?9^=Q^V2@<0olOapoku5O!fHAt~Yb$y6mA1c#tQ@Sv1nJd_-UhNUQJ z0_g%%PA3JY_>n@;K->=sg-#@$P738*1g{o>he9g0q3Frf6LiPWlc_3t@01h#Vi&17 zPIrvYRr0-b$I%m{E2)Q=!|3tUeRRj6eW`mON%xWVr2bC&oqP7ehf*uK4spj0x;^L~ z^6&gg67Q59sk@=w@bC1MsrzAmaY@R4_yBVl-JR;2;+Zm-R#MLt-xPQ5^nl$__Y^OZ zit$S6O&XlyPx9j3sh|OnJN*FEA07k^!u`>K@Ic&;6u=Bb2c-1Jd!qwL15@@S^=Afh zCLl$DDtMX-o~NV%DQA-c*q%*Nq?}ATfu2n|nRFbI^d$Z9q+_IGJbg(|;m2vuaGg!s zlXRHo7xoOA@QBp*i)eP^ar3yc9JU+ z1NawZf@BTE{UHU)f2N&yFlmU)io_xC0g`uOARB&70PdaWgS(UcQE$2TqH|C5B6%eq zPLS9?F_;;GdLH;XQCAx)0xzuovG? zK7bxbI7st5-S7OeqP+<_NR{aC_zq}4{ir9u#O7#%JL;Ku zg#OnAkHlYb_r$?;?tHG2_oN$)dXRz>`!fU3!HK=-21C6Pdq9%*BK1h@PU_A*J>mX| zy}9~xM`yYoXb*Dt#I1a+&WYWiZg6+{-idwSZ3$Zw`oMje0cf|x-x9VZY@wBOTf%P% zo4IooiO5kG*&9UX)Zh#!deCJ#mj;JqOqs6U(Ds6=~=68psWfp;1A7<H9*x*-5_JxXZYM6O#Up?}T=vJMez-`()m2+z0n1{mPjg=x_M1#_jlK@=o+u zx&MW3v+)mK)OY|psPq~2(Eyff4X+8X<7Y#+`I;?)M>eV~DC z`=Hy5Tj@5V+l&M0JH~A_cEmRux6p0obCrB0-4=8!X|HiTvjN>=Tt&A9T4h`TNxF)( z!nmBYoO@Qn>y4|q)^o=ax)taO@^WK4KGqWBGH4mRoPM=&4ctDiUECUYEwce#X6zK# zKCUgTr0wH6#kJwic5oZCOwwv7g7h_-9V@%)P}w#+68V6wZ^-kt>9L8 zXHr+D71}bc1@4BnB(;iL5!-@k#hI>g-Oz44&2BtTNxR1V7TcBWZ?WCtw#9Bme~aA~ zy9JVT8~v8p&7{pdeMx`8x6p3q`Ym=v>;{_6=q7wa>_&Vwc?-G$Ukz=C*0WiSO4P$3 z@%Gp?a92YQ!|K>|&^mZM{aR=>JIT8lx*9rjLelPd7pNQB8DAIMOXhBdUhrB{N6vIc zJK-G-KjCf2UC@ql-+``;p#!OdVS`@cE{2{=FSLVUt$u^PC*0DoHnt_+o~8q5+Ou2D zZmoW`em&maunt}UuSQqlEA%VzHRQGETKzhj<#fyS9d#@9OGvBH<@ge44b)E8QMZP3 zn|QTN_!?*<+cju=Lp!=QXnVs(`i1&-hJ|<=LtDBwe6Er=p=*n_BlR@2U|OPW4X$); zAy-3VNK#i)V?!fSBkpMew=lSIwcw6=bdAx**ck%;U_@`eo=cp5`*1r=&mYJL!IA+ex=f-(J@a z?WAk3YYR!*p1!TF4XF)JU(ybETiTzvI_VngTGF&ZTjMQtt#CJTTeKza2K@xJVB>~L zG*u(U+2|5{CNzgj(B$ztd7PX{n#bg6 z<_Wo)9J*{Ymz1YThtlQ73T5-zNuEY$MRU+;noK4OwQ5XsR>-6o2}x=qjnt%)Qn@D$ z&eV+N%H)m&x{>Hea;jz&`vgrAlmw^3qcvtYg=B^^m@G6&lT5ct7$s{8X{C_PnN`9{ zx|KpHX&zH5ET>r|%;&w8@~-DWE1;G1E719H8B~VPM;F11@R_6q%p!D!uoYj9t{^QE z7DJ2inWS>GoF`fiS1^mwa^Yv1CFnA^LRg3{BvsE}NUEOyGpTxhg-|2E2D%uoMprF= z8D|{xtJ6BtNUc4cW4;sQ1Xs(iLbgY%;!gPvbl=3PPR=g*3pNUOxwwhiJ2Xp^`~T+3zy{bunjBQ+bujm&2B ztawKD&0-)F2(O}DEuJEsMbCOwQgHrY1G7AC6_4`r0L zI`q!@p|&7W9ZtFAUloJcxp3z;zBab;XL?n4i*E@0FoaXjQZn#P!Lxzcle3E zbiSPS7YC7oP+!^mi~Zmrk^fW+mDr1oJJb_Wz`kf8O;53h*d6VM_P~2V{o#I)JI!G3 zbw|64-AIEV53v*69qrDU!L+N?-IyM128%1zgW;9xK_pMkd-Cx-XqT!z#3gD^c&U1c zdNFw=x&&Vg{mivey$W7LSAqYGF2X&zYYsGr-iue`U#%49sJ(erZ_x+!;eCXl-lzf( zfkL^wITa#m>9o90g*b#wD5}M^qKLuoA@gnFLxuv zWO6c1JUW8yuVQ=KFHA?YqwObKd)u$#Zt*8_C);ke$#5rIXPcGjgm$v!*xra%S#xZ; zylX4@jhJhD#e07vzGYsaubFq~JD$p08k6u&%n{y`as&Z>E9MJtY4hP+AqUMDas?|S zX)b*>=W^g|S@Q*vD_<}PqiL+Dm7Fc)acZ=X1!ck6LNPfHoq=ZwW8tZAFvVh^T`@WZ9|zfl0%1C796p7aOezp2;RV7(d>ks#T#dvNpozjv z&0Ng{bfQoU&D0cY=E%(~xCkyrXX8bhpYa*wndnT-ESjZsOEt^U>7-(GDLx&V0WD)Q zgL7rPei=RkDq%YVogj>-8;4HdGqK_0g$44yOtU~^6D)FLp|kPMEj%9!o+V`BnY0$3 zWG1g)yW|VGU^vnklS;)@W9-lbW^gYLcXDG;3)#p{toq+?&DOV^E3B_-OvL zB;U-|45u+B)GQ>@W}utt(}X0NB+>{p4Nb(8ArqVijSv#(5;&bG#F3KG1ldhODx55& za3#Yp#Z>Nk$=BE`akT9vUxVrBXj{5%w9Sl~Z5ilu@uipn4}_$9GN8WjNM0d@87cH5 z5481T`rEqWlJ>U^KnL(0lER5};klTOcPH-u!Xck%)xi?eV)T4qnWf8)B;xItM&GE3KeIoL-}jlY?>nVbab}5NL>g?T0~#W%z-5;R8M0wjr*sor;v)# zX|m5z&*ZPFGdVehb_Q25X`$R!;EQNxs%Js7@EK?+T#C;?=W^E!bfJ19sRCU{Dpi+3 zW%v|Q3H=&!2|SM}L)WM`(QHJ^*sdn8QLiIasF#r{_^bXhnzeLm$ZOT<+D&k}cAdwFPo2R~OJMP)|jt@~1Hsp2!rSQ`LDi)6jf)qFO)&QZ70X&BJrpNllKd6V>Cm zCUSQsO)i>C&QXh;GVrw|s$==e64hg&9JXW8Sh5we%3G^C8_p)hirMO6eEnvtN77j6 zEKoLgS>&8d%2a2Ovee0Frg{>TrA{Gbs%@l9KDLc!G+h>Xv^t4h3Yr2Za(^mD88TQ&{1MMZ6bXHmI zHO)v)jOIIfG(Qza!)8XUHp63S#-Q1-S7I(Aq^IJ)cq|l3KZ?yrn+YFjOT*J_$3#iJ za8Jg|=4tc5-BC}QyKOM;ZrdvkM)!!4?-h^p&ZfY}nJI7qI)N$RDNR6gQHdtg<%;8= zaqt8<9~vi)C*_JFDVOIi(%9(6k!|91cH`0Ua2fYchRe`0aRKQ#vp_5)P3N+SMeuZV zE^Qe+7d^qL1<*Y71TzmVK~FFx@Eo)dol8?9o)jxNe*!%r^HEZzctku(DiKRLSBh7P z2k8!q$IwbP`{Bc+O7Q?xNtXN&-9hM(_=w$M^svnTBRzs1i+9BTL3bF5ACex^dkP1b zLo^TQ9-{v;p~Ans)-pEx(E~KW{0Z(Cmy_*6HcE7liZa<&ZN~RS3nJnotd<9er zuY`UUm(nfe6_<(Sq!s8=*-ORwywmxdET^sDT0xpAw}to|n)%{vXf|Gf&Vpy*h2jio zCOV6Lmbj2ts6c0kgVa)*g%^s&M&SR4_pZi zMZ<7WjFx$*IvN&80zVg`+43(?b4BwLD1?(rR4F%VbtFHRBIRDCj^I*}jB*=?52uM# zM?q0|1R4X!;1Q^X*NH%l>I_mGY9z&|4Uj=@Oi+e;49SFMa3&3k<7aCcGg?mRY|>ye zKb_4u|Js6j6goGaJP^9>OjZ4dqWJls{8R zWBG-$=uSFJytE8AvTUv|N8Fy4!^flM&ki|LK_=BqN0W(YJ8?t>131Jyyy5VW^? z09|irfVz%$psWK(wY7uj>u77!)zJp2U9>Lf5VaFc9jz1N0y%SPA>U)pG&RUIXliR0 z@txOF#$DDPLRYRH!Z%H4nl3_T zrYq#ZsmJ_8@}TKQ?gzOGclo*KA>2Xliv5HEba%-E*!D;7iUaUF?CvrBg?s!YyvNVN zenMaR&S*cn{=y(=5Y2tIN}54}5>^UB&>=#w5CkdFU_1;O1S_Gw!az8T8AubzK9HZh z!Gael3=Ndq5V}|*~o`v{LTy`VlqFJ>S*koVjf@5}UL(;4l>x!%HKO;1L;`?2N`e|Fv2 zbmmV^^7op@nr>)MQdi-trYnECUuiyQ-lJbNA2jbENk7nkWWK=?z0}&zkttWK7A?ENm~k+>dMeET{&9LzF|xmUBj4ix`r{Ox<)aL z&`#QhF%9VI#WW<>gB!*y;Czv;K}-=oi#w+?Md&PMGCG-eUw}?WC*cLq6t3x1E9o&isj9V*ccHUXpL4 z5$ndYE0us=Sp^q zDK|8S%MDFsUO-x4aOQlu!7Zl3u)t7ED#gnUrA&pPjAj8`hE8W!jMm~~l^JHRDI!T) zOe!#%jDKykYYch3X zrWmHND@5zk)QxfBY1Blg8NTbKR5#|k-VV2?x93m89{#3xq5Y<}kNKc?p!>l8(Q8lp zk>;cRgZ@4A4gG+>V<$E5ff+=g}&8`G$!2}y-7YJ>dc%p^W9+PTpD9S z&ALRI4D^=9OirRnB8@=P&_sL$l+2aJ9V2uJbP1eJ)WwmK(FD1@$#-a+E}j&xyQxXg zT_@kvT<81w7T@)MLh-skXik%^qZjcT&`tEF<`0_dP`vJM_y+SgJe(AV#_Mj7|KiLI zbhz$>oc`9FU~6Q5n)ZywsEdY&qbEpzX^t}|(9@)|=s7;-Y3Ll+Rrs9d0v^Ht7P$bQ zMQd_(ryL+L}oSqt7Z$l9^C?OhgY&$$v?YU1#i)8g-b~*G`~SB$dWIn zTL~@J%wt!Imdad0n$ACAn#Z+RQx4BVf72|H(_(x&xdN@=pHWrtPpKp=*DPd~pcR@$ zbQRDdO*h>#Sr?JI>AI4->Xx(Zs_TJw(=F8W)b&J{Xu8mJ)pgNz$GhkTo4;F zydS6g>$Y%atA30A7krC;Kfal~4c#L5m2{i+m844jL7BJdx3llB+fH+UZaX}P*BZpD z?WU>Z{BE?b;UKB6VF12czX$FE_cin}^vC-c{PBL|1Nwf<9=3jTeg*~Fn|)u@5AO~2 zg96y}Gwjj-&a3^-`F@7q^#j@VGYmBB*6*U*jP9oUUB3_7CpW)AoB13i-%Ix!x(nT| z-@y#h?SOaE{YKuYKMYB_lXO^rfpmd;_QE^#N4R!y$054I`a{eS=py?=`qR*9_yT-H ze-u7TItnXwN4Q6+JFP!MH^gvJ*0ZEw!#>UoF$B{E8{A0)8Fxb<%@D&N-jzG=ZXgr{ z1=9zigW$o?V0;kj1N-2;Ngj+38f1vZ1JNLokHHt>mw0o=!{CW}@-#hpo|1YPycl29 z)8I|#33(fK#|FsiP1+s1i?l0N!FE^d9(;GKmtk-0UewpHlV(@!&e-4aow3L99pv5U zPJ9Qn7dpmf2P)A?nfJ!-gHMol#2$nW!pGnP&<=KzAExt&J1MI-?iqK2&NI#fKNx#R z=EL|wP9KUL9OunuaGV!DI4%@-CwroU_oikoUE7>1F&*7EO zLFfXTgT|n^Kwd47^9PNAaYxu5G#)W3;sWU0Q3YLK+z@Dp-1tK7e2$U_)A^zSs85_9 zb2Qcu_NVhD`^OE1B=si^jf*A4a!)Yq7sszoK##_T(+!OaXH?KI_Th0_NDIfps<;SP zPvRFU#NCWlanH?IZJdtos&SaCdeRl+5YAjRUZJ~UJVrXg95Y^`xoSMhyE?|ZI|5yX zuFzjbkHW{HhZ415N!B%NT+pqGue@k{7s(i!7f=qz4II*Fd-X`bYHN_xV0iaCp( zG@hnA37s}7;xEX0nxu#iAO*xnt*u!_(0r0J__gmy;i&e z^~e37U?`G}A1aYr=HU1ta5Tv;UI{7TNH`4gV<-7gx)c24CrMA^CljLSP9~hdmGR*+ z55<+74v#<1nG*@e6HejB6RzXO$S2X`a(|8PSi&{ZwS=28pG-KzK0N*m%?-LUa0IUv z!K+=QxyJd6XjtM+Qdr_p{9?joI1~;`3{4EjLlX_Sl6)gU$y{a|Ll=`c3=Lr)hQ{C_ zkP?bzqfESzTH`4zge=mqpl z!Z{`){v3Rs?kxFy!k>_&=ShDi{EzfM?zsY=OSr{#jywLK`!nGW<`(pb{T~VUpnLHD z;9CiQ!4F7(!AbGAxF;$8Uc!C4_{2xDJ|GQGyvmvQ#Nl+q6C+6~CNeROCO$EOcNNLI zQ$a>(IK2^#fTN%&JOb6hIy{6F&FD~L;wU^0HIj6RdPt9lkkqJ}r>W+7N*bN0Vf3gv zQA?+Ww22p!VrA8mE+$q)Yhuq<`>pkP6z+RYyHKm z4Wmim{4n%JY7*&2>Ywc99+a$?F&#>n;|-NV#J=r#5?(1-Xn z=qB_(HaAm^DRI179OrMQ#--e1do%S`>adhpx=3^wU0g~$6fZY=D3Z@n^5JxPG#1sR z#4vv)#lQwSJ=u_w0!eBhrKDI$7Va4i$E2ik#c)S5T}nzalM0PxpPXWb%&-McO&JM~ zA&rDzCZ%%E%OrD32HmsNv9gXKJxz`0%(K*|bWcmC%W5~l$ z10Dknhtk-@pc19aJUlHP9z}{tOM;T%G&m88VJCSC-EC94toQIcrcrcvOt%A3@(LFXjgPzIF1L$u)N6DYkJwX45 z-ZwpDMy5T4|D}6C{@3&xlJsBFYts+X5AJyiKQz7JddMBG=w6#%F>jzMqn^Q^q0jIS z_>Ji;{FU?;&QE*8J^5*$O<(A?SgMSY^ebtzUTIhb<fno$DmVe4xkcsvPyg`=Q!Nn+R1t#=OlCzK1F{5I>1iy4%YV8ww#dkC%hfh z0d0$)%;_$32Wxlu1gQ;Y+M*rtHr4@nYjQiZjokOAYi;dM>Tew+b31Ei_TAC`)`4`L z;U3l#IX&=RH2pc>3w@9~i1Z-$e|RrzANW4}AoqUmzxe&!|L}+8f!2piAGXivp5<;y z|1b9*`v>SV{2ufW+K|2_{b6n&Yj0kyH|HPb_O?D^`!M%WZZB(3y4Gkfy581)P(Qip z0=4FIl)Nup7qlnZ+1i!qfp)QWqw4~7vkrzN?M51G4I_ndPhYsJ)q|@mcev9HMhBC_ ztV;Io)*vVd4ud_cp70QoC+x-aK!dEobbsV3W#tzoT5sm|ZslI5 z`6Kr+@9Gxs?h$kYx=DWneGLBz{fR$D@4|QSd!#4KUGzro9sD|agLF6dxAZ&AUCuno zeTqKiX+Gt7O8O*sd-@Z$+tZ)sZcN{RZcpEsz8;cvBmMgHb)uI-gZBPF# zeJ#y8bQ8WdeILGtydGVPuYtBgd)cf(CE73Z*7R*~C239iPG~2*7v2G_VJG=+x*_KM zvWDRy=1RH{^ALPz`YxGw<2yOMD?Qj8#wOStiU*r@cn~=R4VHT?U65Hz(wbvr4lyg) z?@CwF=;@U39$sq?uNFz8<$NT1HY0{~Hsb;wX^w`^z-KegWSqy(WZc5fk@eHf_48$HebEcz#Y8afC4#pYZ_v^k1bi{kvbj41O(w&yY~W<;7J=z`Elx+t>-(#TCX z6vXE!xtcBB*%#e8uZsv4G=10zaLcic2GplBO$^1b6jDD1RhpehuA2J=XJ~B=+f6n~IJ_B{g za-{nPXYpEDcoiB4&R0R}2u`Frf(u?H%O0)?*AZ$8wegxlE!>&xnB~mav#mi_Lnw=? zB{;HYL#m0^;am-2UQ}6>vtXZP$E(?K-dV8As>{|{s4G;-`jKhJ$Nj-au1o(OdM`KM zp$~knlE0<ApixGao^cJ|#WMd_#J}J#XP>nUA@iamWAY9-)uO zZ!+Jp|6k@y=q3CHew_IPeocA;Pi3;umzl5V?1gu-z9!iT?>S>H*wNVu4y3w_gYYTO zPOul8cvlX*ySmW#JO@sF%KOg7iM9$&72FB>LHmQ`NUFyC$g9To8{H@LJLyN>!l-Y| zk32_CROe)Mo@RBPr=-<{il}PB!l;U<>cae}d1yt{{HPL0()siyQFBRidHRx;;w7{T zxGJI+M$Mv`i_XDkMa{;ikxS57_%vt%G?UFVR3hg{i5El_!nGouBd0|bK}GOP`svU# zc9PeQtQA><6Oz`!YeKcr8hBAu1DR__Hh`y-oH$bht&TfIR>K|0HBl$IccgQObR;=O zW~wBv8R^0_Kpi8^s!Wv&+%R%_R71QfjU#8OvP)-YR;8=P;8i0t;1oC=9f_x?Qt{Db zGip|4&?M6(t45)Tq;xbHPlQH8CN`rvXXVwb_-H7L?P#=WWFtBUv}$A)eU7S8WDf2S zS(na%&sFlqbal~2B$vo~OhdG8WPQ52Q2ofJkfilVO(We%Zrsxtt{2&is~&eWp=*jZ zCA&pV=3_O9bcI}DH~MCg&EYAk$*SgX3#K9J8d;>8qMAf2=@eCws(?Eu!v$!8YAh*> z8LP@CO;TA%V|jO3(0HhTemrV{v!QIhW1=_6yfS%CY_(Jk>bcx(Ardt@kn6x;&jZ)&};cJ);=;H8} z$~MY1@W$}O=#BUyn#G)1#I8BJmdfVJ*7&0ERY5|!`IWTh1Q4v0!g}_^h@|Q(l+kd46h6Sm1`Y$Y@z!F{e`?O zycZv9OZZl3E4+>V*YNFdZ)Gp#cKA1DBf2$wfU>u;C#|Htl>?MLxU(1B1MQ(~Pio7w zS9T%wRJJ3v=iRl1xA={kaJMIpt+n|$g3^H=R##{=b|nlt?8Ummyk00MZv8@ z7U9kz&FGx@TqSQq*9>hLr8m4d+uoiHxKE^)to!p z(se*PklTl>;$yW9X$Q4~+tYUp`3YVfyejx7xD(R~Z5Og3cy;hfT1i(2ZwOw&ovYv# z=!)QSQW;Yoyp*&ucmb)LcUJ~2hgQ%pM;E{qPzAmKT>>w`i%5%^CFt_tW%yEbIcZ67 zlb~hH63#3RE=G%an#DX%Nf!q<4qD8%aZquvOOP|#ILIZa4kW1yeVw4%q}n`vN$cWu zXzOz|4r&rqgQhlG3$GDW6L%ulL2KYnP<^O68z)qvnF@*P2Q`3;6f+f0LDisYaCLfD z$cdfg#flIaNiW1nBG=(#T=rnwaVk%xho{mnD`^j_#ipiwO ziW&hDPgl%hO3=v)r+^v(v*39O*Pwa$B$~;bnZ&LtJEwrE0oCzIifXVOTorY|?E>s^ zN3s*@6i|((3SE_eDSq|=-~H{_eD|+H``y1PC#nP#_)YP1bY-p~c0+MttsX|dsD(9Y3 zc#dKr*BtIBqpLtG$mI%GK317x0ki-vr(dX81iJ;e1}uUXGxN{|ik1Ox0ZnKnbqi=2 z(3m@2;l^m=fZC**OznXBq$UBiNVR!)HK9gOWBNvDEw~O;2d{{3NX#P~=yaZIRy(|4DuYXp!F}zlo5f zljtYKZ}qE=hM%C1a^}D@cHiZl@pRy@wM~)M*iXRjr83|^mFo+_=k@Zzh+?u=@VzZ z`h4>Ff`9V)jKAmPH}n(!$>$^8dsL!v-V%TFvFA0NeC>Td@~>5o^S1YO@~!4O!>=0t zf#xG;K5#mho#378osWOu*Bc1l*>EnJgJ*kN@jSAC3f>~kSh}&^pFFMJS)^QaES?4B zLGL|3dFFAhfLANP^B^1BJoJN4b>9N-_vi;78~r5j>b{fk_dX83)qUUd8B1P+&H=4X zviGgZR6`wn9qAk(N8dV-q>iLIzO_lUxu*tP)z_J;DtFYRtAo}d*Y=&k$ExXD3#tXz zrg!#rfoFQp@OFXgGS$#pz9rr>y^Cojo#|cTUBsO;;3BlhdjiSEOz@scD)t^vn!vlW zLDQik`swI+cp@|rACFFfr{Gzn$;=dVx_2Qy6`f9+;{C(3keR}n$=(*!!qc?yJSCm% z{oQji+wYzh?+>2u(eIugJl{c*exQHn`IhvSr!VP8{2lFQuJ4{dJYUhgMc?4BJYVC_ z$?wot_;ctp^peeURHAGTi9dUOfwMfaJ)V2MfL_2a>8p6XK)=Xt@yPNR!wE^p;+c>I z9fQB%Kbw%);vv9QyabQYoEd{=;G;dvxQU#Jj+Xm$I+I5_Dc$3hyBU4%{>pt6nod88 zJj&yR`*ZjIm>1{^_xEhy%lzK`HP?Ih4>b97`5qrgCRobjNG6XQCWwOT<4+pOzbP`kKVeeI!oda4#Q{*v~&v25gQ$40}P4y^biad(Z zVz{nXF{uP9_Lz&7c+A2}=L9j zN$ZhndDTW6F}1n3CbEy^ zYzw`odDozu=Iu;3l_WLuNmEgYTsS$^dp0!RyOcB=ozM5(EV`+D56@yseZO{>B7^f4K46?qp447j5frZK(45(mm5uEXn}W2xCzq|UPW5v-3o5PH05gP)ryl% zWNziv+^Zwg%BzD+&1jpmZR*vGrUl%LX#uxEn=x(JHuGxDv_U&~wa43{9Y}4w7J0O1 zq%*C(8lVmM92@YbENN@6g&wWhF7#;NRm#^u19B-}5A$U$rJu)?aV_*%#MjR}Xcn^o zUEr}8TI5j&qG zS9q*MS9+|07J00KR-o;@R*_bEY@lxkx92^!<6XA(>V>yMH?Uphv6}5_`L5NRZAZJ> zqn58Le`TnNN;HqJi<-U-AXi^EQUlbLzoyiutI1ziByU95z_%gZfZWix1-TL02yV_j zZg6wD=Dv&h%2~)P_HIgQ;k$^mn6H+F-iy#h-b=lkai+O%Q{QIn7qMGHvjkt{y@Kr` z@(P+2_)=&k+=URu1MhXZxMhXZxO^OIOBR3JGfPkZZiU0+=*Uvv7A|N2ZpHV=OoKiE9G-2d0 znuq{RfEtfNH8kO{h6#t2sD@Fp)dXl6B^nkGiu4qYPbVFezJx~mnn+K!^iie~d3Vpy$#Z6Qda9#00aYJ#Pxv99# z_5pkwy{))Qdd%E~@1T#FJ8b_U-$w7y+)+GH{EI&!-fqeaC#|d=@(k`jzIZ;-lg<{!x(? z^i57*72jw+Dn2pa6rW}PO!Gxb?O`=Ps|`-Sy~{lf;Kx`z!w^%E&285AZB3nv*6HV_WP9gqyf z9gs+I2PFfz;s87-IV}knr>B{mmYl(zqs~bF$K(J!AUP;GMt&N744#*q!~F@*<4>T^ zQzy{J;d$yf)AN!G)Ny!B@(2BY@EGp6lMk@GiF; zD~%^J-~=Y&Vx@7=K*gbBU?hwsiIb+G^kR>r^FLT8O{UVMDco8rI)yAndQWm!a)-Jn zNs&H=cc{mbWT}-|3VclRSaM%-gMMFPl|B*OW62Ye`;rInf#fN5U-FQ80v|}8kvxUz zVK1p?B#&?pm_3rblDtH}q6Gbj>^aFR&O^y-^egxp{RI75@`idMDG_^#WR$c7_XhtK z{X~+<&zDKJN#By$n2wUZVOEANqd#Z&9aRROQ}5w>$tP5qrIHGiz*5{-_R7&;$tv)boDW>_nWO?%;J-@7gk^^nP-DVAOTOU0kbISlCL6=| z#TSH)4*Mc0M31Hl(M51HRm603*jTCvevx<%F5(tE2Y-=_C7BrJIe4PDGd64-o8$N< z`El%xrzXO2VZ|hq;J1O}@DoTT;HJUxu$VrTnUG8s^YLNRIpeu{GRZVJ4L>!^bI`Ye z?v&@C$zfCQQ%I(UdGKBGo_u4w`ydbK!8fvd;JpS-3GbB5Xa=)o=rPW!NgX3Kuwd6)te_dR&{q8^ojy zE^zS5uqK0>zy)CegWC)a92`J3LA7P81J#x!7#~d1W^hNoi@h!1pWXo#Jh(NwBh?z+ z3U;JgG3_|G6V(a^4{k{hfWf#{gF{iF;!dZ*o!RWn_pf(m(uE3zod@?K=>~hFyA19M zyW)0AyW)0Ad*KdBdyC0I+)ini!MmipVCdi-(u2~S(jC+;)bDH^p?)XXhu=qXP# zIZhpb$E1IfoP=l5$E7FW30!!@30!!@pEzyASuxS#!Xu7LBly4LTrG{z@*k?CR0L`` zTO+99Br3d$L>m#!cd-xW8`VdkR1s=)G^IulgVEG5rqK~G)G(-uP|~GPg&P*3L21OD zn21<5WBJbYSSE3l2F6AtlO(_tbX-I{jK^J-#pABZl5tmMaS_*K*PsUdknEu>g`F$1 ztE5**gszGB7ky23opVhl=sQfVqy9oYLO+Bl5!dmTWEbJT@DlwWlqTXL{D=KZvKw4` z9bS}Oz+FMzl$}IhgcsSlL3$Z~nSK-ZA9WdC!QFB9>F;>)x-+KNU{T%f|_6qks--iAQ{ap4EzC?d7e?@=JZ~hYfQf8G~;RC*7 z{d<&^$I#4UYNlIonH(!Fo%)VPI~``CN1{g3Ex0V0#rLmgk{HR2^h_vZS$ykyx;zb+ z0MqeCxe1!c)1Xmaq8LSg155b+^f!tUMVdT=SaZT7FV?2CqgBrH;vl%FoD- zko*acan)(&XJkilCuOH_C;2-(MRJ1d4E}`dFtelZsHhL&4sqoXk`uDy=s$3K>4)KA zk^>}%& z){m?D%llCS>#&{!_%Vb3t*D^a6>H-Xgo8 zxQe=p{!eiie+#B^%Xi>i^6N})EAEiq=9PIzaSwG1-ePhaeUF`M=zG*P^c8pkUM0Dv zxX;c#ctvqjbl2z?6qoV0NgtqYps&E2xciES)J=FB_ZU9mK5wI*aD=~>CyHnEx70KA zQ}~v8ihc~=Qt$ZddkY^cUWo1~{WbnQe6J{@-YGs%FW`H{XOc4b1^q!$3QKX>%2Hgm z@-uF{@{5>^$7L%&C~}lJ@P)#m9Iwn)I;b4f1hyto6O_fuNx0F}c&4LaF}e^{NH2zC z&|~Pua586%avVtky#O_as|rLv7Uxjr;&PQ^Mds5#@|6eqBzf?oDxdC9y70L$k0ej| zNmZu$sQRRGDQzU5NNnslnLGGdog6FL1#RdYrJZ`Au%k1{ocK)T_b7pxxKY###rLB6 zUTI-s;YzDAjrk~O5&H|pa~|{OJTebNmCo$BA`PZ1A1EG?rQ;tleF)Q)kLc;jhYBON zkghax9`ekm(MM7@6$Y^zl&MMsE|t2W7>Q0&>R~EOqK|}$=tO!NE`v&hX_N_?_~|l8 zQcziF3$&p#l;2S)(4;hznNVis6IGT-Gwy@RM*c+gf$WLuJLOZ=Q<$QBO!7qan0ksT zW$P1FO7aH(hU9~)oJYTuXWN)-e6!bItV}4JeKOlLAenh1xAEED(K8Fv`k5u>I zJ=`7m2;QYXM5QS2z=tHa$!@cKS9JyV5Z)GhiZWSw1%H+EP?fAqz^A|z@tIA4S4rcQ zIx;=f^X$j6lK|uCI(h;-@ya+<9NAS>obnpCe^qr&6|0OP)4^D>IHd-qA-Tfrx=N>v z#$QMOOKFt zqm=(D{z3nPi&Flh7@@qZ_#1ZtUdH{SIEy+PeYv6?S$BCmst>9c z^LFyisLtqa=sxoH=&rc-=wD=gxaJpGXL%R0or+!}yW$Qidb6`raggkw;&UYHs zlAVg9{3gHi8y!LILmedF2alqEL;XfS3iqS;(+}bPp!UOkioNt5a35~J;sELZ{SfXL zJjP>x41JtB0FNpDBsmGsqK_+1z!SJ|u4N-=XpC$=YUgQ@3A-@POs{X=Vr~X1; zg4d}_OfTRs!b>EVR5$o*y$&y^E{pCG{R;jjyvh5-P4s`%Wq4C{pX4@tfc{T)3*N%% z)wghZ^?jUP{humPod_?Zza#rj{eYbWwVpJAL`cnK3F>rII{G`c6>o+wx#jPnm3$-< zi~4&~3-6iVt20q%Xl7zTXR>2NXHrIV8ccxcBt~@>JDD&|Z4#Z4o}f;_TS#rF40IYa z;j+}DC=;~c959>vw4ky%!uxo(+DR{@oah`_Nadg%u#g(d=RzTLsB=Y^LodLOgX7di z)L8X+Di@AZPbMjXQ_$np6W|2gn5YT3F;SCoqobyX$!Oe|sPXE;s6v>l&W;)#H6|*X zDnxz9RtEK5lqo6$S3r$sS^!OGGs;XiK`YuyH$e->8WpK2h{~tuqpVz&&qjXKFioT; zJIaM}p#_F%hG_;+VH#JI1P-7i>^PaZpoB!C8K~(`AE$(~q4T=GpwLIh;JS z6ZX^Okc_2r)nmzX$#U?yQPWTYb8*v!L_JMZ)1sy_naY)UQRA3Thf~F#t9J32yLe=5 zq8iW4r5*>zN7>YNvhjF3(@}7Il$}04YLt2cw=h0x0%sJ@{5X0MWl~QR`^2clQ4?{C zsSI@ydQ#LPxEM~N7r`m$DfDr;VrmK;M@@#4`RR&DLNt@3`e>%&`tWE>ChMRnChdT3 zujvCjXxeMqpaixj@6BExbZ?OzG;KK@G$EQ$k~XjnzPF|?TLY=SB;D}cP`x#S$oldu z3`BL)^gs`ydZ4?*K~#69gEWJw?yx__e_0R1+389a3cKOEYkI+64@(H1>KGw%I_)kmL%=at*H>$PSc#UBW#IotqFobxMr|5Y)%hGg`iubnrWJn zHD$ZG#vd09n~FU|(+VA|smBRMFN|u%RSS7`glBdk&t5&!hMF1ZMNu=T#ZmLwSqK|4 znL%I3PD4#2&HSiF^m?fJ+-5yEKWZM?3^+fkKDnP}UX&l*pIHO)*-RRs>r#GjcGLor zdC-sPEatPL=Hg~V&BV>%zGre4M`fsIN6ld}n{*CIhT6cpnSod7%qaf#H|SK{%&1iL ztf&-qGA;q8;8NAGs92I&QL*YdQ3>iKd;;&wLLb2-2`0ltbv$)h6_1W4OTtI1qfi2) zadFgTRg|cr)H)_Qt{d=@B4Rh&5W->S1>dXj!YrNW;_ohMVN z&#TU%&*4t0{zRRH=g7~ghH;xJ^)U6Hs$(R>NRF{{hWSZ81fI5Iagg&m?hyES6 z4?ReEoNERt52y~3^;iEP@^_pJrp;L8mjI`(qFCSHyO%rGz=AvQjmv3 zHCl#}(bX^l9YI&(BB=-%u9njK!EjuJT8@&_l{gL5@Yrk6T1pNz>KGCoj74kJ!{Kn; z(x~CMrBN}s^}HU0WIb*@uc}zIR=q508I-Hnk*tqe$7^m5TtHufUkcaJm!OuR)-qWF z1?8s^^s=bsXkT94OQKezR-@OFuR<+hCiLnWUril01lFZjK~;x!=&Pe@h`PF_26`3l zTVx$(Rq$2ORp6?q%1FW0&{Rfxa|?CIy`i_J7OnwR3tba7plUMp!h37H&<&`@{5>{+ zUK$_K)uj9517HB}69MQz$_EB$T97n_EzyCRCa?+axV8!IxV8oExHeF8LVE)Gp#LKK zOWTs2W7^}S$4G?qZ?a?BbEtFZzqJ42|Aw8p<$vJ65r+~=v(kHbqjqHKBk`Vx$qd?)ZP`{E&2oeQ}|T-f_kETM%{%^ zwQopXz!LN`?Q{4XXVE>!S#)o3W?hMxm~j@}Gi|0W6W-ODbY`7JXQDDuR<;T$t8T2W z5ceHrX8Ii*i~b(q=Oz@;M6%t z>@c{%K{x4a_)*YKV%N1Q2r39JXjNd-WstNY$zUgoxrv{Zf3<&de4dR-h!pdJ@b-POj4Do&TqB%Ldbx>)A%FkS3-wRd>T@9@Z66IBAUJK9*7pu48M zL6(5O!Sp&z(A}UX=&oy%xP=5=66ZS4d@Mbgx}+T@_F=lAx?#AX)J1JFTBTFKp-@Fn zh9l4;=&`sIY6Og>Qei4TT?$DIY9u-xW}s7a1}X-o>e9$kQE57_{E;HlaGv=YJB}a)XQ(@2q|diXzTDt)yoe>wR5zBp^iX$ zD0xqkKvWY)U9>;f*5&F@(l%tFusgaZY(uY`-wWLXC$OiZ7fD~(gX-&W&-dl(x=_%y z>F)fVLhr}4Hrj`Z(fN@1k@~`ZxQ6)kkn@ukT2Io;selu)DT@@exxpfL<5I#m6~~^u0Kw$ zQ{v>@H~%FNyr_-T4PX*UI)LP&_D|l;{^V7v)cvVFgFb^(>dt7@y3^WIxMT1%?u_;b z>IjKicSJitcT9T{e~kBKq5sb0Bs>LAX#b#mG=HEEk)6aJ(jG(!JcK(+`DhM`>Y(-j zlLK7;yLLD8qws*(eKfWCWU0+(!EVw$oTJ*>8h0`M7U|Ax58ji+lWdRHQ{#d5z$`{TVz#DHO@z_aD$&ot7+H#Q}a6fB5v$IkAGuhADUvR%tzi2m*Y}D@MH~EF%=vUNs)X(JG;a>C( z)DHSy_!Igk`fl7l>L<8eyN$j9ZpZzk-G$mk-;LW3_w(5ANB>6cg8Q|HNe;jx=-;&e zga5qDN_03`INLHuf1DhKi)kOS{thWl>gWS|g5Q=)tf*l#+CDbY!OkB()2!3%$Q%5WYRG6RM+qFs`G$i@g(x)Xt7wYH!c1 zD?8n|&-SQp9N~Suo1?k-uHJ^;%@G8fP(kRfunE>PORm_A$B~oV}&e7Q=_HdG6a2Q@?*RW-v zH1-j6ja@;hm@421v=XHhr%L-!^ibRg$k)xoeKv(%PM4#Ga+RD7xqXjqpDo-z1T_RL z@K@U&+ivPt+YtM2a5wcEJ2GZN;BO?q+4kGE()ZhB_AR3O&9;S|2k1PV!&)x?muph2JB|!_SkG(gO-dx$&-W}H;_7=OuKG5FPF_6tpu&ZML zvw=+e+Xs*gLJyz@p`~yDC52M^V0H$;!RRjN!S)_h7kg*1ceb}jb%9;%9Z5Rd+u7T| z_OP9})6U)&-4@rKc~7b>>`wK9z4+;Rk}R?HvTwBY#%<)$=tcIUttaV^=uNhb@JHJw z+Xj@tP2}s@+lXE-@<-bboF8pVY|BYDzzz8Iw#{tqr#6$U!LLEBw{0Wa%(Ji`wZ^s% zy^UIjUJJKTYng7dZKu}4t<+DP?Y5p-Yiz5@mcuppwYK1_?NraK)o`t?2P!zLGwhKS zLhnHyL=u7u&02+C&9$qzx(8`XvL3J*ItaF;ud=m3H^&JK%4$K<8aAg|XDzp_-NqhFwYP_`6ABkG38sg#v&gp0 z7GhsUUw~T5Z7zTz_SR&nY1EpPSVld$v()@iQWO#4c(320o4^f5Z50La&#pLvJZ3w ziIX6%?e7@Cq(AS=LYFWZ00-ja4h5xz0~}#w15jZO9ZFyrE{am31*LNgXEL1YB@PuX z3Jw>$(h=?GkRQ#aid6XO(8eiI~Y$M?}+6V zM!>fD38IU4B(M|0yak_vA)NN;wlKjFLJ~^#(uI<@Aq&B`$?t>`*ap`rzYnet+wIYz z`JFkTT+xxNQ+`LPGioIF(lNgmsu#KsdFT8t=nTh5M;CNYU1zT8sq2+*c4Rn=qyjS> zW=A?#jzp)!bVnR6mWp%eaYn~5TpYhqEGi9^PM!vbp*1KCeHhfDwR9CuO=)48!$8-= zG@RDqYd26@cGQkY7|CNFiEe3Elee@-I-1&tlQrepk0fmdo7tP%o1j|4ru0B&LJ|lA zd1VBlTiRQ2TH1Z>jYtAv0KE~f$N;-Pz6oqZ_eZrrHDuxs1vSMc=oa>R=t;b~{p}4< z4bTnA>!bXc3BA}h$yUUMz{&K9sA5<|Z(yG$>SEh8bbVX_`9#h%+f?*KSl^y2x@opt z+c<8ahCxvH_IPgKdUaRo8_BT2UQ>X((9n=aq4GPNBfZZu zJ*y_JW|kjph4+K4>CIs)^4cT~aIIi7dP9^S^kdQh-H@GH=!R4+v^R8zHA!k^HDaeB z^v*I_1y_sip5=vafNP90TD@^btI67!q|n-kjY4Y!W&!L3a-R)QfgIs|JTR-N_^#fP z9+=exhEh$?0Wg$m!)HM#4B#t+1=oZgLT^jnHme=gCTpIx4e2~<+pL+^c4RZHbI|jw zv*0Z2OzRBPJUEj+otcnK7dg*5mov{g+B%kG2AqMPZk^56MryWo0e!Z$n3~SC7%o6h zK}`{-Q>>HGlW_~+Le6CCG?Gd5NvO$OHA(bSabv9$a1*RkMNXvG$e(JRNKyoAgg93}SA);w!KRvw#;VL(}$>z9M^_n`JG@ErAB>1CrOd z52zB<8@Al?oz^!b&+*SmUgcKix#hpft$>wz&vRdrRpz~+KhJ#uEAw8`EAlGyzELl7 zzvWe+s^nM6|CU$N^*r|((+BW5lNY(A&To08&YG@gs2923u9~h=ryKNkeWH7lzjKy4 zKRLZ!<<7_GXI%T3tG(I#;4CNq;4ER|9sEFlockXA7ANqX^F7H&_?G(Ue31Kys~`QKf z^((jkCHHG?yfuz22F8;mSk)*s$vbB6b7QQr`1j}vN^PykjkPLC;-H$VzGEJ1RpDZ+ z>9`o~JDropt1;H9V-icMBQaV>TD`JH($i69w3(ic`VQ@hbBA78-;qRFJ+q?3Nfg(* zXL&Gj=Y3h|Uo)eu9?%n4FRL0=9eQL{WPZ)`KviUZK?$tLtd>RWPvc}lni_R_UeP)4eH1h&J1xIs6p~t}YnWITuR4yECvy+WR*=;tI zKs(N6%fe-`JqqozIXEt^u#nlH4WDHz$$Xz_v1Ot%(OKjUTQ>S_W=Uo?I)}=InYPl* zx0!E91-{KJ&3w(3CFs}ib>=%<4SwQxnU8UAGC$(p@hH{E`k48G^fmbl_!0dI^@{!x zzC^#Im*GB9FX4;K=k&+$1@2{LnDsgJlATYP<*=N`z8oEG{X`yZEzi_iKa**B_RC3! z!{Jt~RfCF#T6!ciA&G>MyfUKD(bf^1Xls~tC`lw#(TDPiR9U5X4IE0BqDG(;Or%gy zYEh4{hNFk!q*fV9hE|{>P*P?>my@~YsYO=sci@pXjLaj?oi5`a{T8&GE@OL$wKCT| z&x13>>X}!W>yhV~7h&y7?n%Xui*yfW8~tKIU-_{(}vmEk|a_teMS%G?^v-12IW zy~lsxuk}5wk$2uHxR1H#o$u(SZ=yoY|^yaVqzZ#!?H z9>Cl5Td4b-2hQ{8|H%Gh`?m8E?mqlaOz)Cia$dz4+#_`C2U{VgmbzfSTHR|ZSy zk5G5vT_z9FkJ!0}eneeEUxAn4Rg!DY$Lu_USDZIRca46@c^UtZ^a<()`U<>>d+dBl z-GmQu&*2O1^C9X5M|dB9;d~{&tAC)saK41))JybpSWbQBv!EP4cfJwbOZq4L7x=|l zNqu&HrQX0V&T6hovTCmCt}plsk_z0t+zQ;i+-j~0=iS`uE+M&#yO;abc|Z3)eB-=9 zaxeD=bsu$|t!vcv+;h3taCfM?Oz*&R=!>X}^mFhM`V##dJkPn5dprA1?rou?E^*au zHg4xW%f6j`Bli~SmZ0JD>}T0espr|Za$mux)GK!WV|EL^B6*elBKr>gMfQKWuSNGN z`!zc^ncv`Ny~#Q4`VV*7^*Z||$vM~k+&9j1uA8}MT&LkV*BRF-l)y8tbFM$BH_lU{ zI^{aafWAvTKtF_csfSGOX5XV8!aLM` z&b{n&ma^7J;X z+@>e|+w~XOMfkU?Cb>_}UoIc|x9plZRmd+fslr|@$_HL@{X_B>^kI6P`6bt7+(p+l z+(qvD8t1C(hVzo^29ryqH%M+c|K;86UtXoxT>m=%LH~oh=K9BZ-F4adH|`R=jQhuV z3U!L)y6cqlhU=2^FZ?CmmxX?u$zSkqc;9)BIuHMHo*?@Rb;5ZJCGZ69G<6;=sAJAQ znEb)@$DIdpr{N!BKkxk0StIXHHV=}X;hZL^N>YQ*sj7Smoxz_aIZHo-x`@6=ugtBI zSCvx*cZT!=w{Qkl$@@)o7oESc^Np>_T+h63sOs!i$*a!%8;KX6jeV_NOsbK6%k|2u zmRA=guo~04dA>MbwyUGP^87enT;WYtH_w~$L+#~Wyz^?KYNLJ0{qp?L`<#27{^&kd zKd$Lxt(|wkxzG74sla{C1I|5Mxfi_$?s4wNU7+?mf583f{2jNS-{=BrCu$G*PWU_e zXVlO1-{CIwF8V>-A!--g>D)p80q(@@a_&a$rXR!|hKG6V52KGzyWwHyNs>R{DfAKN zQFs*h&~+5|&~*~`fY*bNJitBRRdot|#QDhe2<~>?Cwbty&ui`m{D*!M{}A4%-$Xq^ z-D7eS3d$!((2rdIp&Rq+zUjJ+x{ba^ehYPzna~4r8s{`*Ltrg>BUAuvNWblBD(Zlo zrs!L^I^>NwO>+X#jo>X;Gto88X_nJ~TWCn$05-^}j;lgdN7sN=s2WV`;~T&lBsFrX z^7mK;*3VgP5nK)Wx9qAp)yS*y&QXnQyQM1Wc1yLKEfzPjEtak5?UoCbqX&R^hh6O=9{Z*(%F=+}){qpf;e_!BucQ$p*_#c6PvZmJqYxHqcjD*5ZG{?Lq~c*WrTAA?95q zeat)A=wtqg+0X3!!hQaP`h_FBkN;xXBfhKuM*qdK8y=!|qko2nsKa~~9D+YvdYJ{c zoBlif2>B7qQR=WoVLnW%Fdwmmn~#!(n}?tk<_H*J4mV3t3K&iw%uGlIi&U8Theet7 zGWR8sLMeW*S;kf@B{M7OGV>s6Fw;R$iI$)w;#6V|Lx>!(UAONP1GeU_WygvVN#8=1wSqU2t8gUT8seGIwOskt;i!+v2*y zj$-d+?r#3s(w)s+@MlXmX5E=~HFqQFf$m22K=*;&s6Mcdxi>rAU~hB?y0^I<6=H5J z_SWVWs1O)p4kl@B4l*}`Entwi6J&0VZjNiqygk(%wxv424*YcON!FV>n0J~w;&$?A zbRgSfYEQZcz00%{?lJ8$?LZ0KMg9|eJJCOh++*6!*<)I7+C;Jg?!fWy1;f+myAuOEnNKr6!d2LCVo$$H)FaPy^dNBH=9);Cd zD%5)PI@EI0GO}fCuP`mbt%A$MzTUJ3y~?zjvkKkRyoRfq^6UuDY*U`S)ud}pjnU1_ zjj0yqChRnYYne2rH)Ut7X``u$c_V!_Y6G{q8a6Qpk~M}+%p1t(n*z=A>5G^xCJ$h; z7(I`g4+G3~NCM$}rlHIO%)YqB=9aj|+;>Y(3to)@=K4$mNb8dXn_HRJT3XRtqS~O_ z&|9KH(Q9z4;95&4Ndxm5O9OGzfNNJ-Rx??}`?Am%Fj)=P;I>(oQOn_K%R;i%sD+mK zD1i%ci>T#jLCv?!V=|BH7g%QD7QuO9Uv61qsh_ii%~_<2Ig3dANb2)RzpavOY@wTsFvu~Zx%Vbi4Q!O(s#auZBT?~sY({L-OX_i9VWXo*aG=8HMs3KG`c@dnA zo`jl2pA9FXC(>u(=1>!1k!1qC5EkJkTHMVOsEO>%vCM^YdFjH!{z)_?zdE z`Sa}0C9MbRnf=Xvs7BDAUYD7W)P;3>dx7MhAo)47FNFkQk{TcVo6 zrc7F(Te8y--I8jEt`Ft`%C3a%l&Zbm(P3tTJI5@UVb6611XE0XQT zU^ccJTQFIi>>Nn#d`ftWxs9%}>0uQ10p!SH1SNbo;pXooN zc5~IwZ2WBOp580{C*v;EF0{ZN>D|-2Q9aUk8T-I)R3CPBGTR0Fkn~CKo!*w-JAJ1y zM09=9L)h8D{3m|a9h?p5oiHSQ2g#4rR=C5sk!%NQqj5b-;6~ggYAae$>y7J}tmDcJ z##OjYaGlt<8n+l*XKZ1!6>Occnb{Vmn~a-Den4-gen4-Bo2l(^yKx&ko8dO}a`ZOi zYHGQ0nb?;Z7onEJ<;Eo>%Zv++^Wh@6P~2H)T!3DHTg7}0wE(W7*21;?bZbZ&q^~sw zr?0~W^JuIkYm>f)v<uJbgE6yU?6Kb=e3A!oQHsR{sr0d9b!&T@ta2>r# z`dajAoWM1PwImziYHFjQae5$EH-UldRivc$O5STAEK zeKBe!dL?}^Y6aRKR~OdHSV1z~=$|oNoJ{B1x*2{<>hiuUbPpze&>z=4qc-IO{W3hs z{7{}5?kIttI4{ZvEhzU4Hzsae?~zdz=LOxw?vqh7W16WZn^j4@IbI}FNv82hG?h;s zZ+tD1T6AxeFWQ%0Y?{J+D)c4y&8WjIc*7~C%8`Qe&8Qq%Y?{oxm`}mUoYCkhuyW*N zk_l81oNO9HHW@X>RDcpV23KIp$K|s<8a=^O$eF+uPO<`6fX_F58Cf~fY05+8q4UWL zO=HntM}8SO7CnwCf_bJY8DB?!CKdQ~WR;9^uKa>7hvg$HaCP{JD@MM>eI8kj-=Jb- zRah;fjI^A*3|1rkg!)8QE#uS3kLZuMs_a##K8~!;eks{oScdyJvcOnMePpM4MhzaN z8a(zj&@+wIGYX6|jWsf+7~ROG@a)$hoeHNKrx+)rX2L1-VrD{842yYXOh?Z&&fv^6 z78r|2is2-B5wFNe#zOpLSVS*G%|K0HQV0d*o-XJa#>ek?x5ehbvF3%B&jR16>V{GnS&od> z(<{@eaC_cV74$cpH|kqjd0GYYO870!8()*ZNAL8S=@n^32El!!d*N%5*W!Jm7J8wf zW_pofp`lj#97AogIfnV@g@(Csu3?U0HfkZ9L!XUWz*%T0LeCV2zC8qPp ziVf3o(+%_B2K+p@k-i#kAfHLH2)6;QqAy0xgY%dyLN8`#26{0y13e8E!|5b53`^Kq z45t}Jm1BQWr5>#?Er?a}jDeM|dA!ZdfV4 ztFNOkH>`l0sTJsDa5J@q&w|ZxnW0&#;8xH#(SIQS!SExs#n2^n3u%|s9}MkNe zOhaHdbQ@F~aoQ#|6dj7|2D@`YQ@19Eq_(EFMul=!Yc^V^Zb{yn+#T=O-PhQSWOXe;3SzB@%qJ!b`h5%-P zOdF>LkTgLDP)*Q5Fn|hzL8;Bz34qPfKIrDDew0sYZL!x*^+NeTpVXQpwNpJ)-Juus z6n8vRJ4^T=kw`S=CN4U*PSZIb4}1<9eP21zYpXi{T( zD7imLV^l!WT=YDyoy*msr1i-{VO_L8tWTetTo3Js6X>5*kE9XwqZ%d6N}j{jbD^MT z(`WH}3f-OQZ1gm0I-H$6k#r7pC!dx)iDVM42u_0&>BXq&=xL~;@*)T)$MY7KVW;8Z46>2B;yO`e%t zBXuTyGHM35IT_YStxi@I)<~T}UXWZpwSZp8Y%F;-CS%e0Q~|7(`Z1+C*~gRurgfNC zOZ}AcF{Ns%H?Au8?alGx)mSaHBIQ#`HPVU{Z+xxPsfJo~Z3n;GxPE^kMz%|H|Q_WVfai^N|mLRl9!NuMwO(!MhPsz zy-s_Dd&Tw}bZOdKPH9?M+B34(@HPHbnvHvTmi7|$68(z&ZQ48ZD1*)L4*i}ggD=x^ z45JKLqyk47atxVVX+vkiOauQDWqx)CeIzc+;KJGYjV7Wjs7!JTbfK*%E8PXZM}JRu z;&Q3)p~YaPkAxQ7_lDOgX6k!(at(PfkH`G;Y&(B*_V{clswX}@N3GK zl+P(&nSMrnO(|z4B;~N2S4JheO6s?iZ}4?W8A&<(L@(nN`6=Zs{xdA2zeRmRl`?q? z1yztN=x-_S(7C+2-==&(eL$Czzel}gCiJ}I++-&k0`uuER33EFKctKibzbrq^m|+; zxr;LEp@A^FA>i?U^)=)H7*(a`mJMWYv@0(Vj^)V2z~eN!3uEusXdO%7f#XRF+sR zsVZ4jwyP(V<2+zhHmWAMk(DP_;wlr}@D1^9uo2x4HYBe?;)QDn>(aeZZqO~M3Q0p$ zW#Tusyz$?-tqNQ@tW5OA*JQ^#sb*3|Vv$~O-{|FuUzvN6)=K)CI8I-I8>cVQ*CJV{ zubEV&U#RzDR-0>mxKA&X4@Y<(_et^<-_`5WeUj?H0ICkUHVmKw`78*4wUg%S1y_gO znBIiENm5fPFlnPckaVNINzxj9Q?fPs_2`ZIwQ#L|jea$1BV0pY#Y{+6iQK5)z}cvu zuU|y68m`8#(ywD{H?>Z`nZ8cHoLa?nIoyn1iCQU6SL#=wSKv0oEu0nlW(mvn%jnBc zE4XSI8_V>83C$7~>6fCGq6Icd2uui|nj|dM2f+X;h@BT&!NR>rv}xRF(b?s$)c z>2dzl$~ZUZk+1?aJ#H~v5jTszf_w_eEY$3{8fZ7Jt-;kRNT-plfW_!3a2mZv!c_ER zoWLn@Q%PpR$<)lastMJ(x&{<CAtDt7GFwM%J#?jx43dxD)!3wFX;04&zy2}zWxhW<@4+a&ul)= z-e=OU@lJGs-boee^VrFUUzs@R`Rsg+uac0buafYU+o_W9jobVj|1CaGpG)S1dHQeU zuj6y|ujy}@z2jOJlXvJ>)NAO{e@~JNUo)M^+@-hTocggiC-*&;Q^>2)rMEM2k=jYd z>BsB8CXT0%MNL9aqK`#QM1R4R!>@@GNgVnwi4Jk%;M(%U&rHe_J(7g}hRJ96h14Ud zlqyRsMVF9$MwKMKMhPszy`{>~f_k0!ipeXkf0OtO_ZGeqds*W9M0@gkHlLBclhaTFjkvUA1J1y9I@+8(l4ItIB(gM^hBqWX;9ioFQ&FjC z1Nq404D`dq2Z#^$xjm>Cf+9%_%QKl;ytc>fW8OsB|gG^q#h++$K6kSj(fy! z^bvI%b&vcue2%`0x=Vi!@1XC{pW$9mci`>BTlDMjHttShn*J7bhn*LRFX2lb`Ch3trtL_1~esLz~G>sFBQs{xbeW{4+KLzM?-z zy@b!`-|0(4{W87;ZNl9nf6gh1e}jGwP5RrSD~Z1y|Cn2NM*bK+j(>`KM?FP9f$yj% zOdsJN!zUz9;@|Vv`VKydx5NqV3H>eo1NjHuCqAIZ#JwjS6ZauLH?EW{H?9CZCN2-= z#pTAiP-9>&-Gv&>853tgJIS1E=f-8?Mnk8V=96W{IdG1+d^iK24`&x{*|FT{;Uy^pcu-p7>1 zj3@Do9mj@eY$3A=>=bdIg{UHq@IGD?H%WX~pGGf=n+Ru96VVgkY-$dl1+(FVIQLk= zO{CAF&n2H5H;3gY{zlWBpK#pg+AXGa;!fvQcb9 zPNP`&ST7Pk=!dTxTc52^s(x$$y?(3@RhOv`3_$y$e8s76Y#nqRTmTH@)QNRO`^46! z*GARhs@iPSj}Uf$JGy3U zvgmT6liBfR?#0jQ&G{Bn6Zb79Iog}VjdF+Hu~o>tQB`6qW4^@*tb(gbxuXSD8B@We zf-Aqpl*d%YRE;gi3Ee%mdhCR_>h$q&LR>Yrt23<{TaBa!x*Amj?Fp+xT#=W!N!731yRwlB6aOUb6EFDwsT@zhXxbJuLcV%rN>8l#1IN0$;|wAbSR1#;C}9MZbvYMeob3 zANg}8{m?zBUhsL$9g-KY7t@c-pU2$AJ&SpVd&YggtB_e074#RV*XY;u7pN+9EG`;a6;&i9 zvRFllI4R-SXhjT@Xzt5G*D;BKu{e*yL`A_EMFd$4Dnb#C5*UHgQ&DI^g)73CgmJu1 zp~2~4nAoEfk&0qvBs(>v29}lqr8n)DCCOU=sQ#%yrB$MC=@bMfeJ;iLdubHv=mAe zN}QQeDn{XCiV&QVXJkf=M@h-Y!w|FtC83AF-_gI*HMmgfcQ{@#jy?*G$NjFzmW`u+ zXHTd?3$?uVTJ%F%DEUK~R#7MmBP-smf$TQ=6Rz$Y*sd-S)`A#e!pw0j8dw0i{ZwEJ7>8TT1D2z`p|l>2-3oOGWiJxL;@`^iqa|3>|d zKIPtv-w(%e<~?vP`2i-o+V{F~&c`yhMv z!GGPyM0b>a(tQEHi}VocKlH!w81A6^Fm(*>!X1aZdCXm?-7MigzT3T-zLDCD-VQfX z+tJ72MrsS+3mZjlac?EvA!gg@TS>Q3JK$F85BP_Br@Kx3PI{a8Kgim|x5l-EZCKmf zZR1_s*fG8nJs|#sJAmhTf>-_ouh=0`9daL`cVu>i_2x3 zT8&fl)BR4Vq1r3=j-v}4Pao&K?cskj32%AEd2>9sS^dyCp5CJFjmz=$!SzD*_5@LV zU@v-(r@yHC&~rR@pu&3x6@+>ReV6Qxrz7r;=PvynR7Y|Z6NOhvSHV!0lAkM-(t0x} zHB@^Sc<0j>c;~_Sa6Zp!9@T}_HU2;MJa3oyZs`Bqm-via;`w%ozvRA%zKH7*f6?77 z{(}2F?j*c`yXd}xx*{fLQ78GF3;inx^LpLsGIJ5k|K9D&*Uc0C<|49DkLv}+2~uSTl8$0 zi_WEA#pO`Bu)tkL&xZxLTz4KSkA4+*8{X!%∓k$`N^==^-}pNm(Hr)S?-PGToc3YTC%!wb8`V8N&D#w(*V~;PX>hJL%{$kd4%5AJSm|CJ z)N$p8P&%mdhIxbO0yXqtZ=Oek%Hwko?9KJ$u{xr2J?%u@4wvg`k86W!=V?o|hi&M& zo=&1}PtWz-gW=wLsJ5s8^mo>Kq(iKo;CI#`)&TM$)^KlUCgI*L^v-aYb(pn_x2yMC zc6?{;ME}nEJ$)GbR_tB9!_mX6Ls`SD!>vK_!>wJtLGfL^i@Xczi@f|rpVkr99`Ql( z3%xz4KJh(xMS92gVrLK>!Mq1Oh`e`vU(`tU52Z$u_r&*tg6vB;vxo2@lQ*2D z6#a&*9RGs#fL+f?%H7YY7pR|jE#x)(SnYnzV2IenaxD^&8&p zukc^PuW^k%U*j5kzQOr>e&dM7(BIRDD@K?$V$#UthYO(mJa65NJdI&vkH5!ZUEo98=#t^nt7VAzbR}g>bAHhT-$ANzMlJ%29z&JGf#8s zzT}=n==UT|JT2MPgtP^0foo2BThh|gfxHbAzEe8Vn|p3cayTkS(!z6#9rq-+@VDVT z$sN``$$j)qvMl-?c$40O{g+Ue$Xjy$R@5a)D;}qnr!{QNnY&P}VQaE3JerWS@^odj zVsB@XE}qU*R~Urr%r|2Y?vmsp)2^OwtgaqG_h8Z)*By4pbt641>EY>1-V65Qw~v1G zZl1G}Gm>teGm`F}_sIJ4o5|;>9-f})_o$xeK=>XNi0%&G#SNeWVRz2~iO>V--8s(z z$-B7s+4H{V18RV0zhnTj{gU@RyCffw?UJlV@0aX`yCu6MJ5l@LF8ZI$gyc_=`z3#| z_H)kdBs<|w{GXCF>{>;wk*ub#k?f%UWV!>cMz2M!6{l+@ThLo@tKkOpar$<+1Gh!8 z6}45IY?W-1M9Vhewo49?9+#XzAA-lpw@PAVha^XE9<;z%dc5oeS-i|cKO{LU>Lc{+ zl7sj|P|$nm+xfYLevD)fdM|YV?vWfNJqVAX_e%D`eYjKT1MmRv&fg?^;a>dT%=Sr6 zqt3uHyr-wBi{#gtT<0uDB`0yG;3;M&$^NEal>CD}4gW!3f|n%cxf;*YPvXw8{=sF7 zX%_t^$$7~I)CKxEcolt>eiCG4{-q%_f~mBBYbaX3A1gspwg< z1pH)pm@~)21oA0N;$-opalA+IGB0W}oXjK+?Pbq&w3nKWUJPf#RFdhkMD}>$Vp+22 zrqgH2GVpPvNvI|0#V{F{D4R+p!#G?Dbn}>TC^st>og|wfIx8+oHVv1=?rBUX$*eGi z9>dHEt)h;`nPk!U7`zP~15;!U(M_VKa25x-O*R2ekU1%v%uYGr1euG(2@PnwY$BY9 zdoG`ddoFk3%H?+UK8NM<=kjM{&*TR7l;X-5)ps1DCiG8Zf2i-v7!~F59BdM0Z;&ETV=8788Rm*Fb`YD<#N=YkGEzr$j4eph^imHL7xHnXl{5ATG zybPA{Y%1|@;ajqa%Gb;%D&LY#R949+DJQ`iw4KbRoQSufg}n0W(c7Sw$XdcStR=Dqd?FUG zzl~ynY(9EEt|gPU)O=Z6MTTr1*-V&$n=f00S|ldvsF{4Wg}#t19nOPkvN_Z>$sF`t zvUL1h*)o*CxwuT~nq--%mdQ3T*~IY+WlNc7!cAhoCV9wx=^^)%rKHPQnX-qH0x`{^ zKaecP7om#CmdlDHh3GapYvlQ$e$EO~@`0^f-JzND1jTT0pai1aDz z2}!+MNZ-2a-3>fX@ns}s^rxto=$G`j?mFi6@Fn?6$urLI6xO*bME6os!Jb;?Z{7Z$ zT2v*v4pvBNNouIk)*5~ntl@XST3E%ND(0`yuVEGa6~2n!LSKnV1@5`K0$0IV1pN~A zoZnD|?jz-q1>#<~{iQGXE!JQ9((Nntf&NloX#J|A?wNPlTVmOsBC*GlRo z4PXO&y`-F7&!}=qt)z}g9jadPoUEMZ`wUeld4YaTy+BvP=TtS*=aN@cHLR1gmR56y z*3vp$wWJ1BBkp-6sbps*??xq)DyjxnO5T#ZfhFiF$!qu;_lN8??hn~p+%{Q>m~6xS zA*+&Xmu-hNk}a}rvOi>7sO_j#>{>ysBH4=HO0rG1lIv_0*V_uzR@rLwN@_KF16)aM zV7gMahS~tP%J$Q@z^%9qvW=*X;+{3Kwd`EWr(rFVb<{?bRP<8xpn_2C+0~Y6PZEd^BjW_AM0JG$itZ%c zU^8?lMQ7LDjh>BbqMl9OL_HVRL_JH{RNWM&qy5R|u*0kLS9`_dyy7=W0!d@0 zP1KF4rl>dkXRgL-Ka?NZUmeE|kJ3;5R`o_z%}k(&tOoy9RfBt@@>BaTufh9pRC`=w z=%=p1*Q#Ezrv}!jYE|vkzD#S$ebuj2ubI5&Y}HI_Rdwii9;*&rPx-3rRc?H|(#^M> zhi|<&lp8-q`C2uFZo^Hcroh*#DzaDbwQ4d+jIv4vWfaRK>If!LD2p;e`9QA6 zJ>VNZ3U5_D<#sZ-=E&V0;-s4 z0W3oop^C(5k-QLHh%1B7ScUv9Ss>4+=c5WaDxV$savi^shEY0MuKYg!K1sejoJ=QE z!f@Grc?3F~ia;A-IAvu2J$B!RMs|kFA}J$OQYxsDsZmCmOm2J)u z_$ee)#OV~tH1sqQFKQ}lnk0tgSF&GaF}RUv!GDJv$zS#REA^eoq4XitP?8_u5b6gW zMK1h>!0-o>A7sO1U($!+e-zyh^pUdh_>ugq<5>!{9R7$NC;Od}!SON)*?5#h_McoK zQi8iG|DE}N@T&Yj`M*s5mH)`j%ebrZ%OpaV$*%JrT&G{gU1MFvawXpslPq~QD~m)zBIRnAaJ^^aZ;{-h zXQS?-@6s>h?ofB3MEN_}I4DuxA-N#`U3r0inb{S1g=cdGeV)1iugFi4{0o1SUBRCw zIgR@po`=EqPmr9H4<{SJ`!!59 zTy{eKJ$g9xJ^E)jocfvRaM@4P&+tp?E7ni4&)9RET}R;w`A>x&Y70FOgn^htU7X&%txJ@0I6p-zzWSeo+3y-tXZL z%I}pU$VMm+v1b_W2jwslpL!z$s?qGs!sV#4NQ54uyu;o94m}HZo0Wqrp&sy!Py%nG@1pL~Z^L|a zKK(Y#+Gtn)Q~kr_3_PbALo!79k7|gxXN+<v9cff6Sx_7SiXtc47cO{ggbf6?WmnB;cm54{;7EH z`b74rY^VHx@MG$K=s$5EqrTvd_c8oa-dA-0ll3L}LN)*nkiAd!5c!3y4{2XGKo&?g z02L_fjuIG%>n`ht>j=BE`p9~syThL7zUZE^UQ}OMkl2HG#5FwT4)~{hl{|>aD*PIr z$y%}{{4-ur&aUdo=#dve}w@*cQ8${r-WlzmbC(0x!n zmA!?>RsA9FO%jL?Bmh}xj)8r&M)4Q8kUgEy#ltJack zguChMP=l0f;X0t)bR2->uq%-@~*Q(;#Y(Du|NQn>`JwPZFnB7U`N=R-U`*0)sbDTf?JZcWyNO%7u54#Hnh?-YCjpjl!jRi>{&Gq8ljRqTebSD9h>fR0Cx_xs%Bx=u*{_ zlqsC5GI3A6;sxhK9FHF*AB&Tc z%F$zRW8rz}82Mk)^U_gFgn!|Yiqp|dM&Z;@Egy}N%N6tyHn*{GZ7EK~uikk_*SW}|PRZqc)0E;^T< zuXu(kfVt$kiX4v3hR+mvqRXY{D<0$Xc~>5@o}-_^JoF>Q6RHe8Ry-wpjC!gts-BB{ ziZiL6FgHSz%BYHD5~<2#rygfg=}ClMrZ97bndy356w8EjP)@FA2aG~nP!@U=w4rVE zNvf$R2egsfRMDI>3Qko`5S@)ai9c{P6($IO@JcleJrzzsC#WVR@)wo)9HHpxZRQ2lS!S(cNTpg=cU9WCN(wzHAGd}%w z_y(v3WOb;<=*GCF!JSaeU}N?)4)zJIX6}RcBk`g9*wYT*lzUSuePsb(2!89fcRhGWPck-Jt0g+9$LV zE{NVYG>GaK+MA>gx;N~|tP@G2(}MR72R@8 zDoLg$9j5bcq@!n2sW4qLm1GX|3r@#RBbkOvf-~V%dLlC+Nfh&$n(3^W9GyUt1e5TI znuc60K2*ct1kDuu6p}=ZFIhvbH=khN;3=9$XkV%kx(W29nlSYZ_D45?Q#6yAB)};e zf09b|WKE@7*yA5u!)Kv}PeTp*6;-Kzg?>iz22N1b;GdH`$CbfX@EN_7nUIu<`73of z>y^4v{fMLtmf=g)v3y#isaVw`^;7&)l2UaHSuCITXjP2rsoIK;p{(eMFov4QG)85o zCc>xcCrlo}r)oP%xax^IT-;+<8Q5vyZe(Cz7!?i;Dm6(Y%u^Wf!6d;r6%2!Fx{{fY zD8)QXrD26}w3I{zRd}W94tL8O>W)IHQs5ONO4V($JKS$`6t@)$)m`*$>Mr^|yiMI_ zdRuXix(~V4Gm%1t>K@4zguE3Lu(@aLHF5-TMBUL}BepZcST~YkX&-5$( z2iz~LkvJJ8=M|8_U(mmyexv^a$Dzm3f545R#zCn{M=FEk&>?gwubt4xi}P{x5LEL z!R4`XagV7dT!D{a9{N7&K0OZ>ql@W})K#d*u$a79ozFS*V3oQ=bj9>X>KFJ&T*oh1 zuhCVo1YNFvNmarZ>I$+Ks0y`J^IBvD&Zc?E+zM?Pt0tC7tfqvW(KwqXnndW8YCE4v zJ3SgVfn~#asma^{yl?_~B5ERi0*ph)(GxVYP+k~E9;cbaIVZqb8n@`;=n0x+d;<58 zWY%o-Ea*m0*Q8LXFj+H$EEzRJ(K*bwza#U83zJvO8{xb}??TwiVMQ+HRpswM$`O z=tA-(+J)3o)GX!;wTn=T(2L2JYL}sB1JPsb>i+diZZ?p3@_nzDA%c8R3ZS}t-ci?!{ZTx>E z|KYB{Ech?|GBY8$EaqA2tE?=JK2LH5Ucp~hkKx`piW;LjufBx8L~>a@nrsaB+fk~~ zaJ1@oYK&^E>XLdaeY8p7Bxkk{pMSlx-UVROBO??ZV=b2n%-N232+@fD2 zxel+R$7*iSuky^Vqpz#SX~w~9^(f6))Hq(}-+A4Cr;oyoXN|*!P@%lbA#glef|Afj z;iOQik)b3SCApG59txRMBPTKAG%y6OJHIY;lG-!-u z29!}##9zxO(14C9o7-N-qzoN4w+WvBJ{ct4|gIDeG<;i zio+#SDcsYNp&K2Kil@6_B07=oh6$X<4U@I=anoTkE>W9=N)nTF)O_s%TsoZ3o;1{S z?xAVaJkiZ%l8%}K=V<4m=4mrv2ChZ;0+JTtb4A@8*E~Fl{Vl@hXj_K2gc;hV;myNa zgg2#HqUytvNSdLVp_`Mp3~z;QfNOwr|8GjQ}lEAn0n6iamX|3IW%e`ndqTW z`-~(nBvP9v?s*ncz|I0b4F&AWrSf1w$W4+$sL~YRZ;{->Wy4%}lb*#)NV0HQA#y&O zH(*xC)sP$bt5h~CHzWt04Rg?W=$w$-@OH>OR9?s(RF25|B=4L6LJ^c#VNFR zaSH8yoKky-BNR}nm1{4FQ#lj4b|mg6YNYmO?N2xjm;6k(!BDM6pVG&v_NhrJYQ)V;7rxTo-GSZUZ}@+auWFpuYXkLR0E zK2;2Jr~+1gSRs3=$R5GR_~Nh)?p(`j^CU6`&a>@|r76|Q@MuHx7i zFickxrXvHoSoG_#SX2qK3bd6>;A`BAu$R!PtDrv$E62Zpf-a*!;<*XElB5j%jGCZ* z#^?VTy)5h%vvOF;^jX+*_#9V*egmJ=Yw*vx!_hx5!hK;Ky)LYAxZoNw@kKR+4RJo)Zi=o6$rN29QBTHA)>VczA!!(%s7r)? z;R(9Qx+%H@DiLL8o}lxhyy(d~8{Q6I@+_>-Mm~{Aw9ZNz&1+@VO+eY9ok=u$0(;`n z6R0@!ESLbjByqY)?3n;(>D;1=qbKN+@zJCX)NJ%D=*CUbIVm@c#(7{2j~R`MVF~YF zj4py6PDP+iFq|@>JusZob3KGZk1k4dCb|Z1fCinJ((59rC}`lX&^5CxIt4mXXM{#v zQG^j!#9yIn)D`kSJP?vXTv0@%t~jC?M(OfNiX!ryi&~Lz-tUD2RNuJT4q3&?hGtocCw0gV(Nqy z5iWW~gj4s5GgL&pVmW!|%juPrTURCas)&aADqKUon`@*pqAKEbgfB@$y|4Z?t`c8M zQcEw#Ra3RFoT`B}{B+eMb*KjVdRzm28M->+4OItgBHohKpx#Ef3=Q-G-{PExGIE!} zN#-)ViHI}A!Mcb^Brd}wDh_34mx(fyIPeYjHVHcLHp2usfqW{o8A>B#=}%#4(L6p$8_?Q&4pg$uNavKG}SBCmN>XQs8{C*G06^Psh(-r5M`i zTkG5C>mpiH!aLiV_jU$p3%w887y9ZO>YK5rHEcomp|{r0FtpG&M>Qv#VQ8+O$@ym( zW*VC5o09p!W@OFvtx&B_)7H`q?@^y+0E_Qh$=!x*6QfW^k1@($CPPpi^*-^eMW=`efa7TmnqSrRY*osU(f{ zsXBjsf-VW4z#UoWGnpj8=`c|@mGTRpik?Q6grBBMM+uyU%VhUVbf(Cux;d<=9Fazn zu1lllpq8_14r%A`Md(cOMX)`Oz8w0~7wMLu+o9X*+wrXYVM}@k{Bm6fY6;VxWIcIZ zTI$;}Zx4IY+oC$4dNJvsU!q&g*%q_EgMP8DBhwE0j`~Hqg=A@P5!qthGSo7Xw#)+b zX}S!2TYXo~(v|b{3(t zJe^=u*o>sH(T6>Ckv@1oav#c%X*+y1sV}NCx)b!n`4}5gey}>y*XR#xc+BcZe`5_w zxU&CGO_|z;H;(!oYnLi7i%gKlUSV9^fJnU252Pl&^@R~j`D~;9v5wL;2frSkuG{gRJ_SW;)E4Z zE_$?S65auwBu>+-sPd?as8>;wOm31_ByRRhU>?oSI)N33o&?=!o5@a9M%vL6$tK_@ zn!G516LFKN%1E!Myrx-9W^rVkDS`Q9I7{r6kxh8Vn((UoLVx2FW=)I>rkE004SDAi=t-2HajMv-n&z0M;^t7DjY;TfrgS(5PNOHm zndq7H1l)9LCQP7`VKP76bdprmZ1gPXMo%}TP^mE4G=nS|HN(`%JX_=pTtl;)ypg#f zStE0bsj;~+Of~tCG&1{8jZsxmZeC%xsVd6H?2Gp$X=twG)vw}RcokI{->J58Zv&#qinyZ=Ck=Bv7HrL^H+27!Hz+Luj_8sY|#NTd->-nZP!Ad@k*pmsD(9`Id>{()3j9N_A z!Mxbik@I&jcQh|DEhI~Wi^vw6mZ6rBv}G1xPBUfT1JIqQWu{K%4AWAQg>V^1&10Tn zT7XM4&Bdkh*mGHPOr4Dxruj@VNavGuHg@1{)`6>ZuBn5uJ-R(^uBp9oo~fO&Ev_kS zhih*PKn0M@GX)suo0=M1;hS<_7J5e}tzcW&(%72HFtkRuA!~(iW9*6&*ap{)$}n^l zRaawwCjB|Sqp=I~Zm_@DGYsqbW?9d7K^M~QtZv5jhLvKvkiO2)9lsj2nykBVwP6){ z6>gzn1!^T+MZU_=gL8H__Ast6tR?9|vX(u|m@nkpZW(J0dIemIUTVmM%W=z4%MBY* z0+-`98verl#lAJ@Ov5I22kM2MNngshY9Qaffqds~V7|$)fxR0IUGzQ30$>;YCiV?N zcgB50DsT|JH>xxIh#sKtBGJQ;q!C>;lg}AeXg!OejXHb=kN}&LwNh}cBsy< zJ-r>O6RR`-g`^YJnE#U82{whzU^{xd@V4x23I!D)>Q<<>;T>_UU|ZOR-irSo-6p&% zN?;pYe|B_4_ZQhZyc?@E|HZlsN!Rc$R5#SS>{`W7{4Pmvd~a0$@YOtzcf(h})wnVRc69()}0ac zS^8<+DR>Z`W_m_9LjNs$hQgux5&BcQb4*8&pVNJ-AHrk^XZw!n2>tiyVYu(nKTzj% zKj;q`hLauQGe4X=#zDg&)-e5Oc8(_Bi#tq>)*m(u(T^hg77oFU){jMvCE3f4BiuKR za5p-FK1z+%A4Q)aISzNDj~b4_W4LdO$8g^mPvE{W9yNSx{1%SYe`EZb>}%t0_Izpl zhV)Akp^w#{CHdAkg!Qda&|fhbf;waP%J>obYq;Am#CXPV&G0wrS$K_p3N=>$H$27k zn&CUnImGy#@o&Rb=3kw8fqK?NASo)Nr%Jl zaYIqx8&8;qlbtYqk2_%+W;|&+32zuqn2wVjHJ!j8MV~N@VE5<7g|}0G@-4C*eqj95@FCL= znD4;vB-trWcN+Gf_mJ#B{l(hDck&0u_sQNjuEo8F7JN@!52`2U8Gs)^^1d;U-v)Z} zTR{)h0Anw7Ak_=q4+c{G*#8B70PM%kKw}Wq4|bt?!`}R!5=8P2JKmx9#`U4zfxV6I zGVKoo(0z=3VPD*8Q(xR_)4RA;{2nDFt8lCMZ7cxY$GFC{2EJolNwUhclHb+l!=>~U z_|*tIsLtpfFo5d8 z^do$4*n^~pxeLGL2EdQZfuid{Z;S5=yYl;WS9CWj5Oy{9BIyZRp}U#8!|u3rdv{#A zy%#Rs-pxGEJ`V<>)5y~7t=Kcmo=!T8L`dh7&9cu%%|@r$*Wl;E=A3yYTthyGNv3@z zX(s=!vC_U4H5blhl8Ii+o+aqD)DrY!I1A1uSz=$up0#kXeVOQ%&}Z2f;4?|rqn4r< z!)3U2_6^iBn2Fm2m-CpJsO2o--+z|dSJ8JUkZ^j`ZuxDU6_xleFTlzp%BkeKWhoO7@Jpz|QyYX8f* z*SXL67ln5oVAmPyfb*>L3~mp#m+2mO7QG*}pMDk|Lm#7`h5xXQIR`rSIFHhgqKTS7yDawlX7uTb=9e8-)peBhw9Vt8*iLt8;^WJ7?JH+|Js-JHLs( zgIZ=^E%w#U70%VT71UDu4)iMLa<~GnqVIqk(HrTTaDP%8;U;P)+{sV(CyBzb(>czu z3pb8eV<(y1@h7PqJ>D@6${ph!V^IRflaFEFIP@5ia>ws1xkKR?MKTtS#gB0eW7l`o zFp|;u(Wo(wp=85&7rsM{b__=krG}$N!lBeirb8V+P$S`&)Q_wm96zxqlx!3njUVaw z1^z-F3P(Ebx_+YPz`L$&SB~qhE7YMS$wuY6ROnESRl&QiUmX9E-F5xzx`fs`E}?#5 z7L2}3CQyr0In?m7E0{jYp%nh8J`}WsK8oil^bisWT1qLP#GxTo!Vt97A%ikpIFv#S zU58SjrKoU+oy^W|jUx=FgLbhi9D20Q5y8@-H#qeiwSjj>cxN~8?nRIq9GU3l&P-~B zb3J=DKm(IZ`UdtG9A?LQr);TToFlI*bwM>j?6J>#G zoy$npK?~D0%-1^S<1(EqahW{!O4bVJQu|ux0w!xo7mzHqFXC>th^us^bCG=^dLeG5 zbD^ENeLij$T!33>PerAYtZ}B=7dU6xGw`#xFAIGJlMFZ?&a+RU0?kv+ zfs=6wRG>LtRPpu{CMg_0!|q|808_*sXdc8j%OJiBJfvP$f_;#AfS3l+KQepqAD})U z^V&Z!zmI+&7i4}9H2}U({=PYpb9(KG_V>&KNfJp0vgaMk{Eju&&0|zN<>*u z(c~7GgpNhU(vzSI?V@{dQz;j;*qwAUwBTHJH_A=-;HJT8y!O-3(8Nx!}4?dVzc9W!F{IDR_#>1@u++ zoJU`!&ZE!4WAHf1dDk`eT!rUcc^1K)ryq0ugTH{gj(TD_hkIhlvs@?1wOnIIuH^!= z8|=BrV_raAWC{22i>@p5TJX%Hw+>7jm>ka9Q+h`aSY{uKQG;>%1k8 z^t|Ps>y+g_*(u8&^m)r^c-nHx@;B-{JVigrOh`_OJa0L}I&ZmPIZpC7{2PDLvWs1R zQoAfW>ANf^sFO@jz@6ybsNLdpx8)%EAZ{nz%Q|Q|L~@mW6?KrKu8RH|?zrU=?vmx2 z$SZVB%r(mulFLvNbA^7~auI(CUM9J035ij~X!y&lE?WL02_gB9J!hF8=Vv|3`WJl> z{)awe`G>jy&sxrrokg9q+&~FDhs&ZapapfqQp}{7BmcEr$7R7{v0t#xptS4?p|m7syqUxj6UwWv! z07EGQ)6kf3$^caqe;5Zwu*XFf1-kDWx1ikX17LqW&Vqj;V| zcap@StyGc4igu7rfKIeE#s+OT541uDJswqL@xXYJ8Dulq?TB&X;^7Rj7g=g7ZhQhO zKBmS}jW2>l;yYUn6G$s956B+EhrIh0?5T#8^au26_EcJ4pSe! zlI#JjAbVwbje1SuW;QwIfu#&T89jx1ZJ82NW~m~1314$mDf2SRbKC>VW84EC`!VYg zS7Vvw8Iv;7XCzN7Pc8qrp3)zq%F*TY$EZ^DS==%BkE@jAh2^a4g*bV^vBz9zm>lE2 zEcByH&cL&{)2{v01jl~#KC(0TeXhSy0{7weP!k+~iRv%c5hh1C{-|p=^F8p0*e5t< z@Xa!V?}FW=ds%y2GaN}`I*Fd**o&Wrnnt$QHO(;5F)l4SP8GoQq_U_5I&IuRzLJ&puw3XFGn$>LF7M=DC77nkbD#AUL3Iy%8Iiite$uOFlhsl2GRAFI!gnlb(VU1Ei)mhg|%E6 zFVKyneOQg7{i5HJ)LPzh%{_xv^f&lA_?G?#<-?wq(N*Y{qI%7)H>AGNEu&jSzeYDf zH9@zGeq-@Ry|MU43%wcHY_5NSQ|M_it;o`1X49KQHx+d=dJ}dxjZP&`V>OLVk4dGc z$M{FLAWtW05j~4D%qE`&XT>DqCR2&%WH^~hX1WAF3nr5!$0YG-oeY=6q=+t=?#54r zQ@Kw}MNgwr;MACzBr~8BJuPNBoR0IcPRIFJXX1RU(_(zBzAy#dfUJSl$)37cAJV$m z238@hh;@?Gl)WlY@=Ot`meIvS>*f&i5tu3r&q*bVv=oat|t}^yD^#+#V-oj@*W*O=k zOSq3ei!G)XQpM=Uu#kF;ehUk!622D-;oI0JqI*ow!#{uzVxLkau@9*y@Ih=T$y1nv zei-`*KEkB*hFeOtw9ZDS+m^tkFr7Xd&PUIur{LyL^I-}# z7tZCUn?teywFtcsPD9VJ&7&5;xwZ_lxu^_VHcDUyE{lDO&{-nq*>YI(IN~}16`l)6Q71AhaRWh*1Q#k)|7x?#JCE~9Rui(na5#I(%zj4FZ;sOPL_wsQ6ql3j;4 z@I|%~SVCS1i)@YD<#b=z$Xy-h>u%&Ov=x(7$2D@-#O0w2IW`YAa+lbu;%dmN;$Fp- zFnJYMMbER{M^};wEXL*8?!n5q`}FI!TznoB^lkceo~O_YNN%I=Pz&H~TRv$nEI{9} z-Gz5?zuE8NezWJ}M%nMM_cu7o{+nG&Cbbu^=U3b)`>!NIUtrrvGRi)hHOjuxwgJBY zE)d_@4RAE+TH9i>C2$Gv{%ZDYfNSZC=^NOy*0u(~T2JyTv$6KYw&nP-=%Lhl+fe&*+d7g}a6Lz5GGA_6iCb)2hFi>IFJmpWwX`m` ztzfd8bOlLEYg4N~)zZ4m*3{Yr-2}JH*2J1=^SAop>SFy!GfA4`o0DYPnp;=c>S7z> z>tcPaLT|>TA@qa3)<#rHOe1t-vWED^*48M2jsMTld4NTAZe7^kd+*p$u_B5B!n9MT z&sbv;lV~h4R=g&o#u!cP9XnW&uF^rl-USsEdv8%=H=3AO;(gC~zGuICt+n?V7-pCm zf4%u}HK;jbtLv)z_$Ex6aDAom)tJ|SP4qrz>{{Mg*79CZjkG4G#`v{kqx5t>ea+aK z_?4)YWHraH9J>O&0ylr`a#R#tLB3*aEpD^s_*&zak6leti)1xBOPJ5+U2q9!6?!>b zjb1!Bl9;a>8;goX zC!%A4x9t`abR&8-Ts^80^c&xi-VFNT8jWv^YD}+&s}Jk*v#*bC zKsAQ-$2TQu0xP2%jBf}V;*uvc#3fH?ic8}8pe0GTB%W23(GA9@Oh|!^$0w2`O-ST9 zw;smQ6Y$9}k)D7`L1i;ZfSTH>>y!!G&^fq-32CS_bT&E_mB38v8DxEU{%bVQ!y|LZ z!Xx|8(y+U2mb`#;x+AW_z(FbCeM6- zlRo1$^KajC)D!rG$usnGb{?XiQxDO2W%7AltM7C0BZ0JT7$F7PZwFT~A-^EeAVb=+G# zo9UZT3%P1D8=E~%-F4j2o(-rCXpPO>P2EkXX6_B1R^EbXCqk*YNICurEw!JlS)QwD#Me`B%Lca zc~WqhFkSD-o@~!6UpAXB;VWMjvuviBo-C3abQYC^-UYL$U2vBtmz^w_i_SymdbUw{ zo}GH%={bbTgL$4KBs)E+o`diZOx1T%J!$APTnh8;R2od7cEBBcciTyV+&es--08SZ z{4{oub$4$k?T+s3?gYELJG(ogG8~1!?2X}iif7k)v*1f>l zhMMne58JwDqZT-4!P(Af^x5QVNT#9YINPDyb8S1Wo=rNJY&KklUIXXS+qu`GSK~CU zajqrV09R8Roc`_}T-^?8x+~qE`>FMfOuM4HQ9-b)yC-Q6xRJb@JCGz07XrJ%p7c;u z5V{*G#NC^$H`_hk!MIS^Tkk>cKIl+)7$+2cz|)7T4)Ew`kL&>+y)e>ncRu={C!adx z*~`uW7|tZ0et?~Dx7oedW2T3pBDl>kxYx6XEFbRmM37tDdps6;Ff#-BZYBn_k+Q(u zp8X_ypoQr%=DR)naQU9YxO~3$Va_3*jk`U^nd~M#PIAO^)N|i=lztd>0)2vh7bpg$k+;y-$?oE>`>vuiUdP>_ z)X1y4y6U^a?a2+Fqalvf&LU)bq#OcZv0c0H`1E@}@-pm6cgHS=}V05R*&gh=F&gi2PI&sa> z2|+Fd;>kDD$obN2zSzj^kHdX99L2}M_k$Y0iJ-UrLjXFzy8eT-7L7kyr zghl8g`UTu2stBI;ouZ$Br*TETtDaL-5j&TBm*Hi8_LtFDJeSC?c*s0g$S&~cGxJ=8 z7d;m|=TTSS1$r?vEh&b@JTnT=T+g}Ux#~GbQVjRe&+&}h=PAUWhv(>ps7t7`ObVf< zEN)F-@|;B5d3G0iPNPnv&yt@)6*AMh!) zJJB|H%F|bOUUy%&$}L#QRj9g6I0I!ui_k!cOclHeMH101@cU?hiaXP(IguVr??v8= z*NI-}45vVv;q2w!=Il+j&AAbs;oJ_lJGVJgP#JI=Jq5Lcli|!nCzBEjMd#1`c`KgektiPR1!KK#^N?PH&d~2DQ-E8;%hENMRBy(@hIm!{Z)M~J<7Ql z&Y>2gm%};KLf#AJz~#;*x?4=2hW`ovv>WB7e*;}; z7yTPJl;iTI*qvSn-GOp(m4gk3H_M)4w|VU-J6dD5JmhW=sETQ-hAEV+4I@y&)mlM+Mi=V4}kgh{vtWc~4i*NoCA;6!SP)2u7A z*Tlrcl@_moxd=^qU*cTJ&wM36nPs|?n5}dgpyXZVTtOz`S1{cSCGQHlkQL-m^Z{5h6|yRoGQAvHyDP%-gFiALieH@a8{}pG*Cup1C8jp}4WbZKgpw0sOQBHxq(7u=C5IlrGXy3_J z4z-iy0R8~#pgostCyzo7>VSP0I+xmo-UD-~Jxp`$yQw{J2bId%ZSQG2VBb%+7aqXx zu?O3BQ$20_;U0S+D%jQq2HHB%1IY~}9Z=nE`_TKjb{|&m>xqPrwZXQ`zg|sP$EBWKS6Q=cNQLpr|9QU zh3Mm`v-UG&XV^YvKaD#F&*;6-eja_!Ud%a%?&&?xRXurhv`4llk6tn91$z)W*c(KJ zczdwZ6JB5vMDNMY1^ZQd5ARiaG3p|>Sqyu4Bglea5AQ|tYxW55HTr30m&n7JTtZ)_ zuEB6`N0JD5jcFg|;oeTTAa5uxh_4;W3GpU5!@XUZgp+n9NpdFgYL>{eG}N2u%tmM9 zLcQ6}KHfNI7H%ty!(}^jQMn|2yt&S<-mT75{8nCy7 ze3Zs?++HdZt*Lxx9+Nz-&vEX=?S*-I&vfp0D(?Mk?j+sE*-IjmD7+KNyzA`4A0RnE z--kMiK1!F|{g}(}DEU$6L2h9m?B_nFyQ9uy?6{aqybHQG{n7p4F{g{fP4$H?w};Gy z^0+@kY4qSea}UA|V!J=u?Hl>zR7sDbD~^f`FWc^G$)I_x}&D|Q~j9p)Y#L=~aVkr%;3=p(2j z^h2-!T|nQ7J5CkABIjxPNmzs{a2BEp={s?|;4XglyU-`7Lb%Jhha?Z?qE9$?!`-+p z-rcw^-aWX^JRh{AGp;kws$BF5XE$#*Sm+EO>Ff>QIoB0-q_@L&fdTY(sBWkZOxi(B zU9)Stn>P@BpJ#VFZ+ldGbO-Y8sCLY>{=5CY{Vp3CFVpX#eusDI?Y)n6{k#1!x;ySB z`902K`vden*xma?caQB)?02|@yX1G^9s3pBCF%ZFAY2sQ%DJccMI;{6_FfDw$~#+=$+c z+N@7Et8wT!+(x*S6Q}wqNopcJ5f#T(iEJdQ?G!&HUQIwHpf$Ev+A022dnG~b4E?Fj z>|`-ZfSpM?D;<=U^bSgv+C_Jrl`ib0GLPqbP32^xvtSn`l_ZVIgsEyeSt=@B-G$Pa zj?1Gm(VE(&?qsr)E3?%cTprx1_e^!S8fM$gW+)7^PeFQ>H+lxEPw~}odfC-^buSR^TX5;m_y~l zT)w-*BoRuk+DqAq>%~tamn>X4Od5{vt@MK7N^d0?rLi}8PxgADd+H2VLO9_{gc3*+ z41@7Km5yw6pgNND!1qA)R07C4@+fpb^-wyY1E@~uZZLrA#xy|bN_B%RsaBk>O0v{L z2_g%GJ@DO>6saqfECs=CN<1n>iiPpg26{Ys7Rd%wg47)y#I@bII-WF3O#X@Fb+o+guBDCl|LXpv;B5_3YaaHE3<2*XrBYT`jPa;*6qv#XrQK~>a z#?Eo5FgZ#;&W@rulw+!cE}>LzQ-a6T^JGWiF;yjZD(6)v-NejFUc|(Twoy)4q+TF7 z51mX;GcQul;*P3?xTAdSLQVnC#v=6$lOobHBq!BVs?~OiUWht}K1VM^okkDDsnBXW zO;W55v=!@WZTnYjenvWk^CihGlH0r!-Qrzm2>xr5ujxZj!_mX(H|Yqb@Sj`XFVX(w_~DHu?b6AlRRNN&QmSgOo4P_i-Nb z0h}-SPiuSVpDFj%A-elg8KUW$L-gZ&gc&Pv(QZfK?4O#9;dK{tt8aq;_Tg?*Jm z{!c?Ll0wNuHQ&W?~(-YEgB>+VnbN zQ>q!$rm!};E~>6Rtt&P}H^kM34LA+OC`(hZ3B3ubAy+kFqlp+}iLx{j8>1SdHLkbB zSfZ)*md4^17)@-C%?5KBtv8$LSb!9UZrb%6xb!FOF z>_XBF-G%Cg?g_h4Jz-BVkex0t5FLyT6uVQwVvyd0#BfwF3>FO}L1GWF4-AJr^qn4J zZ**^52j;z~-mn7|00a2$dXZ#W0>o{Wj<{|7Gy=#nEWJoG(AzEBV1{M8B?YB%J9#pD z+tA56Gb}qe8J0{-JV^>n!6#cbv9*EPM3RJ0LM2-^l5OHq*nmp1Y({USHlyR5@<6JeaC5z5b8A2u@AqBkOMM^X#b*qne) zvt6D;k~{y2^8%eM(=b^59OrXIgfn^DOzCJam}2 zo2$ZjbhJk{j7Kk@bdMzj-A4?e!o^T_!r&ezA@neI_E-*DLdApheAHfUGarVEGFb== z759=KvdH2gdJeOFGCai8#M~?jxDYV{7sA($;DqyRG>aA{W>O1@ zK{Sf{BqKcnC89-o1j>XyiQ5bJNhT6WJSh<{k+^oRbd1SfUYE6gipeo}5_eQOP8Gsq z(h0I-s1wpzl*SXdb5tQ(Q)i_!OwMrqDd{xs96Y1FOXcI7o)DCuhKorSK9w+7G5R4DqZ9jis4tvHQim6uCX(ixrcYb!JMzrU%_kA zV3N|6LPewcEfukwvD6g3n* zjC{B<0{y#mUmAfPNezKRmB-TW(mhg*ze|s$yIgr6eHY%9F5@mzm!+Gyd(tJ`W$w{M z)E(4a@;mSn`U>g_{Sv%^zCk~YyH4GJcck0&oA3_qhBQFDP2FJUx>N*<_}Les`-|7f z`-?@AOFTp7;xR8Gbwju468Y;MrcRVwbTHEr2XyevkkI`_52wF4K(v!Mpg_0tj1)u_ z?}T=`it?arOjM|;Ll#YYL@)Xz&u&$;qO52e`9PG)OzWpCCoKhRXxvXPM4f^KbgOty z*QYG!&;xNt$qPB>ET_?haG+SMyK|Oe%L#6wfcykJVL5=?M;$;Pf%~WAku1>M1J}dc5q7|Lgq`XBumgD~l9sp*uq{0R)e&}N z(h?oOPB(M_)eRj417Q!6ZsxA+1i&D3icxdj=z-?$_?EaB~SJ0O;(~{*n*BMuF))}LXi%Ftj z6n?pJE?cvyxyCv4xyEJGa;D4R9P~WYJbgOPxCp%nHwP}{EHaiiEHf^pFGVfls-{H4XI)ON{k&UC&U9%@{V8K+V-N)HlQ!>(gtY>M&i+ zWHH~X*4Hyx4P$VtjBBW9xZ1duY&B}FaWhKeTHF>Y8m+0##!XB%as7JZ2HY07N$=6d zt;W{ot!%b}t5)7eim`Wv*#cKQx{CMSd2+(FNw zvW(fr?&fTIrZG=XvgzH;dE_~$e6#^)Fz4d}(V92nER>Pwd?-GY#DES#31$n<1O;3l zv_SPihnT})7+Rph@DWg;w71(ZoC&At2(xTHZjtpwG)o+j#6(xk$H4T)4C zQRtG{!IVD~(T`aibQR@9pU0iIIB`eOn!kX%OkLo1itt4w=h3H8S1gxt7vUA$S@ad^ zEc&$N3_OFrLY=`E!zu>yv`Ma;pgH=@t!^%$z-HB3imxVO8kt;U^rO(TpUV15WM2gl&Q zMUSDrMGu2xs9{XUh-0Z?aH#kV{WCZeH%uIX8lmru700nTPMk=M6~|K};5cy-$wc_k z@~`yKGKpjYZXB}-;tT0tX%d{I>j`AfNnUWqi!Y_;^p~9R+|qOUD{6%JOz+R6r_wXr zEBFU`ggBhWBcF<& zO7fHPQTibLC%uCorK!p%^hfFwx{Uk@{Yfe#PgSPiCc>%gmyt`z@0gU3rzmA*&6SbM zGW~)1JJOQ!56U$36j&BlLM}y>h3}-2aygPxa%prqxjZZ{S0O1aSAvz8{;ZT{{}REvJVTiQ%c7T(O;>)#Pe*ILtUMD{S--B5Tv`5wY$nqg$}dVu>rCydTg%GRa5I%z z$|rRu=_hp-?ic)AlDYI>P``53FYuH4AKBmPC$*&YZ}cbiEovG`N$XqmG{wjL^l{JL zsy^jM^pCi|nfycjsQjb;piCy42!Fu+sEk96)06+9Ch|yV{d=`5rw%8PA!(72lAJ=2PWp{5RB4&Uijcj%W6m=?LZzP*3>G z_*izoO%2fX7pTwpJ=c0)vM=D5e6|}v_tN{4^wV`;`WI{tf`iar zY7oBIG6+40PjCZav1NoZmizS`9LGHzMIXUu=uyf;b*#=&xHsxJ@`vghvWMzO<&pXb z4pAPEJX9Z0k5GTH^$+zI$qW1ok~iwVJeGf{f5U%CUZMY`UZG#Yf2o&D|5e{nFX0RI zIsE~AfqSXGM!nW|-l^}|e9!afJ(CaAYxrI*Vbzik>PPqyH`VqLH`P|c`VoFmr`e{# z*XZBK{$pdF@|$g*qUm}1vvsaAPnp7Ws%;824ONbvDYjXtS?J$vzp^n~nPn?)EoUvm zOyg{_viS1Wvbb{AS+**=E^n=Zo{5_RXW7c)D_BdhQx=v*&$Lz5vntlAB&C^@=GMxf zD_AR{=kT>EqAO8V;cxgk%5VHe&E_}jSJZF##Y$=GV)}I4d}=W)ZLLFA3YNCcCt0G@ zu`Z!cXSM(?;5U2$dLgw0E>M<{EQOWj1^7iIi*PI9Lb!~+619r6kSkUyE67%`y-Zn- zTLo9>eTlLLy-HclS*7bJCaY0vl_;f-yaHE;SC!TH4N86MS|;_a8*mM*Yq;h5uz__o zvvu6gYFOXen)z~6v{DaU-&&7qU|q+~My0iNBR!gF47Cw1$8Ca}_8yT8ns!8 zgE4S3Jq{JmiQ&39Wh>bhdOX}p--K^0Z>2VKOPiEN@+Nd6ISN%5)|KnXwNZ^=9eQn4 zJx(LJF}fC6E$(L>xf-q>tfi+F$jVU_c%3c>Yf`nC)`aEJ6;T!SX+^mzx+<jhDY_+W zOtoa%SZGGIgwbLmlXWm!Y(~;bNEBP?JIw??HvNRwR5PJD)e8CvZAe$NQ7C6B5W0&0AoC*a~hRw-bSUu6mvRB8VoR{ z;J1@($7RE9FrA)_%HeF|ifnThSr*&r<_ug8%+h%rtimxnhsM3 zxTXE(5Yv8ih$$1*1NJZlnYyDwU=Y1KswXGJ6p9Wc3*>$VnL6Wo!azN3N7j~VN79X~ z8!FJ`Pu9-V4EjTVQ%9Or>(z4`aIv%waRtkU{0ZWGWM88g`;` z47r9dQ!YIdmqq2mOv5gwJ7M>T-PA6UY+NR@Y{MSIZuA~X)7fNsBzrhnhP~)La4$L+ zz1Of0?lT-j^K)?H-$5afDtBxNg}tQCFnM}a1Q9kD`+>Rpk?T$WTtMDhmxUW66xVk!pSBp%Bt^p z_@|%_sz2p1^`)%PYx<0&KOBtiYw8F4;fl@uaK+}&aK+}nrt{|W(2BlIcH2Cdopa`5 z(sLwQx0=qP&zmoB&YLxTjmZVnDbyYGZ8+F;0e{k52+zWk^fM@{sSuuF|D^dM*Is~y z<^tR~)Fqzz1^9#18T?6e5x$6i33r()g6D8o;Z?rgCHxh56L$%9(>y@9LN-9Si5nnX zHV+gA!XorAvi`yVe1G%+;VRp=%)^9R^lMyyow^0DQ8(ZX?#J)&I=n;w9rb{7ovq)^ z_sQ;aKku0D;vT^JdOD1s@Hf;j(_QmDvU}!Xru*ihWW!8f!l9;n=5NtMsc+HWLH<*^ zrtg>zH4Ue}gZIoYncRi<%)?1Wn_ikn>pR0uBiI~a`kor2bGT_FSB!=uOryv~phlS{ zpfvKId4=O~6HpU5BiS8GG67D&k2Q_MO(dO!o`xF-|29lBy*2!87|SG*Gf|)Zz+^0L zGMsGs0X50=Kl)GP)8Jb}Bz_9{6y~qZ|6~5zJcaDFd6Mak`3)S6E@7F18*O^UJ$yy~ z)BKv*pX9I2f1zHX-=LnLUh=bj0{=okLp`Ja1)rjy((jrdqn^O0O3hF&_a(3L}I`OeP60 z*c^@BDiOI3saGs9`+chQLwiuTfvqN5QYqU(rXw@3@^&aES0F zu0I@t`$`y!8cH9I8%;hKKN|f#H53jOz9IP%4rTfoez5QbuD>t{*PrM5Ad=6?2ID^$ zu8H5EuZdsi`VsDtIF$Ws;^)G3@saok?kfG7c$K;?-XnR0z6YN&`vZQ@*SaVE&g2R^hkCzHf6P_S;4|_k+}cz06S61b81B(%YK-tioCrr# z6NSg(Kg^!Mi6j$+vHUbf!+-c6Gih$35J@st7zfAkXpBRTry}7v;eRBP;0yCO`~;E- zI3FAj|409knU?&h=i`Mbobg;enZyTu_#cITc((ja{bQai{DA*~H6Kf_x?3FCCr&tyNFN*HIDK9Q9$zJs3(KbuM#OBg@lOB#PRm4lxQC5`2nelnCo zmot_kU&v%S{Ml5BS$X3^Q+a)-l(96MrHvKnrHo~$^02hAB1r`}E21>MEJ;~hRagdA zq*r04B~|pijIkQ03|ChosS2y&s~8tX%!-&#EsUsStcBF4tj|V$x*x7NRUi5p+cIql{n5>h zEno}WMpFyiMpIkdHj}@eY{P9dH8*ZDZG!cU8%*0w8%-OiO{nc`rBT~S67UHm+f3=E zH2MyhPLhO9r;^Z#Fr7+dnr_OV5@CWVp1uJl;1W$Ks1$uC!<5NprYVQYFlA9GFw>Mr zk^}S6S*C25jq7g7#&x&k;S831Ju%?ATe3_+mLQm73bYt3-7SGs5X#7wg))+a;zLOc z7QtenGeCt}`k)1>4>}AAR2WmiB2r;6)Dl7ugrT@FO9U!H-w`bmo03JPM2k#CK*{1D zQK8dvUU1Tn3Fid|xuRYSs4kPFhmLtMp;RyXO70%ZRC(k7dx8%TF zAy`iXEy2ukNqeJuljRD%Expjaa5?Plq~?|4W=!qSh$sZtEn}&*~-$|vc(il(wZci zoz2WQ@J!vzS%cmJqtTm8>#6$2_2{)^oAGN+t5F));$o=!#?`u7ZCb@-6<4k?EoL4A zSLwaJu^zu)_4vJ5OuB>{M54Oj!c#8i`Bjn|zT z=o-eQrlqhvx3&belvlY$yy`8YFUBq7EXB>C7V;W92QEX;L(QWvgLBby>5Fm8skv~v zX*TH`I2S#OKAqR-S)7@?p3gQd(6{E&XPM^XXG2Z@YWfZShAVCP4OiMSA6J@phcdit zl;+)|w50}FDX6IhY?iWAM%A#?#8rkhEOk&dNvq=OSXOY$%c&Kny7;P=x@6k4imt2D zOIa%6D??3}rgWoVim)PXj!+RdN2rFID^y^24xB5@ z5mu0`5UR5?8#h;&O``Qr=HGbt{f#~wH;*$H_cQe?@AW^!dFWqIztHEw8R!}G$-;Eh z&u|9$3}HUEIS)=3X6bGQeX=kWKbcPqQ#muy)8Q=i6k!?_38xA_kxfPYB)k`A>ih}! zL7c|?J^UcP7b{3Jg$mLvHs9esi0??W9x43GC!v4o?{FVEA8@a!fA}2r8h%9oh5C#B z5xzmcp+6S?M7@S@$lr+naho6EpW<8Hy`euAU*I3}$?OH^Z}gw=E&93ml6nYVh_A?A zpk9gN%Re*u zL|Rh%SuQD+kUoherE=(UB=6WOMN&>GMY51=I{aBK#YTB)pXKf zWs)k=01$EzI7_)=t+0k{4cjY)Rk(Ff58n;?#U|A#7!#A+hFF1M3JuItm9pxxh0z3 zoLhBpocB zc^CD^w}9{l@6TO4J1C_?D?a+M& zE?!8%r3e`?UPwm8^R>0Uoh(4gpr;7iV1Trpp2BP!dYjNu>L3M39i?O;mZT#|ELUz~ zo(wg;nV!V`+{`mzGkqgo(;Mg;*x1A~a|3>r5KUjjGga$bm_)-3aGelCMZsucJy|qr zz0g?NqH{g2ofJ#nSZYVsM2cazF>Hcw&!i*OUTTDE3>!;Lq*mnZ(5+x6zWesvi;k#P zQX6z9stvj|>_oL@+DYn6wT2z2E}YI%S9V&GHG-}1ttEfxPu>!?meS;|^i-H8?~qgF zG`XeJmShJiUG_t_VFz@_pMIfhA$ zT%XOwxTW%960Mh)7V(#F-i>BbKkDu`CbLk#!e8azP(R93;Z$5{bv{XH z^*3GDz|~L}uwPpJRW75Jfm7vDY7MotT8b)zs>!^RS{YRtU4y)gS{7XuR~B88nktth zsX|tlRAW_K9j>g2u0vKwUBUOfoLV8*!qruya4WdK%jGD!Hq$z4Ewwh2DAJWAE9p_F zb?9~U#kf_}I#^q6PF4%nR#%Zk%gxnj`eJ6Q;c6a@)#x=;G+ZsOCy9aerPcVgBx`Y- z;TpJ}zKNNZY{G4loAcb*2se?ek+*Qxa7!DQY=#@@8&F%|Hrxg|fu5j0`!|rrqLXmx zR1(v8{0363Cz7O7iRgHkPG#`>l@8OU{Pb zxbA8;uDhCtGpPA`V!(A*v*aK(2&Tw^szL3p22w#NBU={As0#dn(Wr(}2Bx7O7nrsrD2)!rn%V6L?{Jy7k54~D%+ zdZ|0DIo4e3PHRuK3&~EBF6{JR9?19FgVPb+6Lvudsokg)xf{9@Sr2?CH2|ft6Rs0XIc4~Xr9+zNkk4vz2#${Q% z=t&kX!P-tuv?fA7HQt(KO|ZsOiKuM0c2e0SsrXcqEbA^Fn`|DVov2i6I(iqCj!uKS zs5GX#ta(%#%%So*dDh+R>>!JWsrWQ&Cd?$?0n@Bu_TBVQ7-kQ#huXvJJFFQbA*ep~ z6!Z?RO@U$dOlxnlFne!%FLZ{r7b=t4c60!l#tdAFbsG$@Z>Pswlkq7~(@FGr?x)sc zNs`cUl%E=h-b9)VW6^Qe&2TerBaDNa=vz^K>PEPgWCPg-wl`T<;kLpJdiPVC@pv`k zXS<4YHD{}}nOa{@Ytb92tMLs{4artp8>$V^4RE#8dZ_xa0lF@|F0Z8Z*lD1y;r3Ts z*I4VR)tS~KuTItgR-&r#3S0@6f|bdut1GRg)bhAWYBlENVI_41c{R9_US6$;o?~5M z)mRNzN-alPir00mS0E{ms=%}&EUSJ{%AqT$bFF37kIDz7EU*3_$v!C+*!!S-Qsy%K zq`YVL5q?xks_&I|xOdDxkd#zQa7yxy@h91P}#f^0)9c*%UTQ zsIQgD%%;kdsUP{1+GIEu{vbz^Pew<=Ncn%b*UA+7Sa~9TEPuk&`XrLq%Kzw*_(|wV z@*BR&YvqkHQ65e5hGaC`BbiTxnjS@;z@HCC$sOPuf6p1ipCG>^ z8zFy5X~{$J0e=VafIp3Xi5tTCUVb3n($lN-yW$Z19n>ANA@UvZHu^U1s(2H13*IKb zEq=vq4w1i-Z;F>lz9PBA&JE^Q`TLR^ob%|L@DlpEcm-a--9TLsi%}Xc;EKg_xO42C zM_&;yv+WhMeuaLWzmf6scQ#)Brlx@TWwC(WV(~MS z^g%*DUAyUn`1_!KRFSzK(|$r5^~)9_8OOX!^KW7G$`OTa!>S|6W4iUr`8j5y$^f9121N zW#L~|L_h^?L>cJ{G@uQ15vNiH7$Jnyd%_5uK`^7tbP;ETR_>FPpN2+Nuu*1c73^eI zlwBwkJv!~ULVms;e$JQ0LXJ&1$xpjbJjt`FELjoitmu?4 z>O714T)sr^ls_kP%4bBE?1INc2Z>X5P%hLLY<)$2K{5b8faG)eYo5Db@EraMH9#JO z{+b$u9tgjt1~UCx{)QR|2gv>D4mbceP#%mLtnYjy4`p*Gzh^_445J3aq4IYm!{KQ3 zF!@{fE$*K3E$*K39qy$vT2Ef$?kU6M`^tSdSiY;gRPHHvsr#r`Y`vjgkvzdaA$h6% z#cRYXUMt?9o+!`Ie^JlSPvKwGQ>K3@e^XE4pVV8Xk8yY56Z})<1?mO;E$$!c1$;~W z3;*Rc?+5F@xF4+l;eN3Gqx@+75xzkGO7^Su6FZZwKafr)(bC_@=2E|r{EYvZsKF73IFFivo(?C&pGjs|=UZp9KM&5+^&H%6-Vx^DW>{yjH;X>ox`b>A z?;0!6^Q{Ze%W$);i&3-jT3<@G1hv$ef?m~^lQkapm+M1Z{$sy%GaqyxGWJFU^3sMhF~ zun}xU(%RmcoldZ&-CuXD>5c4u_zt99P;JpIp+By(y({GpJKzFgcfMu^RCkW{`KG(Q z2fYu~104kWP(kQG*oO+|^HLueXb;w15IqDR0VC`tD%@_Mf?Z99NWFy=-W^mxoR65+q@qf|2bm4$*5$s#uttcj;GWMN3!=Nd`i7! zCy7}yd`a@s@yzjr{>+i&eXP5ej>qi8GmqtajpwAGli*`VJV^o-Y)>FhB#Xx}g`^|YtLG;bGsH?lN*H>O=- znztK0&D+(U&Ml;Q(>YyvyB*F>*#BaNASAin&UD`<2CY!>^(w1)Op=; zg>&6;(Q%37GQ5m`==g)JXVf1gcky>o4;|0R{@_t~hPvyxkA60EBKiXAwBr=nDYlCohj7L4l-@5o&ZCPRhdIUQ z!`|~;b(lv-dt?vu=p80K=Ez4M@#a%Uy$9Jj439C%rypkLnB%zPp!YcaFzN`mc^Dq_ z9w5ty2fatM4F`&Th}lu{y-bdx4`{n^ulEqi0eFz<9_D+!`*Hc+-MD;7bN%xVowYT8atOd`~-QE`V=IG|Q-QMQ*JzhV1Gh8F+hih)HkE&0y$6MdN&)dk} z6yJ!~Wv$m?(iAp>P3#S+C~HG>U9zV5y7t;AjdgJis3>b~UDdYNVp5Ci>)0zXZvboQ zJ<7VAcb4V67c9_KWoFB*m0)H20_!5O%J@Z07sAT+Mf3%{qb;On!OHf9)++WYa28ip zMpd!TvR35wtJte@s@OGM)n1LNXfKPdX0Hyb^YyFZ%fK>ZrO_2(8F~fOENf|4fiufG zlXumb-2OXTY5Y{(Pqt1aeQ&E^pGjW9{@ym#`V*7)wwd&))@ks)?I-$V>lFM{IE`eQ z^@Hu5?Y-@TZHhILStaMBT+N!I7eLp{Aqf2@qa|AG30Y=rd> z z$bQG)P_Cgg-oV|a2FurUbxpa-2XHDnH{B;5pJ_&TZv0*{i1x zdVjeX-w)M~tXSzM_eJ-`Ib;vY3;UAymCtjV#mafbBU?$%lUUhtGk5TrSo;q?%4iR? zqFu6`IwsoD3Yi+ZVQ;w??8Q77-3Ruf z2cyC`eb^0_dy;h~3xhrBCVVI=ly1gZs8DF81SoLt5Anx23siB36pMUVISfP5XUNVd zR(1|5he!{SXz5w9^VC_ALVO{~8RY_x;#nTe^Qc1Q6#4>n3Vjk@piVNqpj@O*!a}8h zeh?PoPAWyHB7Ntga*54LJl8HUxl9$oOUg}>tMC^3vT_Ap!40rp!40t9#0|6F(vxAh z0oKdPKMN$Btlv>z!6DW!>HXml+*j72sG<7Kch=Etj^=lLG?VYCp>VWyBFR`7iT>U?29Ci! zv5mn!u}#GNV~f<2e{fH1-&>#Bp2DHl$F_fLPi&8=r>K9~`au0l@*4k|jfhObH9*#2YxBmC3$R(Egc@9>|fx3&^?t(UOB!iqdvB86 z^pAQ{<9-qG1eQGYS>M(LNu?xHiz^sSW7$ zFrHeEj)w760-v|zVYF+L?$*;|@rf|el|m)BlBi8E(UnS)0@Kh*u4I^u>)=Vob?~I( z+I!OUq&=>KC&|^x(+O^J`Fq-XI(Yo4PNy;Z`pg@`R(jv$+Q`p*BR`onx@yF1qpLn_RCiqsNUGjwH71y~VQrZ%ALAQc!(SDv5R6W?-(~_(?s--8)*G6YcT&S-td6+MhEX>!!)5q5b*7Nix z3G?-)`k=bA)s5;-5`qsQ3H1f?)9=os&EVJE65r-yIU z#1Nl_tTzn72m8L8*n=81(E@{gBT(N>90o^B984cU{y&nzsLv;w&=#&WarFq&kz^xa zB>I1FB;DkjjGlzk_`ivhNqle;<(t^sXXI)V)O0w#H}_NPQ<#RMBdB_w2r@IN5l$hG z@EJ%9I1xrbGhIT}^N3I)agn*$Hv0se1YLTs=c(%v@cg4SSl3eqtKq3mRvy+MtLZ6+Dn}wPQ+?$< z)$sg>2l%6g;w$H|`l@-#kW`1|xT-4iYM%G*GU!UU@_g+|oQj?$u45)icBO!9B}08$XNJWv&0j zWHy`we{;>G_Bv*wr<2XbPj^j2X`GJxh1%uA za!5!>fJBA~qqS;VJFK>EcdKpPdyhK6i37!fD2fUyIC1Yi-|L+3|9h_IzVGKbVI(HV z_coHbW4Efdpts=Gsy3lE!!6`nR32{A9qWnRq*_7ZAz8uB2Igyd<=ennirxfQpx3Kb zQ)}P`)iSaTsAZ}pD2dB(E2%YTNi9(=X0n(om#Y58t%Qr^zDBi*SM617{!RK1XC+A` z$vIxxD|v1I2S1l&F8v?WJoG$zx%w>gN;r>vp6Xw2;U9QbJzIA3RI}NsU|!BoLKU1U z^jSDtRY7u^dZs*0euk_9e@1-+CGiaICiP5tLsmD`*O^@B$|`j=^PBLx+@C3*@-yC3 zex|D?t>N5MKULn7)0^~%${PFw)B~~_^#kR7^nKh-XrMc-E5ppq3g&{xUs;IAq#qaRo)S`-F3)zD3fD!dV8B&$*y6#`noX%u>t0Se@T;vBbG zr97w9E7T)678xU}7=?<7 ziYsFkVayYtO76!ZOZnSPDSs0QBMs*yC`uy_$mt&Xp~!H2395uFTu~Bv5PcB0C$boI z03IYi7#YEBhAScz#gV&6B1m?zv!D4M{)V=nvmIRwccJ%17Ez-jiqJdA_TzU%ZbM1j zf!j@uir6NrZIOjc3b}H7k8A)OOg1EtcGJ`w%V-nh>6 z-mo`G4-zkQ54etx=ndD?dqng?FN|ClDbX9(Bcdl<7}<;7BceO(4119D`&gat&c8lmr))`9b&oD`ML3QS*z=09#aK3P0#KN%UOqanPp$o$n(-*R_IBYda;$qw?X3Np5$kyPO zq8Fjopw@-0z^#F+=xb3@vIeylwVsc%p6(m58NHU;j2?{}&F@DxlWY##z}d`iUsm8G zy(R2Fe*5wteTS?zlKsbYL)b==P3Vo(CUgPZNEI;M7`BxvfIGsr(+lAaTtV32(Cw78 zvo&lbT*+rz7`BahA-^-)#yJ=k61pvHG<)0OV01`m01OBn9XbjX0!PzF$^T#KVe~-C zpKKVE)L>bUL=EG84WvGhY$WuDBSME#YsU`d-5iF}N5VnmgP8lGhrmH}U;H56N5WT5 z2H?Cx2jB*9TaxaF^5Q)vr0z%74-N?3%2($Xx{|NXkHkmTe)N89_J{q^E5m%~-n>^u ze{}!QReTTn<2v#Fcb$Vi4(bFuqdTBG2X%p6g1VzR1a(DqhVz2E;<^NRk#~o^gI4iw zab6@{gSx?P=(+673!WR?jcjhP7uj6iRn9AD4%s~3gKic5O4L=}5BoZGmG{@a%6n$t z;C+Iw^4>nzQPoiw(Ko1z=o)x~szG0X7kH=d8j_l*o17ZlHJqd`N8RQ<#&65X&8S

-xHQTg1? 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Š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 BqvZeq diff --git a/3rdparty/bgfx/examples/runtime/meshes/unit_sphere.bin b/3rdparty/bgfx/examples/runtime/meshes/unit_sphere.bin new file mode 100644 index 0000000000000000000000000000000000000000..1ffc27f623fa63af1daf36f5f934c87770d2e736 GIT binary patch literal 6513 zcmcJUdz4pI7016AB0&#{P;?-Pf*8%RAc1o30Td@90SyH#L*gM)0+VK#sgoEwC{dPF zg4Af3V`4+0naMdN)5Aw4y|FSYiozbYR{tP>*xvW&z3X#a{Qhj#n#cOgp6@+ppS}0l z`_6gOM)eau`l~Z^t+_Nwo#m(f9PH=v^NAboYCAN4ak^=LZ{dG3;+g5;>|+PV`_>LL zTj`R1gTtJWcNX_9oM84Z{^$%x3^&$KFX?aJUZx`&KRo+_oj=Zg`@o*I>FYbv)#r8> z&+gt^T;8`J?KpL7LH^YFW25u=&p)5>*~R2=oUby8QRLq4Q$ zLAZU>fbzNIjRiH<(>3pZvjVH$?aIX!GCo^B+C!z==I^>iUk*w`pC` zXTG?&Wp>6J>-Vpn89)Bul61|%edYe1e0Xts+}5*VZg(;6+S@oJS`N@x%NB>2H~YJZZ$Z;{;AQ&=1p9*1Ku*i+oGtTjx0dQ`A; z_q+}sKjfBQUQdG84RTvgaviT52WR~!_AYG=oo5d7c#am&!Q+|S^2_T_@VZ0}on-YS zS^WuCf1>4=$8)(ia_B^I>?>{DF|uv#lGd=<;u-77IQA83Z|5E?zsgd*bHU_rkF96I zqV@>?L~^T3!RlDK&Su=|QepKlSUvRmQ~A^DRn4o|^zY=f|oFcY@tJk>^6reUVfDvE!!1{v9*JmPdwW=S5C^a-J{ZDlx9e zsnd*)@9v2^U#J{ca_W=gyaMtrAPzH59omy4Ukc_6InRrnI>;Bl zPwRR}PJMFPqYe~J>Pfav+OuxkeI4w6FYJEL@|~ReX0M;1L8C5 zf5;JsnLTxoM_Ip0j=U(y?Yv4~cz=uh&FTg@b;z+E?;8v2dkgD(6a1EO>?`Bcv2!Ub zzoO@t`Lmi+JdbKleRA5H|Eqb&>qa#Pc^#-Zb;xZ!byMuYfc?X#H?ub6m1HF3Wdv>XTE)dk2p#&oAq*yf5|l zPLUkv;xT(zd+Yah*&LUAjzb*!99MJdkn_1VzeJmJlg+tVzLQg*oI2L;MVr5p&tKLD z*6**#k#~`t_SWwun=6ygm8=`&)FE%8IOM=$QjQzzf|ubeXgwIlbmr#P92-4g3VuLPC>`#tiy4i*AB;h?kj8_EOi=nsqvnZ z9Qu)*{y}_Zb&MQw=yOmN=YcxNmw@LMaQa; zKu2kyUaCPFY_F4I$kXrp^1x#3$;ie&|)poQZ3U( zTCR(=LLbzJbct4Kl~$`mAJ(P1OdrwZ`l#0E3Vlph>f^dfSL+&e>Jz$FYjvGIsdc(u zH>gYNb)#<527O8!^=W-ZH|w+doNm!3eO_PC7j>&PYm08vR((ldR<~}~9r}v4=}vuB zcd18r>ub74+jXzLu3qiXH}p;I)P1^N-_is6wjR`X^pJMh3(2JK>U(-vyVa-f>j(Ow zexyhAs2sEMtk+7eyiW<_j*cy(9`;({-i%^pZ=o1 tYQO%bzw3aW(LeN0{Y(GWoO5Q_+0I(Ea%uG+kLrI9)%WVA{(t@xX%M9sPVgu-rYnI6bpFxN^{Z z^YQf0d}Dp%^Vug)M3%dE7LUWMOC-fBIf}hQwbeB)JyOH_$##-8z0cw2Ky(@apKFqhuTUSFMlMU2!`thqiy8Jp0<;IG)jFn z`F_1Dtd+omMsV|j?B8H=gy?GNe9vJe|H`%si+8l2?IaMVYTLyV1cPb}bI?u#7?PEI z6E|O0ojpPf5&>r!tsuv5>WDG7J!Kxc?wl^-Z0ZU(hDXh3NNW!3-dUG3l7qyPDmCrDI^#|I TcUp)NLWC&7mZJDiBR|R?U8z~r diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_id.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_id.bin new file mode 100644 index 0000000000000000000000000000000000000000..88fffd64461351e890ac09acfb4ba8213be98c88 GIT binary patch literal 387 zcmXwzJxc>Y5Qb;tC9x0;irA#MAE2#vCg*)52bWvfU1F@#C?uebU>ic}U?Eso*oc++ zL;eEmU~A+1?j-}y-0ZWnbCcPA@cN$qDG8p&)7t|PQ8H1<=rTTRf89st>)GkU@%8ZM zqfoe;Ano9L0=~f>&bjTCpQ!6#7t8^J{p@AzgQc&kM9+KrmrD6eUjt3>2H3-(CtJ@R z23-K??QndhZSHbiN~{ZQq|{~*72?uSthGsGwbIy?yK^pg4Z$`zi@}{R%SEP_I=r#{ w#5lMvI085LW%eARs^;8bjo+~4&u1cy$4#9rLhqR1>x+$7U7C64!ar}xKMnmXb^rhX literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_picking_shaded.bin new file mode 100644 index 0000000000000000000000000000000000000000..efa26898d422dc88b6391d902cce756a92603f05 GIT binary patch literal 1200 zcmZ`%O-LJ25FR($#Gqu!%|apcrW6VyB0`dl`O!ek%5D&$6-z4XtgXyd zSHDgkzrQ{D_Uh*3``ia=W z4i0>1rFNc8tp&Imd(o&By*ia(zTQDixKInWk@SFH!r!`*>bh>+L)X-!YwB5twCjS4 zmB@yO!#sBBJio9;-i>u@tYLhb%UaG1_+7hxlBi>^t$P^zvlkK;ri}$|E{ntSL zq{y)HCvY!fS~uWfBT<=J$YK42jV33*P(S*^V(1-Jz#*@ZF?`3vrq80EeX~dzUc)iE zrtZy2XJOBhXUILbcd}TddQg{{vpHZr9a;;WBb;Zf4YOkWk~L>Kp2+y?o#M{#&0_Za zQ;~9!@16Cu?@Tj~(M$ zCC>gK4(Gvo&X2Y{WMc2X#M^P6yt{JrJ)tR^#2gRY!>f`yN`-Ui7EE8Qod&jLF*C2I JTr$6x`~$hKWZnP( literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..5c633734433b2dda2f0169421a3f38802b9bcacb GIT binary patch literal 3396 zcmdT`y-!n76hD2GQj3w=XfzH|9gRapqsA{DS{^b$2}Of06~zbf+F1xwf>Dk>|8iEiIKRi!%$k7|r%nOSj4k#aHm zV>8RSSR9h4JM+^QFZCz;Kb<=CZT!ub9z}nI{tA7xI5Iu~8lWf9 zPouLDPb^y>dftrehjKHILGfy7qEH;28ZC^=)bRABLSZs5>+9qttWkqlt}~2Vw&zevVunR_Y+_HaMGhA|u)O9l zfYMeJ6WF;Rq=qR0N9+=W_(*-D*@arkwHDoIElZ$jCq#O5{*1%LLOZ9iF?T;U=E~Se z8QV?h5tG<$X%K?3Ed*hgAjHQsjnC{MlRInqB9*QWff`?KEh&fn6zjvWt}!uJyRENi zmz`6bug~}rE;hwMl%zd_gRYO~dh9|ySZgCktx3Q3SqdLJw_Ar7&+=!r11^!%!x?G# zV!UR~<(2@mUCiB(GiHNz@ok6e0RT1If&H5Yj|_(C!(IZ4G=J zWnK;XTIYh02!RdL4HJZhY>^$qT2hyB1tC7xFEOS?F1B-6gNtr_z~NJl`Zg3FgjV1G z(niMVwA%3PA8~%vem~Br%D8?S2hRrMPSvx<%?^CIA2uO(``5^WkmT(~v&%*lx9fz7 zMojcUdpv99%){3sBE5&5jCs*!0{0O2B+nYD#z-vVqW(whflgRJdepA^)OvJ|pKEFI z7}WTEzdwqxlV9J?pNU^w{Yjhk_x=9+@td>6JpRY}H}($q(C^+qx^H>E>m3+`VC?vI4C^L54KMr{F i-$qjgm$h*v>RF1AXY+rEx@^pI&EYi93+C7FrF;jHBNPMx literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_gbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..71c20d5bfc5869456b808aeadbdc3d5943291a6f GIT binary patch literal 369 zcmZ<@_F#E@C?=JWfvq&YBr~r>h=GBDks*Z9CBn%$@>F{Bi|Cf$3EvV8kA*kbF#_d6 zfCMv;)&b%MAU*@cp26;ZK0ulYh&h1R0*FBXq#mRe1o(m21R=C- zpa!6r0}v|!aU=r+i(4Ov1<{)%z`$H2AOJQe6==*S1p%-ej14m1jDdl*2rBL-1W^kT cYl4a~I)Jr+)Uko|gY>}c0Lj>atrB1W0B<5J!2kdN literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_lbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..ae81827f81bc6dfd7ad357f0261896516b9e531c GIT binary patch literal 1226 zcmZuwJ#Q015FI;*ZHyG3ED9=gKY$`w2v7>RVEYpDk+WZOuM`(>{gw;P>CyeifBdEAmty<3grR!yccYLWwUux0?!mDGd*IXX+N<$6b^ z)AmZObqX+q{Ws*5h!=edpov_Ath4-vZ_cVSfA<#VHMI7%wTm+`p0@(=D!#>O+w^5_ zgtO{1=azvBBocXC>6yF`5^Q>PsB$BKUTA1ZGS(9^- z$vJXgpCOh!{+9g7lEbxUazg&1`ly}$XGOLnkZb*}7Z zr19BH{eisYhC3*ZdY?Gy7zN8Ra8AVx!LM{W literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_rsm_shadow.bin new file mode 100644 index 0000000000000000000000000000000000000000..faf21f024b81212e9218d3c39c2cef908ca56423 GIT binary patch literal 317 zcmZ<@_F#E@C?=JWfvq&YBr~r>h=GBDkwJmcCBn(M_4tbqclP!eX#AHx=kjz$H6u_? z0Z1?dX&oSL0OBn`>>2Ft=L4jffS3b_Er1vVKE2c>4P>`1uFjGBB{X^(g>Z5Ob0Q7?_;|1i)sd0-g3rK>#dg#=yW<1ZBH5DS*X51W3FIDy}6U Q(BKFZ1G&czObIXm08Aq)4*&oF literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/fs_sms_shadow.bin index 2477d864d9a4d3aea70f3f3593005f0e3bca80d9..2ffc6baeefc6b48e21b978e723207dd6be1fdc29 100644 GIT binary patch delta 105 zcmaFDIEB&DE!cyF0SsCgTq2yDC08WIc2wPNbYT4P(y>=)5hGBp1&En}SOh($ literal 228 zcmZ<@_F!QEgDVU!5l+sEk+;>CF5O>wSEp#9rt9)Aj6k_7K+FupIzXHN#8ZISGuYh^ z#0SZ90I>oPg8+yRQVRn7KpY$vAK)MC8RF^h$Ka1c4@fPVo)E_%ch?Yx)vJR&T!Jis j@(w`E2gIpBrJoc8fGh?EGoaNlHj@KL1QpmpoWlSB1a=(p diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_ibl_skybox.bin index 8c29510aa1b289a68975f9ee586c98da3e5bfac4..1b32e1c65525fc569932fa2b1e1eeeb933500c8d 100644 GIT binary patch delta 371 zcmX@hx{NJ4EZBqPK(3=HGXqy?d|75{c~EL{2@?YY10w@}X?$*eN@`9RP&A+@KZ}Jy zfPsa9qcpxCu_!UOn29HVfrsG^lS_n?vu|)sQ=eR;vG(DvorgpEr!oQ!xHHk~u;d>g z%K>OsJy0N$fq})XPXWkcVBnan#uzOLvd4&lf$I~{WDtPKGESbwsLsed`4FRiJqu8r zkAZ?%`46KmY77PsRFg09IwTuo74CjQe*a7X}KLizH6A=Kqhk=0!D2D_< zJO?Ha2?q`P85kOL_M0&^gq{ delta 281 zcmZ3+c9zvEEZBqPK(3=H69a!~d~SY9YED>YYI#6WeijP@0|N^KM`?UPVo_plF%ypi z0}sO#CYJ~&=P3`qpLY;(kqpvk4btBp=)ee6I%Q(?VaY8(mIDJLLoQGt5~$s+PXWkc zU|^qY&KNBTQf9=!!1aki04xfVWthC0QJs-#@?}Q-WM+sOej}I~0Rf$+WYNKhI|mR5E!jlOiMQ6CEG%tB@SMFn@qw4jX7=1UXI|@j`PljO^hZ>>cPrbq)#{eNQQeP;NKBGH zkokITGbS0J@!d*eW2a$BQzFue<`$>27b~^Tz2&!u!P)1l?bng(28x9FC&(uL{8tm~F@a)0mT zbLA_LGf=(*ZwYkgBn3~T6IOv_y|*`bSD!VkA?`h8aK2X&$9MJX@L3aa`m9TR*0+wf zc#m1z?_zZPe#6)NoZqNOm)?Cy4p2Lva#a_rlrgML`_g-2 z+Jj@6e5kvdaX}5?ytr#CBl6NJrq!_hG-^xM!ycVJ!)F{0pK4;!ljhU6nfZ{*Jbs7a zI)^C+1{nK(RP7^!^DeHKZMckM51hI3>ECvRn$dP&w$|F-$De$9uR1|K-A6c|AfMI{ e@`HT3k1!5gn{{!gI$PD{H#5OD@ufuMRK5USd~gQ< literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..2278290e567c5229e244a0a508a5b74e0077bac0 GIT binary patch literal 518 zcmWFw_F&1Ev$J7j;4h8O%}+_q3Cm0^4=BpdVqsulU}3n!=n~=N%$-%VuIt0mU7^ay z(~lm1*~|!(y8|ScfwT?~HvsVsAodJ)_wxbLOhC*5#1=pd10b~^z|PLV;0R%YNsu_m zJZ2yxz(3eC#M9r8A;dMp+223Ng<R=C-pg%yh4nW)OfpjF$yKa37Ko-c~3=Hu=V~PX>zY5S?5uxg$jqf;M7tSX)_%g`OJD1Y$1a^iWjNc=&-52#AeEJQc;l!pdKe z#?C(=SXufDY^-d9So`L7Cn3Rw+1+{X&D+_%3xkUJ^|l)sWSzB6+xyXp=@50PptJBO zI&XB^$0m_&(vMNzT3L;E?murf_a+{{XYx<)b}2;!hA5477IA_2KvaXZdIc*evJvwL z8LZ`DSwu@}o6L-}ALDhuxxQSZh96Wns(zh(_|?FT`>|g93fPwsG6sHVAP8FnFYWyt zRLae17`iz17Dd}cruX0^<=2>7u7rYBRi}TpW%d6V|bTRne)Tj=SEj>xC_+Ej8Pobmx@k+|ua6$0(hd~Bs z)O{U>x(nBGUtvboda=X81mhlG#QRR+%w+|$RW0iVJ?MIVt6olfrqznsilx@joL=#L tGr}!s4c^)k-`~QhKDoD}-%5KJE)G?{9{+wEWVo2dutmNezGjMC`wysFQt$u( literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_lbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..be1624f7796662d7914504b2ecbd9fad6e1d8e31 GIT binary patch literal 1105 zcmaJ=zl#%55T4y+lUxkRl1i)=OA&-CL@YF3;+lYW8?tvHim-QLG$(oqyCmskIjz;s z|G*}#jUuQB*I3y2AJ|--!rJfK_g*~laLDYN-}AkhmwwpJfBXJs?nrqW&Gv`$ZajXR z7m>VFrcp8(4dY?w;NjSohFDUaM*9b|&DkUz?L8RJ^U_7!nIuXwb#rgxSvJC)B#M)# zo|S`qoNEm>nlI`fU-dSAE|c1qcb7hU?=5sV&WYeB7s0#WAK*@SYl}MlC9nrJ#8^_X zDAEnW&UPo*lEq>XAm<6}^fRXmCb5ResX@L+qbAzvr~N+I29s!~OncamR&AQW?Vu;y zHwVoi=(S`Kwp+alf;p70h`ob>`7b?4B5UBgEVb)qwT#T#gR>aeMA>(C{^;~kkB}F; zE;NxxsJZl%OsqrrsGpRHbp*&f*G1fQQSpB2!NM)V*}#WT6;l?wfsdr06jK(t0_aQR zvwq)k(;Jyp#N4X@9X-m7AsM>^xnOKnmERVrm|7>X_|Mec&1|d&E1g~!YtHHtkB_>V zN~`|bW^i!#RXmT_V6j!sui7fNc&L5n^vV9?`tuL}!^_8Lwz?jkM#OA{+%pKUdwNK&3F6& literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx11/vs_rsm_shadow.bin new file mode 100644 index 0000000000000000000000000000000000000000..1a351d8cd6167e8c4a028ecee6edb9d5e4048b17 GIT binary patch literal 756 zcmZuuy-LGS6h2MUCbVFR;NsK=aB>m{ty{ zbrXF8@d1h;zCaOYzmt1UYsCvE_uljU-0$9mfoFca?8OG<&!f}UetZ%h#TOT>Z=AmUvCeey7o|DgW+B%OrtGta80KWdD$lx7y zo+hR4!dlK1W|Y?L7MYmzIOC&u_f(&;tn_T9W!^Z0*7IBSbJ{blW_+!#Xbp|&8UHsU X*s|u}tu1-~Z)cjn!V&RDQq-XzhdWX3 literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_ibl_mesh.bin index 74ad610bbf11ac98139d75f112d016875fa9cd4a..337a86b34cdef7ce7eac4a68a4a2d4da5750834e 100644 GIT binary patch literal 2027 zcmZWp&ud&&6#m|infKaEW@0GfLU5p6=qAii5kcED4M>H$u z-4q3&&OP6EzjN++_r0Av`Modx zc{#(Sqsj5!=i4Wr?2Qs2L2v25Kb?+}grV|ea=1I)eRQHt%BlqpjPo z0{Dqbv5Y_R@ip)xe?I0?EJ2F<{MFwvSH?(!E*@J1_=dkJ7wO@-^tY6O^Ya{iLr|do zE%zvq+yC2d^=dD%({ke$`0!|QeKNua4?mqA93AW*4`09c#_-PFox8)G2fO$8ro-)n zM~4qTqcI+Bj5fxj(RjQue(U<%Z{qwzpwq*^U;gvzFI+bOw@Jz^#a9^zhFkP+aozmm z_uehV`xf_%Dc8LNJbR}2fboO%FMnn(_V<6|J~kC!V_g3C-~F}u)vqT!19*+?VILh( z%w>0wx+L1%{ubrHD=s^sU0T}{=G1eo!uAs4;X1b0H#@<6evNzNqF>L2OYn+t^q)Ht zW+}we*pkn2kbT<2!skGq63cjtITe3qu}ZO+vtl{GQ=j3fyTC0NuYHQYopc0T?N;Ks zta+B9n#s?pL+4~z%!00hc0D84Dd!^1d1lYJl-uJO3$80?;jEH&i zB!=-cWnC$A+I-o4EY8~eF7p-RnT~TE>#m>3?{Y~)hK%^O=90P4ndE5BCRWpc9PDjb z`vLR2p{7}|Q|?vK&S@`Z(y9K6e-(}Cj2Q6}Z}`(zU(e*m#;fWsI#4`;6twCmR+c2hGm<}<*we?C5IlXF>DiZRd0*iD(6^;t2EU;n?kD8SuS|b<6DrrxMi-GXQ>L;(S4q>&5$Qb644upebjr-jWwJN%O)qfioyB zzFWo@H7#pwHLCC83pIqdDexD>KWE=6Px1WMyuqt3&X8+kvRCY0YP(nUif_ddqkZ*_ z->ui%6wayXU+{`^K+IrStIpOt5zf(fEqjd|YZ2G#*LSx@EVc1F)%&ZNkga#Wigr#r U_N5Hm!s#7CS+d6q-!uUJ1BZuz7XSbN literal 1963 zcmZWpJ7^qN6g~6V*^zgpRkkoG3|^3mq!GK=gg|0TvcTBj6tOapZc$>12xKHy5(Lsb z5qC0V11^$OBXG59+_^9Y;UZO12lvysH-ABw-+kx3+naad`#-$9 z9AWNoc(ncf#_>1X{QwBip6Yi;qka(3lpYTcwnkeI54&xkjlCwKvizs~92;M)-?{?e zIhSk^Khp6t@Qk0Yxnv6v;sL+<9dSjp1W546EWi_fLoUK2=hAQ52F}l8ELa8`wBOXn z7U}+lBl;k98OU+jK6+CSXiIqH3M|Kr}Bdz<%qo8N6c*dFyZ_8%VX z?ok-@SNbc1et$4n8GLf>)9X0@5@@v1$uIr2^pfia;8qE_F8e&~KyRJ;8rRJ~|7fqt zzF_v8HpRNnfQt*+JGAe2e|*7M?CktbKUQU5q+R-NzrJ4m>D4i709QF4&d~wQvE&9q z7gRFczaZ`8vP%vqFPq$Cd@*it+>E81F{j95AojZOikvn#vrSxB*@O`?PySnm(UH#u zX_0r#7tn`OFRP!dl4Ht~)4Hy5=27MgvmEDT%c*3`5nia?+U$Xwi6W~Hmrna`vDYk* z@Kp8O661l?u~x3!2oe27uG$e6T*R0;jC1mkdv0;R<%#wa;SDjtk*35c##+q^i!s8p ze8~aEW5tH}Q1fE$-<$)Y7y-ZKNgEUEH6#{wTbd_1YceoqPH`ek#n5M~*6W=2b;Wdv z(LmEMR3pG!%7_x$8pP8~l%p8xE@6yx`4iJi({+YA1KDbSjEVN0`#ziOCo?W6W@gh~ z6jQim&PKSBTh%@io_)eImtM_6J)HX4C>AHgGd+MmU)s)uU+d%nd65}6YTJMPlQa3% zca!zWE8B<8Gxq&FR?p38->KuFic`!h&xY1p$NEOa+XR7nGp;5GDSO@~?2&UZ-U?f| zHE*jN<7$;t$(AF$SabI0P}sbeIWys0s^+Y763@gb&C&DEbE=-P;)UUT9~j?ev0cln z`A2yAGvlA?^Y66xc_5#!W-1#vvmWQ5`GS7wIwNonlH0tSny=TD?|I~N#s3L=n)#LE z^_cnMP4=EXF--4Qf6_DKvhK3vn#(>$HaOl7>q&QCcctdGf2Y)g=Putr#*52Y?)R*7 z(%mo2UfUGY;@ri1a)H~`y_-yP;i(FMGy;Z!W|Jw=OZX7BBHSmViW^PLZW?s!NO8VpI`Aa{0qTz zPjFz^-I--(9(elwF?%!U*D#Kn3}AQynv@^efxDSZ+W?kCrI8JF;|6#%II%`lx%Qsvfo}%KZM4r!H#w*Ai59^vZVAqXu*A@I m2B=m*oxv!9Vx+SEpkAui3WisygUT940dz}XOtV!;NuOWujVzb| literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_picking_shaded.bin new file mode 100644 index 0000000000000000000000000000000000000000..8c5005ca0088148a3b77c05df5014019d3ccd635 GIT binary patch literal 669 zcmY*XJxc>Y5Pf?lBt$f&jo^V6+Qd5)u}MUOk|Guw0~Uga9~e*~iT0OY;0am^3wH4z z*eKRo`v*?&CkTS;o82Vpal_5LeQ)N?a%;6p>gIO!3y3`o8S`z%P~KWz83!=Q5KKPy zxdH?~YwynO23T+Gx0>zd(YZgpIpbHVwW?n`-a9yK`Q_&6S>uFB7!-m+7zANh2p8rS z=W)LQq=CFrYSFqu%2v=B^fwZ+(bY@!tJ2H{t%K!`|BU7BAA<&KvNQ)yX|1QJ((Xy`Y!7J8*c4 ioNnay%y3r1FnW|4WSu9MJB`bohBL^?Qg5{V>wW-QkAE)! literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..28d904d898614f805a20cfc3d06a7323a1c9a600 GIT binary patch literal 2433 zcmcguOKTff6h3!mY)vFt29fSU>O~eU6f+_v1o}whnBqdbXdOf8Mm2F7D_9<(hm+-) zY_m|;O<}xf0@AX(Zc@mutNsXW`uqi@)9*WXu5?|y+m1cVJ>U7x``(K_-r0)Ms~^5! zmCB%fKRrzQi7{d*?LX)Z4-ykv>9F(gV3?QyQaorMrTy;SVPXVgZO|SZ?CqzIxA%I9 ziAWf=J4eUc$GyuSL{c5K)q1njZ<-i-2W$_YT!uj;wNbl2=-%$8qoZNdR6$uCl}4NvYVytt4l|zAT9XS8&Q;z2XTw8qsZbv55>GZs>`TWk=xk=KFy<-(Fhs9WBYP7HC zbeOPsv&GtmDyJ&FLHl|;k?qd?emY3M8m_(d+1qPdcX#ft?O;ni=&#*LyS>gK7OiAG zS#KpttF_*`asB4INa$0MrJAhf=*UMR*(-MD#W$Pp5w9zr-70Z>f4oI}#q!Bj4Ehg< zH-M+jr$2x<*S(4HE`fj@GUggKV~JODw>I87@YbQXj-tmIIh<${>NvW+=sHV)$jCjbXCAU8u&p{So(76M<^JY(pJGxk#2<7BIEKaXIJ z6?v>NjdEi611}6DhAdf4CS{%#jm;RyCG%>*+UCjHBCG{=ti|?VHCt9}qL`n11vq6R zQ6@6U8t9X)g>s=WpvHQZ)xl*u4!`GuB8f#JGucs~+&L{jWVmW)8M_v8-zFaKM z(dFgqVW+X|9xk#K+4|q=YRJQRtpBRZ&(+OGfJcnQTI*6E zKJO9}GNzj)V_vk!TugtDk?VTl_PWd6&xiZZ$*@8ENqKG~U9TV)>Nzvybb@>E^mF9u z&Nc2AoWI@a7m68j^yR%{c~$i9%j_&K0Ot>V7d+?R`m;IFA9LExtS^;Mm?QH*-ALbZ z0`zS|^W=V+jSbGU)mPL9&kpqg`bm8NJ$uf(mG>d_tdE$)l?=a4@)CniaGk~)vnWL5 EA7uy1r2qf` literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_gbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..7facc87fc7247afe35bcd71394f9d5f3cce40a3b GIT binary patch literal 238 zcmXwzJqp4=5QX2G_|pZf1%p^<6LyJ+oqr%HBBHSrf@s8m8cAaB5%dP>y@hA+26_(H zS;c|J%zVSVnUUw{&-)@^D4hH>Jfvj?FgyTF%D1dxIPVWC045~GXbjck3OJNFDMwPg zLsIc`!i_;Au778W9~0m9ImY2Cj*@7TnvGf0bX?Chz3p-x#O5&CAHy9Lf?M1YoC{%z uw%uvrHU;twMh2X_%IhChI~$;=w(3tLOxX=FVeyJ{BSM-;MLHj3mq*!$Y9#*lhJhae%5{T`f+#vpnuTqpB|rNlkV>5 zY&;m!N#b7IOX4_5ddbtxXHT$r1+-e|lzd`~whiQ8XEC9knehXf1 z&~ZMia;*DHzd+O}RYSZm^tl82CU0?#G_KYs5Apz2$$j$2c)cnV0~K*$Ypi+6o;U2d zaeaJ`n7uMhUmdIGhFYq8heV#Msd5ulrD8NO7}vZZIjUP;VdC+~Ns*3+w=YbbKJm8G zA2GI0n?dMujg}&E?Rtn^U7!#J}o s-nzZq)~LVP%Zk6&V%&_ literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/fs_rsm_shadow.bin new file mode 100644 index 0000000000000000000000000000000000000000..d93441c2f28c02f02845d7f4a819d656834f4e7d GIT binary patch literal 210 zcmZ<@_F#E@C?=JWfvq&YBr~r>h>?MTkzoe|1M~m?|Nbj6IEOeo$uKZ5_yaLW3@FV2 z;xkNSVDJD^20+XN#2|4CAO-=5NertQ8JL0MEMPg1ctLTzal8S8Z)S2)esO+UiGoIu zrh_GOD1rRm|kiBZ+|NlTs07AAaoB#j- literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_ibl_skybox.bin index 0c8d2ffaf25961f7f4962ab06b779e3a34765973..f408ee7868439fdf24f96893fbb4c4a9790fed6c 100644 GIT binary patch delta 295 zcmaFHe4m9gEZBqPK(3=H^F&Uydaly=vdq--pw#3NCPsD!Mg|!s2IhbN|NXaNa1L>F zl3`$A*bc-XF=ikI;xkNSVAuepB7m3)h*^L*1BgMO0*IM_A|SObAORql0>n%VAhQ`5 z7635_l*Z@gr=;eDP3$xgMYw=rH6u_bBTzr%#BJ^(91Q#m&IwtkcCa-0*1ORk-H#qVxX`)|PD9OCFC!@$7M4#XfaCLjgkGfZS) zXaG_!KnxON0pbuK27weHW&(;Z1L=Z^^PMODa}Z%?;9mgbIskR;-<)Y@?{=QgesU0F pg$ht35HU9}GCY~U&cLvMogs7qD^LI=#=!8Tft}&qg2`%3mH@cBBIf`A diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_picking_shaded.bin new file mode 100644 index 0000000000000000000000000000000000000000..9df3ff89fd73fbd9e225d8cc606c4b77221cf75a GIT binary patch literal 678 zcmYjNu}%U(6r8;~1jOWiz(h)I$XzgMhe}K+Fi{a=M~q;^sAmAR-NMoW3p-6NkqSP- zAJBiGpt80z0q5X$*Ic~NUM?;HgV->@FAd!X}^0-YvzkR%y3(SQj+UGqr;PwQwuT>0_ z9|=Dn@dnGhg`~j=C~f~^OFP5~z8;XI&Nx)4_V_mZlNzQ*kC}53XBlo_I38}xe(Brf z|7KYC(mPN9wp=SI-%4=2!NK-()n)Gemc6&Xac$Je>mg0iyedWB>pF literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..fe8592c138dd449fed38182df0fc8d75323178c5 GIT binary patch literal 323 zcmZ8dJ5Iwu5PkM8wJ#8bEhwO|c9jTGL@1CZMIuF*gwjI92%|(BIec0l!Q6nFT*^hx z5%b0fAu+R0GyCSVGrLH}+IKGp0ixG*?U&hVk!SC-!awT(&@chip*b`s7~Ni7cL3ZG z!Z8fF;{%w{SRy1eF(gF(wS=N-s?>_SZPQ+AG0h(ezx9tV=Je*wj3>#&Bv1FttS}?L z-sCGf&c-%&);brv^WH@tyW^kdN+7DlKLSc_(fVvHeEr9(nsG&rIr~pwUU5#Ih literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_gbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..3cc1c15e95a341f3275addf9bda8a2b76c1e469a GIT binary patch literal 501 zcmYjMyH3ME5FFbVuAuM_AmM@nnqVsk(eVgHiXZ_YsUk&)7-8hdDB;mioWu_}f8ZjO z`3NM$heU!;ppKb!9%6N)y`7ugo$It3>ie@B+R#tELDCOn zFAL7Bm=(LIUmc%p0C*#WvzesE7`qjYqgPC>c0Q13oNMMup=+^*lDtA)G`gbQkU1}`oX@x&0N6k-Wp`G$yJTCjCM#^lK zoLzEx$#JmsP37GoKi6pKOEr*bv@@B_9pu`kveK+`-XsIW*JLqUn>D@zIkmrLi@xW5 S^WEZ;{)|S>xp`I;?EVAo>SB=q literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_lbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..12579db146ce57ba02b0324375f5ba7b936f1396 GIT binary patch literal 908 zcmY*WJ#W)c6g}_RPMlC-iMdiemL;-PgxL5fLy;OO5MZ?`NYx-(M>a`TBNoPVg3$w0 zvv%szg^huQACSQ#BXiBU&yJirvEF^>o_p@O*Kdah_OIXH<_?@RO43tbSx~r>M(N4X z`*_|zn)pf+xjT)!!RZ2iSl8^w~Cm7IDEG9&*PyQ1Zz5k}S>em9aeE`C1SIUHmWzaLH3s+2;AP#{L*g z3;;!q{WF+&Xn1BuESL07uKcQJV_x!a=Wb7qrFfL?>)OpFP&u3UVAn0R(^k;_~P?Ui__=4vxnEF`b- tmvzvZ`6hPB-JDmn8?UU*QG2cQJnA$%5dX4g>1PqI`n#(Ry_F>^{{!mhu+snl literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/dx9/vs_rsm_shadow.bin new file mode 100644 index 0000000000000000000000000000000000000000..2d9ef91e8bb1b7da83aec9e4b3bedec3ccf89034 GIT binary patch literal 505 zcmYjMK}y3=5PeC0O`(fiKrl-MDG3#Esn$go6{@ja2~}*wN=r(scKeSIZ;(Y-^$>!1 zkbpgc>&7=up?ne`j} z0O!NIX);UhpZwj+J-^kC+J5wKJBX)#GZ{~YBPL-`59(nMgke2AY#bfn?Ez-YPVNPL MjAt&n)QbYZ4^9ndMF0Q* literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/gles/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/gles/fs_ibl_mesh.bin index 75c93b113e33b712fd13464a929a39ec346a301a..a4cd92a19047a1144619fe151af158e9daa8f715 100644 GIT binary patch delta 477 zcmdli{a$*44dc3vw!2wmOL7a!5{u#ujTE#LGz|3&6m%6}LdKetFS1EY4q%n_=28Fx zsB}?kT28!?CP+w20W49FU#_5mrrA(aN5NFj0HjP4s19bP3B=4@tb(B$5Q7x7fqF?c z-vWp6lNYc`@mW{{&4bx!G5G|m)#R6KLX$<<6h%!jy=kU7*@?~A$_yl<0rm<^tAP%} z6eLerg4h}wFjW?l*R$zPp2NhuS%ZBwi@YV+LvUG;g<#()D1gnL+{&Xj*?~vQ1S|+L osWiSIu_!UOINB^$uSyfF8)mdQx@Kk`3y@|pteVRwpW}H70CRYMwg3PC delta 386 zcmaDay;*vK4P((p+ubaVMX6~y@kR>T3K|-QdIk!*3J?KJ1ucbw{Bi{iE(IWfN|odm zlqD9$8yac?MRgQR^$avMH7B2E5udEfDr-Wlb_*oklP5As@Ee+21I>dOZa&$X&5F+g zS;%5?Gn*=}5zuikMW&PYvKcd)PX5Ry%V<8CpIr(_YO(81zRAKnxs**v6s8VYkJ;ph zoRXVU*;la`Sb+VjQ5s*6Sd^Gs9Bme>R|WJiOqUs|?-dj#FXORb1&74sdpu(Lnqck7 Vy33JtTVm+e2Wd5Ea^!zhaKNsaedbtq{^nY3RMj9)cvP5i~0jj7jOw=&`@Fm(J|Eb|opo zvd+hw_ulOC_2u^K`}xQ7-fldv&6-oO&tX^OyBgZJs{DY2&h&^U~KU2K`-WBpDBksFy`4ur<(@b zVsep+jKz8`8X+kXiWI46bPa(UK!v!D!6O|GAR*RhKe4CK#EjIPeJx5xe`IPZsJLHs Voam35FRxc5ljF!@?tl8e_X|6i_PGE6 literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/gles/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/gles/fs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..23364eb50e39782abbb199a065aacfa367afd04a GIT binary patch literal 7922 zcmb`MZExE)5XZBjzzX-pzCpp4_UgJ8A7lqzI}9y~4Om}w?**-K69cwo$PaN+^t8~fn^S8ebuAc6)O;N7%)zwc|@c)-x_PJOUrM+4$ zZ}0Z@>SnRs-|4GoyKHxt-xT*B^R2!!IAmn~ep&uZ&Ym8!<>vVDxP3yG)%eH#N#FSO zU|hUku6KWLj{2!*hpgPK|6CV`&0gR6~@tLz@wqKk+7e#q9 zeLXmAmS12UY?rUMt3}D*vua`CFxnTSC7P2Li=&Je~>?ov0&Que> zWYxUZ_^};6?Ytj-+eH@XK>!&JDq?M(B=OmiJ$m8*4>Gm6qlt;r)o zF{_xv75Z^4^xjz$xU})jA->oH!zp?3uf5ylVs}{WvxN5SzoJ-G zp(gZFEWfZ}zIhnlmWzD9DF407;Z^eIg|q>^8p6hpDc44$5&H_W+w@ElK!DDN35E5I zEmpflzy_yUEq1%J^U%uzKVTYM%s2djaheq-i8uQ-Om33WnYct-OR7s%r8UENuE69e0mP~bqqNtVYBh` zB!HYxedJ))Mh<5EA?HaHId_GL^G@Vo(n|Bow1gW0b8?JR;S_8A1+1+FO=$8AtBQ9|v8-&+#+*4JJ+Gkl+{VH#c(TGN+0t#@v_2nz>P_iaCl1 zEWmT!VvZu>D+>o%?T`5^&fFD4j@42JbEB6=%{B82rNzjZ3kGY3*k>l6$D~CVnKH}; zsz{4DilL+CU>0Bwvf3MS0kx8zvZ{G(Su0#M6d-dQ%)z9U=a(TDM$R1Mf~u`Znv1G# zsN%P2F5Egxpo;j&1&X1I996_mb1>@>x#=SUAE3fjLjf|^h1>{cGtDnkb7ADnMXt_d zxsYDU)X3eUOPGqvbKOFYBGN*RH?uwxRmFq%o^im`L5iu7=&0H?jI>xeG zw~uwo)X3eMOPGSnbKOFY8qz|JwPSC{ucOGNtA!Fot^+xkG=$|xv|Ji7bGS%sK4V%g z^*1sBON(w`vkK9 z@jkmx8Sg%&tAw(<`vj8)ae#esS*}9er#jbt%4qkg+WKEbSw9L)Mlaux4B zm8*oRyZZ!_7V^t{80pWUa5cc03YLe<@Uf{Bm( zLgJy`Q=RKQRkZh1Zn>pGy{AGUbd(&-0>u05JypE-RIU`N?%oqjeBzfWxiV7bloaY* z=c%HdXX;j4X{hs5tu05JX70wnx2@JSAP}xiY2Kz6{GL*oujc~Xd0b&t0&_bNBG&`wF~DmU1Yu9t8=7mOrD?S34M;pCxt5J;y& u?o?=3e~WLQYa9emPE-}$uCfnhe)|rOsOcela-;)u#<85HbB%9jx|?lUS=AQiI6l=fatg8D$CDIQOHfq%u~?NZA#O6#{vaKp?`|yX#=5QJf>n7!@g0Bf>v&5_ zzE`W;L!1@O_okf4;Gcj6@{*Ej`V|I}ug4_gOGr`66CT3AAE~iy3we?i;JEg)4Sn&HvV?=A zxK1c#X&MJB9mV#h!1EIOil<_Gc!$s6>}b5MlHDU?)z<5d@DZzNadE>H2PkVxP(}K) zGXrNPa2!rLey9kx>GbN~=|Zm8A@J1mUHAk6{*B1ZhP==K4FwsA+Y`SA=&6L>2@_3T zhO7PdgMs|uwV01AMtj}SK#@eQQRc>pxga+fgWQHf7rjt+-Pyu8xlnDHa;e!J>4kLu zL$S!fjRbBJ|2wFt;|W!FdV+Jgz90C`z1B6{7HZ#P^jYXCSmDZzVZsoYBq_?%${)$e+bS`>5RrOzQ(* z=%yUVPGq1Txv2k`;>FsLOo6;=eb+&NXnE3sgWcSLsn$ZP75GXnefRLYBW;les?U&I R>#+&~S$uRrPx0Bdt-lKPo^t>I literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/gles/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/gles/fs_rsm_shadow.bin new file mode 100644 index 0000000000000000000000000000000000000000..6c9adff2df924e38136af19f601200e9737cadde GIT binary patch literal 173 zcmZ<@_F#E@C?=JWfvq&YBr~ssiIIVUkzpbO14CJ2QDtUcxjx|?lUS=AQiI6l=fatg8D$CDIQOHfq%u~?NF!h07StpH2?qr diff --git a/3rdparty/bgfx/examples/runtime/shaders/gles/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/gles/vs_ibl_skybox.bin index d0c60ada93cb818167a734a0e45a7614d81cd04e..d518d061f73cee2a42a564a610c936174e548734 100644 GIT binary patch delta 240 zcmey#(!wSc7VN=tAlK29nSrY`zAQ7fJSa7}go%-XfpH?I8sq+n26_BtsmUe^2+4_k zcj_}T(=!SbfD%RuCAkGfj2XNpNV-fWe`J(rG?^^Oq{;zv W(BuFnSsoKjy^6{zYpz-@E(QP?p1Fy!g@KW=j)H-nsj0bzsiC>%2b B8oB@g diff --git a/3rdparty/bgfx/examples/runtime/shaders/gles/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/gles/vs_picking_shaded.bin new file mode 100644 index 0000000000000000000000000000000000000000..d066f631d54014935df406c9956abfb281f457c7 GIT binary patch literal 793 zcmah{%TB{E5Ohn$!5sL7JthdEH0c2;;)ukt5>l_0+lJOCiKF186vSt6mnMd_TCH=a;zbBjWV%RY67e25*DuN_okhHo#a3mj{qzJXvCxSw{1ae^U`u^8 zNgxvUj8*6?;$^0uP+GGtm1Y8#&;M}B;jjk{69=V&o3&a(DpdxK%ilTJwoIC%WHFAg z+@8G++`-sGt5)rG`-W9XUYd{qR*9H4zlb@OX3_*#9ivNByBx63n(~m9pzf9??MPrP z4^9XQX!J->B`DAXEqfh-+rKch7KXcp{+|TGW})M>?+AGV&v)U5vT7XG&!AU8*a>K# ZQ{77UgmiRkj_=)G!~R3uNdCb&`voAH|Jwin literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/gles/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/gles/vs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..3368689b86a29a55dfc7394f0b5fe16f48687299 GIT binary patch literal 337 zcmZvXOAEp<5QJ0cDHs2N?6DOQAH7vQdlUq(CED1oG~E)@)(8G~qo@tyWm#sHZ)Uff zl~4WU++)2uQIyJJi?Us7I{F@C9vj*zjM2EOjf5Ptyn;sVXCRV_PH2$InEyGL+5;oc zdm^2VW8MgT!7}RrQ)pbjF7ZHGy?rH21V42wgD?dpu!JDwHx3;v0;4J$kxXJMfA&!e p3z&>-x}%*hSF5_^0kR@lzkjh_@DmJ!FEMFd<|@zVVdSR(exg1v{PY zN@&#c45TPbmCG!l|H!3z(^i`zp^dB#x=6>{jo+>d{eni2OFM@y!fM9X3GI~@I@bG$ zXl?WsS9Jj_q#qOp#vE*3B3Vom9QXHV5BD&Q;Pvs*5KT+c|Dvw$!V||h6$)h-g8@R=QC)>Uymw>f(>!V@_1RrS?uZJ`|M9n#e QIE$k@=jJ{M{iKxq0%drf{r~^~ literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/gles/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/gles/vs_rsm_lbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..68d4a767431f6478180bf7f9ad8f737c93cc69e8 GIT binary patch literal 1196 zcmZ`(+m6#P5Y3|QOF(?XJf_PM+9th76;G@XNUXF{C0;Glx~)+XM~QQ3S9}K_#RI>@ z*ohmb8=^{yXU>ezIb-+x=F8~M-`~}(;})dkta{4C&(V$J+&FIvlBY+Ov9HNqywah! z1>s5gSf-mJ-HEEfz0OIlmya~XGW^}!SsWVI|ZHhcIcc7Ts(F~09PfZgt4f?fRjWmhwn zzz_;-%Atvd7K6~QkO9)_#p;vdWmF9|nOg;OC8B@ikX&0H+JXaxY!h?Ta)u8EH}@-z zY`pesi$Q=ZwOyOi9=A;b|Ae-pA(N@DHWpmOE-ao4CF-TsIQ{>ad{MrS1eJ#A(rUT1 z1TE0ZyZ*G!!=zSLhtUN9R87m=mLb41ssjJwIf|JrBevX~5;753Fn#4td z&AQj`p6ln;!~OL8^HE)p%SITtR^>{o-E>08gj_|+vUb}}{X$QAU+bsFE7<5_Q$eeq z=OBf3wUK2`|FA3fs=anLr>(5_+7|J2J4`oLzhKbGG}131Dw5Ox{ZJGEPOrg8ZGk29 zox(_3fHxKL#Vkj;Kc_pmgISuLX>a=js#1)-0g6&APtQP)Ma2Rbu7|`VL=D>+s5~O@ xBQ-mt^0cEe)~^#Yd733~1GiZ47~AjaSA&txlMoY7(bevE^g*#+#IO%a$q$}Ns1pDH literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_ibl_mesh.bin index 3260e1510995579e54c32d9fb7e37c280197581b..ea3aad7be311e13c9f4e5be86ec18c71cfa4784f 100644 GIT binary patch delta 521 zcmdlk`B`#;4dbSbw%#l+x%Sq$pA6o3FKQJqW zAXX@715E{6kVcBt7I%vf`D&GOu)AkAV}HJ49*&V2y@)H97B delta 441 zcmew?xm|LC4P)6xTW=QoqSUmUcq0XE1q}^DJp%<@1&DyAf|f!-ez}4MmjVz#rAl%O z$`Xs>4GlGcqB;tudIp-4m#`Rw606Yyp-)rO8fZpZPJUvE0?b%*kPw_Rc_*t0p9Qjz z#pK_ts=P)(H^LN|PBvvTW;C6g$tEjf4stS7!V<*R(10m3pS*}oeewfVc~O`MvLR-h zkFce)7+8SAK%+FiAh9Shw>a7?R<8i0|ZIZAZRv7@J~t~qsKmJFP)inWz!Tv zbe#Fk_kHX7?e+fa`{gGHrguTmzLS{&r8f zlxXBe2?k>g9LmkQ&JWM@Td1xl(8;tQ#F*D3AHxIR7ZRpm19QI;4~c2><{9 literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..fd9c2e5cf0c355d9840769dfd32c15bbab6ec342 GIT binary patch literal 7517 zcmb`M+iu%N5Qg0%Km+BXFHjVFNi~Wh?tzk#q(G4%Xo31Fy(idMu?0w?K^^Qk$P4u; zJ2Sgna>%790|X4)Tn=Yvza9RZAwPcl^I87u?{7yJ&v)rIFE-iw;)e_P`DvGa&ewV2 zkJhW3+r2-!Uf%6*?a_-}y1UJ;^ZTpp&W?-@DOrD56+e=*=ZAE)JzgE}p3z}>{%ZeV z2Yx;{7avxe-Cx_Iz3RmwEq0qfHu+(@w} ztzn7+AXO)vBRhqI)jI2;y%`ddzej9o{02t9tn+Lyu2;q1 zxXG!+F|br(n=1St{)l%XiU9WhP%MFLRHB{K_h3AI`1&Y*6LLBmimO=lBvo$o~iz9%&{=wVD3Q2_hR9c*~2(M$P1m{2se%`fMCCCVwi@nbu3+QMew zZ5PDK`7yNs%=8|7!bEHgSN_h&h^Ok;CpFsyBPur?rY)x^SFOvDdF`TkVA46^rj4(7T;h_pMY@;3rFWsOu>8?%k^#c;VVmF;^;QlugQ~}sKpXRZob-J0HS~@MF+gymoAO_Di2@;{Cqbg_057NzA z#bm5tG`zwf58X^jDw<}G;uYOGcCUr-DF$KLsH_~?|KS-psp0@Vv~vIsf5XM31yy)S zKUKW1kwTp+-4SO|B^hZ_ou8tbgs75GRADbdR8f&QRZs?;iBp}!U^msMLj1B1@d6N6 z!B&h(6RKb@`x#%h8J~?#5nzsI)qrY5bF?Pki%iJSn3YMT*xFS z6h3oL=r5Sm5kmq$MSrDJCeE13l`h8iaqOza5~>p%e;8tnlE#!mq9`<#LV`FB#CYDp zn9G{PN~VXgQ$DB0mht&g;gpFp#)o>>Gfpl7QlXsUIK~Q90em#PHW`CifH8>UFpSkK z%vf<(XLv-)C^dnpZ;Fl{pQsO~hcHeM$Oqz(#CmibNv_3^R)X`~P2{tirp-pHdc^P=`C$EZwQrK{%_Ey1%T;d(x5GAWfTd{v)ju53ZB_BkJ+DlhaFMI0VEh{mpC4*BSgrv&v*dMir{-q8! zCMIbm1b962-kay~^5wbz|Ks1j@BG@4lC%9^Rx$CT=Qus*CMT)P5-RW?pPxBdvu*LJ zS2sJt)ACQb?W@gR-*HNs9eBEdlC36Cl9d!P8!g<6u;825;)$gN%U)Jgu!Xxzd5k=| z&QfvS$!W3`EDL{wk@WSR(s$lUXfXk!6NN~=hJ^AIJl}nH0b(I(0ZP!43L)c|+%GVW z4TMl6TU1WMI$-|c0lbYM%ZzTGq|DYqb$|gfw8mk;ZxF_&YHT5l>k0(%TEqc_!N`YO zxW`W?^QaS9RqQf`t$U6CLjxT8L51`e^~(JQeqsSmf;|EvOD9$xYMLfpDYfgTR_?Tx zW6VTaLvhvb%qp5)_n=3r(*$bxs*Tpc$U=;2#FAW25&C*W6OFG^wZ1bVr@`J=I`xS+ z(&rZJ9AWdftnk*dXi=h8Wu(h_d_KB4JmQdF=|CcQ$B}`HxkCJr_WlG+v* bRf9Ozm`cil3UoDK_UKhs-JLl)*7Xd|K##?jMa&a*L0DWpI8~^|S diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_ibl_skybox.bin index be3bea2edbdc23a263af8ab763474848348b703c..e079c0a9c25997500139a917ea8b2d4af04451b3 100644 GIT binary patch delta 264 zcmX@la*kChEZBqPK(3=HGXqy?d|75{c~EL{2@@j&1LH(aHO9_~24VbVsmUe^2+4^x zr|N-1MhYdl1!ajv@y6C%3UIbwg@UbuhJl`mp^1^9v6+IFf(AmTUX_AAl0kaqnwltj zD}j39T0t_oB^B|8(FUCXHH0|} gY<5|EN@fwrNnoRZ&VkCBXzEo|R#|h^a&a*L0L9EttpET3 delta 121 zcmX@ddY*+dEZBqPK(3=H(?lsXM(K%;VG}nTn0%eFgxA=bOF^L|x1cPsDBgH-1d}|Y z@#G37Rp+wQWFrj&J#!Od3j-r#9R&kDQ&V#bQ$ur2O^}YV_>{~d1zQD;+>(lTLj^6k Q5t@1xl~vYUwOm{b0DR;k4FCWD diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_picking_shaded.bin new file mode 100644 index 0000000000000000000000000000000000000000..786b5e30d1d66fbf4fcc26d87f9dedaa46c8c08d GIT binary patch literal 721 zcmZ`%y-ve05Ozz&UCLNF>MkK~cNL{V84V6)1SHVdsh(};#slLa(!YA+z0N#Mp>kI>@}#&nh9+iEiinW=XG0vj8PE!a6|WFQ?<`}QabLX?P9d8v~@^FZ{&r+?KSit K;zsfh&e<;*^5s(i literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/glsl/vs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..c75e2e66ea531653cd81dbc81f448d6e67184541 GIT binary patch literal 307 zcmZ9HPYZ%T5XD#Mw1@fzF-PqnS>CM99fhFlV!FwOI<{NN8ochD6kORYqYI@gKAzWMrQr>TDVD zHqnEs^6_W|txcLrol%!iCMJZxSh_=%5mFVn9=~%K4MH$wO@<)fDj;8?Q3eyZc_S9G9Y9?KJe5bly*@C1GRY` zfmY6!h0Z1YV{HA44c0qJYhCWGTQ?JRKT$cm!eJH~jv*9V%uz#$LU+%0a1XNiIGOC#MUyc+ZrWtXQlSdp5u=1Gbl*H=Ms6}+uTS?rl)5BXNSGNyMG z;d%X77ppzph^C8sQM z!1JAUBv6yJNQE3;m{Y#ntIsS~Os>{6Wy`S2`BumbGO7~jk@pT$&}Y!QY>v;Qca}6O zQYOdu;L&>7jT{lF;2T82bBG4v&k#C_&66m}Xz8vhE08D|YlAz-?EyYP6!{pn?H0!I zZ~z}*guj!7qls6nRh4Ap`>$dHkq7b)b?6@qOWnZ`OT_JEN%IUA$i$*d9J0h~n#2t@ zMI1%%e|; o{!~Phd6B^l+)}j&Jl^D&d+^FEU=Hr#YrH(}jp%Pmun*4J51Iy;nE(I) literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_callback.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_callback.bin index 9ac9550987022e598a62d460db632727686a13fb..b08e28f567d7c1ba9fbab4ee971c1880a9f6b926 100644 GIT binary patch delta 31 ncmZ3&wv>(AE!cylW$~Rq3=Co$xpy!!>Q3%ul-PWm(UTDXrBn(K delta 29 lcmZ3=wuFt_E!cylW$~Rq3=E6(z%L<%|d zSSZL#q2EIM8X|b};>~`Do(j%xGUMEK-g%$j^Stx!)G)f zIy!1aVbnK?b$opL^I2JQP%G?QH0f3jq4OX-bJ#rYhL z^5LUe1gtLQ*YR)^lO|NSXXUSIX}oSFqG=ePHE`ZWBB*lG2EG({F@8;&tcEX{I(9b+ zCNi})wdN*L%EieuQX+vU0jkwk{YkRZFbW2!eR9?&O`0r#f5R`0z;AsX9<;r;l$3c= zN-PUi5j3=A_@EaSX>v3vCa5An(9z3qr_Zl^iTd3j>|C|^+)T~`!hik!m<@Fj4aBoJ zuRe}ww1u}P55m^P)YGx4{2NfVEe;mO4$Eh<4I*Tk@jF^JiwyhOT*0;Ca*3lH=w%v8 z4Q?{Uye}L2@RYGCe!}hsL(XCQcunoftD!znV?l9Y$0#Wt^o*Y3!(XGGx0#y=Wb+S!k?wBjT#65=8bnkH>kQWj|_5sf%I$cx0$ zor{B`EB}F$lcPVt+3wbi>231f@9Vucx1%2;gDab>lBX>dBawIYcChn&|0Ses)Y?Bh zsT`NdVn1SUc<9@nFu96}N+_G9P#6_w;}+MpU|rmb+g!zl7jYqJ>*qYt(%X<0GaD8) zaso!9(yX%>1x}-&pZe^eoh7<~dphm2K>06_4Xcs{k5VpQz&y+e%>OWRdO(?_lsWwr z!;Q~E^0+Y{_Lv+?#d5lww~I>fsifgr&P+L7yL!{Bv{0?OTQkbU2(a`GZ?ci-SuFu6 zx;Eg>&>$}CM2)n8v7ap%6Xh8hV+=?ggV$&he&pfKfp@%LY3`lZ=uB=nY_K4zM)<1` z%b&mMwb%|!=1NRPH5r$`AF=iJ|AIqV?H{P0QDqv1m~a`>hAiw4k8%`g!c(jy%)@s~ zON3jcKgfZUf&~YbmC0#~KN)elUnaad6Sv?>$q6<*DMvm@Q;P}Wo3J*4hB_kV!Z diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_ibl_mesh.bin index 917de5500a2fdda4eee5e372d5a589308433eb2e..fef2951fc6449d6f113afbdef21dfecfb65dd2d4 100644 GIT binary patch delta 583 zcmZ3k(5lGo7VN}Hbua=+o4+2AYwUlb=|k05jGcBn0P7 zu3$HtoW(9Uc|W@*uMyB;Fd5Uyf7z`VO($D$$jX?5+zFMi1hF+VV9LxV7jo!KKE=W{ zc^$iuC`=UDAhXGV+`^leacpE2wEzVG*fqwQ8X6iIi8*P;nv)N(i`rBnEHE?!+W=LD z2pt85#H3=Fy~c)m6_r&Wk18lk-oPi%tEmYNTqGmQk&J{mnt+i;s77wC=I3Gr03OAE Ao&W#< diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_id.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_id.bin new file mode 100644 index 0000000000000000000000000000000000000000..fd86c31031aedfe124f9cdf799891ab5f1c9c9a6 GIT binary patch literal 435 zcmZ{g%}N6?5XU2U%2UiqT9BoJx5blK^iVt$Ph|a-9ulo(Q8oXw7wd^^jmSO9V7wnc#xYqHGHi_X) zz8{wF6Yq2Y;{x&}bWY79cGtm$SRac$kToIt-20nL%C1Mh$!V`?kE0AKYzwpmlLMg2 zvr`sUtDdpb%2LyuLmMbx_Ztht8H|~fGmps_9VfGC(@f=n_HRHT7~P@H>h4tiUAWr5 fyuwv!tcI0_mt*GVY`v&vgB&%dNTo7=gOuV2L;#t{ literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_picking_shaded.bin new file mode 100644 index 0000000000000000000000000000000000000000..4e5208aff4a69d2bd7f286210ab6265146357353 GIT binary patch literal 1176 zcmZ`&O>dh(5ao~)zhX|+ZbDX=kJOTtUaCgzA?hLODYDSk0T&4t3okZFl^@U_&|`jS zFP+(C39%g^AsFVpdG8H-bNBV^@5`5ep7-a>^SW)R)}UmaZ#Qz4L!E0`E&Q!+yOoB% zlKNIxcfaIA-hNY?PQz~>pr{(D6WC>|rfS-7;Yu-$;Z~Lk*a<^ft*fkr`}?hy>pUyfav8v? zQTTeuI1K#&2Gb$tXIB(?%R;_fa-X7kGhk3)x|>NPy58($o6V@?p5Yp7bmdddtR~^o zBT(A**x~4ceM^8s;FePiku3JohW6?hn-=^6EW0MR&n)O_n z`<%lC*bv9{+w*16V~PodO1(C5qXT1!s1k}fN;6{&6D|ZD<95cxOgVs*T;Mjy4VBLA tWP==fF#^mhn%fR)9(SLl<|6p<{;IdA2K)!?s|%c(YBDf<>D$jSgwFyNj3kL!`w{yj&K^Zg+LHNI@|w^C(%~CNs8L zr)5%HU8UDY=f<8FPsIC^XjW^XFX|-zE^<%?;)lK#RK;^(ud>5ZuE(U-qk2QaE$><^~oy zV~jzD%YBjX<>keN6IZGBCt&#ZFT0pKk~QxZS6yFf@ZF$$S8Vp!9dd4d1X{+i|JFiuFT*up%T`^#{t!r$fu6z0o z%v)ul>qgZ@j#XFfgUZ4?+&z(R!~t8R>uto%Z?;?)e`DE4fe{5Pi-h?hSh?BW$3-Mj zV*Y1uDj$w10j~>>6)G;^w0VjZcT1LL2k1u(i);fwq)+^@3*;m5Z+iFvDw;~9vtXWmvuB+N|12ysk zns(G5ze4FdOVV9JXwvRpcibtefIoWw!{LH44A!6`xm(wrmz4 zv1}ASW6f82*QW&UaHz}16n_nyIfm4B6*Dz@#z%#g4!!8T^N6~|%56;*aHktr5JSk~l{22j(nW+bl9jvYTe z0IPGN&6*tg$5Gb&={xY81`x!<0NR~`LkqwYlx9b|?}3udp|JTT^*yeM+s>?Yj6Kr# z_yvhzpvhSy7$9B3YC3+p2!a~Hq0mj99Km2tB8cKa1OvNo1kezUA_z(pg5yav(8O(J zHo$}2*gY8N!)E8?5@>cd2qIs05e%>cSY0qcz69T$aGnFffJP9+!wA}qBY=)@96{Y( z>T`_RgA)MM#BFCxou)?~Jp(~+LHi&bgcN|-0c-$~FM9w&H+lLk7}5ZOco;ytaRks2 zjsvK>iw)rTE*NOywgJ4DvIEa)05v(A9jFh?9X~w)kuG}x;seF8XNRBN1%pc(KoAcC zDD1u=pdlOu5R@zqo!SJ2=4~sn!Wx4dX@WwJKsppE>_fHC=jD!{E`Xrc2T96;S$%nqyo98aM_)3%-1YT~M3JqAi@5+kQfVkA9@k@kUFQj-|jo5X+`0pN2? zVkA9@LGdtvcGHk!CNZEy063mOB{hkWQzkKzp2SG|KrN|Bj70Xg7!=e90H0$LBk4&D ziiZKTyM`Pyi29^&!-Vu42E~K; zg?85n$IM|ssgK|I4j58Xm~hGzCZwk@p?#bVsVPj@o5FxvA3sog`VJV#g4(7YTfKl~rG*z-K$(Pft(& E2Y+y2zW@LL literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_gbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..fdd2b86573ac24c06de28218cad74574d60f64bf GIT binary patch literal 549 zcmZ`#%}T>S5MIPn9>DXQqy-5H_Ex+}(L?c2Jk_v_aT6Cdvt=`@Rq^F~6<@^7pCzTa z?XchfYIAq~`}3rPxHuES*P2QotW>?jTtTH6%`&Rl`J7>Ikk@QBulSyN6mC2gFZovw#@+DD;}*B?>|1_ru)+IVe<*}d%z}fGNG0ZN)iSt+>c{^rL#{ zFLlL-Oeap;lTC6tJ3F&n-QIn8_3QV~?O^cf^>PxLdO&mmiC&QSf63kcyJ27*-;=m27oWmU0RA_f=VEDl3cm{AwSwNfxCj<>+8b zWUIBh;f3PzZove<8a^IR`MFUp=bDMsONp2--uhZ(X(@A`YLjd-zWu^mj>WkG+8CN7 zD>k!DrLj^hCP!9>Wm^tbiW$oaAV+jbawU=sWvCTfafF@E16Y&=E}tS=es4hEY4Fas zCQZ2{BRZcWy8r+bZ&f4tc==9?eGPR|U`%6=SeJCN7|j1f@x6R8tjRcLC`NsNYiI{>29A5-F} zP})OJ9Q4$Ko_3@R`k0XZ8uA>6BMK)F;g5!}h|_R~@pci1ZHHw<30v<3ad+NPm*d2t zPs1bio_VCs!mZ^*y7UJp?L(JkZ-aSfme08tdX8a)=woW!Xi#+Xe6T#DR7~y7v%OBe z1s5LLg(VcD1*Wl|dtmne(}YV8{8Cf3OfJxoT}QB^POS@O;l$`pdN(6ItL)`y)K@*R zRcGNQc{;#!iW92=20Hol{;6~KJluNi<8~wc8eF~z^VQ#_BFj>N!-+;gA8orQOVJFY zxsyDK;M%-~qZBc>o`~?|Em|YU$acmfa8dJ@LQMxyR1SODE}ru^{W}lcfjIKPgq8bO zjbmMF=331c-F!%#oBCnWoVAVx@(;jQ?J@w&06){9MFZW0KXr@;ouKPj%pDA literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_rsm_shadow.bin new file mode 100644 index 0000000000000000000000000000000000000000..c88531c9d786168748fb33b7a4a51907a6af891a GIT binary patch literal 491 zcmZ{g%}T>S5XU2U%2Uiq5~!hIZ^fGwdng`?ry7Y_7SXT~I$*SnwG^7lasrj5a6L|p6j#uDeDFMbrR2b#r`=XY z1(Bdv+j;mMPQ_>e#s2*Ow=uF9rt03#>feI;IvcQyzx5Y~yfZk--cjrcyGhgJ7dVow A2><{9 literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_sms_shadow.bin index b5140b48e9a12dca42ae2a168b56351831fea76b..42cd46cf0c3a601063d5a768ee8cd342e213c680 100644 GIT binary patch delta 30 hcmcc1+|R`A7VN>o009%Z!zMb4Pwbz}V$H?H003j}215V< delta 234 zcmeBYy35S%7VN>o00!qKa)*g2D5T}&CzhBfr02xD6(y!S=jY@XSx-z@UC&j`rJzue zlUU+gk`tVfn37uLUs_U7TA~o2Tapu>Zw-`%YAwkvC`&AgHv|d6*m@NTwh9J%1}I{c nSj4KZh?N7yY@nJUw&@`|4=4+>24s9uYDsBP9^6^ATwDwQ%5g^# diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_mesh.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_mesh.bin index 3628dd93e5dc4bb4fb02ac42268bbad63ffd6209..995ba28b8927279bdfd094bcc9920aa4da3704ad 100644 GIT binary patch delta 27 jcmX@gcZ`qQE!cx4{Aq#^1B3ZS?n|tUx|{E^W-tN(b|45m delta 25 hcmX@cca)FYE!cx4{Aq#^1B2N{?n|tj@3Ceu0sv^|2o3-M diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_wireframe.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/fs_wf_wireframe.bin index e00b6fa3f9124fc0711e0919995a4ccd31c2ad26..5b3d28b2c06a236a9170d7e39c8dfa47dca77796 100644 GIT binary patch delta 27 jcmX@jafXB2E!cx4{m+*53=Fm#xw)7bbvKJLn=t|aeC!95 delta 25 hcmX@ZahikME!cx4{m+*53=B3Kxw)7(i!qxq0swCd2W9{O diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_skybox.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_ibl_skybox.bin index 0052efc70490f7fe9444a87f5d866f5d9e8bd021..78302fa339b9627e3f68b9c56bf8a82d6b225aeb 100644 GIT binary patch delta 241 zcmX@azKeq=EZBqPK(3=H1A{ipM4o><3Z?O7nW^PLsmUeQn;99)8SB$>@)Jvp6iRXn z$`Xs>jjg#9;B37L1zQCT13eQ%6C*=oGX*ULjriP>ocK~bgeiJe3i=9|qUD;JC?-_` zO@bQ)lF2Qph&PNjh@E_hNqF*PrgB~rB=shf#hDcuO(t71>u|svHo1{mMb<=9ucERF Vq_QZrq_ijxVspMVS1lJ80{{!ANU{I` delta 92 zcmdnRafqEKEZBqPK(3=H1H)$Ki9G){%QNONPG(`A#A|HLrJzufTTqr*6mL9vF|#70 w@#Le-Ix=ZF`H3Y)8U}jiCdL*9M#ee{270EZ<`$-g=9-g#GOGZU$+5@)0OSK1O8@`> diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_picking_shaded.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_picking_shaded.bin new file mode 100644 index 0000000000000000000000000000000000000000..c5326d93db60e1ba72be8ec77e489b08ed928784 GIT binary patch literal 1086 zcmaizv2NQi5Qa5m(o@`2NI|N~l7<3C#sKXQG(gZSfk7}1?J}T9gE}g1gFZ&bK53Vd zG-Z>CiY|h9xV!(m|H!-BPiMb=U;W9l4`*3s1}?WCY0rioT{GwzQnAbj)Mkya7Zk5i z+KF-iFp{+rO4pJ082FNqEl$oOXV1(0A0%HT-`EjPLwEZQ4C&P)6L-Ea znDHupqt(+<#Z@4e=v79hk?m7s!@R-lYsw`QGtQG91>x4l0qK?zE?27ySSx9d^3|#W z_dD=4#@0NT&4y{eoicy1`$+@>fzMVEIQF}dYO-*l>A!l0OITFi=wodE{fCVn2rEja z4Y|5Q(<)x!B@_p+D)Q2K2IohaGO8V2!>PZDTUA#0EpHR?HZ#19E1UZ9dESw@n_-h? zP*0dmIZx0=1g$5i6UW*>P#n5DhVYiop{eQ;-aCs^4?@C!h}t7jFn)R%$tdnV+9~`) a?uxqlcmb!6Q})uDq0usI&|cp>&;9~68f~ip literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_combine.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_combine.bin new file mode 100644 index 0000000000000000000000000000000000000000..10fb2d926e2aac1c1d4353da5d043c5fff7fa15e GIT binary patch literal 659 zcmZ{iPfNov7>A2^>W7f`B%4TCU2k=s^)MU^cNryQT{(o2$i5XN3ndTTc%%RVGzE3 zfJ`WgQ=p_!B}c9#tk)D#^Nm3^nv9bqKBgXQ3R#sZrMD9&7B;b;%dA&}4lIJ5Ad8-M z1UsaCPm2A24t|q7Q#$Xj5mgZwlB+EfE6xrJtv;IJJ=3b_3s4W(pDT2EbW;~c3yugrh`T^>wW@xnRXjZlF Fdw+r_<-h;{ literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_gbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..83a9b434292a34ba5469410b1f2ca86b2cb32ace GIT binary patch literal 815 zcmZ{i(N2Rf7==mnil_Lm3``}A;nlKxy;xkbxEmy-+sdqgLdxF_XM8zd#TT(a88GKn z>7UbczMisLK3@NPzf!}1E5ncl<2&FarA1CQ6jF*LnVJO(xj`rsf^$rkZ)8iw6VD~W zrwI@z8NmsVh-V@t2?PN_6l^V#TCN?2)4nFp3WhA>1J$@zeO(TEmN-cAVV6XU&Zc!7 z1no7<)cnWwg|k@Ub{FtVA7qqfTbcwDuY>N*SBxGOB73h*_f#M)hn;9t-P4>f4%UUz zq7;*esRjxpI~p+_hIg>ZxZ3iwmNn)L)MunRvzBp8MP00IR`m}8G(oM-PR09xX}%{S z8dszC+d04t#*RCfl^;hnZ3rC_wdGct#?sF5u;H9BaKjGIvz4TZv(?OX9xCr@ RsR#u{DY(A3dUVq?egQN#5xxKb literal 0 HcmV?d00001 diff --git a/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin b/3rdparty/bgfx/examples/runtime/shaders/metal/vs_rsm_lbuffer.bin new file mode 100644 index 0000000000000000000000000000000000000000..1050eb976bf80e659367c3231845535b5daf952c GIT binary patch literal 1801 zcmbVNO>f#j5am$yz^|B7wN8nP!33hTz4X!?P$QxC5~0S?WYl<(vz+(+6PB#j;tS0L<+BB0^lZQHS+dM|dY~OQF;uut=;n^+ zKNY4{qYlerO*y^ImiggWXD3-btqbKszR{g($^~uO_E=@svMEV2KqvgesbDyfhLwV> zC{D8Zya$Uslb_j<;gJhke1;O2n&*@hvcQIQ zMGs1n7L0O@SEdDS=i2B$(0Q49xRIRoDO{7~5LH&teUg-0hFHh6I&Ha{_YgL6A8_QR zJ%j~I3OsP%F^IIN3CBZq;(o&?vn zWtjQ@Z~ooI{PFtd`;|EkxpEwxbFl+KQEW@GB5B~t8up{lQ~B&MXzgEb$wknde+!;8o@4!X01%4 z*fZK&n6dkh>Wkp9!EF~96(i75Dz_|IaCSIBpVendzE`4qrjQl=Of0I+X-c^O??Px% zib=#x0y)whi?~>=?qDN@`4ndo{hr3f6ba_Zu%4OYB17?u8ar $(@) -$(SILENT) $(SHADERC) $(VS_FLAGS) --platform windows -p vs_3_0 -O 3 -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_dx9 -@cat $(SHADER_TMP) >> $(@) @@ -35,7 +35,7 @@ vs_%.bin.h : vs_%.sc fs_%.bin.h : fs_%.sc @echo [$(<)] - $(SILENT) $(SHADERC) $(FS_FLAGS) --platform linux -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_glsl + $(SILENT) $(SHADERC) $(FS_FLAGS) --platform linux -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_glsl @cat $(SHADER_TMP) > $(@) -$(SILENT) $(SHADERC) $(FS_FLAGS) --platform windows -p ps_3_0 -O 3 -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_dx9 -@cat $(SHADER_TMP) >> $(@) @@ -46,7 +46,7 @@ fs_%.bin.h : fs_%.sc cs_%.bin.h : cs_%.sc @echo [$(<)] - $(SILENT) $(SHADERC) $(CS_FLAGS) --platform linux -p 430 -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_glsl + $(SILENT) $(SHADERC) $(CS_FLAGS) --platform linux -p 430 -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_glsl @cat $(SHADER_TMP) > $(@) -$(SILENT) $(SHADERC) $(CS_FLAGS) --platform windows -p cs_5_0 -O 1 -f $(<) -o $(SHADER_TMP) --bin2c $(basename $(<))_dx11 -@cat $(SHADER_TMP) >> $(@) diff --git a/3rdparty/bgfx/src/bgfx.cpp b/3rdparty/bgfx/src/bgfx.cpp index a1d37e82c41..90c6cee6113 100644 --- a/3rdparty/bgfx/src/bgfx.cpp +++ b/3rdparty/bgfx/src/bgfx.cpp @@ -383,28 +383,38 @@ namespace bgfx void fatal(Fatal::Enum _code, const char* _format, ...) { - char temp[8192]; - va_list argList; va_start(argList, _format); - char* out = temp; - int32_t len = bx::vsnprintf(out, sizeof(temp), _format, argList); - if ( (int32_t)sizeof(temp) < len) - { - out = (char*)alloca(len+1); - len = bx::vsnprintf(out, len, _format, argList); - } - out[len] = '\0'; - va_end(argList); - g_callback->fatal(_code, out); + if (BX_UNLIKELY(NULL == g_callback) ) + { + dbgPrintfVargs(_format, argList); + abort(); + } + else + { + char temp[8192]; + char* out = temp; + int32_t len = bx::vsnprintf(out, sizeof(temp), _format, argList); + if ( (int32_t)sizeof(temp) < len) + { + out = (char*)alloca(len+1); + len = bx::vsnprintf(out, len, _format, argList); + } + out[len] = '\0'; + + g_callback->fatal(_code, out); + } + + va_end(argList); } void trace(const char* _filePath, uint16_t _line, const char* _format, ...) { va_list argList; va_start(argList, _format); - if (NULL == g_callback) + + if (BX_UNLIKELY(NULL == g_callback) ) { dbgPrintfVargs(_format, argList); } @@ -412,6 +422,7 @@ namespace bgfx { g_callback->traceVargs(_filePath, _line, _format, argList); } + va_end(argList); } @@ -1118,25 +1129,26 @@ namespace bgfx } BX_TRACE("Supported texture formats:"); - BX_TRACE("\t +--------------- 2D: x = supported / * = emulated"); - BX_TRACE("\t |+-------------- 2D: sRGB format"); - BX_TRACE("\t ||+------------- 3D: x = supported / * = emulated"); - BX_TRACE("\t |||+------------ 3D: sRGB format"); - BX_TRACE("\t ||||+----------- Cube: x = supported / * = emulated"); - BX_TRACE("\t |||||+---------- Cube: sRGB format"); - BX_TRACE("\t ||||||+--------- vertex format"); - BX_TRACE("\t |||||||+-------- image"); - BX_TRACE("\t ||||||||+------- framebuffer"); - BX_TRACE("\t |||||||||+------ MSAA framebuffer"); - BX_TRACE("\t ||||||||||+----- MSAA texture"); - BX_TRACE("\t ||||||||||| +-- name"); + BX_TRACE("\t +---------------- 2D: x = supported / * = emulated"); + BX_TRACE("\t |+--------------- 2D: sRGB format"); + BX_TRACE("\t ||+-------------- 3D: x = supported / * = emulated"); + BX_TRACE("\t |||+------------- 3D: sRGB format"); + BX_TRACE("\t ||||+------------ Cube: x = supported / * = emulated"); + BX_TRACE("\t |||||+----------- Cube: sRGB format"); + BX_TRACE("\t ||||||+---------- vertex format"); + BX_TRACE("\t |||||||+--------- image"); + BX_TRACE("\t ||||||||+-------- framebuffer"); + BX_TRACE("\t |||||||||+------- MSAA framebuffer"); + BX_TRACE("\t ||||||||||+------ MSAA texture"); + BX_TRACE("\t |||||||||||+----- Auto-generated mips"); + BX_TRACE("\t |||||||||||| +-- name"); for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) { if (TextureFormat::Unknown != ii && TextureFormat::UnknownDepth != ii) { uint16_t flags = g_caps.formats[ii]; - BX_TRACE("\t[%c%c%c%c%c%c%c%c%c%c%c] %s" + BX_TRACE("\t[%c%c%c%c%c%c%c%c%c%c%c%c] %s" , flags&BGFX_CAPS_FORMAT_TEXTURE_2D ? 'x' : flags&BGFX_CAPS_FORMAT_TEXTURE_2D_EMULATED ? '*' : ' ' , flags&BGFX_CAPS_FORMAT_TEXTURE_2D_SRGB ? 'l' : ' ' , flags&BGFX_CAPS_FORMAT_TEXTURE_3D ? 'x' : flags&BGFX_CAPS_FORMAT_TEXTURE_3D_EMULATED ? '*' : ' ' @@ -1148,6 +1160,7 @@ namespace bgfx , flags&BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER ? 'f' : ' ' , flags&BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA ? '+' : ' ' , flags&BGFX_CAPS_FORMAT_TEXTURE_MSAA ? 'm' : ' ' + , flags&BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN ? 'M' : ' ' , getName(TextureFormat::Enum(ii) ) ); BX_UNUSED(flags); @@ -2236,7 +2249,10 @@ namespace bgfx uint16_t height; _cmdbuf.read(height); - m_renderCtx->resizeTexture(handle, width, height); + uint8_t numMips; + _cmdbuf.read(numMips); + + m_renderCtx->resizeTexture(handle, width, height, numMips); } break; @@ -2363,6 +2379,11 @@ namespace bgfx return topologyConvert(_conversion, _dst, _dstSize, _indices, _numIndices, _index32, g_allocator); } + void topologySortTriList(TopologySort::Enum _sort, void* _dst, uint32_t _dstSize, const float _dir[3], const float _pos[3], const void* _vertices, uint32_t _stride, const void* _indices, uint32_t _numIndices, bool _index32) + { + topologySortTriList(_sort, _dst, _dstSize, _dir, _pos, _vertices, _stride, _indices, _numIndices, _index32, g_allocator); + } + uint8_t getSupportedRenderers(RendererType::Enum _enum[RendererType::Count]) { uint8_t num = 0; @@ -2393,27 +2414,20 @@ namespace bgfx { if (NULL != s_ctx) { - BX_CHECK(false, "bgfx is already initialized."); + BX_TRACE("bgfx is already initialized."); return false; } - if (!BX_ENABLED(BX_PLATFORM_EMSCRIPTEN || BX_PLATFORM_NACL) - && NULL == g_platformData.ndt - && NULL == g_platformData.nwh - && NULL == g_platformData.context - && NULL == g_platformData.backBuffer - && NULL == g_platformData.backBufferDS) + struct ErrorState { - BX_CHECK(false, "bgfx platform data like window handle or backbuffer must be set."); - return false; - } + enum Enum + { + Default, + ContextAllocated, + }; + }; - memset(&g_caps, 0, sizeof(g_caps) ); - g_caps.maxViews = BGFX_CONFIG_MAX_VIEWS; - g_caps.maxDrawCalls = BGFX_CONFIG_MAX_DRAW_CALLS; - g_caps.maxFBAttachments = 1; - g_caps.vendorId = _vendorId; - g_caps.deviceId = _deviceId; + ErrorState::Enum errorState = ErrorState::Default; if (NULL != _allocator) { @@ -2436,16 +2450,45 @@ namespace bgfx s_callbackStub = BX_NEW(g_allocator, CallbackStub); } + if (!BX_ENABLED(BX_PLATFORM_EMSCRIPTEN || BX_PLATFORM_NACL) + && NULL == g_platformData.ndt + && NULL == g_platformData.nwh + && NULL == g_platformData.context + && NULL == g_platformData.backBuffer + && NULL == g_platformData.backBufferDS) + { + BX_TRACE("bgfx platform data like window handle or backbuffer must be set."); + goto error; + } + + memset(&g_caps, 0, sizeof(g_caps) ); + g_caps.maxViews = BGFX_CONFIG_MAX_VIEWS; + g_caps.maxDrawCalls = BGFX_CONFIG_MAX_DRAW_CALLS; + g_caps.maxFBAttachments = 1; + g_caps.vendorId = _vendorId; + g_caps.deviceId = _deviceId; + BX_TRACE("Init..."); - s_ctx = BX_ALIGNED_NEW(g_allocator, Context, 16); - if (!s_ctx->init(_type) ) - { - BX_TRACE("Init failed."); + errorState = ErrorState::ContextAllocated; + s_ctx = BX_ALIGNED_NEW(g_allocator, Context, 16); + if (s_ctx->init(_type) ) + { + BX_TRACE("Init complete."); + return true; + } + +error: + BX_TRACE("Init failed."); + + switch (errorState) + { + case ErrorState::ContextAllocated: BX_ALIGNED_DELETE(g_allocator, s_ctx, 16); s_ctx = NULL; + case ErrorState::Default: if (NULL != s_callbackStub) { BX_DELETE(g_allocator, s_callbackStub); @@ -2462,11 +2505,10 @@ namespace bgfx s_threadIndex = 0; g_callback = NULL; g_allocator = NULL; - return false; + break; } - BX_TRACE("Init complete."); - return true; + return false; } void shutdown() @@ -2920,7 +2962,14 @@ namespace bgfx , getName(_format) ); - _numMips = uint8_t(bx::uint32_max(1, _numMips) ); + if (BackbufferRatio::Count != _ratio) + { + _width = uint16_t(s_ctx->m_resolution.m_width); + _height = uint16_t(s_ctx->m_resolution.m_height); + getTextureSizeFromRatio(_ratio, _width, _height); + } + + _numMips = calcNumMips(_numMips, _width, _height); if (BX_ENABLED(BGFX_CONFIG_DEBUG) && NULL != _mem) @@ -2934,13 +2983,6 @@ namespace bgfx ); } - if (BackbufferRatio::Count != _ratio) - { - _width = uint16_t(s_ctx->m_resolution.m_width); - _height = uint16_t(s_ctx->m_resolution.m_height); - getTextureSizeFromRatio(_ratio, _width, _height); - } - uint32_t size = sizeof(uint32_t)+sizeof(TextureCreate); const Memory* mem = alloc(size); @@ -2983,7 +3025,7 @@ namespace bgfx , getName(_format) ); - _numMips = uint8_t(bx::uint32_max(1, _numMips) ); + _numMips = calcNumMips(_numMips, _width, _height, _depth); if (BX_ENABLED(BGFX_CONFIG_DEBUG) && NULL != _mem) @@ -3026,7 +3068,7 @@ namespace bgfx , getName(_format) ); - _numMips = uint8_t(bx::uint32_max(1, _numMips) ); + _numMips = calcNumMips(_numMips, _size, _size); if (BX_ENABLED(BGFX_CONFIG_DEBUG) && NULL != _mem) @@ -3815,6 +3857,11 @@ uint32_t bgfx_topology_convert(bgfx_topology_convert_t _conversion, void* _dst, return bgfx::topologyConvert(bgfx::TopologyConvert::Enum(_conversion), _dst, _dstSize, _indices, _numIndices, _index32); } +void bgfx_topology_sort_tri_list(bgfx_topology_sort_t _sort, void* _dst, uint32_t _dstSize, const float _dir[3], const float _pos[3], const void* _vertices, uint32_t _stride, const void* _indices, uint32_t _numIndices, bool _index32) +{ + bgfx::topologySortTriList(bgfx::TopologySort::Enum(_sort), _dst, _dstSize, _dir, _pos, _vertices, _stride, _indices, _numIndices, _index32); +} + BGFX_C_API void bgfx_image_swizzle_bgra8(uint32_t _width, uint32_t _height, uint32_t _pitch, const void* _src, void* _dst) { bgfx::imageSwizzleBgra8(_width, _height, _pitch, _src, _dst); @@ -4588,6 +4635,7 @@ BGFX_C_API bgfx_interface_vtbl_t* bgfx_get_interface(uint32_t _version) BGFX_IMPORT_FUNC(vertex_convert) \ BGFX_IMPORT_FUNC(weld_vertices) \ BGFX_IMPORT_FUNC(topology_convert) \ + BGFX_IMPORT_FUNC(topology_sort_tri_list) \ BGFX_IMPORT_FUNC(image_swizzle_bgra8) \ BGFX_IMPORT_FUNC(image_rgba8_downsample_2x2) \ BGFX_IMPORT_FUNC(get_supported_renderers) \ diff --git a/3rdparty/bgfx/src/bgfx_p.h b/3rdparty/bgfx/src/bgfx_p.h index 02955987eff..e624dba372d 100644 --- a/3rdparty/bgfx/src/bgfx_p.h +++ b/3rdparty/bgfx/src/bgfx_p.h @@ -62,9 +62,9 @@ # define RMT_USE_D3D11 BGFX_CONFIG_RENDERER_DIRECT3D11 # define RMT_USE_OPENGL BGFX_CONFIG_RENDERER_OPENGL # include -# define BGFX_PROFILER_SCOPE(_group, _name, _color) rmt_ScopedCPUSample(_group##_##_name) -# define BGFX_PROFILER_BEGIN(_group, _name, _color) rmt_BeginCPUSample(_group##_##_name) -# define BGFX_PROFILER_BEGIN_DYNAMIC(_namestr) rmt_BeginCPUSampleDynamic(_namestr) +# define BGFX_PROFILER_SCOPE(_group, _name, _color) rmt_ScopedCPUSample(_group##_##_name, RMTSF_None) +# define BGFX_PROFILER_BEGIN(_group, _name, _color) rmt_BeginCPUSample(_group##_##_name, RMTSF_None) +# define BGFX_PROFILER_BEGIN_DYNAMIC(_namestr) rmt_BeginCPUSampleDynamic(_namestr, RMTSF_None) # define BGFX_PROFILER_END() rmt_EndCPUSample() # define BGFX_PROFILER_SET_CURRENT_THREAD_NAME(_name) rmt_SetCurrentThreadName(_name) # else @@ -364,6 +364,19 @@ namespace bgfx ; } + inline uint8_t calcNumMips(uint8_t _numMips, uint16_t _width, uint16_t _height, uint16_t _depth = 1) + { + if (1 < _numMips) + { + const uint32_t max = bx::uint32_max(bx::uint32_max(_width, _height), _depth); + const uint32_t num = 1 + uint32_t(bx::flog2(float(max) ) ); + + return uint8_t(num); + } + + return 1; + } + void dump(const VertexDecl& _decl); struct TextVideoMem @@ -1460,8 +1473,9 @@ namespace bgfx void setState(uint64_t _state, uint32_t _rgba) { uint8_t blend = ( (_state&BGFX_STATE_BLEND_MASK)>>BGFX_STATE_BLEND_SHIFT)&0xff; + uint8_t alphaRef = ( (_state&BGFX_STATE_ALPHA_REF_MASK)>>BGFX_STATE_ALPHA_REF_SHIFT)&0xff; // transparency sort order table - m_key.m_trans = "\x0\x1\x1\x2\x2\x1\x2\x1\x2\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1"[( (blend)&0xf) + (!!blend)]; + m_key.m_trans = "\x0\x2\x2\x3\x3\x2\x3\x2\x3\x2\x2\x2\x2\x2\x2\x2\x2\x2\x2"[( (blend)&0xf) + (!!blend)] + !!alphaRef; m_draw.m_stateFlags = _state; m_draw.m_rgba = _rgba; } @@ -2060,7 +2074,7 @@ namespace bgfx virtual void updateTexture(TextureHandle _handle, uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, uint16_t _pitch, const Memory* _mem) = 0; virtual void updateTextureEnd() = 0; virtual void readTexture(TextureHandle _handle, void* _data) = 0; - virtual void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height) = 0; + virtual void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips) = 0; virtual void overrideInternal(TextureHandle _handle, uintptr_t _ptr) = 0; virtual uintptr_t getInternal(TextureHandle _handle) = 0; virtual void destroyTexture(TextureHandle _handle) = 0; @@ -2159,6 +2173,7 @@ namespace bgfx resizeTexture(handle , uint16_t(m_resolution.m_width) , uint16_t(m_resolution.m_height) + , textureRef.m_numMips ); m_resolution.m_flags |= BGFX_RESET_INTERNAL_FORCE; } @@ -2626,8 +2641,9 @@ namespace bgfx uint16_t flags = BGFX_BUFFER_NONE; cmdbuf.write(flags); - tib = (TransientIndexBuffer*)BX_ALLOC(g_allocator, sizeof(TransientIndexBuffer)+_size); - tib->data = (uint8_t*)&tib[1]; + const uint32_t size = BX_ALIGN_16(sizeof(TransientIndexBuffer) ) + BX_ALIGN_16(_size); + tib = (TransientIndexBuffer*)BX_ALIGNED_ALLOC(g_allocator, size, 16); + tib->data = (uint8_t *)tib + BX_ALIGN_16(sizeof(TransientIndexBuffer) ); tib->size = _size; tib->handle = handle; } @@ -2641,7 +2657,7 @@ namespace bgfx cmdbuf.write(_tib->handle); m_submit->free(_tib->handle); - BX_FREE(g_allocator, _tib); + BX_ALIGNED_FREE(g_allocator, _tib, 16); } BGFX_API_FUNC(void allocTransientIndexBuffer(TransientIndexBuffer* _tib, uint32_t _num) ) @@ -2682,8 +2698,9 @@ namespace bgfx uint16_t flags = BGFX_BUFFER_NONE; cmdbuf.write(flags); - tvb = (TransientVertexBuffer*)BX_ALLOC(g_allocator, sizeof(TransientVertexBuffer)+_size); - tvb->data = (uint8_t*)&tvb[1]; + const uint32_t size = BX_ALIGN_16(sizeof(TransientVertexBuffer) ) + BX_ALIGN_16(_size); + tvb = (TransientVertexBuffer*)BX_ALIGNED_ALLOC(g_allocator, size, 16); + tvb->data = (uint8_t *)tvb + BX_ALIGN_16(sizeof(TransientVertexBuffer) ); tvb->size = _size; tvb->startVertex = 0; tvb->stride = stride; @@ -2700,7 +2717,7 @@ namespace bgfx cmdbuf.write(_tvb->handle); m_submit->free(_tvb->handle); - BX_FREE(g_allocator, _tvb); + BX_ALIGNED_FREE(g_allocator, _tvb, 16); } BGFX_API_FUNC(void allocTransientVertexBuffer(TransientVertexBuffer* _tvb, uint32_t _num, const VertexDecl& _decl) ) @@ -3104,6 +3121,7 @@ namespace bgfx ref.m_refCount = 1; ref.m_bbRatio = uint8_t(_ratio); ref.m_format = uint8_t(_info->format); + ref.m_numMips = imageContainer.m_numMips; ref.m_owned = false; CommandBuffer& cmdbuf = getCommandBuffer(CommandBuffer::CreateTexture); @@ -3146,12 +3164,13 @@ namespace bgfx return readTexture(textureHandle, _data); } - void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height) + void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips) { const TextureRef& textureRef = m_textureRef[_handle.idx]; BX_CHECK(BackbufferRatio::Count != textureRef.m_bbRatio, ""); getTextureSizeFromRatio(BackbufferRatio::Enum(textureRef.m_bbRatio), _width, _height); + _numMips = calcNumMips(_numMips, _width, _height); BX_TRACE("Resize %3d: %4dx%d %s" , _handle.idx @@ -3164,6 +3183,7 @@ namespace bgfx cmdbuf.write(_handle); cmdbuf.write(_width); cmdbuf.write(_height); + cmdbuf.write(_numMips); } void textureTakeOwnership(TextureHandle _handle) @@ -4009,6 +4029,7 @@ namespace bgfx int16_t m_refCount; uint8_t m_bbRatio; uint8_t m_format; + uint8_t m_numMips; bool m_owned; }; diff --git a/3rdparty/bgfx/src/debug_renderdoc.cpp b/3rdparty/bgfx/src/debug_renderdoc.cpp index b3e3e61f468..0aca626468b 100644 --- a/3rdparty/bgfx/src/debug_renderdoc.cpp +++ b/3rdparty/bgfx/src/debug_renderdoc.cpp @@ -56,7 +56,7 @@ namespace bgfx } pRENDERDOC_GetAPI RENDERDOC_GetAPI; - static RENDERDOC_API_1_0_1* s_renderDoc; + static RENDERDOC_API_1_1_0* s_renderDoc; void* loadRenderDoc() { @@ -72,7 +72,7 @@ namespace bgfx { RENDERDOC_GetAPI = (pRENDERDOC_GetAPI)bx::dlsym(renderdocdll, "RENDERDOC_GetAPI"); if (NULL != RENDERDOC_GetAPI - && 1 == RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_0_0, (void**)&s_renderDoc) ) + && 1 == RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_1_0, (void**)&s_renderDoc) ) { s_renderDoc->SetLogFilePathTemplate("temp/bgfx"); diff --git a/3rdparty/bgfx/src/glcontext_eagl.mm b/3rdparty/bgfx/src/glcontext_eagl.mm index 1092b6259a8..24c6ec04ab0 100644 --- a/3rdparty/bgfx/src/glcontext_eagl.mm +++ b/3rdparty/bgfx/src/glcontext_eagl.mm @@ -27,7 +27,7 @@ namespace bgfx { namespace gl { _layer.contentsScale = [UIScreen mainScreen].scale; - _layer.opaque = true; + _layer.opaque = [_layer.style valueForKey:@"opaque"] == nil ? true : [[_layer.style valueForKey:@"opaque"] boolValue]; _layer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys : [NSNumber numberWithBool:false] @@ -158,7 +158,7 @@ namespace bgfx { namespace gl BX_UNUSED(_width, _height); CAEAGLLayer* layer = (CAEAGLLayer*)g_platformData.nwh; - layer.opaque = true; + layer.opaque = [layer.style valueForKey:@"opaque"] == nil ? true : [[layer.style valueForKey:@"opaque"] boolValue]; layer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys : [NSNumber numberWithBool:false] diff --git a/3rdparty/bgfx/src/glimports.h b/3rdparty/bgfx/src/glimports.h index a12acb19d50..40781f43da0 100644 --- a/3rdparty/bgfx/src/glimports.h +++ b/3rdparty/bgfx/src/glimports.h @@ -113,6 +113,7 @@ typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (); typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); typedef void (GL_APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); @@ -301,6 +302,7 @@ GL_IMPORT______(false, PFNGLFLUSHPROC, glFlush); GL_IMPORT______(true, PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer); GL_IMPORT______(true, PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D); GL_IMPORT______(false, PFNGLGENBUFFERSPROC, glGenBuffers); +GL_IMPORT______(true, PFNGLGENERATEMIPMAPPROC, glGenerateMipmap); GL_IMPORT______(true, PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers); GL_IMPORT______(true, PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers); GL_IMPORT______(true, PFNGLGENQUERIESPROC, glGenQueries); @@ -372,9 +374,7 @@ GL_IMPORT______(true, PFNGLSTENCILMASKSEPARATEPROC, glStencilMask GL_IMPORT______(false, PFNGLSTENCILOPPROC, glStencilOp); GL_IMPORT______(true, PFNGLSTENCILOPSEPARATEPROC, glStencilOpSeparate); GL_IMPORT______(false, PFNGLTEXIMAGE2DPROC, glTexImage2D); -GL_IMPORT______(true, PFNGLTEXIMAGE2DMULTISAMPLEPROC, glTexImage2DMultisample); GL_IMPORT______(true, PFNGLTEXIMAGE3DPROC, glTexImage3D); -GL_IMPORT______(true, PFNGLTEXIMAGE3DMULTISAMPLEPROC, glTexImage3DMultisample); GL_IMPORT______(false, PFNGLTEXPARAMETERIPROC, glTexParameteri); GL_IMPORT______(false, PFNGLTEXPARAMETERIVPROC, glTexParameteriv); GL_IMPORT______(false, PFNGLTEXPARAMETERFPROC, glTexParameterf); @@ -446,6 +446,9 @@ GL_IMPORT_EXT__(true, PFNGLDELETERENDERBUFFERSPROC, glDeleteRende GL_IMPORT_EXT__(true, PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage); GL_IMPORT_EXT__(true, PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample); +GL_IMPORT______(true, PFNGLTEXIMAGE2DMULTISAMPLEPROC, glTexImage2DMultisample); +GL_IMPORT______(true, PFNGLTEXIMAGE3DMULTISAMPLEPROC, glTexImage3DMultisample); + # else // GLES GL_IMPORT______(false, PFNGLCLEARDEPTHFPROC, glClearDepthf); # endif // BGFX_CONFIG_RENDERER_OPENGL @@ -488,6 +491,7 @@ GL_IMPORT_OES__(true, PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC, glCompressedT GL_IMPORT_EXT__(true, PFNGLTEXSTORAGE2DPROC, glTexStorage2D); GL_IMPORT_EXT__(true, PFNGLTEXSTORAGE3DPROC, glTexStorage3D); GL_IMPORT______(true, PFNGLTEXIMAGE2DMULTISAMPLEPROC, glTexImage2DMultisample); +GL_IMPORT______(true, PFNGLTEXIMAGE3DMULTISAMPLEPROC, glTexImage3DMultisample); GL_IMPORT_EXT__(true, PFNGLINSERTEVENTMARKEREXTPROC, glInsertEventMarker); GL_IMPORT_EXT__(true, PFNGLPUSHGROUPMARKEREXTPROC, glPushGroupMarker); diff --git a/3rdparty/bgfx/src/image.cpp b/3rdparty/bgfx/src/image.cpp index 1d91f1e7627..4b31a7ba08a 100644 --- a/3rdparty/bgfx/src/image.cpp +++ b/3rdparty/bgfx/src/image.cpp @@ -387,68 +387,68 @@ namespace bgfx const uint8_t* src = (const uint8_t*)_src; using namespace bx; - const float4_t unpack = float4_ld(1.0f, 1.0f/256.0f, 1.0f/65536.0f, 1.0f/16777216.0f); - const float4_t pack = float4_ld(1.0f, 256.0f*0.5f, 65536.0f, 16777216.0f*0.5f); - const float4_t umask = float4_ild(0xff, 0xff00, 0xff0000, 0xff000000); - const float4_t pmask = float4_ild(0xff, 0x7f80, 0xff0000, 0x7f800000); - const float4_t wflip = float4_ild(0, 0, 0, 0x80000000); - const float4_t wadd = float4_ld(0.0f, 0.0f, 0.0f, 32768.0f*65536.0f); - const float4_t gamma = float4_ld(1.0f/2.2f, 1.0f/2.2f, 1.0f/2.2f, 1.0f); - const float4_t linear = float4_ld(2.2f, 2.2f, 2.2f, 1.0f); - const float4_t quater = float4_splat(0.25f); + const simd128_t unpack = simd_ld(1.0f, 1.0f/256.0f, 1.0f/65536.0f, 1.0f/16777216.0f); + const simd128_t pack = simd_ld(1.0f, 256.0f*0.5f, 65536.0f, 16777216.0f*0.5f); + const simd128_t umask = simd_ild(0xff, 0xff00, 0xff0000, 0xff000000); + const simd128_t pmask = simd_ild(0xff, 0x7f80, 0xff0000, 0x7f800000); + const simd128_t wflip = simd_ild(0, 0, 0, 0x80000000); + const simd128_t wadd = simd_ld(0.0f, 0.0f, 0.0f, 32768.0f*65536.0f); + const simd128_t gamma = simd_ld(1.0f/2.2f, 1.0f/2.2f, 1.0f/2.2f, 1.0f); + const simd128_t linear = simd_ld(2.2f, 2.2f, 2.2f, 1.0f); + const simd128_t quater = simd_splat(0.25f); for (uint32_t yy = 0, ystep = _pitch*2; yy < dstheight; ++yy, src += ystep) { const uint8_t* rgba = src; for (uint32_t xx = 0; xx < dstwidth; ++xx, rgba += 8, dst += 4) { - const float4_t abgr0 = float4_splat(rgba); - const float4_t abgr1 = float4_splat(rgba+4); - const float4_t abgr2 = float4_splat(rgba+_pitch); - const float4_t abgr3 = float4_splat(rgba+_pitch+4); + const simd128_t abgr0 = simd_splat(rgba); + const simd128_t abgr1 = simd_splat(rgba+4); + const simd128_t abgr2 = simd_splat(rgba+_pitch); + const simd128_t abgr3 = simd_splat(rgba+_pitch+4); - const float4_t abgr0m = float4_and(abgr0, umask); - const float4_t abgr1m = float4_and(abgr1, umask); - const float4_t abgr2m = float4_and(abgr2, umask); - const float4_t abgr3m = float4_and(abgr3, umask); - const float4_t abgr0x = float4_xor(abgr0m, wflip); - const float4_t abgr1x = float4_xor(abgr1m, wflip); - const float4_t abgr2x = float4_xor(abgr2m, wflip); - const float4_t abgr3x = float4_xor(abgr3m, wflip); - const float4_t abgr0f = float4_itof(abgr0x); - const float4_t abgr1f = float4_itof(abgr1x); - const float4_t abgr2f = float4_itof(abgr2x); - const float4_t abgr3f = float4_itof(abgr3x); - const float4_t abgr0c = float4_add(abgr0f, wadd); - const float4_t abgr1c = float4_add(abgr1f, wadd); - const float4_t abgr2c = float4_add(abgr2f, wadd); - const float4_t abgr3c = float4_add(abgr3f, wadd); - const float4_t abgr0n = float4_mul(abgr0c, unpack); - const float4_t abgr1n = float4_mul(abgr1c, unpack); - const float4_t abgr2n = float4_mul(abgr2c, unpack); - const float4_t abgr3n = float4_mul(abgr3c, unpack); + const simd128_t abgr0m = simd_and(abgr0, umask); + const simd128_t abgr1m = simd_and(abgr1, umask); + const simd128_t abgr2m = simd_and(abgr2, umask); + const simd128_t abgr3m = simd_and(abgr3, umask); + const simd128_t abgr0x = simd_xor(abgr0m, wflip); + const simd128_t abgr1x = simd_xor(abgr1m, wflip); + const simd128_t abgr2x = simd_xor(abgr2m, wflip); + const simd128_t abgr3x = simd_xor(abgr3m, wflip); + const simd128_t abgr0f = simd_itof(abgr0x); + const simd128_t abgr1f = simd_itof(abgr1x); + const simd128_t abgr2f = simd_itof(abgr2x); + const simd128_t abgr3f = simd_itof(abgr3x); + const simd128_t abgr0c = simd_add(abgr0f, wadd); + const simd128_t abgr1c = simd_add(abgr1f, wadd); + const simd128_t abgr2c = simd_add(abgr2f, wadd); + const simd128_t abgr3c = simd_add(abgr3f, wadd); + const simd128_t abgr0n = simd_mul(abgr0c, unpack); + const simd128_t abgr1n = simd_mul(abgr1c, unpack); + const simd128_t abgr2n = simd_mul(abgr2c, unpack); + const simd128_t abgr3n = simd_mul(abgr3c, unpack); - const float4_t abgr0l = float4_pow(abgr0n, linear); - const float4_t abgr1l = float4_pow(abgr1n, linear); - const float4_t abgr2l = float4_pow(abgr2n, linear); - const float4_t abgr3l = float4_pow(abgr3n, linear); + const simd128_t abgr0l = simd_pow(abgr0n, linear); + const simd128_t abgr1l = simd_pow(abgr1n, linear); + const simd128_t abgr2l = simd_pow(abgr2n, linear); + const simd128_t abgr3l = simd_pow(abgr3n, linear); - const float4_t sum0 = float4_add(abgr0l, abgr1l); - const float4_t sum1 = float4_add(abgr2l, abgr3l); - const float4_t sum2 = float4_add(sum0, sum1); - const float4_t avg0 = float4_mul(sum2, quater); - const float4_t avg1 = float4_pow(avg0, gamma); + const simd128_t sum0 = simd_add(abgr0l, abgr1l); + const simd128_t sum1 = simd_add(abgr2l, abgr3l); + const simd128_t sum2 = simd_add(sum0, sum1); + const simd128_t avg0 = simd_mul(sum2, quater); + const simd128_t avg1 = simd_pow(avg0, gamma); - const float4_t avg2 = float4_mul(avg1, pack); - const float4_t ftoi0 = float4_ftoi(avg2); - const float4_t ftoi1 = float4_and(ftoi0, pmask); - const float4_t zwxy = float4_swiz_zwxy(ftoi1); - const float4_t tmp0 = float4_or(ftoi1, zwxy); - const float4_t yyyy = float4_swiz_yyyy(tmp0); - const float4_t tmp1 = float4_iadd(yyyy, yyyy); - const float4_t result = float4_or(tmp0, tmp1); + const simd128_t avg2 = simd_mul(avg1, pack); + const simd128_t ftoi0 = simd_ftoi(avg2); + const simd128_t ftoi1 = simd_and(ftoi0, pmask); + const simd128_t zwxy = simd_swiz_zwxy(ftoi1); + const simd128_t tmp0 = simd_or(ftoi1, zwxy); + const simd128_t yyyy = simd_swiz_yyyy(tmp0); + const simd128_t tmp1 = simd_iadd(yyyy, yyyy); + const simd128_t result = simd_or(tmp0, tmp1); - float4_stx(dst, result); + simd_stx(dst, result); } } } @@ -630,8 +630,8 @@ namespace bgfx using namespace bx; - const float4_t mf0f0 = float4_isplat(0xff00ff00); - const float4_t m0f0f = float4_isplat(0x00ff00ff); + const simd128_t mf0f0 = simd_isplat(0xff00ff00); + const simd128_t m0f0f = simd_isplat(0x00ff00ff); const uint8_t* src = (uint8_t*) _src; const uint8_t* next = src + _pitch; uint8_t* dst = (uint8_t*)_dst; @@ -642,14 +642,14 @@ namespace bgfx { for (uint32_t xx = 0; xx < width; ++xx, src += 16, dst += 16) { - const float4_t tabgr = float4_ld(src); - const float4_t t00ab = float4_srl(tabgr, 16); - const float4_t tgr00 = float4_sll(tabgr, 16); - const float4_t tgrab = float4_or(t00ab, tgr00); - const float4_t ta0g0 = float4_and(tabgr, mf0f0); - const float4_t t0r0b = float4_and(tgrab, m0f0f); - const float4_t targb = float4_or(ta0g0, t0r0b); - float4_st(dst, targb); + const simd128_t tabgr = simd_ld(src); + const simd128_t t00ab = simd_srl(tabgr, 16); + const simd128_t tgr00 = simd_sll(tabgr, 16); + const simd128_t tgrab = simd_or(t00ab, tgr00); + const simd128_t ta0g0 = simd_and(tabgr, mf0f0); + const simd128_t t0r0b = simd_and(tgrab, m0f0f); + const simd128_t targb = simd_or(ta0g0, t0r0b); + simd_st(dst, targb); } } } @@ -707,6 +707,9 @@ namespace bgfx { const uint8_t* src = (const uint8_t*)_src; _dst[0] = fromUnorm(src[0], 255.0f); + _dst[1] = 0.0f; + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // R8S @@ -720,6 +723,9 @@ namespace bgfx { const int8_t* src = (const int8_t*)_src; _dst[0] = fromSnorm(src[0], 127.0f); + _dst[1] = 0.0f; + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // R8I @@ -733,6 +739,9 @@ namespace bgfx { const int8_t* src = (const int8_t*)_src; _dst[0] = float(src[0]); + _dst[1] = 0.0f; + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // R8U @@ -746,6 +755,9 @@ namespace bgfx { const uint8_t* src = (const uint8_t*)_src; _dst[0] = float(src[0]); + _dst[1] = 0.0f; + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG8 @@ -761,6 +773,8 @@ namespace bgfx const uint8_t* src = (const uint8_t*)_src; _dst[0] = fromUnorm(src[0], 255.0f); _dst[1] = fromUnorm(src[1], 255.0f); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG8S @@ -776,6 +790,8 @@ namespace bgfx const int8_t* src = (const int8_t*)_src; _dst[0] = fromSnorm(src[0], 127.0f); _dst[1] = fromSnorm(src[1], 127.0f); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG8I @@ -791,6 +807,8 @@ namespace bgfx const int8_t* src = (const int8_t*)_src; _dst[0] = float(src[0]); _dst[1] = float(src[1]); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG8U @@ -806,6 +824,8 @@ namespace bgfx const uint8_t* src = (const uint8_t*)_src; _dst[0] = float(src[0]); _dst[1] = float(src[1]); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RGB8 @@ -823,6 +843,7 @@ namespace bgfx _dst[0] = fromUnorm(src[0], 255.0f); _dst[1] = fromUnorm(src[1], 255.0f); _dst[2] = fromUnorm(src[2], 255.0f); + _dst[3] = 1.0f; } // RGB8S @@ -840,6 +861,7 @@ namespace bgfx _dst[0] = fromSnorm(src[0], 127.0f); _dst[1] = fromSnorm(src[1], 127.0f); _dst[2] = fromSnorm(src[2], 127.0f); + _dst[3] = 1.0f; } // RGB8I @@ -857,6 +879,7 @@ namespace bgfx _dst[0] = float(src[0]); _dst[1] = float(src[1]); _dst[2] = float(src[2]); + _dst[3] = 1.0f; } // RGB8U @@ -874,6 +897,7 @@ namespace bgfx _dst[0] = float(src[0]); _dst[1] = float(src[1]); _dst[2] = float(src[2]); + _dst[3] = 1.0f; } // BGRA8 @@ -982,6 +1006,9 @@ namespace bgfx { const uint16_t* src = (const uint16_t*)_src; _dst[0] = fromUnorm(src[0], 65535.0f); + _dst[1] = 0.0f; + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // R16S @@ -995,6 +1022,9 @@ namespace bgfx { const int16_t* src = (const int16_t*)_src; _dst[0] = fromSnorm(src[0], 32767.0f); + _dst[1] = 0.0f; + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // R16I @@ -1008,6 +1038,9 @@ namespace bgfx { const int16_t* src = (const int16_t*)_src; _dst[0] = float(src[0]); + _dst[1] = 0.0f; + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // R16U @@ -1034,6 +1067,9 @@ namespace bgfx { const uint16_t* src = (const uint16_t*)_src; _dst[0] = bx::halfToFloat(src[0]); + _dst[1] = 0.0f; + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG16 @@ -1049,6 +1085,8 @@ namespace bgfx const uint16_t* src = (const uint16_t*)_src; _dst[0] = fromUnorm(src[0], 65535.0f); _dst[1] = fromUnorm(src[1], 65535.0f); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG16S @@ -1064,6 +1102,8 @@ namespace bgfx const int16_t* src = (const int16_t*)_src; _dst[0] = fromSnorm(src[0], 32767.0f); _dst[1] = fromSnorm(src[1], 32767.0f); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG16I @@ -1079,6 +1119,8 @@ namespace bgfx const int16_t* src = (const int16_t*)_src; _dst[0] = float(src[0]); _dst[1] = float(src[1]); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG16U @@ -1094,6 +1136,8 @@ namespace bgfx const uint16_t* src = (const uint16_t*)_src; _dst[0] = float(src[0]); _dst[1] = float(src[1]); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RG16F @@ -1109,6 +1153,8 @@ namespace bgfx const uint16_t* src = (const uint16_t*)_src; _dst[0] = bx::halfToFloat(src[0]); _dst[1] = bx::halfToFloat(src[1]); + _dst[2] = 0.0f; + _dst[3] = 1.0f; } // RGBA16 @@ -1389,6 +1435,7 @@ namespace bgfx _dst[0] = float( ( (packed>>11) & 0x1f) ) / 31.0f; _dst[1] = float( ( (packed>> 5) & 0x3f) ) / 63.0f; _dst[2] = float( ( (packed ) & 0x1f) ) / 31.0f; + _dst[3] = 1.0f; } // RGBA4 @@ -1507,6 +1554,7 @@ namespace bgfx _dst[0] = bx::halfToFloat( (packed<< 4) & 0x7ff0); _dst[1] = bx::halfToFloat( (packed>> 7) & 0x7ff0); _dst[2] = bx::halfToFloat( (packed>>17) & 0x7fe0); + _dst[3] = 1.0f; } struct PackUnpack @@ -3581,7 +3629,7 @@ namespace bgfx default: imageDecodeToBgra8(_dst, _src, _width, _height, _pitch, _format); - imageSwizzleBgra8(_width, _height, _pitch, _dst, _dst); + imageSwizzleBgra8(_width, _height, _width*4, _dst, _dst); break; } } @@ -3628,24 +3676,24 @@ namespace bgfx const uint8_t* src = (const uint8_t*)_src; using namespace bx; - const float4_t unpack = float4_ld(1.0f, 1.0f/256.0f, 1.0f/65536.0f, 1.0f/16777216.0f); - const float4_t umask = float4_ild(0xff, 0xff00, 0xff0000, 0xff000000); - const float4_t wflip = float4_ild(0, 0, 0, 0x80000000); - const float4_t wadd = float4_ld(0.0f, 0.0f, 0.0f, 32768.0f*65536.0f); + const simd128_t unpack = simd_ld(1.0f, 1.0f/256.0f, 1.0f/65536.0f, 1.0f/16777216.0f); + const simd128_t umask = simd_ild(0xff, 0xff00, 0xff0000, 0xff000000); + const simd128_t wflip = simd_ild(0, 0, 0, 0x80000000); + const simd128_t wadd = simd_ld(0.0f, 0.0f, 0.0f, 32768.0f*65536.0f); for (uint32_t yy = 0, ystep = _pitch; yy < dstheight; ++yy, src += ystep) { const uint8_t* rgba = src; for (uint32_t xx = 0; xx < dstwidth; ++xx, rgba += 4, dst += 4) { - const float4_t abgr0 = float4_splat(rgba); - const float4_t abgr0m = float4_and(abgr0, umask); - const float4_t abgr0x = float4_xor(abgr0m, wflip); - const float4_t abgr0f = float4_itof(abgr0x); - const float4_t abgr0c = float4_add(abgr0f, wadd); - const float4_t abgr0n = float4_mul(abgr0c, unpack); + const simd128_t abgr0 = simd_splat(rgba); + const simd128_t abgr0m = simd_and(abgr0, umask); + const simd128_t abgr0x = simd_xor(abgr0m, wflip); + const simd128_t abgr0f = simd_itof(abgr0x); + const simd128_t abgr0c = simd_add(abgr0f, wadd); + const simd128_t abgr0n = simd_mul(abgr0c, unpack); - float4_st(dst, abgr0n); + simd_st(dst, abgr0n); } } } diff --git a/3rdparty/bgfx/src/renderer_d3d11.cpp b/3rdparty/bgfx/src/renderer_d3d11.cpp index f8185ed0900..5e6fb036dde 100644 --- a/3rdparty/bgfx/src/renderer_d3d11.cpp +++ b/3rdparty/bgfx/src/renderer_d3d11.cpp @@ -800,7 +800,11 @@ namespace bgfx { namespace d3d11 errorState = ErrorState::LoadedDXGI; - CreateDXGIFactory = (PFN_CREATE_DXGI_FACTORY)bx::dlsym(m_dxgidll, "CreateDXGIFactory"); + CreateDXGIFactory = (PFN_CREATE_DXGI_FACTORY)bx::dlsym(m_dxgidll, "CreateDXGIFactory1"); + if (NULL == CreateDXGIFactory) + { + CreateDXGIFactory = (PFN_CREATE_DXGI_FACTORY)bx::dlsym(m_dxgidll, "CreateDXGIFactory"); + } if (NULL == CreateDXGIFactory) { BX_TRACE("Function CreateDXGIFactory not found."); @@ -1342,7 +1346,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) { - uint8_t support = BGFX_CAPS_FORMAT_TEXTURE_NONE; + uint16_t support = BGFX_CAPS_FORMAT_TEXTURE_NONE; const DXGI_FORMAT fmt = isDepth(TextureFormat::Enum(ii) ) ? s_textureFormat[ii].m_fmtDsv @@ -1425,6 +1429,13 @@ BX_PRAGMA_DIAGNOSTIC_POP(); ? BGFX_CAPS_FORMAT_TEXTURE_MSAA : BGFX_CAPS_FORMAT_TEXTURE_NONE ; + + support |= 0 != (data.OutFormatSupport & (0 + | D3D11_FORMAT_SUPPORT_MIP_AUTOGEN + ) ) + ? BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN + : BGFX_CAPS_FORMAT_TEXTURE_NONE + ; } else { @@ -1827,7 +1838,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); m_deviceCtx->Unmap(texture.m_ptr, 0); } - void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height) BX_OVERRIDE + void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips) BX_OVERRIDE { TextureD3D11& texture = m_textures[_handle.idx]; @@ -1843,7 +1854,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); tc.m_height = _height; tc.m_sides = 0; tc.m_depth = 0; - tc.m_numMips = 1; + tc.m_numMips = _numMips; tc.m_format = TextureFormat::Enum(texture.m_requestedFormat); tc.m_cubeMap = false; tc.m_mem = NULL; @@ -2662,18 +2673,26 @@ BX_PRAGMA_DIAGNOSTIC_POP(); { _state &= BGFX_D3D11_BLEND_STATE_MASK; - const uint64_t hash = _state; + bx::HashMurmur2A murmur; + murmur.begin(); + murmur.add(_state); + murmur.add(!!(BGFX_STATE_BLEND_INDEPENDENT & _state) + ? _rgba + : -1 + ); + const uint32_t hash = murmur.end(); + ID3D11BlendState* bs = m_blendStateCache.find(hash); if (NULL == bs) { D3D11_BLEND_DESC desc; desc.AlphaToCoverageEnable = !!(BGFX_STATE_BLEND_ALPHA_TO_COVERAGE & _state); - desc.IndependentBlendEnable = !!(BGFX_STATE_BLEND_INDEPENDENT & _state); + desc.IndependentBlendEnable = !!(BGFX_STATE_BLEND_INDEPENDENT & _state); D3D11_RENDER_TARGET_BLEND_DESC* drt = &desc.RenderTarget[0]; drt->BlendEnable = !!(BGFX_STATE_BLEND_MASK & _state); - const uint32_t blend = uint32_t( (_state&BGFX_STATE_BLEND_MASK)>>BGFX_STATE_BLEND_SHIFT); + const uint32_t blend = uint32_t( (_state&BGFX_STATE_BLEND_MASK )>>BGFX_STATE_BLEND_SHIFT); const uint32_t equation = uint32_t( (_state&BGFX_STATE_BLEND_EQUATION_MASK)>>BGFX_STATE_BLEND_EQUATION_SHIFT); const uint32_t srcRGB = (blend ) & 0xf; @@ -2889,6 +2908,12 @@ BX_PRAGMA_DIAGNOSTIC_POP(); const uint32_t index = (_flags & BGFX_TEXTURE_BORDER_COLOR_MASK) >> BGFX_TEXTURE_BORDER_COLOR_SHIFT; _flags &= BGFX_TEXTURE_SAMPLER_BITS_MASK; + // Force both min+max anisotropic, can't be set individually. + _flags |= 0 != (_flags & (BGFX_TEXTURE_MIN_ANISOTROPIC|BGFX_TEXTURE_MAG_ANISOTROPIC) ) + ? BGFX_TEXTURE_MIN_ANISOTROPIC|BGFX_TEXTURE_MAG_ANISOTROPIC + : 0 + ; + uint32_t hash; ID3D11SamplerState* sampler; if (!needBorderColor(_flags) ) @@ -3079,16 +3104,16 @@ BX_PRAGMA_DIAGNOSTIC_POP(); if (NULL == ptr) { const TextureD3D11& texture = m_textures[_handle.idx]; - const bool msaaSample = 0 != (texture.m_flags&BGFX_TEXTURE_MSAA_SAMPLE); const uint32_t msaaQuality = bx::uint32_satsub( (texture.m_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1); const DXGI_SAMPLE_DESC& msaa = s_msaa[msaaQuality]; + const bool msaaSample = 1 < msaa.Count && 0 != (texture.m_flags&BGFX_TEXTURE_MSAA_SAMPLE); D3D11_SHADER_RESOURCE_VIEW_DESC desc; desc.Format = s_textureFormat[texture.m_textureFormat].m_fmtSrv; switch (texture.m_type) { case TextureD3D11::Texture2D: - desc.ViewDimension = 1 < msaa.Count && msaaSample + desc.ViewDimension = msaaSample ? D3D11_SRV_DIMENSION_TEXTURE2DMS : D3D11_SRV_DIMENSION_TEXTURE2D ; @@ -4333,9 +4358,18 @@ BX_PRAGMA_DIAGNOSTIC_POP(); const bool srgb = 0 != (m_flags&BGFX_TEXTURE_SRGB) || imageContainer.m_srgb; const bool blit = 0 != (m_flags&BGFX_TEXTURE_BLIT_DST); const bool readBack = 0 != (m_flags&BGFX_TEXTURE_READ_BACK); - const bool msaaSample = 0 != (m_flags&BGFX_TEXTURE_MSAA_SAMPLE); const uint32_t msaaQuality = bx::uint32_satsub( (m_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1); const DXGI_SAMPLE_DESC& msaa = s_msaa[msaaQuality]; + const bool msaaSample = true + && 1 < msaa.Count + && 0 != (m_flags&BGFX_TEXTURE_MSAA_SAMPLE) + && !writeOnly + ; + const bool needResolve = true + && 1 < msaa.Count + && 0 == (m_flags&BGFX_TEXTURE_MSAA_SAMPLE) + && !writeOnly + ; D3D11_SHADER_RESOURCE_VIEW_DESC srvd; memset(&srvd, 0, sizeof(srvd) ); @@ -4374,6 +4408,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); desc.Usage = kk == 0 || blit ? D3D11_USAGE_DEFAULT : D3D11_USAGE_IMMUTABLE; desc.BindFlags = writeOnly ? 0 : D3D11_BIND_SHADER_RESOURCE; desc.CPUAccessFlags = 0; + desc.MiscFlags = 0; if (isDepth( (TextureFormat::Enum)m_textureFormat) ) { @@ -4384,6 +4419,9 @@ BX_PRAGMA_DIAGNOSTIC_POP(); { desc.BindFlags |= D3D11_BIND_RENDER_TARGET; desc.Usage = D3D11_USAGE_DEFAULT; + desc.MiscFlags |= 0 + | (1 < numMips ? D3D11_RESOURCE_MISC_GENERATE_MIPS : 0) + ; } if (computeWrite) @@ -4402,16 +4440,14 @@ BX_PRAGMA_DIAGNOSTIC_POP(); if (imageContainer.m_cubeMap) { desc.ArraySize = 6; - desc.MiscFlags = D3D11_RESOURCE_MISC_TEXTURECUBE; + desc.MiscFlags |= D3D11_RESOURCE_MISC_TEXTURECUBE; srvd.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE; srvd.TextureCube.MipLevels = numMips; } else { desc.ArraySize = 1; - desc.MiscFlags = 0; - if (1 < msaa.Count - && msaaSample) + if (msaaSample) { srvd.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DMS; } @@ -4422,6 +4458,13 @@ BX_PRAGMA_DIAGNOSTIC_POP(); } } + if (needResolve) + { + DX_CHECK(s_renderD3D11->m_device->CreateTexture2D(&desc, NULL, &m_rt2d) ); + desc.BindFlags &= ~(D3D11_BIND_RENDER_TARGET|D3D11_BIND_DEPTH_STENCIL); + desc.SampleDesc = s_msaa[0]; + } + DX_CHECK(s_renderD3D11->m_device->CreateTexture2D(&desc, kk == 0 ? NULL : srd, &m_texture2d) ); } break; @@ -4482,6 +4525,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); void TextureD3D11::destroy() { s_renderD3D11->m_srvUavLru.invalidateWithParent(getHandle().idx); + DX_RELEASE(m_rt, 0); DX_RELEASE(m_srv, 0); DX_RELEASE(m_uav, 0); if (0 == (m_flags & BGFX_TEXTURE_INTERNAL_SHARED) ) @@ -4550,8 +4594,22 @@ BX_PRAGMA_DIAGNOSTIC_POP(); ; } - void TextureD3D11::resolve() + void TextureD3D11::resolve() const { + ID3D11DeviceContext* deviceCtx = s_renderD3D11->m_deviceCtx; + + const bool needResolve = NULL != m_rt; + if (needResolve) + { + deviceCtx->ResolveSubresource(m_texture2d, 0, m_rt, 0, s_textureFormat[m_textureFormat].m_fmt); + } + + const bool renderTarget = 0 != (m_flags&BGFX_TEXTURE_RT_MASK); + if (renderTarget + && 1 < m_numMips) + { + deviceCtx->GenerateMips(m_srv); + } } TextureHandle TextureD3D11::getHandle() const @@ -4713,7 +4771,11 @@ BX_PRAGMA_DIAGNOSTIC_POP(); ; dsvDesc.Flags = 0; dsvDesc.Texture2D.MipSlice = m_attachment[ii].mip; - DX_CHECK(s_renderD3D11->m_device->CreateDepthStencilView(texture.m_ptr, &dsvDesc, &m_dsv) ); + DX_CHECK(s_renderD3D11->m_device->CreateDepthStencilView( + NULL == texture.m_rt ? texture.m_ptr : texture.m_rt + , &dsvDesc + , &m_dsv + ) ); } break; @@ -4758,7 +4820,12 @@ BX_PRAGMA_DIAGNOSTIC_POP(); desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; desc.Texture2D.MipSlice = m_attachment[ii].mip; } - DX_CHECK(s_renderD3D11->m_device->CreateRenderTargetView(texture.m_ptr, &desc, &m_rtv[m_num]) ); + + DX_CHECK(s_renderD3D11->m_device->CreateRenderTargetView( + NULL == texture.m_rt ? texture.m_ptr : texture.m_rt + , &desc + , &m_rtv[m_num] + ) ); } break; @@ -4806,6 +4873,18 @@ BX_PRAGMA_DIAGNOSTIC_POP(); void FrameBufferD3D11::resolve() { + if (0 < m_numTh) + { + for (uint32_t ii = 0; ii < m_numTh; ++ii) + { + TextureHandle handle = m_attachment[ii].handle; + if (isValid(handle) ) + { + const TextureD3D11& texture = s_renderD3D11->m_textures[handle.idx]; + texture.resolve(); + } + } + } } void FrameBufferD3D11::clear(const Clear& _clear, const float _palette[][4]) @@ -5958,12 +6037,14 @@ BX_PRAGMA_DIAGNOSTIC_POP(); { m_gpuTimer.end(); - while (m_gpuTimer.get() ) + do { double toGpuMs = 1000.0 / double(m_gpuTimer.m_frequency); elapsedGpuMs = m_gpuTimer.m_elapsed * toGpuMs; maxGpuElapsed = elapsedGpuMs > maxGpuElapsed ? elapsedGpuMs : maxGpuElapsed; } + while (m_gpuTimer.get() ); + maxGpuLatency = bx::uint32_imax(maxGpuLatency, m_gpuTimer.m_control.available()-1); } diff --git a/3rdparty/bgfx/src/renderer_d3d11.h b/3rdparty/bgfx/src/renderer_d3d11.h index 84dd0c61981..5d8614a7301 100644 --- a/3rdparty/bgfx/src/renderer_d3d11.h +++ b/3rdparty/bgfx/src/renderer_d3d11.h @@ -242,6 +242,7 @@ namespace bgfx { namespace d3d11 TextureD3D11() : m_ptr(NULL) + , m_rt(NULL) , m_srv(NULL) , m_uav(NULL) , m_numMips(0) @@ -253,7 +254,7 @@ namespace bgfx { namespace d3d11 void overrideInternal(uintptr_t _ptr); void update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, uint16_t _pitch, const Memory* _mem); void commit(uint8_t _stage, uint32_t _flags, const float _palette[][4]); - void resolve(); + void resolve() const; TextureHandle getHandle() const; union @@ -263,6 +264,12 @@ namespace bgfx { namespace d3d11 ID3D11Texture3D* m_texture3d; }; + union + { + ID3D11Resource* m_rt; + ID3D11Texture2D* m_rt2d; + }; + ID3D11ShaderResourceView* m_srv; ID3D11UnorderedAccessView* m_uav; uint32_t m_flags; diff --git a/3rdparty/bgfx/src/renderer_d3d12.cpp b/3rdparty/bgfx/src/renderer_d3d12.cpp index 3a35feacd04..5624dc5dc58 100644 --- a/3rdparty/bgfx/src/renderer_d3d12.cpp +++ b/3rdparty/bgfx/src/renderer_d3d12.cpp @@ -1014,7 +1014,7 @@ namespace bgfx { namespace d3d12 for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) { - uint8_t support = BGFX_CAPS_FORMAT_TEXTURE_NONE; + uint16_t support = BGFX_CAPS_FORMAT_TEXTURE_NONE; const DXGI_FORMAT fmt = isDepth(TextureFormat::Enum(ii) ) ? s_textureFormat[ii].m_fmtDsv @@ -1464,7 +1464,7 @@ namespace bgfx { namespace d3d12 DX_RELEASE(readback, 0); } - void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height) BX_OVERRIDE + void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips) BX_OVERRIDE { TextureD3D12& texture = m_textures[_handle.idx]; @@ -1480,7 +1480,7 @@ namespace bgfx { namespace d3d12 tc.m_height = _height; tc.m_sides = 0; tc.m_depth = 0; - tc.m_numMips = 1; + tc.m_numMips = _numMips; tc.m_format = TextureFormat::Enum(texture.m_requestedFormat); tc.m_cubeMap = false; tc.m_mem = NULL; @@ -5413,12 +5413,14 @@ data.NumQualityLevels = 0; m_gpuTimer.end(m_commandList); - while (m_gpuTimer.get() ) + do { double toGpuMs = 1000.0 / double(m_gpuTimer.m_frequency); elapsedGpuMs = m_gpuTimer.m_elapsed * toGpuMs; maxGpuElapsed = elapsedGpuMs > maxGpuElapsed ? elapsedGpuMs : maxGpuElapsed; } + while (m_gpuTimer.get() ); + maxGpuLatency = bx::uint32_imax(maxGpuLatency, m_gpuTimer.m_control.available()-1); const int64_t timerFreq = bx::getHPFrequency(); diff --git a/3rdparty/bgfx/src/renderer_d3d9.cpp b/3rdparty/bgfx/src/renderer_d3d9.cpp index 84230d317df..81e53cecba1 100644 --- a/3rdparty/bgfx/src/renderer_d3d9.cpp +++ b/3rdparty/bgfx/src/renderer_d3d9.cpp @@ -628,7 +628,7 @@ namespace bgfx { namespace d3d9 for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) { - uint8_t support = 0; + uint16_t support = BGFX_CAPS_FORMAT_TEXTURE_NONE; support |= SUCCEEDED(m_d3d9->CheckDeviceFormat(m_adapter , m_deviceType @@ -702,6 +702,14 @@ namespace bgfx { namespace d3d9 , NULL ) ) ? BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA : BGFX_CAPS_FORMAT_TEXTURE_NONE; + support |= SUCCEEDED(m_d3d9->CheckDeviceFormat(m_adapter + , m_deviceType + , adapterFormat + , isDepth(TextureFormat::Enum(ii) ) ? D3DUSAGE_DEPTHSTENCIL : D3DUSAGE_RENDERTARGET + , D3DRTYPE_TEXTURE + , s_textureFormat[ii].m_fmt + ) ) ? BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN : BGFX_CAPS_FORMAT_TEXTURE_NONE; + g_caps.formats[ii] = support; } @@ -1011,7 +1019,7 @@ namespace bgfx { namespace d3d9 DX_CHECK(texture.m_texture2d->UnlockRect(0) ); } - void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height) BX_OVERRIDE + void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips) BX_OVERRIDE { TextureD3D9& texture = m_textures[_handle.idx]; @@ -1027,13 +1035,13 @@ namespace bgfx { namespace d3d9 tc.m_height = _height; tc.m_sides = 0; tc.m_depth = 0; - tc.m_numMips = 1; + tc.m_numMips = _numMips; tc.m_format = TextureFormat::Enum(texture.m_requestedFormat); tc.m_cubeMap = false; tc.m_mem = NULL; bx::write(&writer, tc); - texture.destroy(); + texture.destroy(true); texture.create(mem, texture.m_flags, 0); release(mem); @@ -1340,8 +1348,7 @@ namespace bgfx { namespace d3d9 void setFrameBuffer(FrameBufferHandle _fbh, bool _msaa = true) { if (isValid(m_fbh) - && m_fbh.idx != _fbh.idx - && m_rtMsaa) + && m_fbh.idx != _fbh.idx) { FrameBufferD3D9& frameBuffer = m_frameBuffers[m_fbh.idx]; frameBuffer.resolve(); @@ -2495,7 +2502,10 @@ namespace bgfx { namespace d3d9 } else if (renderTarget || blit) { - usage = D3DUSAGE_RENDERTARGET; + usage = 0 + | D3DUSAGE_RENDERTARGET + | (1 < _numMips ? D3DUSAGE_AUTOGENMIPMAP : 0) + ; } IDirect3DDevice9* device = s_renderD3D9->m_device; @@ -3092,7 +3102,7 @@ namespace bgfx { namespace d3d9 void TextureD3D9::resolve() const { if (NULL != m_surface - && NULL != m_texture2d) + && NULL != m_ptr) { IDirect3DSurface9* surface = getSurface(); DX_CHECK(s_renderD3D9->m_device->StretchRect(m_surface @@ -3102,6 +3112,11 @@ namespace bgfx { namespace d3d9 , D3DTEXF_LINEAR ) ); DX_RELEASE(surface, 1); + + if (1 < m_numMips) + { + m_ptr->GenerateMipSubLevels(); + } } } @@ -4188,12 +4203,14 @@ namespace bgfx { namespace d3d9 { m_gpuTimer.end(); - while (m_gpuTimer.get() ) + do { double toGpuMs = 1000.0 / double(m_gpuTimer.m_frequency); elapsedGpuMs = m_gpuTimer.m_elapsed * toGpuMs; maxGpuElapsed = elapsedGpuMs > maxGpuElapsed ? elapsedGpuMs : maxGpuElapsed; } + while (m_gpuTimer.get() ); + maxGpuLatency = bx::uint32_imax(maxGpuLatency, m_gpuTimer.m_control.available()-1); } diff --git a/3rdparty/bgfx/src/renderer_d3d9.h b/3rdparty/bgfx/src/renderer_d3d9.h index 84bb83f1399..dc5f234b7c3 100644 --- a/3rdparty/bgfx/src/renderer_d3d9.h +++ b/3rdparty/bgfx/src/renderer_d3d9.h @@ -323,11 +323,21 @@ namespace bgfx { namespace d3d9 void create(const Memory* _mem, uint32_t _flags, uint8_t _skip); - void destroy() + void destroy(bool _resize = false) { if (0 == (m_flags & BGFX_TEXTURE_INTERNAL_SHARED) ) { - DX_RELEASE(m_ptr, 0); + if (_resize) + { + // BK - at the time of resize there might be one reference held by frame buffer + // surface. This frame buffer will be recreated later, and release reference + // to existing surface. That's why here we don't care about ref count. + m_ptr->Release(); + } + else + { + DX_RELEASE(m_ptr, 0); + } } DX_RELEASE(m_surface, 0); DX_RELEASE(m_staging, 0); diff --git a/3rdparty/bgfx/src/renderer_gl.cpp b/3rdparty/bgfx/src/renderer_gl.cpp index 1ed6333c217..0fea6a7c9d8 100644 --- a/3rdparty/bgfx/src/renderer_gl.cpp +++ b/3rdparty/bgfx/src/renderer_gl.cpp @@ -223,8 +223,8 @@ namespace bgfx { namespace gl { GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, false }, // R1 { GL_ALPHA, GL_ZERO, GL_ALPHA, GL_UNSIGNED_BYTE, false }, // A8 { GL_R8, GL_ZERO, GL_RED, GL_UNSIGNED_BYTE, false }, // R8 - { GL_R8I, GL_ZERO, GL_RED, GL_BYTE, false }, // R8S - { GL_R8UI, GL_ZERO, GL_RED, GL_UNSIGNED_BYTE, false }, // R8S + { GL_R8I, GL_ZERO, GL_RED, GL_BYTE, false }, // R8I + { GL_R8UI, GL_ZERO, GL_RED, GL_UNSIGNED_BYTE, false }, // R8U { GL_R8_SNORM, GL_ZERO, GL_RED, GL_BYTE, false }, // R8S { GL_R16, GL_ZERO, GL_RED, GL_UNSIGNED_SHORT, false }, // R16 { GL_R16I, GL_ZERO, GL_RED, GL_SHORT, false }, // R16I @@ -239,8 +239,8 @@ namespace bgfx { namespace gl { GL_RG8UI, GL_ZERO, GL_RG, GL_UNSIGNED_BYTE, false }, // RG8U { GL_RG8_SNORM, GL_ZERO, GL_RG, GL_BYTE, false }, // RG8S { GL_RG16, GL_ZERO, GL_RG, GL_UNSIGNED_SHORT, false }, // RG16 - { GL_RG16I, GL_ZERO, GL_RG, GL_SHORT, false }, // RG16 - { GL_RG16UI, GL_ZERO, GL_RG, GL_UNSIGNED_SHORT, false }, // RG16 + { GL_RG16I, GL_ZERO, GL_RG, GL_SHORT, false }, // RG16I + { GL_RG16UI, GL_ZERO, GL_RG, GL_UNSIGNED_SHORT, false }, // RG16U { GL_RG16F, GL_ZERO, GL_RG, GL_FLOAT, false }, // RG16F { GL_RG16_SNORM, GL_ZERO, GL_RG, GL_SHORT, false }, // RG16S { GL_RG32I, GL_ZERO, GL_RG, GL_INT, false }, // RG32I @@ -1110,10 +1110,10 @@ namespace bgfx { namespace gl tfi.m_type = _type; } - void initTestTexture(TextureFormat::Enum _format, bool srgb = false) + GLenum initTestTexture(TextureFormat::Enum _format, bool _srgb, bool _mipmaps) { const TextureFormatInfo& tfi = s_textureFormat[_format]; - GLenum internalFmt = srgb + GLenum internalFmt = _srgb ? tfi.m_internalFmtSrgb : tfi.m_internalFmt ; @@ -1121,20 +1121,48 @@ namespace bgfx { namespace gl GLsizei size = (16*16*getBitsPerPixel(_format) )/8; void* data = bx::alignPtr(alloca(size+16), 0, 16); + GLenum err = 0; + if (isCompressed(_format) ) { glCompressedTexImage2D(GL_TEXTURE_2D, 0, internalFmt, 16, 16, 0, size, data); + err |= glGetError(); + if (_mipmaps) + { + glCompressedTexImage2D(GL_TEXTURE_2D, 1, internalFmt, 8, 8, 0, size, data); + err |= glGetError(); + glCompressedTexImage2D(GL_TEXTURE_2D, 2, internalFmt, 4, 4, 0, size, data); + err |= glGetError(); + glCompressedTexImage2D(GL_TEXTURE_2D, 3, internalFmt, 2, 2, 0, size, data); + err |= glGetError(); + glCompressedTexImage2D(GL_TEXTURE_2D, 4, internalFmt, 1, 1, 0, size, data); + err |= glGetError(); + } } else { glTexImage2D(GL_TEXTURE_2D, 0, internalFmt, 16, 16, 0, tfi.m_fmt, tfi.m_type, data); + err |= glGetError(); + if (_mipmaps) + { + glTexImage2D(GL_TEXTURE_2D, 1, internalFmt, 8, 8, 0, tfi.m_fmt, tfi.m_type, data); + err |= glGetError(); + glTexImage2D(GL_TEXTURE_2D, 2, internalFmt, 4, 4, 0, tfi.m_fmt, tfi.m_type, data); + err |= glGetError(); + glTexImage2D(GL_TEXTURE_2D, 3, internalFmt, 2, 2, 0, tfi.m_fmt, tfi.m_type, data); + err |= glGetError(); + glTexImage2D(GL_TEXTURE_2D, 4, internalFmt, 1, 1, 0, tfi.m_fmt, tfi.m_type, data); + err |= glGetError(); + } } + + return err; } - static bool isTextureFormatValid(TextureFormat::Enum _format, bool srgb = false) + static bool isTextureFormatValid(TextureFormat::Enum _format, bool _srgb = false, bool _mipAutogen = false) { const TextureFormatInfo& tfi = s_textureFormat[_format]; - GLenum internalFmt = srgb + GLenum internalFmt = _srgb ? tfi.m_internalFmtSrgb : tfi.m_internalFmt ; @@ -1146,11 +1174,17 @@ namespace bgfx { namespace gl GLuint id; GL_CHECK(glGenTextures(1, &id) ); GL_CHECK(glBindTexture(GL_TEXTURE_2D, id) ); - initTestTexture(_format); - GLenum err = glGetError(); + GLenum err = initTestTexture(_format, _srgb, _mipAutogen); BX_WARN(0 == err, "TextureFormat::%s is not supported (%x: %s).", getName(_format), err, glEnumName(err) ); + if (0 == err + && _mipAutogen) + { + glGenerateMipmap(GL_TEXTURE_2D); + err = glGetError(); + } + GL_CHECK(glDeleteTextures(1, &id) ); return 0 == err; @@ -1186,10 +1220,10 @@ namespace bgfx { namespace gl return 0 == err; } - static bool isFramebufferFormatValid(TextureFormat::Enum _format, bool srgb = false) + static bool isFramebufferFormatValid(TextureFormat::Enum _format, bool _srgb = false) { const TextureFormatInfo& tfi = s_textureFormat[_format]; - GLenum internalFmt = srgb + GLenum internalFmt = _srgb ? tfi.m_internalFmtSrgb : tfi.m_internalFmt ; @@ -1207,9 +1241,7 @@ namespace bgfx { namespace gl GL_CHECK(glGenTextures(1, &id) ); GL_CHECK(glBindTexture(GL_TEXTURE_2D, id) ); - initTestTexture(_format); - - GLenum err = glGetError(); + GLenum err = initTestTexture(_format, _srgb, false); GLenum attachment; if (isDepth(_format) ) @@ -1686,7 +1718,7 @@ namespace bgfx { namespace gl for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) { - uint8_t supported = 0; + uint16_t supported = BGFX_CAPS_FORMAT_TEXTURE_NONE; supported |= s_textureFormat[ii].m_supported ? BGFX_CAPS_FORMAT_TEXTURE_2D | BGFX_CAPS_FORMAT_TEXTURE_3D @@ -1701,6 +1733,11 @@ namespace bgfx { namespace gl : BGFX_CAPS_FORMAT_TEXTURE_NONE ; + supported |= isTextureFormatValid(TextureFormat::Enum(ii), false, true) + ? BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN + : BGFX_CAPS_FORMAT_TEXTURE_NONE + ; + supported |= computeSupport && isImageFormatValid(TextureFormat::Enum(ii) ) ? BGFX_CAPS_FORMAT_TEXTURE_IMAGE @@ -2269,7 +2306,7 @@ namespace bgfx { namespace gl } } - void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height) BX_OVERRIDE + void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips) BX_OVERRIDE { TextureGL& texture = m_textures[_handle.idx]; @@ -2285,7 +2322,7 @@ namespace bgfx { namespace gl tc.m_height = _height; tc.m_sides = 0; tc.m_depth = 0; - tc.m_numMips = 1; + tc.m_numMips = _numMips; tc.m_format = TextureFormat::Enum(texture.m_requestedFormat); tc.m_cubeMap = false; tc.m_mem = NULL; @@ -2573,21 +2610,16 @@ namespace bgfx { namespace gl uint32_t setFrameBuffer(FrameBufferHandle _fbh, uint32_t _height, uint16_t _discard = BGFX_CLEAR_NONE, bool _msaa = true) { if (isValid(m_fbh) - && m_fbh.idx != _fbh.idx - && (BGFX_CLEAR_NONE != m_fbDiscard || m_rtMsaa) ) + && m_fbh.idx != _fbh.idx) { FrameBufferGL& frameBuffer = m_frameBuffers[m_fbh.idx]; - if (m_rtMsaa) - { - frameBuffer.resolve(); - } + frameBuffer.resolve(); if (BGFX_CLEAR_NONE != m_fbDiscard) { frameBuffer.discard(m_fbDiscard); + m_fbDiscard = BGFX_CLEAR_NONE; } - - m_fbDiscard = BGFX_CLEAR_NONE; } m_glctx.makeCurrent(NULL); @@ -4315,9 +4347,10 @@ namespace bgfx { namespace gl uint32_t msaaQuality = ( (m_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT); msaaQuality = bx::uint32_satsub(msaaQuality, 1); msaaQuality = bx::uint32_min(s_renderGL->m_maxMsaa, msaaQuality == 0 ? 0 : 1<m_msaaBackBufferFbo) ); } + + if (0 < m_numTh) + { + for (uint32_t ii = 0; ii < m_numTh; ++ii) + { + TextureHandle handle = m_attachment[ii].handle; + if (isValid(handle) ) + { + const TextureGL& texture = s_renderGL->m_textures[handle.idx]; + texture.resolve(); + } + } + } } void FrameBufferGL::discard(uint16_t _flags) @@ -6785,12 +6851,14 @@ namespace bgfx { namespace gl if (m_timerQuerySupport) { m_gpuTimer.end(); - while (m_gpuTimer.get() ) + do { elapsedGl = m_gpuTimer.m_elapsed; elapsedGpuMs = double(elapsedGl)/1e6; maxGpuElapsed = elapsedGpuMs > maxGpuElapsed ? elapsedGpuMs : maxGpuElapsed; } + while (m_gpuTimer.get() ); + maxGpuLatency = bx::uint32_imax(maxGpuLatency, m_gpuTimer.m_control.available()-1); } diff --git a/3rdparty/bgfx/src/renderer_gl.h b/3rdparty/bgfx/src/renderer_gl.h index 4e205fe3095..189c17b29e5 100644 --- a/3rdparty/bgfx/src/renderer_gl.h +++ b/3rdparty/bgfx/src/renderer_gl.h @@ -1234,6 +1234,7 @@ namespace bgfx { namespace gl void update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, uint16_t _pitch, const Memory* _mem); void setSamplerState(uint32_t _flags, const float _rgba[4]); void commit(uint32_t _stage, uint32_t _flags, const float _palette[][4]); + void resolve() const; GLuint m_id; GLuint m_rbo; diff --git a/3rdparty/bgfx/src/renderer_mtl.h b/3rdparty/bgfx/src/renderer_mtl.h index f471ee5d457..42145e0c036 100644 --- a/3rdparty/bgfx/src/renderer_mtl.h +++ b/3rdparty/bgfx/src/renderer_mtl.h @@ -19,10 +19,38 @@ namespace bgfx { namespace mtl { + //runtime os check + inline bool iOSVersionEqualOrGreater(const char* _version) + { +#if BX_PLATFORM_IOS + return ([[[UIDevice currentDevice] systemVersion] compare:@(_version) options:NSNumericSearch] != NSOrderedAscending); +#else + BX_UNUSED(_version); + return false; +#endif + } + + inline bool macOSVersionEqualOrGreater(NSInteger _majorVersion, + NSInteger _minorVersion, + NSInteger _patchVersion) + { +#if BX_PLATFORM_OSX + NSOperatingSystemVersion v = [[NSProcessInfo processInfo] operatingSystemVersion]; + return (v.majorVersion<<16) + (v.minorVersion<<8) + v.patchVersion >= + (_majorVersion<<16) + (_minorVersion<<8) + _patchVersion; +#else + BX_UNUSED(_majorVersion, _minorVersion, _patchVersion); + return false; +#endif + } + + // c++ wrapper // objects with creation functions starting with 'new' has a refcount 1 after creation, object must be destroyed with release. // commandBuffer, commandEncoders are autoreleased objects. Needs AutoreleasePool! +#define MTL_MAX_FRAMES_IN_FLIGHT (3) + #define MTL_CLASS(name) \ class name \ { \ @@ -35,6 +63,36 @@ namespace bgfx { namespace mtl typedef void (*mtlCallback)(void* userData); + MTL_CLASS(BlitCommandEncoder) + void copyFromTexture(id _sourceTexture, NSUInteger _sourceSlice, NSUInteger _sourceLevel, MTLOrigin _sourceOrigin, MTLSize _sourceSize, + id _destinationTexture, NSUInteger _destinationSlice, NSUInteger _destinationLevel, MTLOrigin _destinationOrigin) + { + [m_obj copyFromTexture:_sourceTexture sourceSlice:_sourceSlice sourceLevel:_sourceLevel sourceOrigin:_sourceOrigin sourceSize:_sourceSize + toTexture:_destinationTexture destinationSlice:_destinationSlice destinationLevel:_destinationLevel destinationOrigin:_destinationOrigin]; + } + + void copyFromBuffer(id _sourceBuffer, NSUInteger _sourceOffset, id _destinationBuffer, + NSUInteger _destinationOffset, NSUInteger _size) + { + [m_obj copyFromBuffer:_sourceBuffer sourceOffset:_sourceOffset toBuffer:_destinationBuffer + destinationOffset:_destinationOffset size:_size]; + } + + void copyFromBuffer(id _sourceBuffer, NSUInteger _sourceOffset, NSUInteger _sourceBytesPerRow, + NSUInteger _sourceBytesPerImage, MTLSize _sourceSize, id _destinationTexture, + NSUInteger _destinationSlice, NSUInteger _destinationLevel, MTLOrigin _destinationOrigin) + { + [m_obj copyFromBuffer:_sourceBuffer sourceOffset:_sourceOffset sourceBytesPerRow:_sourceBytesPerRow + sourceBytesPerImage:_sourceBytesPerImage sourceSize:_sourceSize toTexture:_destinationTexture + destinationSlice:_destinationSlice destinationLevel:_destinationLevel destinationOrigin:_destinationOrigin]; + } + + void endEncoding() + { + [m_obj endEncoding]; + } + MTL_CLASS_END + MTL_CLASS(Buffer) void* contents() { @@ -74,6 +132,11 @@ namespace bgfx { namespace mtl [m_obj commit]; } + void addScheduledHandler(mtlCallback _cb, void* _data) + { + [m_obj addScheduledHandler:^(id ){ _cb(_data); }]; + } + void addCompletedHandler(mtlCallback _cb, void* _data) { [m_obj addCompletedHandler:^(id ){ _cb(_data); }]; @@ -148,8 +211,14 @@ namespace bgfx { namespace mtl id newLibraryWithSource(const char* _source) { + MTLCompileOptions* options = [MTLCompileOptions new]; + //NOTE: turned of as 'When using the fast variants, math functions execute more quickly, + // but operate over a **LIMITED RANGE** and their behavior when handling NaN values is not defined.' + if (BX_ENABLED(BX_PLATFORM_IOS)) + options.fastMathEnabled = NO; + NSError* error; - id lib = [m_obj newLibraryWithSource:@(_source) options:nil error:&error]; + id lib = [m_obj newLibraryWithSource:@(_source) options:options error:&error]; BX_WARN(NULL == error , "Shader compilation failed: %s" , [error.localizedDescription cStringUsingEncoding:NSASCIIStringEncoding] @@ -229,6 +298,23 @@ namespace bgfx { namespace mtl ); return state; } + + bool supportsTextureSampleCount(int sampleCount) + { + if (BX_ENABLED(BX_PLATFORM_IOS) && !iOSVersionEqualOrGreater("9.0.0") ) + return sampleCount == 1 || sampleCount == 2 || sampleCount == 4; + else + return [m_obj supportsTextureSampleCount:sampleCount]; + } + + bool depth24Stencil8PixelFormatSupported() + { +#if BX_PLATFORM_IOS + return false; +#else + return m_obj.depth24Stencil8PixelFormatSupported; +#endif // BX_PLATFORM_IOS + } MTL_CLASS_END MTL_CLASS(Function) @@ -369,7 +455,7 @@ namespace bgfx { namespace mtl } // Copying Data from a Texture Image - void getBytes(void* _pixelBytes, NSUInteger _bytesPerRow, NSUInteger _bytesPerImage, MTLRegion _region, NSUInteger _mipmapLevel, NSUInteger _slice) + void getBytes(void* _pixelBytes, NSUInteger _bytesPerRow, NSUInteger _bytesPerImage, MTLRegion _region, NSUInteger _mipmapLevel, NSUInteger _slice) const { [m_obj getBytes:_pixelBytes bytesPerRow:_bytesPerRow bytesPerImage:_bytesPerImage fromRegion:_region mipmapLevel:_mipmapLevel slice:_slice]; } @@ -381,12 +467,12 @@ namespace bgfx { namespace mtl } //properties - uint32_t width() + uint32_t width() const { return (uint32_t)m_obj.width; } - uint32_t height() + uint32_t height() const { return (uint32_t)m_obj.height; } @@ -395,6 +481,16 @@ namespace bgfx { namespace mtl { return m_obj.pixelFormat; } + + uint32_t sampleCount() const + { + return (uint32_t)m_obj.sampleCount; + } + + MTLTextureType textureType() const + { + return m_obj.textureType; + } MTL_CLASS_END typedef id ComputePipelineState; @@ -493,14 +589,6 @@ namespace bgfx { namespace mtl _obj = nil; \ BX_MACRO_BLOCK_END -#if BX_PLATFORM_IOS - inline bool OsVersionEqualOrGreater(const char* _version) - { - return ([[[UIDevice currentDevice] systemVersion] compare:@(_version) options:NSNumericSearch] != NSOrderedAscending); - } - //TODO: this could be in bx ? -#endif // - // end of c++ wrapper template @@ -557,10 +645,12 @@ namespace bgfx { namespace mtl struct BufferMtl { BufferMtl() - : m_buffer(NULL) - , m_flags(BGFX_BUFFER_NONE) + : m_flags(BGFX_BUFFER_NONE) , m_dynamic(false) + , m_bufferIndex(0) { + for (uint32_t ii = 0; ii < MTL_MAX_FRAMES_IN_FLIGHT; ++ii) + m_buffers[ii] = NULL; } void create(uint32_t _size, void* _data, uint16_t _flags, uint16_t _stride = 0, bool _vertex = false); @@ -568,18 +658,22 @@ namespace bgfx { namespace mtl void destroy() { - if (NULL != m_buffer) + for (uint32_t ii = 0; ii < MTL_MAX_FRAMES_IN_FLIGHT; ++ii) { - [m_buffer release]; - m_buffer = NULL; - m_dynamic = false; + MTL_RELEASE(m_buffers[ii]); } + m_dynamic = false; } - Buffer m_buffer; + Buffer getBuffer() const { return m_buffers[m_bufferIndex]; } + uint32_t m_size; uint16_t m_flags; + bool m_dynamic; + private: + uint8_t m_bufferIndex; + Buffer m_buffers[MTL_MAX_FRAMES_IN_FLIGHT]; }; typedef BufferMtl IndexBufferMtl; @@ -625,6 +719,8 @@ namespace bgfx { namespace mtl , m_vshConstantBufferAlignmentMask(0) , m_fshConstantBufferSize(0) , m_fshConstantBufferAlignmentMask(0) + , m_usedVertexSamplerStages(0) + , m_usedFragmentSamplerStages(0) , m_numPredefined(0) , m_processedUniforms(false) { @@ -650,6 +746,8 @@ namespace bgfx { namespace mtl uint32_t m_vshConstantBufferAlignmentMask; uint32_t m_fshConstantBufferSize; uint32_t m_fshConstantBufferAlignmentMask; + uint32_t m_usedVertexSamplerStages; + uint32_t m_usedFragmentSamplerStages; PredefinedUniform m_predefined[PredefinedUniform::Count*2]; uint8_t m_numPredefined; bool m_processedUniforms; @@ -659,9 +757,13 @@ namespace bgfx { namespace mtl { TextureMtl() : m_ptr(NULL) + , m_ptrMSAA(NULL) , m_ptrStencil(NULL) , m_sampler(NULL) , m_flags(0) + , m_width(0) + , m_height(0) + , m_depth(0) , m_numMips(0) { } @@ -673,14 +775,18 @@ namespace bgfx { namespace mtl MTL_RELEASE(m_ptrStencil); } void update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, uint16_t _pitch, const Memory* _mem); - void commit(uint8_t _stage, uint32_t _flags = BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER); + void commit(uint8_t _stage, bool _vertex, bool _fragment, uint32_t _flags = BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER); Texture m_ptr; + Texture m_ptrMSAA; Texture m_ptrStencil; // for emulating packed depth/stencil formats - only for iOS8... SamplerState m_sampler; uint32_t m_flags; uint8_t m_requestedFormat; uint8_t m_textureFormat; + uint32_t m_width; + uint32_t m_height; + uint32_t m_depth; uint8_t m_numMips; }; @@ -711,6 +817,27 @@ namespace bgfx { namespace mtl uint8_t m_num; // number of color handles }; + struct TimerQueryMtl + { + TimerQueryMtl() + : m_control(4) + { + } + + void init(); + void shutdown(); + void addHandlers(CommandBuffer& _commandBuffer); + bool get(); + + uint64_t m_begin; + uint64_t m_end; + uint64_t m_elapsed; + uint64_t m_frequency; + + uint64_t m_result[4*2]; + bx::RingBufferControl m_control; + }; + struct OcclusionQueryMTL { OcclusionQueryMTL() diff --git a/3rdparty/bgfx/src/renderer_mtl.mm b/3rdparty/bgfx/src/renderer_mtl.mm index 5de80bd577d..b2dcdd36900 100644 --- a/3rdparty/bgfx/src/renderer_mtl.mm +++ b/3rdparty/bgfx/src/renderer_mtl.mm @@ -1,5 +1,5 @@ /* - * Copyright 2011-2015 Attila Kocsis. All rights reserved. + * Copyright 2011-2016 Attila Kocsis. All rights reserved. * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause */ @@ -17,36 +17,57 @@ #import -#define UNIFORM_BUFFER_SIZE (1024*1024) -#define UNIFORM_BUFFER_COUNT (3) +#define UNIFORM_BUFFER_SIZE (8*1024*1024) /* -Known issues / TODOs: -- 15-shadowmaps-simple (modified shaderc and example needs modification too, mtxCrop znew = z * 0.5 + 0.5 is not needed ) could be hacked in shader too -- 19-oit ( hacked shaderc to support MRT output) -- 21-deferred ( hacked shaderc to support MRT output and fs_deferred_light needed modification for metal (similar to BGFX_SHADER_LANGUAGE_HLSL ) + // known metal shader generation issues: + 03-raymarch: OSX10.11.3 nothing is visible ( depth/color swap in fragment output struct fixed this ) + 14-shadowvolumes: in texture as stencil mode - columns/bunny are dark. in fs_shadowvolume_color_lighting SAMPLER2D(s_texStencil, 1) is + converted to "texture2d s_texStencil [[texture(0)]], sampler _mtlsmp_s_texStencil [[sampler(0)]]". Slot is 1 -> 0. + 15-shadowmaps-simple: shader compilation error + 16-shadowmaps: //problem with essl -> metal: SAMPLER2D(u_shadowMap0, 4); sampler index is lost. Shadowmap is set to slot 4, but + metal shader uses sampler/texture slot 0. this could require changes outside of renderer_mtl? + packFloatToRGBA needs highp. currently it uses half. + 24-nbody: no generated compute shaders for metal + 27-terrain: shaderc generates invalid metal shader for vs_terrain_height_texture. vertex output: half4 gl_Position [[position]], should be float4 + 31-rsm: + :6:23: error: type 'half4' (aka 'vector_half4') is not valid for attribute 'position' + half4 gl_Position [[position]]; -07-callback, saveScreenshot should be implemented with one frame latency (using saveScreenshotBegin and End) -16-shadowmaps, //problem with essl -> metal: SAMPLER2D(u_shadowMap0, 4); sampler index is lost. Shadowmap is set to slot 4, but - metal shader uses sampler/texture slot 0. this could require changes outside of renderer_mtl? - Otherwise it works with hacking the slot. +Known issues(driver problems??): + OSX mac mini(late 2014), OSX10.11.3 : nanovg-rendering: color writemask off causes problem... + 03-raymarch: OSX nothing is visible ( depth/color order should be swapped in fragment output struct) + works fine with newer OSX + iPad mini 2, iOS 8.1.1: 21-deferred: scissor not working properly + 26-occlusion: query doesn't work with two rendercommandencoders + Only on this device ( no problem on iPad Air 2 with iOS9.3.1) -24-nbody - cannot generate compute shaders for metal + TODOs: + - remove sync points at mesh update. clearquad: 13-stencil, 26-occlusion, 30-picking + - framebufferMtl and TextureMtl resolve -20-nanonvg - TODO: remove sampler/texture hack + - FrameBufferMtl::postReset recreate framebuffer??? -- caps + renderpass load/resolve + - capture with msaa: 07-callback + - implement fb discard. problematic with multiple views that has same fb... + - msaa color/depth/stencil is not saved. could have problem when we switch back to msaa framebuffer + - refactor store/load actions to support msaa/discard/capture/readback etc... -- optimization... + - finish savescreenshot with screenshotbegin/end -create binary shader representation + - support multiple windows: 22-windows + - multithreading with multiple commandbuffer - 13-stencil and 16-shadowmaps are very inefficient. every view stores/loads backbuffer data + - compute and drawindirect: 24-nbody (needs compute shaders) - BGFX_RESET_FLIP_AFTER_RENDER on low level renderers should be true? (crashes even with BGFX_RESET_FLIP_AFTER_RENDER because there is - one rendering frame before reset). Do I have absolutely need to send result to View at flip or can I do it in submit? + INFO: + - 15-shadowmaps-simple (example needs modification mtxCrop znew = z * 0.5 + 0.5 is not needed ) could be hacked in shader too + ASK: + BGFX_RESET_FLIP_AFTER_RENDER on low level renderers should be true? + Do I have absolutely need to send result to screen at flip or can I do it in submit? */ namespace bgfx { namespace mtl @@ -122,12 +143,12 @@ namespace bgfx { namespace mtl }, //Uint10 - //TODO: normalized only + //Note: unnormalized is handled as normalized now { - { MTLVertexFormatInvalid, MTLVertexFormatUInt1010102Normalized }, - { MTLVertexFormatInvalid, MTLVertexFormatUInt1010102Normalized }, - { MTLVertexFormatInvalid, MTLVertexFormatUInt1010102Normalized }, - { MTLVertexFormatInvalid, MTLVertexFormatUInt1010102Normalized } + { MTLVertexFormatUInt1010102Normalized, MTLVertexFormatUInt1010102Normalized }, + { MTLVertexFormatUInt1010102Normalized, MTLVertexFormatUInt1010102Normalized }, + { MTLVertexFormatUInt1010102Normalized, MTLVertexFormatUInt1010102Normalized }, + { MTLVertexFormatUInt1010102Normalized, MTLVertexFormatUInt1010102Normalized } }, //Int16 @@ -142,8 +163,8 @@ namespace bgfx { namespace mtl { { MTLVertexFormatHalf2, MTLVertexFormatHalf2 }, { MTLVertexFormatHalf2, MTLVertexFormatHalf2 }, - { MTLVertexFormatHalf3, MTLVertexFormatHalf2 }, - { MTLVertexFormatHalf4, MTLVertexFormatHalf2 } + { MTLVertexFormatHalf3, MTLVertexFormatHalf3 }, + { MTLVertexFormatHalf4, MTLVertexFormatHalf4 } }, //Float @@ -193,7 +214,7 @@ namespace bgfx { namespace mtl static const MTLCompareFunction s_cmpFunc[] = { - MTLCompareFunctionAlways, //TODO: depth disable? + MTLCompareFunctionAlways, MTLCompareFunctionLess, MTLCompareFunctionLessEqual, MTLCompareFunctionEqual, @@ -245,81 +266,87 @@ namespace bgfx { namespace mtl static TextureFormatInfo s_textureFormat[] = { - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // BC1 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // BC2 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // BC3 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // BC4 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // BC5 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // BC6H - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // BC7 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ETC1 - { MTLPixelFormat(180) /*ETC2_RGB8*/, MTLPixelFormat(181) /*ETC2_RGB8_sRGB*/ }, // ETC2 - { MTLPixelFormat(178) /*EAC_RGBA8*/, MTLPixelFormat(179) /*EAC_RGBA8_sRGB*/ }, // ETC2A - { MTLPixelFormat(182) /*ETC2_RGB8A1*/, MTLPixelFormat(183) /*ETC2_RGB8A1_sRGB*/ }, // ETC2A1 - { MTLPixelFormat(160) /*PVRTC_RGB_2BPP*/, MTLPixelFormat(161) /*PVRTC_RGB_2BPP_sRGB*/ }, // PTC12 - { MTLPixelFormat(162) /*PVRTC_RGB_4BPP*/, MTLPixelFormat(163) /*PVRTC_RGB_4BPP_sRGB*/ }, // PTC14 - { MTLPixelFormat(164) /*PVRTC_RGBA_2BPP*/, MTLPixelFormat(165) /*PVRTC_RGBA_2BPP_sRGB*/ }, // PTC12A - { MTLPixelFormat(166) /*PVRTC_RGBA_4BPP*/, MTLPixelFormat(167) /*PVRTC_RGBA_4BPP_sRGB*/ }, // PTC14A - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // PTC22 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // PTC24 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // Unknown - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // R1 - { MTLPixelFormatA8Unorm, MTLPixelFormatInvalid }, // A8 - { MTLPixelFormatR8Unorm, MTLPixelFormat(11) /*R8Unorm_sRGB*/ }, // R8 - { MTLPixelFormatR8Sint, MTLPixelFormatInvalid }, // R8I - { MTLPixelFormatR8Uint, MTLPixelFormatInvalid }, // R8U - { MTLPixelFormatR8Snorm, MTLPixelFormatInvalid }, // R8S - { MTLPixelFormatR16Unorm, MTLPixelFormatInvalid }, // R16 - { MTLPixelFormatR16Sint, MTLPixelFormatInvalid }, // R16I - { MTLPixelFormatR16Uint, MTLPixelFormatInvalid }, // R16U - { MTLPixelFormatR16Float, MTLPixelFormatInvalid }, // R16F - { MTLPixelFormatR16Snorm, MTLPixelFormatInvalid }, // R16S - { MTLPixelFormatR32Sint, MTLPixelFormatInvalid }, // R32I - { MTLPixelFormatR32Uint, MTLPixelFormatInvalid }, // R32U - { MTLPixelFormatR32Float, MTLPixelFormatInvalid }, // R32F - { MTLPixelFormatRG8Unorm, MTLPixelFormat(31) /*RG8Unorm_sRGB*/ }, // RG8 - { MTLPixelFormatRG8Sint, MTLPixelFormatInvalid }, // RG8I - { MTLPixelFormatRG8Uint, MTLPixelFormatInvalid }, // RG8U - { MTLPixelFormatRG8Snorm, MTLPixelFormatInvalid }, // RG8S - { MTLPixelFormatRG16Unorm, MTLPixelFormatInvalid }, // RG16 - { MTLPixelFormatRG16Sint, MTLPixelFormatInvalid }, // RG16I - { MTLPixelFormatRG16Uint, MTLPixelFormatInvalid }, // RG16U - { MTLPixelFormatRG16Float, MTLPixelFormatInvalid }, // RG16F - { MTLPixelFormatRG16Snorm, MTLPixelFormatInvalid }, // RG16S - { MTLPixelFormatRG32Sint, MTLPixelFormatInvalid }, // RG32I - { MTLPixelFormatRG32Uint, MTLPixelFormatInvalid }, // RG32U - { MTLPixelFormatRG32Float, MTLPixelFormatInvalid }, // RG32F - { MTLPixelFormatRGB9E5Float, MTLPixelFormatInvalid }, // RGB9E5F - { MTLPixelFormatBGRA8Unorm, MTLPixelFormatBGRA8Unorm_sRGB }, // BGRA8 - { MTLPixelFormatRGBA8Unorm, MTLPixelFormatRGBA8Unorm_sRGB }, // RGBA8 - { MTLPixelFormatRGBA8Sint, MTLPixelFormatInvalid }, // RGBA8I - { MTLPixelFormatRGBA8Uint, MTLPixelFormatInvalid }, // RGBA8U - { MTLPixelFormatRGBA8Snorm, MTLPixelFormatInvalid }, // RGBA8S - { MTLPixelFormatRGBA16Unorm, MTLPixelFormatInvalid }, // RGBA16 - { MTLPixelFormatRGBA16Sint, MTLPixelFormatInvalid }, // RGBA16I - { MTLPixelFormatRGBA16Uint, MTLPixelFormatInvalid }, // RGBA16I - { MTLPixelFormatRGBA16Float, MTLPixelFormatInvalid }, // RGBA16F - { MTLPixelFormatRGBA16Snorm, MTLPixelFormatInvalid }, // RGBA16S - { MTLPixelFormatRGBA32Sint, MTLPixelFormatInvalid }, // RGBA32I - { MTLPixelFormatRGBA32Uint, MTLPixelFormatInvalid }, // RGBA32U - { MTLPixelFormatRGBA32Float, MTLPixelFormatInvalid }, // RGBA32F - { MTLPixelFormat(40) /*B5G6R5Unorm*/, MTLPixelFormatInvalid }, // R5G6B5 - { MTLPixelFormat(42) /*ABGR4Unorm*/, MTLPixelFormatInvalid }, // RGBA4 - { MTLPixelFormat(41) /*A1BGR5Unorm*/, MTLPixelFormatInvalid }, // RGB5A1 - { MTLPixelFormatRGB10A2Unorm, MTLPixelFormatInvalid }, // RGB10A2 - { MTLPixelFormatRG11B10Float, MTLPixelFormatInvalid }, // R11G11B10F - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // UnknownDepth - { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D16 - { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D24 - { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // D24S8 - { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D32 - { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D16F - { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D24F - { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D32F - { MTLPixelFormatStencil8, MTLPixelFormatInvalid }, // D0S8 + { MTLPixelFormat(130) /*BC1_RGBA*/, MTLPixelFormat(131) /*BC1_RGBA_sRGB*/ }, // BC1 + { MTLPixelFormat(132) /*BC2_RGBA*/, MTLPixelFormat(133) /*BC2_RGBA_sRGB*/ }, // BC2 + { MTLPixelFormat(134) /*BC3_RGBA*/, MTLPixelFormat(135) /*BC3_RGBA_sRGB*/ }, // BC3 + { MTLPixelFormat(140) /*BC4_RUnorm*/, MTLPixelFormatInvalid }, // BC4 + { MTLPixelFormat(142) /*BC5_RGUnorm*/, MTLPixelFormatInvalid }, // BC5 + { MTLPixelFormat(150) /*BC6H_RGBFloat*/, MTLPixelFormatInvalid }, // BC6H + { MTLPixelFormat(152) /*BC7_RGBAUnorm*/, MTLPixelFormat(153) /*BC7_RGBAUnorm_sRGB*/ }, // BC7 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // ETC1 + { MTLPixelFormat(180) /*ETC2_RGB8*/, MTLPixelFormat(181) /*ETC2_RGB8_sRGB*/ }, // ETC2 + { MTLPixelFormat(178) /*EAC_RGBA8*/, MTLPixelFormat(179) /*EAC_RGBA8_sRGB*/ }, // ETC2A + { MTLPixelFormat(182) /*ETC2_RGB8A1*/, MTLPixelFormat(183) /*ETC2_RGB8A1_sRGB*/ }, // ETC2A1 + { MTLPixelFormat(160) /*PVRTC_RGB_2BPP*/, MTLPixelFormat(161) /*PVRTC_RGB_2BPP_sRGB*/ }, // PTC12 + { MTLPixelFormat(162) /*PVRTC_RGB_4BPP*/, MTLPixelFormat(163) /*PVRTC_RGB_4BPP_sRGB*/ }, // PTC14 + { MTLPixelFormat(164) /*PVRTC_RGBA_2BPP*/, MTLPixelFormat(165) /*PVRTC_RGBA_2BPP_sRGB*/ }, // PTC12A + { MTLPixelFormat(166) /*PVRTC_RGBA_4BPP*/, MTLPixelFormat(167) /*PVRTC_RGBA_4BPP_sRGB*/ }, // PTC14A + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // PTC22 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // PTC24 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // Unknown + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // R1 + { MTLPixelFormatA8Unorm, MTLPixelFormatInvalid }, // A8 + { MTLPixelFormatR8Unorm, MTLPixelFormat(11) /*R8Unorm_sRGB*/ }, // R8 + { MTLPixelFormatR8Sint, MTLPixelFormatInvalid }, // R8I + { MTLPixelFormatR8Uint, MTLPixelFormatInvalid }, // R8U + { MTLPixelFormatR8Snorm, MTLPixelFormatInvalid }, // R8S + { MTLPixelFormatR16Unorm, MTLPixelFormatInvalid }, // R16 + { MTLPixelFormatR16Sint, MTLPixelFormatInvalid }, // R16I + { MTLPixelFormatR16Uint, MTLPixelFormatInvalid }, // R16U + { MTLPixelFormatR16Float, MTLPixelFormatInvalid }, // R16F + { MTLPixelFormatR16Snorm, MTLPixelFormatInvalid }, // R16S + { MTLPixelFormatR32Sint, MTLPixelFormatInvalid }, // R32I + { MTLPixelFormatR32Uint, MTLPixelFormatInvalid }, // R32U + { MTLPixelFormatR32Float, MTLPixelFormatInvalid }, // R32F + { MTLPixelFormatRG8Unorm, MTLPixelFormat(31) /*RG8Unorm_sRGB*/ }, // RG8 + { MTLPixelFormatRG8Sint, MTLPixelFormatInvalid }, // RG8I + { MTLPixelFormatRG8Uint, MTLPixelFormatInvalid }, // RG8U + { MTLPixelFormatRG8Snorm, MTLPixelFormatInvalid }, // RG8S + { MTLPixelFormatRG16Unorm, MTLPixelFormatInvalid }, // RG16 + { MTLPixelFormatRG16Sint, MTLPixelFormatInvalid }, // RG16I + { MTLPixelFormatRG16Uint, MTLPixelFormatInvalid }, // RG16U + { MTLPixelFormatRG16Float, MTLPixelFormatInvalid }, // RG16F + { MTLPixelFormatRG16Snorm, MTLPixelFormatInvalid }, // RG16S + { MTLPixelFormatRG32Sint, MTLPixelFormatInvalid }, // RG32I + { MTLPixelFormatRG32Uint, MTLPixelFormatInvalid }, // RG32U + { MTLPixelFormatRG32Float, MTLPixelFormatInvalid }, // RG32F + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // RGB8 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // RGB8I + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // RGB8U + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // RGB8S + { MTLPixelFormatRGB9E5Float, MTLPixelFormatInvalid }, // RGB9E5F + { MTLPixelFormatBGRA8Unorm, MTLPixelFormatBGRA8Unorm_sRGB }, // BGRA8 + { MTLPixelFormatRGBA8Unorm, MTLPixelFormatRGBA8Unorm_sRGB }, // RGBA8 + { MTLPixelFormatRGBA8Sint, MTLPixelFormatInvalid }, // RGBA8I + { MTLPixelFormatRGBA8Uint, MTLPixelFormatInvalid }, // RGBA8U + { MTLPixelFormatRGBA8Snorm, MTLPixelFormatInvalid }, // RGBA8S + { MTLPixelFormatRGBA16Unorm, MTLPixelFormatInvalid }, // RGBA16 + { MTLPixelFormatRGBA16Sint, MTLPixelFormatInvalid }, // RGBA16I + { MTLPixelFormatRGBA16Uint, MTLPixelFormatInvalid }, // RGBA16U + { MTLPixelFormatRGBA16Float, MTLPixelFormatInvalid }, // RGBA16F + { MTLPixelFormatRGBA16Snorm, MTLPixelFormatInvalid }, // RGBA16S + { MTLPixelFormatRGBA32Sint, MTLPixelFormatInvalid }, // RGBA32I + { MTLPixelFormatRGBA32Uint, MTLPixelFormatInvalid }, // RGBA32U + { MTLPixelFormatRGBA32Float, MTLPixelFormatInvalid }, // RGBA32F + { MTLPixelFormat(40) /*B5G6R5Unorm*/, MTLPixelFormatInvalid }, // R5G6B5 + { MTLPixelFormat(42) /*ABGR4Unorm*/, MTLPixelFormatInvalid }, // RGBA4 + { MTLPixelFormat(41) /*A1BGR5Unorm*/, MTLPixelFormatInvalid }, // RGB5A1 + { MTLPixelFormatRGB10A2Unorm, MTLPixelFormatInvalid }, // RGB10A2 + { MTLPixelFormatRG11B10Float, MTLPixelFormatInvalid }, // R11G11B10F + { MTLPixelFormatInvalid, MTLPixelFormatInvalid }, // UnknownDepth + { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D16 + { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D24 + { MTLPixelFormat(255) /*Depth24Unorm_Stencil8*/,MTLPixelFormatInvalid }, // D24S8 + { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D32 + { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D16F + { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D24F + { MTLPixelFormatDepth32Float, MTLPixelFormatInvalid }, // D32F + { MTLPixelFormatStencil8, MTLPixelFormatInvalid }, // D0S8 }; BX_STATIC_ASSERT(TextureFormat::Count == BX_COUNTOF(s_textureFormat) ); + int s_msaa[5] = { 1,2,4,8,16 }; + #define SHADER_FUNCTION_NAME ("xlatMtlMain") #define SHADER_UNIFORM_NAME ("_mtl_u") @@ -329,10 +356,13 @@ namespace bgfx { namespace mtl : m_metalLayer(NULL) , m_backBufferPixelFormatHash(0) , m_maxAnisotropy(1) - , m_uniformBufferIndex(0) + , m_bufferIndex(0) , m_numWindows(1) , m_rtMsaa(false) + , m_capture(NULL) + , m_captureSize(0) , m_drawable(NULL) + , m_saveScreenshot(false) { } @@ -400,52 +430,107 @@ namespace bgfx { namespace mtl m_textureDescriptor = newTextureDescriptor(); m_samplerDescriptor = newSamplerDescriptor(); - for (uint8_t i=0; i < UNIFORM_BUFFER_COUNT; ++i) + m_framesSemaphore.post(MTL_MAX_FRAMES_IN_FLIGHT); + for (uint8_t i=0; i < MTL_MAX_FRAMES_IN_FLIGHT; ++i) { m_uniformBuffers[i] = m_device.newBufferWithLength(UNIFORM_BUFFER_SIZE, 0); } m_uniformBufferVertexOffset = 0; m_uniformBufferFragmentOffset = 0; + const char* vshSource = + "using namespace metal;\n" + "struct xlatMtlShaderOutput { float4 gl_Position [[position]]; float2 v_texcoord0; }; \n" + "vertex xlatMtlShaderOutput xlatMtlMain (uint v_id [[ vertex_id ]]) \n" + "{\n" + " xlatMtlShaderOutput _mtl_o;\n" + " if (v_id==0) { _mtl_o.gl_Position = float4(-1.0,-1.0,0.0,1.0); _mtl_o.v_texcoord0 = float2(0.0,1.0); } \n" + " else if (v_id==1) { _mtl_o.gl_Position = float4(3.0,-1.0,0.0,1.0); _mtl_o.v_texcoord0 = float2(2.0,1.0); } \n" + " else { _mtl_o.gl_Position = float4(-1.0,3.0,0.0,1.0); _mtl_o.v_texcoord0 = float2(0.0,-1.0); }\n" + " return _mtl_o;\n" + "}\n"; + + const char* fshSource = "using namespace metal; \n" + " struct xlatMtlShaderInput { float2 v_texcoord0; }; \n" + " fragment half4 xlatMtlMain (xlatMtlShaderInput _mtl_i[[stage_in]], texture2d s_texColor [[texture(0)]], sampler _mtlsmp_s_texColor [[sampler(0)]] ) \n" + " { return half4(s_texColor.sample(_mtlsmp_s_texColor, _mtl_i.v_texcoord0)); } \n"; + + Library lib = m_device.newLibraryWithSource(vshSource); + if (NULL != lib) + { + m_screenshotBlitProgramVsh.m_function = lib.newFunctionWithName(SHADER_FUNCTION_NAME); + } + lib = m_device.newLibraryWithSource(fshSource); + if (NULL != lib) + { + m_screenshotBlitProgramFsh.m_function = lib.newFunctionWithName(SHADER_FUNCTION_NAME); + } + m_screenshotBlitProgram.create(&m_screenshotBlitProgramVsh, &m_screenshotBlitProgramFsh); + + reset(m_renderPipelineDescriptor); + m_renderPipelineDescriptor.colorAttachments[0].pixelFormat = m_metalLayer.pixelFormat; + m_renderPipelineDescriptor.vertexFunction = m_screenshotBlitProgram.m_vsh->m_function; + m_renderPipelineDescriptor.fragmentFunction = m_screenshotBlitProgram.m_fsh->m_function; + m_screenshotBlitRenderPipelineState = m_device.newRenderPipelineStateWithDescriptor(m_renderPipelineDescriptor); + g_caps.supported |= (0 + | BGFX_CAPS_TEXTURE_COMPARE_LEQUAL //NOTE: on IOS Gpu Family 1/2 have to set compare in shader + | BGFX_CAPS_TEXTURE_COMPARE_ALL | BGFX_CAPS_TEXTURE_3D - | BGFX_CAPS_TEXTURE_COMPARE_LEQUAL - | BGFX_CAPS_INSTANCING | BGFX_CAPS_VERTEX_ATTRIB_HALF -// | BGFX_CAPS_FRAGMENT_DEPTH + | BGFX_CAPS_VERTEX_ATTRIB_UINT10 + | BGFX_CAPS_INSTANCING + | BGFX_CAPS_FRAGMENT_DEPTH | BGFX_CAPS_BLEND_INDEPENDENT - | BGFX_CAPS_COMPUTE + //| BGFX_CAPS_COMPUTE // TODO: api/hw supports it but metal compute shaders are not yet supported | BGFX_CAPS_INDEX32 - | BGFX_CAPS_DRAW_INDIRECT -// | BGFX_CAPS_TEXTURE_BLIT -// | BGFX_CAPS_TEXTURE_READ_BACK - | BGFX_CAPS_OCCLUSION_QUERY + //| BGFX_CAPS_DRAW_INDIRECT // TODO: support on iOS9+gpu family3+ and on macOS + | BGFX_CAPS_TEXTURE_BLIT + | BGFX_CAPS_TEXTURE_READ_BACK + | BGFX_CAPS_OCCLUSION_QUERY + | BGFX_CAPS_ALPHA_TO_COVERAGE ); - g_caps.maxTextureSize = 2048; //ASK: real caps width/height: 4096, but max depth(3D) size is only: 2048 - g_caps.maxFBAttachments = 4; // uint8_t(bx::uint32_min(m_device.supportsFeatureSet(MTLFeatureSet_iOS_GPUFamily2_v1) ? 8 : 4, BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS)); + if (BX_ENABLED(BX_PLATFORM_IOS) ) + { + if ( iOSVersionEqualOrGreater("9.0.0") ) + { + g_caps.maxTextureSize = m_device.supportsFeatureSet((MTLFeatureSet)4 /* iOS_GPUFamily3_v1 */) ? 16384 : 8192; + } + else + { + g_caps.maxTextureSize = 4096; + } + g_caps.maxFBAttachments = uint8_t(bx::uint32_min(m_device.supportsFeatureSet((MTLFeatureSet)1 /* MTLFeatureSet_iOS_GPUFamily2_v1 */) ? 8 : 4, BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS)); + + } else if (BX_ENABLED(BX_PLATFORM_OSX) ) + { + g_caps.maxTextureSize = 16384; + g_caps.maxFBAttachments = 8; + } //todo: vendor id, device id, gpu enum - //todo: texture format caps - //add texture formats/caps/etc that are available only on new sdk/devices -#if BX_PLATFORM_IOS -# ifdef __IPHONE_8_0 - if (OsVersionEqualOrGreater("8.0.0")) + m_hasPixelFormatDepth32Float_Stencil8 = (BX_ENABLED(BX_PLATFORM_OSX) || + ( BX_ENABLED(BX_PLATFORM_IOS) && iOSVersionEqualOrGreater("9.0.0") ) ); + m_macOS11Runtime = (BX_ENABLED(BX_PLATFORM_OSX) && macOSVersionEqualOrGreater(10,11,0) ); + m_iOS9Runtime = (BX_ENABLED(BX_PLATFORM_IOS) && iOSVersionEqualOrGreater("9.0.0") ); + + if (BX_ENABLED(BX_PLATFORM_OSX) ) { - s_textureFormat[TextureFormat::D24S8].m_fmt = MTLPixelFormatDepth32Float; + s_textureFormat[TextureFormat::R8].m_fmtSrgb = MTLPixelFormatInvalid; + s_textureFormat[TextureFormat::RG8].m_fmtSrgb = MTLPixelFormatInvalid; } -# endif // __IPHONE_8_0 -#endif // BX_PLATFORM_* for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) { - uint8_t support = 0; + uint16_t support = 0; support |= MTLPixelFormatInvalid != s_textureFormat[ii].m_fmt ? BGFX_CAPS_FORMAT_TEXTURE_2D | BGFX_CAPS_FORMAT_TEXTURE_3D | BGFX_CAPS_FORMAT_TEXTURE_CUBE + | BGFX_CAPS_FORMAT_TEXTURE_VERTEX : BGFX_CAPS_FORMAT_TEXTURE_NONE ; @@ -453,20 +538,51 @@ namespace bgfx { namespace mtl ? BGFX_CAPS_FORMAT_TEXTURE_2D_SRGB | BGFX_CAPS_FORMAT_TEXTURE_3D_SRGB | BGFX_CAPS_FORMAT_TEXTURE_CUBE_SRGB + | BGFX_CAPS_FORMAT_TEXTURE_VERTEX : BGFX_CAPS_FORMAT_TEXTURE_NONE ; + if (!isCompressed((TextureFormat::Enum)(ii))) + { + support |= BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER + | BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA; + } + //TODO: additional caps flags -// support |= BGFX_CAPS_FORMAT_TEXTURE_VERTEX : BGFX_CAPS_FORMAT_TEXTURE_NONE; // support |= BGFX_CAPS_FORMAT_TEXTURE_IMAGE : BGFX_CAPS_FORMAT_TEXTURE_NONE; -// support |= BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER : BGFX_CAPS_FORMAT_TEXTURE_NONE; g_caps.formats[ii] = support; } + g_caps.formats[TextureFormat::A8] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER | BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA); + g_caps.formats[TextureFormat::RG32I] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA); + g_caps.formats[TextureFormat::RG32U] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA); + g_caps.formats[TextureFormat::RGBA32I] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA); + g_caps.formats[TextureFormat::RGBA32U] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA); + + + if (BX_ENABLED(BX_PLATFORM_IOS) ) + { + s_textureFormat[TextureFormat::D24S8].m_fmt = MTLPixelFormatDepth32Float; + + g_caps.formats[TextureFormat::BC1] = + g_caps.formats[TextureFormat::BC2] = + g_caps.formats[TextureFormat::BC3] = + g_caps.formats[TextureFormat::BC4] = + g_caps.formats[TextureFormat::BC5] = + g_caps.formats[TextureFormat::BC6H] = + g_caps.formats[TextureFormat::BC7] = BGFX_CAPS_FORMAT_TEXTURE_NONE; + + g_caps.formats[TextureFormat::RG32F] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA); + g_caps.formats[TextureFormat::RGBA32F] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA); + } + if (BX_ENABLED(BX_PLATFORM_OSX) ) { - g_caps.formats[TextureFormat::ETC1 ] = + s_textureFormat[TextureFormat::D24S8].m_fmt = (MTLPixelFormat)(m_device.depth24Stencil8PixelFormatSupported() ? + 255 /* Depth24Unorm_Stencil8 */ : + MTLPixelFormatDepth32Float_Stencil8); + g_caps.formats[TextureFormat::ETC2 ] = g_caps.formats[TextureFormat::ETC2A ] = g_caps.formats[TextureFormat::ETC2A1] = @@ -474,8 +590,11 @@ namespace bgfx { namespace mtl g_caps.formats[TextureFormat::PTC14 ] = g_caps.formats[TextureFormat::PTC12A] = g_caps.formats[TextureFormat::PTC14A] = - g_caps.formats[TextureFormat::PTC22 ] = - g_caps.formats[TextureFormat::PTC24 ] = BGFX_CAPS_FORMAT_TEXTURE_NONE; + g_caps.formats[TextureFormat::R5G6B5] = + g_caps.formats[TextureFormat::RGBA4 ] = + g_caps.formats[TextureFormat::RGB5A1] = BGFX_CAPS_FORMAT_TEXTURE_NONE; + + g_caps.formats[TextureFormat::RGB9E5F] &= ~(BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER | BGFX_CAPS_FORMAT_TEXTURE_FRAMEBUFFER_MSAA); } for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) @@ -487,6 +606,15 @@ namespace bgfx { namespace mtl } } + for(uint32_t ii=1; ii<5; ++ii) + { + if (!m_device.supportsTextureSampleCount(s_msaa[ii])) + { + s_msaa[ii] = s_msaa[ii-1]; + } + } + + // Init reserved part of view name. for (uint32_t ii = 0; ii < BGFX_CONFIG_MAX_VIEWS; ++ii) { @@ -494,6 +622,7 @@ namespace bgfx { namespace mtl } m_occlusionQuery.preReset(); + m_gpuTimer.init(); g_internalData.context = m_device; return true; @@ -502,6 +631,7 @@ namespace bgfx { namespace mtl void shutdown() { m_occlusionQuery.postReset(); + m_gpuTimer.shutdown(); for (uint32_t ii = 0; ii < BX_COUNTOF(m_shaders); ++ii) { @@ -513,6 +643,8 @@ namespace bgfx { namespace mtl m_textures[ii].destroy(); } + captureFinish(); + MTL_RELEASE(m_depthStencilDescriptor); MTL_RELEASE(m_frontFaceStencilDescriptor); MTL_RELEASE(m_backFaceStencilDescriptor); @@ -527,7 +659,7 @@ namespace bgfx { namespace mtl MTL_RELEASE(m_backBufferStencil); } - for (uint8_t i=0; i < UNIFORM_BUFFER_COUNT; ++i) + for (uint8_t i=0; i < MTL_MAX_FRAMES_IN_FLIGHT; ++i) { MTL_RELEASE(m_uniformBuffers[i]); } @@ -645,11 +777,27 @@ namespace bgfx { namespace mtl { } - void readTexture(TextureHandle /*_handle*/, void* /*_data*/) BX_OVERRIDE + void readTexture(TextureHandle _handle, void* _data) BX_OVERRIDE { + m_commandBuffer.commit(); + m_commandBuffer.waitUntilCompleted(); + MTL_RELEASE(m_commandBuffer) + + const TextureMtl& texture = m_textures[_handle.idx]; + + uint32_t width = texture.m_ptr.width(); + uint32_t height = texture.m_ptr.height(); + const uint8_t bpp = getBitsPerPixel(TextureFormat::Enum(texture.m_textureFormat) ); + + MTLRegion region = { { 0, 0, 0 }, { width, height, 1 } }; + + texture.m_ptr.getBytes(_data, width*bpp/8, 0, region, 0, 0); + + m_commandBuffer = m_commandQueue.commandBuffer(); + retain(m_commandBuffer); //NOTE: keep alive to be useable at 'flip' } - void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height) BX_OVERRIDE + void resizeTexture(TextureHandle _handle, uint16_t _width, uint16_t _height, uint8_t _numMips) BX_OVERRIDE { TextureMtl& texture = m_textures[_handle.idx]; @@ -665,7 +813,7 @@ namespace bgfx { namespace mtl tc.m_height = _height; tc.m_sides = 0; tc.m_depth = 0; - tc.m_numMips = 1; + tc.m_numMips = _numMips; tc.m_format = TextureFormat::Enum(texture.m_requestedFormat); tc.m_cubeMap = false; tc.m_mem = NULL; @@ -740,30 +888,35 @@ namespace bgfx { namespace mtl m_uniforms[_handle.idx] = NULL; } + //cmdPre + void saveScreenShotPre(const char* _filePath) BX_OVERRIDE + { + BX_UNUSED(_filePath); + m_saveScreenshot = true; + } + + //cmdPost void saveScreenShot(const char* _filePath) BX_OVERRIDE { - if (NULL == m_drawable - || NULL == m_drawable.texture) - { + if (NULL == m_screenshotTarget) return; - } - //TODO: we should wait for completion of pending commandBuffers - //TODO: implement this with saveScreenshotBegin/End + m_commandBuffer.commit(); + m_commandBuffer.waitUntilCompleted(); + MTL_RELEASE(m_commandBuffer) - Texture backBuffer = m_drawable.texture; - uint32_t width = backBuffer.width(); - uint32_t height = backBuffer.height(); + uint32_t width = m_screenshotTarget.width(); + uint32_t height = m_screenshotTarget.height(); uint32_t length = width*height*4; uint8_t* data = (uint8_t*)BX_ALLOC(g_allocator, length); MTLRegion region = { { 0, 0, 0 }, { width, height, 1 } }; - backBuffer.getBytes(data, 4*width, 0, region, 0, 0); + m_screenshotTarget.getBytes(data, 4*width, 0, region, 0, 0); g_callback->screenShot(_filePath - , backBuffer.width() - , backBuffer.height() + , m_screenshotTarget.width() + , m_screenshotTarget.height() , width*4 , data , length @@ -771,6 +924,9 @@ namespace bgfx { namespace mtl ); BX_FREE(g_allocator, data); + + m_commandBuffer = m_commandQueue.commandBuffer(); + retain(m_commandBuffer); //NOTE: keep alive to be useable at 'flip' } void updateViewName(uint8_t _id, const char* _name) BX_OVERRIDE @@ -812,8 +968,25 @@ namespace bgfx { namespace mtl //} FrameBufferHandle fbh = BGFX_INVALID_HANDLE; - //TODO: change to default framebuffer - we need a new encoder for this! - //setFrameBuffer(fbh, false); + + if ( NULL == rce || m_renderCommandEncoderFrameBufferHandle.idx != invalidHandle ) + { + if ( m_renderCommandEncoder ) + m_renderCommandEncoder.endEncoding(); + + RenderPassDescriptor renderPassDescriptor = newRenderPassDescriptor(); + + setFrameBuffer(renderPassDescriptor, fbh); + + renderPassDescriptor.colorAttachments[0].loadAction = MTLLoadActionLoad; + renderPassDescriptor.colorAttachments[0].storeAction = NULL != renderPassDescriptor.colorAttachments[0].resolveTexture ? + MTLStoreActionMultisampleResolve : MTLStoreActionStore; + + rce = m_commandBuffer.renderCommandEncoderWithDescriptor(renderPassDescriptor); + m_renderCommandEncoder = rce; + m_renderCommandEncoderFrameBufferHandle = fbh; + MTL_RELEASE(renderPassDescriptor); + } MTLViewport viewport = { 0.0f, 0.0f, (float)width, (float)height, 0.0f, 1.0f}; rce.setViewport(viewport); @@ -849,9 +1022,6 @@ namespace bgfx { namespace mtl rce.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0); } - VertexBufferMtl& vb = m_vertexBuffers[_blitter.m_vb->handle.idx]; - rce.setVertexBuffer(vb.m_buffer, 0, 1); - float proj[16]; bx::mtxOrtho(proj, 0.0f, (float)width, (float)height, 0.0f, 0.0f, 1000.0f); @@ -859,7 +1029,7 @@ namespace bgfx { namespace mtl uint8_t flags = predefined.m_type; setShaderUniform(flags, predefined.m_loc, proj, 4); - m_textures[_blitter.m_texture.idx].commit(0); + m_textures[_blitter.m_texture.idx].commit(0, false, true); } void blitRender(TextVideoMemBlitter& _blitter, uint32_t _numIndices) BX_OVERRIDE @@ -867,30 +1037,44 @@ namespace bgfx { namespace mtl const uint32_t numVertices = _numIndices*4/6; if (0 < numVertices) { - m_indexBuffers [_blitter.m_ib->handle.idx].update(0, _numIndices*2, _blitter.m_ib->data); + m_indexBuffers [_blitter.m_ib->handle.idx].update(0, _numIndices*2, _blitter.m_ib->data, true); m_vertexBuffers[_blitter.m_vb->handle.idx].update(0, numVertices*_blitter.m_decl.m_stride, _blitter.m_vb->data, true); - m_renderCommandEncoder.drawIndexedPrimitives(MTLPrimitiveTypeTriangle, _numIndices, MTLIndexTypeUInt16, m_indexBuffers[_blitter.m_ib->handle.idx].m_buffer, 0, 1); + VertexBufferMtl& vb = m_vertexBuffers[_blitter.m_vb->handle.idx]; + m_renderCommandEncoder.setVertexBuffer(vb.getBuffer(), 0, 1); + + m_renderCommandEncoder.drawIndexedPrimitives(MTLPrimitiveTypeTriangle, _numIndices, MTLIndexTypeUInt16, m_indexBuffers[_blitter.m_ib->handle.idx].getBuffer(), 0, 1); } } + static void commandBufferFinishedCallback(void* _data) + { + RendererContextMtl* renderer = (RendererContextMtl*)_data; + if ( renderer ) + renderer->m_framesSemaphore.post(); + } + void flip(HMD& /*_hmd*/) BX_OVERRIDE { - if (NULL == m_drawable - || NULL == m_commandBuffer) + if (NULL == m_commandBuffer) { return; } // Present and commit the command buffer - m_commandBuffer.presentDrawable(m_drawable); - MTL_RELEASE(m_drawable); + if ( NULL != m_drawable) + { + m_commandBuffer.presentDrawable(m_drawable); + MTL_RELEASE(m_drawable); + } + + m_commandBuffer.addCompletedHandler(commandBufferFinishedCallback, this); m_commandBuffer.commit(); - // using heavy syncing now - // TODO: refactor it with double/triple buffering frame data - m_commandBuffer.waitUntilCompleted(); + MTL_RELEASE(m_prevCommandBuffer); + m_prevCommandBuffer = m_commandBuffer; + retain(m_prevCommandBuffer); MTL_RELEASE(m_commandBuffer); @@ -918,55 +1102,83 @@ namespace bgfx { namespace mtl : 1 ; - //TODO: _resolution has wrong dimensions, using m_drawable.texture size now - if (NULL == m_drawable.texture) - { - return; - } - - uint32_t width = (uint32_t)m_drawable.texture.width; - uint32_t height = (uint32_t)m_drawable.texture.height; - //TODO: there should be a way to specify if backbuffer needs stencil/depth. - //TODO: support msaa - if (NULL == m_backBufferDepth - || width != m_backBufferDepth.width() - || height != m_backBufferDepth.height() - || m_resolution.m_width != _resolution.m_width - || m_resolution.m_height != _resolution.m_height - || m_resolution.m_flags != _resolution.m_flags) + const uint32_t maskFlags = ~(0 + | BGFX_RESET_HMD_RECENTER + | BGFX_RESET_MAXANISOTROPY + | BGFX_RESET_DEPTH_CLAMP + | BGFX_RESET_SUSPEND + ); + + if (m_resolution.m_width != _resolution.m_width + || m_resolution.m_height != _resolution.m_height + || (m_resolution.m_flags&maskFlags) != (_resolution.m_flags&maskFlags) ) { + int sampleCount = s_msaa[(_resolution.m_flags&BGFX_RESET_MSAA_MASK)>>BGFX_RESET_MSAA_SHIFT]; + + MTLPixelFormat prevMetalLayerPixelFormat = m_metalLayer.pixelFormat; + + m_metalLayer.drawableSize = CGSizeMake(_resolution.m_width, _resolution.m_height); + m_metalLayer.pixelFormat = (m_resolution.m_flags & BGFX_RESET_SRGB_BACKBUFFER) + ? MTLPixelFormatBGRA8Unorm_sRGB + : MTLPixelFormatBGRA8Unorm + ; + m_resolution = _resolution; m_resolution.m_flags &= ~BGFX_RESET_INTERNAL_FORCE; - m_textureDescriptor.textureType = MTLTextureType2D; + m_textureDescriptor.textureType = sampleCount > 1 ? MTLTextureType2DMultisample : MTLTextureType2D; - m_textureDescriptor.pixelFormat = MTLPixelFormatDepth32Float_Stencil8; + if (m_hasPixelFormatDepth32Float_Stencil8) + m_textureDescriptor.pixelFormat = MTLPixelFormatDepth32Float_Stencil8; + else + m_textureDescriptor.pixelFormat = MTLPixelFormatDepth32Float; - m_textureDescriptor.width = width; - m_textureDescriptor.height = height; + m_textureDescriptor.width = _resolution.m_width; + m_textureDescriptor.height = _resolution.m_height; m_textureDescriptor.depth = 1; m_textureDescriptor.mipmapLevelCount = 1; - m_textureDescriptor.sampleCount = 1; + m_textureDescriptor.sampleCount = sampleCount; m_textureDescriptor.arrayLength = 1; - m_textureDescriptor.resourceOptions = MTLResourceStorageModePrivate; - m_textureDescriptor.cpuCacheMode = MTLCPUCacheModeDefaultCache; - m_textureDescriptor.storageMode = MTLStorageModePrivate; - m_textureDescriptor.usage = MTLTextureUsageRenderTarget; + if ( m_iOS9Runtime || m_macOS11Runtime ) + { + m_textureDescriptor.cpuCacheMode = MTLCPUCacheModeDefaultCache; + m_textureDescriptor.storageMode = MTLStorageModePrivate; + m_textureDescriptor.usage = MTLTextureUsageRenderTarget; + } if (NULL != m_backBufferDepth) { release(m_backBufferDepth); } m_backBufferDepth = m_device.newTextureWithDescriptor(m_textureDescriptor); - m_backBufferStencil = m_backBufferDepth; + + + if (m_hasPixelFormatDepth32Float_Stencil8) + m_backBufferStencil = m_backBufferDepth; + else + { + m_textureDescriptor.pixelFormat = MTLPixelFormatStencil8; + m_backBufferStencil = m_device.newTextureWithDescriptor(m_textureDescriptor); + } + + if ( sampleCount > 1 ) + { + if (NULL != m_backBufferColorMSAA) + { + release(m_backBufferColorMSAA); + } + m_textureDescriptor.pixelFormat = m_metalLayer.pixelFormat; + m_backBufferColorMSAA = m_device.newTextureWithDescriptor(m_textureDescriptor); + } bx::HashMurmur2A murmur; murmur.begin(); murmur.add(1); - murmur.add((uint32_t)m_drawable.texture.pixelFormat); + murmur.add((uint32_t)m_metalLayer.pixelFormat); murmur.add((uint32_t)m_backBufferDepth.pixelFormat()); murmur.add((uint32_t)m_backBufferStencil.pixelFormat()); + murmur.add((uint32_t)sampleCount); m_backBufferPixelFormatHash = murmur.end(); for (uint32_t ii = 0; ii < BX_COUNTOF(m_frameBuffers); ++ii) @@ -974,11 +1186,107 @@ namespace bgfx { namespace mtl m_frameBuffers[ii].postReset(); } - m_textVideoMem.resize(false, width, height); + updateCapture(); + + m_textVideoMem.resize(false, _resolution.m_width, _resolution.m_height); m_textVideoMem.clear(); + + if ( prevMetalLayerPixelFormat != m_metalLayer.pixelFormat) + { + MTL_RELEASE(m_screenshotBlitRenderPipelineState) + reset(m_renderPipelineDescriptor); + m_renderPipelineDescriptor.colorAttachments[0].pixelFormat = m_metalLayer.pixelFormat; + m_renderPipelineDescriptor.vertexFunction = m_screenshotBlitProgram.m_vsh->m_function; + m_renderPipelineDescriptor.fragmentFunction = m_screenshotBlitProgram.m_fsh->m_function; + m_screenshotBlitRenderPipelineState = m_device.newRenderPipelineStateWithDescriptor(m_renderPipelineDescriptor); + } } } + + void updateCapture() + { + if (m_resolution.m_flags&BGFX_RESET_CAPTURE) + { + m_captureSize = m_resolution.m_width*m_resolution.m_height*4; + m_capture = BX_REALLOC(g_allocator, m_capture, m_captureSize); + g_callback->captureBegin(m_resolution.m_width, m_resolution.m_height, m_resolution.m_width*4, TextureFormat::BGRA8, false); + } + else + { + captureFinish(); + } + } + + void capture() + { + if (NULL != m_capture) + { + if (NULL == m_screenshotTarget) + return; + + m_renderCommandEncoder.endEncoding(); + + m_commandBuffer.commit(); + m_commandBuffer.waitUntilCompleted(); + MTL_RELEASE(m_commandBuffer) + + MTLRegion region = { { 0, 0, 0 }, { m_resolution.m_width, m_resolution.m_height, 1 } }; + + //TODO: enable screenshot target when capturing + m_screenshotTarget.getBytes(m_capture, 4*m_resolution.m_width, 0, region, 0, 0); + + m_commandBuffer = m_commandQueue.commandBuffer(); + retain(m_commandBuffer); //NOTE: keep alive to be useable at 'flip' + + if (m_screenshotTarget.pixelFormat() == MTLPixelFormatRGBA8Uint) + { + imageSwizzleBgra8(m_resolution.m_width, m_resolution.m_height, m_resolution.m_width*4, m_capture, m_capture); + } + + g_callback->captureFrame(m_capture, m_captureSize); + + RenderPassDescriptor renderPassDescriptor = newRenderPassDescriptor(); + setFrameBuffer(renderPassDescriptor, m_renderCommandEncoderFrameBufferHandle); + + for(uint32_t ii = 0; ii < g_caps.maxFBAttachments; ++ii) + { + MTLRenderPassColorAttachmentDescriptor* desc = renderPassDescriptor.colorAttachments[ii]; + if ( desc.texture != NULL) + desc.loadAction = MTLLoadActionLoad; + } + + RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment; + if (NULL != depthAttachment.texture) + { + depthAttachment.loadAction = MTLLoadActionLoad; + depthAttachment.storeAction = MTLStoreActionStore; + } + + RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment; + if (NULL != stencilAttachment.texture) + { + stencilAttachment.loadAction = MTLLoadActionLoad; + stencilAttachment.storeAction = MTLStoreActionStore; + } + + m_renderCommandEncoder = m_commandBuffer.renderCommandEncoderWithDescriptor(renderPassDescriptor); + MTL_RELEASE(renderPassDescriptor); + } + } + + void captureFinish() + { + if (NULL != m_capture) + { + g_callback->captureEnd(); + BX_FREE(g_allocator, m_capture); + m_capture = NULL; + m_captureSize = 0; + } + } + + void setShaderUniform(uint8_t _flags, uint32_t _loc, const void* _val, uint32_t _numRegs) { uint32_t offset = 0 != (_flags&BGFX_UNIFORM_FRAGMENTBIT) @@ -1081,16 +1389,155 @@ namespace bgfx { namespace mtl } } - void clearQuad(ClearQuad& _clearQuad, const Rect& _rect, const Clear& _clear, const float _palette[][4]) + void clearQuad(ClearQuad& _clearQuad, const Rect& /*_rect*/, const Clear& _clear, const float _palette[][4]) { - BX_UNUSED(_clearQuad, _rect, _clear, _palette); + uint32_t width; + uint32_t height; + + if (isValid(m_fbh) ) + { + const FrameBufferMtl& fb = m_frameBuffers[m_fbh.idx]; + width = fb.m_width; + height = fb.m_height; + } + else + { + width = getBufferWidth(); + height = getBufferHeight(); + } + + + uint64_t state = 0; + state |= _clear.m_flags & BGFX_CLEAR_COLOR ? BGFX_STATE_RGB_WRITE|BGFX_STATE_ALPHA_WRITE : 0; + state |= _clear.m_flags & BGFX_CLEAR_DEPTH ? BGFX_STATE_DEPTH_TEST_ALWAYS|BGFX_STATE_DEPTH_WRITE : 0; + + uint64_t stencil = 0; + stencil |= _clear.m_flags & BGFX_CLEAR_STENCIL ? 0 + | BGFX_STENCIL_TEST_ALWAYS + | BGFX_STENCIL_FUNC_REF(_clear.m_stencil) + | BGFX_STENCIL_FUNC_RMASK(0xff) + | BGFX_STENCIL_OP_FAIL_S_REPLACE + | BGFX_STENCIL_OP_FAIL_Z_REPLACE + | BGFX_STENCIL_OP_PASS_Z_REPLACE + : 0 + ; + + setDepthStencilState(state, stencil); + + uint32_t numMrt = 1; + FrameBufferHandle fbh = m_fbh; + if (isValid(fbh) ) + { + const FrameBufferMtl& fb = m_frameBuffers[fbh.idx]; + numMrt = bx::uint32_max(1, fb.m_num); + } + + ProgramMtl& program = m_program[_clearQuad.m_program[numMrt-1].idx]; + m_renderCommandEncoder.setRenderPipelineState(program.getRenderPipelineState(state, 0, fbh, _clearQuad.m_vb->decl, 0)); + + uint32_t fragmentUniformBufferSize = program.m_fshConstantBufferSize; + + m_uniformBufferFragmentOffset = m_uniformBufferVertexOffset; + if (fragmentUniformBufferSize) + { + m_uniformBufferFragmentOffset = BX_ALIGN_MASK(m_uniformBufferFragmentOffset, program.m_fshConstantBufferAlignmentMask); + m_renderCommandEncoder.setFragmentBuffer(m_uniformBuffer, m_uniformBufferFragmentOffset, 0); + } + + if (BGFX_CLEAR_COLOR_USE_PALETTE & _clear.m_flags) + { + float mrtClear[BGFX_CONFIG_MAX_FRAME_BUFFER_ATTACHMENTS][4]; + for (uint32_t ii = 0; ii < numMrt; ++ii) + { + uint8_t index = (uint8_t)bx::uint32_min(BGFX_CONFIG_MAX_COLOR_PALETTE-1, _clear.m_index[ii]); + memcpy(mrtClear[ii], _palette[index], 16); + } + + memcpy((uint8_t*)m_uniformBuffer.contents() + m_uniformBufferFragmentOffset, + mrtClear, + bx::uint32_min(fragmentUniformBufferSize, sizeof(mrtClear))); + } + else + { + float rgba[4] = + { + _clear.m_index[0]*1.0f/255.0f, + _clear.m_index[1]*1.0f/255.0f, + _clear.m_index[2]*1.0f/255.0f, + _clear.m_index[3]*1.0f/255.0f, + }; + + memcpy((uint8_t*)m_uniformBuffer.contents() + m_uniformBufferFragmentOffset, + rgba, + bx::uint32_min(fragmentUniformBufferSize, sizeof(rgba))); + } + + m_uniformBufferFragmentOffset += fragmentUniformBufferSize; + m_uniformBufferVertexOffset = m_uniformBufferFragmentOffset; + + const VertexBufferMtl& vb = m_vertexBuffers[_clearQuad.m_vb->handle.idx]; + const VertexDecl& vertexDecl = m_vertexDecls[_clearQuad.m_vb->decl.idx]; + const uint32_t stride = vertexDecl.m_stride; + const uint32_t offset = 0; + + { + struct Vertex + { + float m_x; + float m_y; + float m_z; + }; + + Vertex* vertex = (Vertex*)_clearQuad.m_vb->data; + BX_CHECK(stride == sizeof(Vertex) + , "Stride/Vertex mismatch (stride %d, sizeof(Vertex) %d)" + , stride + , sizeof(Vertex) + ); + BX_UNUSED(stride); + + const float depth = _clear.m_depth; + + vertex->m_x = -1.0f; + vertex->m_y = -1.0f; + vertex->m_z = depth; + vertex++; + vertex->m_x = 1.0f; + vertex->m_y = -1.0f; + vertex->m_z = depth; + vertex++; + vertex->m_x = -1.0f; + vertex->m_y = 1.0f; + vertex->m_z = depth; + vertex++; + vertex->m_x = 1.0f; + vertex->m_y = 1.0f; + vertex->m_z = depth; + } + + m_vertexBuffers[_clearQuad.m_vb->handle.idx].update(0, 4*_clearQuad.m_decl.m_stride, _clearQuad.m_vb->data); + m_renderCommandEncoder.setCullMode(MTLCullModeNone); + m_renderCommandEncoder.setVertexBuffer(vb.getBuffer(), offset, 1); + m_renderCommandEncoder.drawPrimitives(MTLPrimitiveTypeTriangleStrip, 0, 4, 1); } void setFrameBuffer(RenderPassDescriptor renderPassDescriptor, FrameBufferHandle _fbh, bool _msaa = true) { if (!isValid(_fbh) ) { - renderPassDescriptor.colorAttachments[0].texture = m_drawable.texture; + if ( NULL != m_backBufferColorMSAA ) + { + renderPassDescriptor.colorAttachments[0].texture = m_backBufferColorMSAA; + renderPassDescriptor.colorAttachments[0].resolveTexture = ((NULL != m_screenshotTarget) ? + m_screenshotTarget.m_obj : + currentDrawable().texture); + } + else + { + renderPassDescriptor.colorAttachments[0].texture = ((NULL != m_screenshotTarget) ? + m_screenshotTarget.m_obj : + currentDrawable().texture); + } renderPassDescriptor.depthAttachment.texture = m_backBufferDepth; renderPassDescriptor.stencilAttachment.texture = m_backBufferStencil; } @@ -1101,15 +1548,26 @@ namespace bgfx { namespace mtl for (uint32_t ii = 0; ii < frameBuffer.m_num; ++ii) { const TextureMtl& texture = m_textures[frameBuffer.m_colorHandle[ii].idx]; - renderPassDescriptor.colorAttachments[ii].texture = texture.m_ptr; + renderPassDescriptor.colorAttachments[ii].texture = texture.m_ptrMSAA ? texture.m_ptrMSAA : texture.m_ptr; + renderPassDescriptor.colorAttachments[ii].resolveTexture = texture.m_ptrMSAA ? texture.m_ptr.m_obj : NULL; } if (isValid(frameBuffer.m_depthHandle) ) { const TextureMtl& texture = m_textures[frameBuffer.m_depthHandle.idx]; - renderPassDescriptor.depthAttachment.texture = texture.m_ptr; + renderPassDescriptor.depthAttachment.texture = texture.m_ptrMSAA ? texture.m_ptrMSAA : texture.m_ptr; renderPassDescriptor.stencilAttachment.texture = texture.m_ptrStencil; - //TODO: stencilAttachment should be the same if packed/depth stencil format is used + + if ( texture.m_textureFormat == TextureFormat::D24S8)//TODO: msaa and stencil iOS8 hack + { + if ( texture.m_ptr.pixelFormat() == 255 /* Depth24Unorm_Stencil8 */|| + texture.m_ptr.pixelFormat() == 260 /* Depth32Float_Stencil8 */ ) + { + renderPassDescriptor.stencilAttachment.texture = renderPassDescriptor.depthAttachment.texture; + } + else + renderPassDescriptor.stencilAttachment.texture = texture.m_ptrMSAA ? texture.m_ptrMSAA : texture.m_ptrStencil; + } } } @@ -1203,11 +1661,12 @@ namespace bgfx { namespace mtl m_samplerDescriptor.normalizedCoordinates = TRUE; m_samplerDescriptor.maxAnisotropy = m_maxAnisotropy; - //TODO: I haven't found how to specify this. Comparison function can be specified in shader. - // On OSX this can be specified. There is no support for this on iOS right now. - //const uint32_t cmpFunc = (_flags&BGFX_TEXTURE_COMPARE_MASK)>>BGFX_TEXTURE_COMPARE_SHIFT; - //const uint8_t filter = 0 == cmpFunc ? 0 : D3D11_COMPARISON_FILTERING_BIT; - //m_samplerDescriptor.comparisonFunc = 0 == cmpFunc ? D3D11_COMPARISON_NEVER : s_cmpFunc[cmpFunc]; + //NOTE: Comparison function can be specified in shader on all metal hw. + if ( m_macOS11Runtime || [m_device supportsFeatureSet:(MTLFeatureSet)4/*MTLFeatureSet_iOS_GPUFamily3_v1*/]) + { + const uint32_t cmpFunc = (_flags&BGFX_TEXTURE_COMPARE_MASK)>>BGFX_TEXTURE_COMPARE_SHIFT; + m_samplerDescriptor.compareFunction = 0 == cmpFunc ? MTLCompareFunctionNever : s_cmpFunc[cmpFunc]; + } sampler = m_device.newSamplerStateWithDescriptor(m_samplerDescriptor); m_samplerStateCache.add(_flags, sampler); @@ -1232,21 +1691,68 @@ namespace bgfx { namespace mtl return m_backBufferDepth.height(); } - Device m_device; + void sync() + { + if ( m_prevCommandBuffer ) + m_prevCommandBuffer.waitUntilCompleted(); + } + + BlitCommandEncoder getBlitCommandEncoder() + { + if ( m_blitCommandEncoder == NULL) + { + if ( m_commandBuffer == NULL ) + { + m_commandBuffer = m_commandQueue.commandBuffer(); + retain(m_commandBuffer); + } + + m_blitCommandEncoder = m_commandBuffer.blitCommandEncoder(); + } + + return m_blitCommandEncoder; + } + + id currentDrawable() + { + if (m_drawable == nil) + { + m_drawable = m_metalLayer.nextDrawable; +#if BX_PLATFORM_IOS + retain(m_drawable); // keep alive to be useable at 'flip' +#endif + } + + return m_drawable; + } + + + Device m_device; + OcclusionQueryMTL m_occlusionQuery; + TimerQueryMtl m_gpuTimer; + CommandQueue m_commandQueue; CAMetalLayer* m_metalLayer; + Texture m_backBufferColorMSAA; Texture m_backBufferDepth; Texture m_backBufferStencil; uint32_t m_backBufferPixelFormatHash; uint32_t m_maxAnisotropy; - OcclusionQueryMTL m_occlusionQuery; + bool m_iOS9Runtime; + bool m_macOS11Runtime; + bool m_hasPixelFormatDepth32Float_Stencil8; + + + + bx::Semaphore m_framesSemaphore; Buffer m_uniformBuffer; - Buffer m_uniformBuffers[UNIFORM_BUFFER_COUNT]; + Buffer m_uniformBuffers[MTL_MAX_FRAMES_IN_FLIGHT]; uint32_t m_uniformBufferVertexOffset; uint32_t m_uniformBufferFragmentOffset; - uint8_t m_uniformBufferIndex; + + uint8_t m_bufferIndex; uint16_t m_numWindows; FrameBufferHandle m_windows[BGFX_CONFIG_MAX_FRAME_BUFFERS]; @@ -1270,6 +1776,8 @@ namespace bgfx { namespace mtl bool m_rtMsaa; Resolution m_resolution; + void* m_capture; + uint32_t m_captureSize; // descriptors RenderPipelineDescriptor m_renderPipelineDescriptor; @@ -1281,9 +1789,19 @@ namespace bgfx { namespace mtl SamplerDescriptor m_samplerDescriptor; // currently active objects data - id m_drawable; - CommandBuffer m_commandBuffer; - RenderCommandEncoder m_renderCommandEncoder; + id m_drawable; + bool m_saveScreenshot; + Texture m_screenshotTarget; + ShaderMtl m_screenshotBlitProgramVsh; + ShaderMtl m_screenshotBlitProgramFsh; + ProgramMtl m_screenshotBlitProgram; + RenderPipelineState m_screenshotBlitRenderPipelineState; + + CommandBuffer m_commandBuffer; + CommandBuffer m_prevCommandBuffer; + BlitCommandEncoder m_blitCommandEncoder; + RenderCommandEncoder m_renderCommandEncoder; + FrameBufferHandle m_renderCommandEncoderFrameBufferHandle; }; static RendererContextMtl* s_renderMtl; @@ -1330,8 +1848,6 @@ namespace bgfx { namespace mtl break; } - //bool fragment = BGFX_CHUNK_MAGIC_FSH == magic; - uint32_t iohash; bx::read(&reader, iohash); @@ -1371,23 +1887,6 @@ namespace bgfx { namespace mtl const char* code = (const char*)reader.getDataPtr(); bx::skip(&reader, shaderSize+1); - int32_t codeLen = (int32_t)strlen(code); - int32_t tempLen = codeLen + (4<<10); - char* temp = (char*)alloca(tempLen); - bx::StaticMemoryBlockWriter writer(temp, tempLen); - - //TODO: remove this hack. some shaders have problem with half<->float conversion - writeString(&writer - , "#define half float\n" - "#define half2 float2\n" - "#define half3 float3\n" - "#define half4 float4\n" - ); - - bx::write(&writer, code, codeLen); - bx::write(&writer, '\0'); - code = temp; - //TODO: use binary format Library lib = s_renderMtl->m_device.newLibraryWithSource(code); @@ -1506,7 +2005,7 @@ namespace bgfx { namespace mtl RenderPipelineState ProgramMtl::getRenderPipelineState(uint64_t _state, uint32_t _rgba, FrameBufferHandle _fbHandle, VertexDeclHandle _declHandle, uint16_t _numInstanceData) { - _state &= (BGFX_STATE_BLEND_MASK|BGFX_STATE_BLEND_EQUATION_MASK|BGFX_STATE_ALPHA_WRITE|BGFX_STATE_RGB_WRITE|BGFX_STATE_BLEND_INDEPENDENT|BGFX_STATE_MSAA); + _state &= (BGFX_STATE_BLEND_MASK|BGFX_STATE_BLEND_EQUATION_MASK|BGFX_STATE_ALPHA_WRITE|BGFX_STATE_RGB_WRITE|BGFX_STATE_BLEND_INDEPENDENT|BGFX_STATE_MSAA|BGFX_STATE_BLEND_ALPHA_TO_COVERAGE); bool independentBlendEnable = !!(BGFX_STATE_BLEND_INDEPENDENT & _state); @@ -1532,11 +2031,15 @@ namespace bgfx { namespace mtl { RenderPipelineDescriptor& pd = s_renderMtl->m_renderPipelineDescriptor; reset(pd); + + pd.alphaToCoverageEnabled = !!(BGFX_STATE_BLEND_ALPHA_TO_COVERAGE & _state); + uint32_t frameBufferAttachment = 1; if (!isValid(_fbHandle) ) { - pd.colorAttachments[0].pixelFormat = s_renderMtl->m_drawable.texture.pixelFormat; + pd.sampleCount = NULL != s_renderMtl->m_backBufferColorMSAA ? s_renderMtl->m_backBufferColorMSAA.sampleCount() : 1; + pd.colorAttachments[0].pixelFormat = s_renderMtl->currentDrawable().texture.pixelFormat; pd.depthAttachmentPixelFormat = s_renderMtl->m_backBufferDepth.m_obj.pixelFormat; pd.stencilAttachmentPixelFormat = s_renderMtl->m_backBufferStencil.m_obj.pixelFormat; } @@ -1548,6 +2051,7 @@ namespace bgfx { namespace mtl for (uint32_t ii = 0; ii < frameBuffer.m_num; ++ii) { const TextureMtl& texture = s_renderMtl->m_textures[frameBuffer.m_colorHandle[ii].idx]; + pd.sampleCount = NULL != texture.m_ptrMSAA ? texture.m_ptrMSAA.sampleCount() : 1; pd.colorAttachments[ii].pixelFormat = texture.m_ptr.m_obj.pixelFormat; } @@ -1557,13 +2061,16 @@ namespace bgfx { namespace mtl pd.depthAttachmentPixelFormat = texture.m_ptr.m_obj.pixelFormat; if (NULL != texture.m_ptrStencil) { - pd.stencilAttachmentPixelFormat = MTLPixelFormatInvalid; //texture.m_ptrStencil.m_obj.pixelFormat; + pd.stencilAttachmentPixelFormat = texture.m_ptrStencil.m_obj.pixelFormat; + } + else + { + if ( texture.m_textureFormat == TextureFormat::D24S8) + pd.stencilAttachmentPixelFormat = texture.m_ptr.m_obj.pixelFormat; } - //todo: stencil attachment should be the same as depth for packed depth/stencil } } - // TODO: BGFX_STATE_MSAA using _fbHandle texture msaa values const uint32_t blend = uint32_t( (_state&BGFX_STATE_BLEND_MASK)>>BGFX_STATE_BLEND_SHIFT); const uint32_t equation = uint32_t( (_state&BGFX_STATE_BLEND_EQUATION_MASK)>>BGFX_STATE_BLEND_EQUATION_SHIFT); @@ -1649,7 +2156,7 @@ namespace bgfx { namespace mtl BX_TRACE("attrib:%s format: %d offset:%d", s_attribName[attr], (int)vertexDesc.attributes[loc].format, (int)vertexDesc.attributes[loc].offset); } else - { // missing attribute: using dummy attribute with smallest possible size + { // NOTE: missing attribute: using dummy attribute with smallest possible size vertexDesc.attributes[loc].format = MTLVertexFormatUChar2; vertexDesc.attributes[loc].bufferIndex = 1; vertexDesc.attributes[loc].offset = 0; @@ -1778,6 +2285,9 @@ namespace bgfx { namespace mtl } else if (arg.type == MTLArgumentTypeTexture) { + if ( shaderType == 0 ) m_usedVertexSamplerStages |= 1<m_device.newBufferWithLength(_size, 0); + for (uint32_t ii = 0; ii < MTL_MAX_FRAMES_IN_FLIGHT; ++ii) + m_buffers[ii] = s_renderMtl->m_device.newBufferWithLength(_size, 0); } else { - m_buffer = s_renderMtl->m_device.newBufferWithBytes(_data, _size, 0); + m_buffers[0] = s_renderMtl->m_device.newBufferWithBytes(_data, _size, 0); } } @@ -1824,7 +2337,26 @@ namespace bgfx { namespace mtl { BX_UNUSED(_discard); - memcpy( (uint8_t*)m_buffer.contents() + _offset, _data, _size); + //TODO: cannot call this more than once per frame + if ( m_dynamic && _discard ) + { + m_bufferIndex = (m_bufferIndex + 1) % MTL_MAX_FRAMES_IN_FLIGHT; + memcpy( (uint8_t*)getBuffer().contents() + _offset, _data, _size); + } + else if ( NULL != s_renderMtl->m_renderCommandEncoder ) + { // NOTE: cannot blit while rendercommander is active. have to sync. slow. remove these. + // ClearQuad triggers this now + s_renderMtl->sync(); + memcpy( (uint8_t*)getBuffer().contents() + _offset, _data, _size); + } + else + { + BlitCommandEncoder bce = s_renderMtl->getBlitCommandEncoder(); + + Buffer temp = s_renderMtl->m_device.newBufferWithBytes(_data, _size, 0); + bce.copyFromBuffer(temp, 0, getBuffer(), _offset, _size); + release(temp); + } } void VertexBufferMtl::create(uint32_t _size, void* _data, VertexDeclHandle _declHandle, uint16_t _flags) @@ -1854,6 +2386,9 @@ namespace bgfx { namespace mtl const uint32_t textureHeight = bx::uint32_max(blockInfo.blockHeight, imageContainer.m_height>>startLod); m_flags = _flags; + m_width = textureWidth; + m_height = textureHeight; + m_depth = imageContainer.m_depth; m_requestedFormat = uint8_t(imageContainer.m_format); m_textureFormat = uint8_t(getViableTextureFormat(imageContainer) ); const bool convert = m_textureFormat != m_requestedFormat; @@ -1889,11 +2424,11 @@ namespace bgfx { namespace mtl ); const bool writeOnly = 0 != (_flags&BGFX_TEXTURE_RT_WRITE_ONLY); -// const bool computeWrite = 0 != (_flags&BGFX_TEXTURE_COMPUTE_WRITE); -// const bool renderTarget = 0 != (_flags&BGFX_TEXTURE_RT_MASK); + const bool computeWrite = 0 != (_flags&BGFX_TEXTURE_COMPUTE_WRITE); + const bool renderTarget = 0 != (_flags&BGFX_TEXTURE_RT_MASK); const bool srgb = 0 != (_flags&BGFX_TEXTURE_SRGB) || imageContainer.m_srgb; -// const uint32_t msaaQuality = bx::uint32_satsub( (_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1); -// const DXGI_SAMPLE_DESC& msaa = s_msaa[msaaQuality]; + const uint32_t msaaQuality = bx::uint32_satsub( (_flags&BGFX_TEXTURE_RT_MSAA_MASK)>>BGFX_TEXTURE_RT_MSAA_SHIFT, 1); + int sampleCount = s_msaa[msaaQuality]; MTLPixelFormat format = MTLPixelFormatInvalid; if (srgb) @@ -1916,22 +2451,35 @@ namespace bgfx { namespace mtl desc.height = textureHeight; desc.depth = bx::uint32_max(1,imageContainer.m_depth); desc.mipmapLevelCount = imageContainer.m_numMips; - desc.sampleCount = 1; //TODO: set samplecount - If textureType is not MTLTextureType2DMultisample, the value must be 1. - desc.resourceOptions = MTLResourceStorageModePrivate; - desc.cpuCacheMode = MTLCPUCacheModeDefaultCache; + desc.sampleCount = 1; - desc.storageMode = (MTLStorageMode)(writeOnly - ? 2 /*MTLStorageModePrivate*/ - : 1 /*MTLStorageModeManaged*/ - ); - desc.usage = writeOnly - ? MTLTextureUsageShaderWrite - : MTLTextureUsageShaderRead - ; + if (s_renderMtl->m_iOS9Runtime || s_renderMtl->m_macOS11Runtime) + { + desc.cpuCacheMode = MTLCPUCacheModeDefaultCache; - //TODO: set resource flags depending on usage(renderTarget/computeWrite/etc) on iOS9/OSX + desc.storageMode = (MTLStorageMode)(writeOnly||isDepth(TextureFormat::Enum(m_textureFormat)) + ? 2 /*MTLStorageModePrivate*/ + : ((BX_ENABLED(BX_PLATFORM_IOS)) ? 0 /* MTLStorageModeShared */ : 1 /*MTLStorageModeManaged*/) + ); + + desc.usage = MTLTextureUsageShaderRead; + if (computeWrite) + desc.usage |= MTLTextureUsageShaderWrite; + if (renderTarget) + desc.usage |= MTLTextureUsageRenderTarget; + } m_ptr = s_renderMtl->m_device.newTextureWithDescriptor(desc); + + if ( sampleCount > 1) + { + desc.textureType = MTLTextureType2DMultisample; + desc.sampleCount = sampleCount; + if (s_renderMtl->m_iOS9Runtime || s_renderMtl->m_macOS11Runtime) + desc.storageMode = (MTLStorageMode)( 2 /*MTLStorageModePrivate*/); + m_ptrMSAA = s_renderMtl->m_device.newTextureWithDescriptor(desc); + } + if (m_requestedFormat == TextureFormat::D24S8 && desc.pixelFormat == MTLPixelFormatDepth32Float) { @@ -1964,7 +2512,7 @@ namespace bgfx { namespace mtl if (convert) { - imageDecodeToRgba8(temp + imageDecodeToBgra8(temp , mip.m_data , mip.m_width , mip.m_height @@ -2023,12 +2571,6 @@ namespace bgfx { namespace mtl void TextureMtl::update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, uint16_t _pitch, const Memory* _mem) { - MTLRegion region = - { - { _rect.m_x, _rect.m_y, _z }, - { _rect.m_width, _rect.m_height, _depth }, - }; - const uint32_t bpp = getBitsPerPixel(TextureFormat::Enum(m_textureFormat) ); const uint32_t rectpitch = _rect.m_width*bpp/8; const uint32_t srcpitch = UINT16_MAX == _pitch ? rectpitch : _pitch; @@ -2051,7 +2593,38 @@ namespace bgfx { namespace mtl data = temp; } - m_ptr.replaceRegion(region, _mip, _side, data, srcpitch, srcpitch * _rect.m_height); + if ( NULL != s_renderMtl->m_renderCommandEncoder ) + { + s_renderMtl->sync(); + + MTLRegion region = + { + { _rect.m_x, _rect.m_y, _z }, + { _rect.m_width, _rect.m_height, _depth }, + }; + + m_ptr.replaceRegion(region, _mip, _side, data, srcpitch, srcpitch * _rect.m_height); + } + else + { + BlitCommandEncoder bce = s_renderMtl->getBlitCommandEncoder(); + + const uint32_t dstpitch = bx::strideAlign(rectpitch, 64); + + Buffer tempBuffer = s_renderMtl->m_device.newBufferWithLength(dstpitch*_rect.m_height, 0); + + const uint8_t* src = (uint8_t*)data; + uint8_t* dst = (uint8_t*)tempBuffer.contents(); + + for (uint32_t yy = 0; yy < _rect.m_height; ++yy, src += srcpitch, dst += dstpitch) + { + memcpy(dst, src, rectpitch); + } + + bce.copyFromBuffer(tempBuffer, 0, dstpitch, dstpitch * _rect.m_height, MTLSizeMake(_rect.m_width, _rect.m_height, _depth), + m_ptr, _side, _mip, MTLOriginMake(_rect.m_x, _rect.m_y, _z)); + release(tempBuffer); + } if (NULL != temp) { @@ -2059,13 +2632,23 @@ namespace bgfx { namespace mtl } } - void TextureMtl::commit(uint8_t _stage, uint32_t _flags) + void TextureMtl::commit(uint8_t _stage, bool _vertex, bool _fragment, uint32_t _flags) { - //TODO: vertex or fragment stage? - s_renderMtl->m_renderCommandEncoder.setFragmentTexture(m_ptr, _stage); - s_renderMtl->m_renderCommandEncoder.setFragmentSamplerState(0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags) - ? s_renderMtl->getSamplerState(_flags) - : m_sampler, _stage); + if (_vertex) + { + s_renderMtl->m_renderCommandEncoder.setVertexTexture(m_ptr, _stage); + s_renderMtl->m_renderCommandEncoder.setVertexSamplerState(0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags) + ? s_renderMtl->getSamplerState(_flags) + : m_sampler, _stage); + } + + if (_fragment) + { + s_renderMtl->m_renderCommandEncoder.setFragmentTexture(m_ptr, _stage); + s_renderMtl->m_renderCommandEncoder.setFragmentSamplerState(0 == (BGFX_TEXTURE_INTERNAL_DEFAULT_SAMPLER & _flags) + ? s_renderMtl->getSamplerState(_flags) + : m_sampler, _stage); + } } void FrameBufferMtl::create(uint8_t _num, const Attachment* _attachment) @@ -2078,7 +2661,6 @@ namespace bgfx { namespace mtl { const TextureMtl& texture = s_renderMtl->m_textures[handle.idx]; - //TODO: separate stencil buffer? or just use packed depth/stencil (which is not available on iOS8) if (isDepth( (TextureFormat::Enum)texture.m_textureFormat) ) { m_depthHandle = handle; @@ -2100,9 +2682,18 @@ namespace bgfx { namespace mtl const TextureMtl& texture = s_renderMtl->m_textures[m_colorHandle[ii].idx]; murmur.add((uint32_t)texture.m_ptr.pixelFormat()); } - const TextureMtl& depthTexture = s_renderMtl->m_textures[m_depthHandle.idx]; - murmur.add((uint32_t)depthTexture.m_ptr.pixelFormat()); - murmur.add((uint32_t)MTLPixelFormatInvalid); //stencil + if (!isValid(m_depthHandle)) + { + murmur.add((uint32_t)MTLPixelFormatInvalid); + murmur.add((uint32_t)MTLPixelFormatInvalid); + } + else + { + const TextureMtl& depthTexture = s_renderMtl->m_textures[m_depthHandle.idx]; + murmur.add((uint32_t)depthTexture.m_ptr.pixelFormat()); + murmur.add((uint32_t)(NULL != depthTexture.m_ptrStencil ? depthTexture.m_ptrStencil.pixelFormat() : MTLPixelFormatInvalid)); + } + murmur.add(1); //SampleCount m_pixelFormatHash = murmur.end(); } @@ -2131,6 +2722,51 @@ namespace bgfx { namespace mtl return denseIdx; } + void TimerQueryMtl::init() + { + m_frequency = bx::getHPFrequency(); + } + + void TimerQueryMtl::shutdown() + { + } + + static void setTimestamp(void* _data) + { + *((int64_t*)_data) = bx::getHPCounter(); + } + + void TimerQueryMtl::addHandlers(CommandBuffer& _commandBuffer) + { + while (0 == m_control.reserve(1) ) + { + m_control.consume(1); + } + + uint32_t offset = m_control.m_current * 2 + 0; + + _commandBuffer.addScheduledHandler(setTimestamp, &m_result[offset]); + _commandBuffer.addCompletedHandler(setTimestamp, &m_result[offset+1]); + m_control.commit(1); + } + + bool TimerQueryMtl::get() + { + if (0 != m_control.available() ) + { + uint32_t offset = m_control.m_read * 2; + m_begin = m_result[offset+0]; + m_end = m_result[offset+1]; + m_elapsed = m_end - m_begin; + + m_control.consume(1); + + return true; + } + + return false; + } + void OcclusionQueryMTL::postReset() { MTL_RELEASE(m_buffer); @@ -2177,42 +2813,82 @@ namespace bgfx { namespace mtl void RendererContextMtl::submit(Frame* _render, ClearQuad& _clearQuad, TextVideoMemBlitter& _textVideoMemBlitter) BX_OVERRIDE { - m_commandBuffer = m_commandQueue.commandBuffer(); - retain(m_commandBuffer); // keep alive to be useable at 'flip' + m_framesSemaphore.wait(); - //TODO: multithreading with multiple commandbuffer - // is there a FAST way to tell which view is active? - - //TODO: acquire CAMetalDrawable just before we really need it. When we are using an encoder with target metalLayer's texture - m_drawable = m_metalLayer.nextDrawable; -// retain(m_drawable); // keep alive to be useable at 'flip' - - m_uniformBuffer = m_uniformBuffers[m_uniformBufferIndex]; - m_uniformBufferIndex = (m_uniformBufferIndex + 1) % UNIFORM_BUFFER_COUNT; - m_uniformBufferVertexOffset = 0; - m_uniformBufferFragmentOffset = 0; - - updateResolution(_render->m_resolution); + if ( m_commandBuffer == NULL ) + { + m_commandBuffer = m_commandQueue.commandBuffer(); + retain(m_commandBuffer); // keep alive to be useable at 'flip' + } int64_t elapsed = -bx::getHPCounter(); int64_t captureElapsed = 0; - if (_render->m_debug & (BGFX_DEBUG_IFH|BGFX_DEBUG_STATS) ) + m_gpuTimer.addHandlers(m_commandBuffer); + + if ( m_blitCommandEncoder ) { - //TODO - //m_gpuTimer.begin(); + m_blitCommandEncoder.endEncoding(); + m_blitCommandEncoder = 0; } + updateResolution(_render->m_resolution); + + if ( m_saveScreenshot || NULL != m_capture ) + { + if ( m_screenshotTarget ) + { + if ( m_screenshotTarget.width() != m_resolution.m_width || + m_screenshotTarget.height() != m_resolution.m_height ) + { + MTL_RELEASE(m_screenshotTarget); + } + } + + if ( NULL == m_screenshotTarget) + { + m_textureDescriptor.textureType = MTLTextureType2D; + m_textureDescriptor.pixelFormat = m_metalLayer.pixelFormat; + m_textureDescriptor.width = m_resolution.m_width; + m_textureDescriptor.height = m_resolution.m_height; + m_textureDescriptor.depth = 1; + m_textureDescriptor.mipmapLevelCount = 1; + m_textureDescriptor.sampleCount = 1; + m_textureDescriptor.arrayLength = 1; + if ( m_iOS9Runtime || m_macOS11Runtime ) + { + m_textureDescriptor.cpuCacheMode = MTLCPUCacheModeDefaultCache; + m_textureDescriptor.storageMode = (MTLStorageMode)(((BX_ENABLED(BX_PLATFORM_IOS)) ? 0 /* MTLStorageModeShared */ : 1 /*MTLStorageModeManaged*/) + ); + m_textureDescriptor.usage = MTLTextureUsageRenderTarget | MTLTextureUsageShaderRead; + } + + m_screenshotTarget = m_device.newTextureWithDescriptor(m_textureDescriptor); + } + m_saveScreenshot = false; + } + else + { + MTL_RELEASE(m_screenshotTarget); + } + + m_uniformBuffer = m_uniformBuffers[m_bufferIndex]; + m_bufferIndex = (m_bufferIndex + 1) % MTL_MAX_FRAMES_IN_FLIGHT; + m_uniformBufferVertexOffset = 0; + m_uniformBufferFragmentOffset = 0; + + + if (0 < _render->m_iboffset) { TransientIndexBuffer* ib = _render->m_transientIb; - m_indexBuffers[ib->handle.idx].update(0, _render->m_iboffset, ib->data); + m_indexBuffers[ib->handle.idx].update(0, _render->m_iboffset, ib->data, true); } if (0 < _render->m_vboffset) { TransientVertexBuffer* vb = _render->m_transientVb; - m_vertexBuffers[vb->handle.idx].update(0, _render->m_vboffset, vb->data); + m_vertexBuffers[vb->handle.idx].update(0, _render->m_vboffset, vb->data, true); } _render->sort(); @@ -2230,23 +2906,16 @@ namespace bgfx { namespace mtl bool wireframe = !!(_render->m_debug&BGFX_DEBUG_WIREFRAME); - //TODO: REMOVE THIS - TEMPORARY HACK - m_textureDescriptor.textureType = MTLTextureType2D; - m_textureDescriptor.pixelFormat = MTLPixelFormatRGBA8Unorm; - m_textureDescriptor.width = 4; - m_textureDescriptor.height = 4; - m_textureDescriptor.depth = 1; - m_textureDescriptor.mipmapLevelCount = 1; - m_textureDescriptor.sampleCount = 1; //TODO: set samplecount - If textureType is not MTLTextureType2DMultisample, the value must be 1. - Texture zeroTexture = m_device.newTextureWithDescriptor(m_textureDescriptor); - uint16_t programIdx = invalidHandle; SortKey key; uint16_t view = UINT16_MAX; FrameBufferHandle fbh = { BGFX_CONFIG_MAX_FRAME_BUFFERS }; - //ASK: why should we use this? It changes topology, so possible renders a big mess, doesn't it? - //const uint64_t primType = _render->m_debug&BGFX_DEBUG_WIREFRAME ? BGFX_STATE_PT_LINES : 0; + BlitKey blitKey; + blitKey.decode(_render->m_blitKeys[0]); + uint16_t numBlitItems = _render->m_numBlitItems; + uint16_t blitItem = 0; + const uint64_t primType = 0; uint8_t primIndex = uint8_t(primType>>BGFX_STATE_PT_SHIFT); PrimInfo prim = s_primInfo[primIndex]; @@ -2329,94 +2998,175 @@ namespace bgfx { namespace mtl viewState.m_rect.m_width /= 2; } + + for (; blitItem < numBlitItems && blitKey.m_view <= view; blitItem++) + { + if (0 != m_renderCommandEncoder) + { + m_renderCommandEncoder.endEncoding(); + m_renderCommandEncoder = 0; + } + m_blitCommandEncoder = getBlitCommandEncoder(); + + const BlitItem& blit = _render->m_blitItem[blitItem]; + blitKey.decode(_render->m_blitKeys[blitItem+1]); + + const TextureMtl& src = m_textures[blit.m_src.idx]; + const TextureMtl& dst = m_textures[blit.m_dst.idx]; + + uint32_t srcWidth = bx::uint32_min(src.m_width, blit.m_srcX + blit.m_width) - blit.m_srcX; + uint32_t srcHeight = bx::uint32_min(src.m_height, blit.m_srcY + blit.m_height) - blit.m_srcY; + uint32_t srcDepth = bx::uint32_min(src.m_depth, blit.m_srcZ + blit.m_depth) - blit.m_srcZ; + uint32_t dstWidth = bx::uint32_min(dst.m_width, blit.m_dstX + blit.m_width) - blit.m_dstX; + uint32_t dstHeight = bx::uint32_min(dst.m_height, blit.m_dstY + blit.m_height) - blit.m_dstY; + uint32_t dstDepth = bx::uint32_min(dst.m_depth, blit.m_dstZ + blit.m_depth) - blit.m_dstZ; + uint32_t width = bx::uint32_min(srcWidth, dstWidth); + uint32_t height = bx::uint32_min(srcHeight, dstHeight); + uint32_t depth = bx::uint32_min(srcDepth, dstDepth); + + if ( MTLTextureType3D == src.m_ptr.textureType()) + { + m_blitCommandEncoder.copyFromTexture(src.m_ptr, 0, 0, MTLOriginMake(blit.m_srcX, blit.m_srcY, blit.m_srcZ), MTLSizeMake(width, height, bx::uint32_imax(depth, 1)), + dst.m_ptr, 0, 0, MTLOriginMake(blit.m_dstX, blit.m_dstY, blit.m_dstZ)); + } + else + { + m_blitCommandEncoder.copyFromTexture(src.m_ptr, blit.m_srcZ, blit.m_srcMip, MTLOriginMake(blit.m_srcX, blit.m_srcY, 0), MTLSizeMake(width, height, 1), + dst.m_ptr, blit.m_dstZ, blit.m_dstMip, MTLOriginMake(blit.m_dstX, blit.m_dstY, 0)); + } + } + + if (0 != m_blitCommandEncoder) + { + m_blitCommandEncoder.endEncoding(); + m_blitCommandEncoder = 0; + } + const Rect& scissorRect = _render->m_scissor[view]; viewHasScissor = !scissorRect.isZero(); viewScissorRect = viewHasScissor ? scissorRect : viewState.m_rect; Clear& clr = _render->m_clear[view]; - RenderPassDescriptor renderPassDescriptor = newRenderPassDescriptor(); - renderPassDescriptor.visibilityResultBuffer = m_occlusionQuery.m_buffer; - uint32_t width = getBufferWidth(); uint32_t height = getBufferHeight(); Rect viewRect = viewState.m_rect; - bool fullscreenRect = true + bool clearWithRenderPass = true && 0 == viewRect.m_x && 0 == viewRect.m_y && width == viewRect.m_width && height == viewRect.m_height ; - fbh = _render->m_fb[view]; - setFrameBuffer(renderPassDescriptor, fbh); - - RenderPassColorAttachmentDescriptor colorAttachment0 = renderPassDescriptor.colorAttachments[0]; - - if (0 != (BGFX_CLEAR_COLOR & clr.m_flags) ) + if ( NULL == m_renderCommandEncoder || fbh.idx != _render->m_fb[view].idx ) { - if (0 != (BGFX_CLEAR_COLOR_USE_PALETTE & clr.m_flags) ) + if (0 != m_renderCommandEncoder) { - uint8_t index = (uint8_t)bx::uint32_min(BGFX_CONFIG_MAX_COLOR_PALETTE-1, clr.m_index[0]); - const float* rgba = _render->m_colorPalette[index]; - const float rr = rgba[0]; - const float gg = rgba[1]; - const float bb = rgba[2]; - const float aa = rgba[3]; - colorAttachment0.clearColor = MTLClearColorMake(rr, gg, bb, aa); + m_renderCommandEncoder.endEncoding(); + } + + RenderPassDescriptor renderPassDescriptor = newRenderPassDescriptor(); + renderPassDescriptor.visibilityResultBuffer = m_occlusionQuery.m_buffer; + + fbh = _render->m_fb[view]; + setFrameBuffer(renderPassDescriptor, fbh); + + if ( clearWithRenderPass ) + { + for(uint32_t ii = 0; ii < g_caps.maxFBAttachments; ++ii) + { + MTLRenderPassColorAttachmentDescriptor* desc = renderPassDescriptor.colorAttachments[ii]; + + if ( desc.texture != NULL) + { + if (0 != (BGFX_CLEAR_COLOR & clr.m_flags) ) + { + if (0 != (BGFX_CLEAR_COLOR_USE_PALETTE & clr.m_flags) ) + { + uint8_t index = (uint8_t)bx::uint32_min(BGFX_CONFIG_MAX_COLOR_PALETTE-1, clr.m_index[ii]); + const float* rgba = _render->m_colorPalette[index]; + const float rr = rgba[0]; + const float gg = rgba[1]; + const float bb = rgba[2]; + const float aa = rgba[3]; + desc.clearColor = MTLClearColorMake(rr, gg, bb, aa); + } + else + { + float rr = clr.m_index[0]*1.0f/255.0f; + float gg = clr.m_index[1]*1.0f/255.0f; + float bb = clr.m_index[2]*1.0f/255.0f; + float aa = clr.m_index[3]*1.0f/255.0f; + desc.clearColor = MTLClearColorMake(rr, gg, bb, aa); + } + + desc.loadAction = MTLLoadActionClear; + } + else + { + desc.loadAction = MTLLoadActionLoad; + } + desc.storeAction = desc.texture.sampleCount > 1 ? MTLStoreActionMultisampleResolve : MTLStoreActionStore; + } + } + + //TODO: optimize store actions use discard flag + RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment; + if (NULL != depthAttachment.texture) + { + depthAttachment.clearDepth = clr.m_depth; + depthAttachment.loadAction = 0 != (BGFX_CLEAR_DEPTH & clr.m_flags) + ? MTLLoadActionClear + : MTLLoadActionLoad + ; + depthAttachment.storeAction = NULL != m_backBufferColorMSAA ? MTLStoreActionDontCare : MTLStoreActionStore; + } + + RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment; + if (NULL != stencilAttachment.texture) + { + stencilAttachment.clearStencil = clr.m_stencil; + stencilAttachment.loadAction = 0 != (BGFX_CLEAR_STENCIL & clr.m_flags) + ? MTLLoadActionClear + : MTLLoadActionLoad + ; + stencilAttachment.storeAction = NULL != m_backBufferColorMSAA ? MTLStoreActionDontCare : MTLStoreActionStore; + } } else { - float rr = clr.m_index[0]*1.0f/255.0f; - float gg = clr.m_index[1]*1.0f/255.0f; - float bb = clr.m_index[2]*1.0f/255.0f; - float aa = clr.m_index[3]*1.0f/255.0f; - colorAttachment0.clearColor = MTLClearColorMake(rr, gg, bb, aa); + for(uint32_t ii = 0; ii < g_caps.maxFBAttachments; ++ii) + { + MTLRenderPassColorAttachmentDescriptor* desc = renderPassDescriptor.colorAttachments[ii]; + if ( desc.texture != NULL) + desc.loadAction = MTLLoadActionLoad; + } + + //TODO: optimize store actions use discard flag + RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment; + if (NULL != depthAttachment.texture) + { + depthAttachment.loadAction = MTLLoadActionLoad; + depthAttachment.storeAction = MTLStoreActionStore; + } + + RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment; + if (NULL != stencilAttachment.texture) + { + stencilAttachment.loadAction = MTLLoadActionLoad; + stencilAttachment.storeAction = MTLStoreActionStore; + } } - colorAttachment0.loadAction = MTLLoadActionClear; + rce = m_commandBuffer.renderCommandEncoderWithDescriptor(renderPassDescriptor); + m_renderCommandEncoder = rce; + m_renderCommandEncoderFrameBufferHandle = fbh; + MTL_RELEASE(renderPassDescriptor); } else { - colorAttachment0.loadAction = MTLLoadActionLoad; + clearWithRenderPass = false; } - //TODO: optimize store actions use discard flag - RenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.depthAttachment; - if (NULL != depthAttachment.texture) - { - depthAttachment.clearDepth = clr.m_depth; - depthAttachment.loadAction = 0 != (BGFX_CLEAR_DEPTH & clr.m_flags) - ? MTLLoadActionClear - : MTLLoadActionLoad - ; - depthAttachment.storeAction = MTLStoreActionStore; - } - - RenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.stencilAttachment; - if (NULL != stencilAttachment.texture) - { - stencilAttachment.clearStencil = clr.m_stencil; - stencilAttachment.loadAction = 0 != (BGFX_CLEAR_STENCIL & clr.m_flags) - ? MTLLoadActionClear - : MTLLoadActionLoad - ; - stencilAttachment.storeAction = MTLStoreActionStore; - } - - if (0 != m_renderCommandEncoder) - { - m_renderCommandEncoder.endEncoding(); - } - - rce = m_commandBuffer.renderCommandEncoderWithDescriptor(renderPassDescriptor); - m_renderCommandEncoder = rce; - MTL_RELEASE(renderPassDescriptor); - - //TODO: REMOVE THIS!!!! - // TERRIBLE HACK TO SUPPRESS DEBUG LAYER WARNING ABOUT MISSING TEXTURE/SAMPLER AT 0 in 20-nanovg - m_renderCommandEncoder.setFragmentTexture(zeroTexture, 0); - m_renderCommandEncoder.setFragmentSamplerState(getSamplerState(0), 0); - rce.setTriangleFillMode(wireframe? MTLTriangleFillModeLines : MTLTriangleFillModeFill); if (BX_ENABLED(BGFX_CONFIG_DEBUG_MTL) ) @@ -2439,7 +3189,7 @@ namespace bgfx { namespace mtl rce.setViewport(vp); if (BGFX_CLEAR_NONE != (clr.m_flags & BGFX_CLEAR_MASK) - && !fullscreenRect) + && !clearWithRenderPass) { clearQuad(_clearQuad, viewState.m_rect, clr, _render->m_colorPalette); } @@ -2527,6 +3277,9 @@ namespace bgfx { namespace mtl rc.y = scissorRect.m_y; rc.width = scissorRect.m_width; rc.height = scissorRect.m_height; + + if ( rc.width == 0 || rc.height == 0 ) + continue; } rce.setScissorRect(rc); } @@ -2541,7 +3294,6 @@ namespace bgfx { namespace mtl | BGFX_STATE_CULL_MASK | BGFX_STATE_ALPHA_REF_MASK | BGFX_STATE_PT_MASK -// | BGFX_STATE_POINT_SIZE_MASK ) & changedFlags) { if (BGFX_STATE_CULL_MASK & changedFlags) @@ -2583,7 +3335,7 @@ namespace bgfx { namespace mtl rendererUpdateUniforms(this, _render->m_uniformBuffer, draw.m_constBegin, draw.m_constEnd); if (key.m_program != programIdx - || (BGFX_STATE_BLEND_MASK|BGFX_STATE_BLEND_EQUATION_MASK|BGFX_STATE_ALPHA_WRITE|BGFX_STATE_RGB_WRITE|BGFX_STATE_BLEND_INDEPENDENT|BGFX_STATE_MSAA) & changedFlags + || (BGFX_STATE_BLEND_MASK|BGFX_STATE_BLEND_EQUATION_MASK|BGFX_STATE_ALPHA_WRITE|BGFX_STATE_RGB_WRITE|BGFX_STATE_BLEND_INDEPENDENT|BGFX_STATE_MSAA|BGFX_STATE_BLEND_ALPHA_TO_COVERAGE) & changedFlags || currentState.m_vertexBuffer.idx != draw.m_vertexBuffer.idx || currentState.m_vertexDecl.idx != draw.m_vertexDecl.idx || currentState.m_instanceDataStride != draw.m_instanceDataStride @@ -2603,12 +3355,18 @@ namespace bgfx { namespace mtl ProgramMtl& program = m_program[programIdx]; currentProgram = &program; - uint16_t handle = draw.m_vertexBuffer.idx; - const VertexBufferMtl& vb = m_vertexBuffers[handle]; - VertexDeclHandle decl; - decl.idx = !isValid(vb.m_decl) ? draw.m_vertexDecl.idx : vb.m_decl.idx; + RenderPipelineState pipelineState = NULL; + + if ( isValid(draw.m_vertexBuffer) ) + { + uint16_t handle = draw.m_vertexBuffer.idx; + const VertexBufferMtl& vb = m_vertexBuffers[handle]; + VertexDeclHandle decl; + decl.idx = !isValid(vb.m_decl) ? draw.m_vertexDecl.idx : vb.m_decl.idx; + + pipelineState = program.getRenderPipelineState(newFlags, draw.m_rgba, fbh, decl, draw.m_instanceDataStride/16); + } - RenderPipelineState pipelineState = program.getRenderPipelineState(newFlags, draw.m_rgba, fbh, decl, draw.m_instanceDataStride/16); if (NULL == pipelineState ) { //call with invalid program currentProgram = NULL; @@ -2665,6 +3423,16 @@ namespace bgfx { namespace mtl } { + uint32_t usedVertexSamplerStages = 0; + uint32_t usedFragmentSamplerStages = 0; + + if (invalidHandle != programIdx) + { + ProgramMtl& program = m_program[programIdx]; + usedVertexSamplerStages = program.m_usedVertexSamplerStages; + usedFragmentSamplerStages = program.m_usedFragmentSamplerStages; + } + for (uint8_t stage = 0; stage < BGFX_CONFIG_MAX_TEXTURE_SAMPLERS; ++stage) { const Binding& sampler = draw.m_bind[stage]; @@ -2676,7 +3444,9 @@ namespace bgfx { namespace mtl if (invalidHandle != sampler.m_idx) { TextureMtl& texture = m_textures[sampler.m_idx]; - texture.commit(stage, sampler.m_un.m_draw.m_textureFlags); + texture.commit(stage, (usedVertexSamplerStages&(1<m_num) { captureElapsed = -bx::getHPCounter(); - //capture(); + capture(); + rce = m_renderCommandEncoder; //TODO: ugly, can create new encoder captureElapsed += bx::getHPCounter(); } } @@ -2814,32 +3585,45 @@ namespace bgfx { namespace mtl elapsed += now; static int64_t last = now; + + Stats& perfStats = _render->m_perfStats; + perfStats.cpuTimeBegin = last; + int64_t frameTime = now - last; last = now; static int64_t min = frameTime; static int64_t max = frameTime; - min = min > frameTime ? frameTime : min; - max = max < frameTime ? frameTime : max; + min = bx::int64_min(min, frameTime); + max = bx::int64_max(max, frameTime); + static uint32_t maxGpuLatency = 0; + static double maxGpuElapsed = 0.0f; + double elapsedGpuMs = 0.0; + + do + { + double toGpuMs = 1000.0 / double(m_gpuTimer.m_frequency); + elapsedGpuMs = m_gpuTimer.m_elapsed * toGpuMs; + maxGpuElapsed = elapsedGpuMs > maxGpuElapsed ? elapsedGpuMs : maxGpuElapsed; + } + while (m_gpuTimer.get() ); + + maxGpuLatency = bx::uint32_imax(maxGpuLatency, m_gpuTimer.m_control.available()-1); + + const int64_t timerFreq = bx::getHPFrequency(); + + perfStats.cpuTimeEnd = now; + perfStats.cpuTimerFreq = timerFreq; + perfStats.gpuTimeBegin = m_gpuTimer.m_begin; + perfStats.gpuTimeEnd = m_gpuTimer.m_end; + perfStats.gpuTimerFreq = m_gpuTimer.m_frequency; + + rce.setTriangleFillMode(MTLTriangleFillModeFill); if (_render->m_debug & (BGFX_DEBUG_IFH|BGFX_DEBUG_STATS) ) { rce.pushDebugGroup("debugstats"); - static uint32_t maxGpuLatency = 0; - static double maxGpuElapsed = 0.0f; -// double elapsedGpuMs = 0.0; - -// m_gpuTimer.end(); -// -// while (m_gpuTimer.get() ) -// { -// double toGpuMs = 1000.0 / double(m_gpuTimer.m_frequency); -// elapsedGpuMs = m_gpuTimer.m_elapsed * toGpuMs; -// maxGpuElapsed = elapsedGpuMs > maxGpuElapsed ? elapsedGpuMs : maxGpuElapsed; -// } -// maxGpuLatency = bx::uint32_imax(maxGpuLatency, m_gpuTimer.m_control.available()-1); - TextVideoMem& tvm = m_textVideoMem; static int64_t next = now; @@ -2916,6 +3700,7 @@ namespace bgfx { namespace mtl } blit(this, _textVideoMemBlitter, tvm); + rce = m_renderCommandEncoder; //TODO: ugly, blit can create encoder rce.popDebugGroup(); } @@ -2924,15 +3709,35 @@ namespace bgfx { namespace mtl rce.pushDebugGroup("debugtext"); blit(this, _textVideoMemBlitter, _render->m_textVideoMem); + rce = m_renderCommandEncoder; //TODO: ugly, blit can create encoder rce.popDebugGroup(); } - //TODO: REMOVE THIS - TEMPORARY HACK - release(zeroTexture); - rce.endEncoding(); m_renderCommandEncoder = 0; + m_renderCommandEncoderFrameBufferHandle.idx = invalidHandle; + + + if ( m_screenshotTarget ) + { + RenderPassDescriptor renderPassDescriptor = newRenderPassDescriptor(); + renderPassDescriptor.colorAttachments[0].texture = currentDrawable().texture; + renderPassDescriptor.colorAttachments[0].storeAction = MTLStoreActionStore; + + rce = m_commandBuffer.renderCommandEncoderWithDescriptor(renderPassDescriptor); + + rce.setCullMode(MTLCullModeNone); + + rce.setRenderPipelineState(m_screenshotBlitRenderPipelineState); + + rce.setFragmentSamplerState(getSamplerState(BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP|BGFX_TEXTURE_MIN_POINT|BGFX_TEXTURE_MAG_POINT|BGFX_TEXTURE_MIP_POINT), 0); + rce.setFragmentTexture(m_screenshotTarget, 0); + + rce.drawPrimitives(MTLPrimitiveTypeTriangle, 0, 3, 1); + + rce.endEncoding(); + } } } /* namespace mtl */ } // namespace bgfx diff --git a/3rdparty/bgfx/src/renderer_null.cpp b/3rdparty/bgfx/src/renderer_null.cpp index 9b3de91416b..1dcd621759a 100644 --- a/3rdparty/bgfx/src/renderer_null.cpp +++ b/3rdparty/bgfx/src/renderer_null.cpp @@ -117,7 +117,7 @@ namespace bgfx { namespace noop { } - void resizeTexture(TextureHandle /*_handle*/, uint16_t /*_width*/, uint16_t /*_height*/) BX_OVERRIDE + void resizeTexture(TextureHandle /*_handle*/, uint16_t /*_width*/, uint16_t /*_height*/, uint8_t /*_numMips*/) BX_OVERRIDE { } diff --git a/3rdparty/bgfx/src/topology.cpp b/3rdparty/bgfx/src/topology.cpp index 767e4995772..da4609711f6 100644 --- a/3rdparty/bgfx/src/topology.cpp +++ b/3rdparty/bgfx/src/topology.cpp @@ -3,9 +3,11 @@ * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause */ -#include #include +#include +#include #include +#include #include "config.h" #include "topology.h" @@ -165,7 +167,15 @@ namespace bgfx return uint32_t(dst - (IndexT*)_dst); } - uint32_t topologyConvert(TopologyConvert::Enum _conversion, void* _dst, uint32_t _dstSize, const void* _indices, uint32_t _numIndices, bool _index32, bx::AllocatorI* _allocator) + uint32_t topologyConvert( + TopologyConvert::Enum _conversion + , void* _dst + , uint32_t _dstSize + , const void* _indices + , uint32_t _numIndices + , bool _index32 + , bx::AllocatorI* _allocator + ) { switch (_conversion) { @@ -213,4 +223,187 @@ namespace bgfx return 0; } + inline uint32_t floatFlip(uint32_t _value) + { + using namespace bx; + const uint32_t tmp0 = uint32_sra(_value, 31); + const uint32_t tmp1 = uint32_neg(tmp0); + const uint32_t mask = uint32_or(tmp1, 0x80000000); + const uint32_t result = uint32_xor(_value, mask); + return result; + } + + inline float favg3(float _a, float _b, float _c) + { + return (_a + _b + _c) * 1.0f/3.0f; + } + + const float* vertexPos(const void* _vertices, uint32_t _stride, uint32_t _index) + { + const uint8_t* vertices = (const uint8_t*)_vertices; + return (const float*)&vertices[_index*_stride]; + } + + inline float distanceDir(const float* __restrict _dir, const void* __restrict _vertices, uint32_t _stride, uint32_t _index) + { + return bx::vec3Dot(vertexPos(_vertices, _stride, _index), _dir); + } + + inline float distancePos(const float* __restrict _pos, const void* __restrict _vertices, uint32_t _stride, uint32_t _index) + { + float tmp[3]; + bx::vec3Sub(tmp, _pos, vertexPos(_vertices, _stride, _index) ); + return bx::fsqrt(bx::vec3Dot(tmp, tmp) ); + } + + typedef float (*KeyFn)(float, float, float); + typedef float (*DistanceFn)(const float*, const void*, uint32_t, uint32_t); + + template + inline void calcSortKeys( + uint32_t* __restrict _keys + , uint32_t* __restrict _values + , const float _dirOrPos[3] + , const void* __restrict _vertices + , uint32_t _stride + , const IndexT* _indices + , uint32_t _num + ) + { + for (uint32_t ii = 0; ii < _num; ++ii) + { + const uint32_t idx0 = _indices[0]; + const uint32_t idx1 = _indices[1]; + const uint32_t idx2 = _indices[2]; + _indices += 3; + + float distance0 = dfn(_dirOrPos, _vertices, _stride, idx0); + float distance1 = dfn(_dirOrPos, _vertices, _stride, idx1); + float distance2 = dfn(_dirOrPos, _vertices, _stride, idx2); + + union { float fl; uint32_t ui; } un; + un.fl = kfn(distance0, distance1, distance2); + + _keys[ii] = floatFlip(un.ui) ^ xorBits; + _values[ii] = ii; + } + } + + template + void topologySortTriList( + TopologySort::Enum _sort + , IndexT* _dst + , uint32_t* _keys + , uint32_t* _values + , uint32_t* _tempKeys + , uint32_t* _tempValues + , uint32_t _num + , const float _dir[3] + , const float _pos[3] + , const void* _vertices + , uint32_t _stride + , const IndexT* _indices + ) + { + using namespace bx; + + switch (_sort) + { + default: + case TopologySort::DirectionFrontToBackMin: calcSortKeys(_keys, _values, _dir, _vertices, _stride, _indices, _num); break; + case TopologySort::DirectionFrontToBackAvg: calcSortKeys(_keys, _values, _dir, _vertices, _stride, _indices, _num); break; + case TopologySort::DirectionFrontToBackMax: calcSortKeys(_keys, _values, _dir, _vertices, _stride, _indices, _num); break; + case TopologySort::DirectionBackToFrontMin: calcSortKeys(_keys, _values, _dir, _vertices, _stride, _indices, _num); break; + case TopologySort::DirectionBackToFrontAvg: calcSortKeys(_keys, _values, _dir, _vertices, _stride, _indices, _num); break; + case TopologySort::DirectionBackToFrontMax: calcSortKeys(_keys, _values, _dir, _vertices, _stride, _indices, _num); break; + case TopologySort::DistanceFrontToBackMin: calcSortKeys(_keys, _values, _pos, _vertices, _stride, _indices, _num); break; + case TopologySort::DistanceFrontToBackAvg: calcSortKeys(_keys, _values, _pos, _vertices, _stride, _indices, _num); break; + case TopologySort::DistanceFrontToBackMax: calcSortKeys(_keys, _values, _pos, _vertices, _stride, _indices, _num); break; + case TopologySort::DistanceBackToFrontMin: calcSortKeys(_keys, _values, _pos, _vertices, _stride, _indices, _num); break; + case TopologySort::DistanceBackToFrontAvg: calcSortKeys(_keys, _values, _pos, _vertices, _stride, _indices, _num); break; + case TopologySort::DistanceBackToFrontMax: calcSortKeys(_keys, _values, _pos, _vertices, _stride, _indices, _num); break; + } + + radixSort(_keys, _tempKeys, _values, _tempValues, _num); + + IndexT* sorted = _dst; + + for (uint32_t ii = 0; ii < _num; ++ii) + { + uint32_t face = _values[ii]*3; + const IndexT idx0 = _indices[face+0]; + const IndexT idx1 = _indices[face+1]; + const IndexT idx2 = _indices[face+2]; + + sorted[0] = idx0; + sorted[1] = idx1; + sorted[2] = idx2; + sorted += 3; + } + } + + void topologySortTriList( + TopologySort::Enum _sort + , void* _dst + , uint32_t _dstSize + , const float _dir[3] + , const float _pos[3] + , const void* _vertices + , uint32_t _stride + , const void* _indices + , uint32_t _numIndices + , bool _index32 + , bx::AllocatorI* _allocator + ) + { + uint32_t indexSize = _index32 + ? sizeof(uint32_t) + : sizeof(uint16_t) + ; + uint32_t num = bx::uint32_min(_numIndices*indexSize, _dstSize)/(indexSize*3); + uint32_t* temp = (uint32_t*)BX_ALLOC(_allocator, sizeof(uint32_t)*num*4); + + uint32_t* keys = &temp[num*0]; + uint32_t* values = &temp[num*1]; + uint32_t* tempKeys = &temp[num*2]; + uint32_t* tempValues = &temp[num*3]; + + if (_index32) + { + topologySortTriList( + _sort + , (uint32_t*)_dst + , keys + , values + , tempKeys + , tempValues + , num + , _dir + , _pos + , _vertices + , _stride + , (const uint32_t*)_indices + ); + } + else + { + topologySortTriList( + _sort + , (uint16_t*)_dst + , keys + , values + , tempKeys + , tempValues + , num + , _dir + , _pos + , _vertices + , _stride + , (const uint16_t*)_indices + ); + } + + BX_FREE(_allocator, temp); + } + } //namespace bgfx diff --git a/3rdparty/bgfx/src/topology.h b/3rdparty/bgfx/src/topology.h index 014d67559df..a0a1be588ce 100644 --- a/3rdparty/bgfx/src/topology.h +++ b/3rdparty/bgfx/src/topology.h @@ -26,7 +26,30 @@ namespace bgfx /// /// @attention C99 equivalent is `bgfx_topology_convert`. /// - uint32_t topologyConvert(TopologyConvert::Enum _conversion, void* _dst, uint32_t _dstSize, const void* _indices, uint32_t _numIndices, bool _index32, bx::AllocatorI* _allocator); + uint32_t topologyConvert( + TopologyConvert::Enum _conversion + , void* _dst + , uint32_t _dstSize + , const void* _indices + , uint32_t _numIndices + , bool _index32 + , bx::AllocatorI* _allocator + ); + + /// + void topologySortTriList( + TopologySort::Enum _sort + , void* _dst + , uint32_t _dstSize + , const float _dir[3] + , const float _pos[3] + , const void* _vertices + , uint32_t _stride + , const void* _indices + , uint32_t _numIndices + , bool _index32 + , bx::AllocatorI* _allocator + ); } // namespace bgfx diff --git a/3rdparty/bgfx/tools/shaderc/shaderc.cpp b/3rdparty/bgfx/tools/shaderc/shaderc.cpp index 2376e492a1d..1b3e03900c0 100644 --- a/3rdparty/bgfx/tools/shaderc/shaderc.cpp +++ b/3rdparty/bgfx/tools/shaderc/shaderc.cpp @@ -20,15 +20,6 @@ namespace bgfx #define BGFX_CHUNK_MAGIC_FSH BX_MAKEFOURCC('F', 'S', 'H', 0x4) #define BGFX_CHUNK_MAGIC_VSH BX_MAKEFOURCC('V', 'S', 'H', 0x4) - long int fsize(FILE* _file) - { - long int pos = ftell(_file); - fseek(_file, 0L, SEEK_END); - long int size = ftell(_file); - fseek(_file, pos, SEEK_SET); - return size; - } - static const char* s_ARB_shader_texture_lod[] = { "texture2DLod", @@ -106,6 +97,13 @@ namespace bgfx NULL }; + static const char* s_texelFetch[] = + { + "texelFetch", + "texelFetchOffset", + NULL + }; + const char* s_uniformTypeName[UniformType::Count] = { "int", @@ -126,7 +124,7 @@ namespace bgfx return "nointerpolation"; } - return _glsl; // noperspective + return _glsl; // centroid, noperspective } const char* getUniformTypeName(UniformType::Enum _enum) @@ -291,14 +289,23 @@ namespace bgfx File(const char* _filePath) : m_data(NULL) { - FILE* file = fopen(_filePath, "r"); - if (NULL != file) + bx::CrtFileReader reader; + if (bx::open(&reader, _filePath) ) { - m_size = fsize(file); + m_size = (uint32_t)bx::getSize(&reader); m_data = new char[m_size+1]; - m_size = (uint32_t)fread(m_data, 1, m_size, file); + m_size = (uint32_t)bx::read(&reader, m_data, m_size); + bx::close(&reader); + + if (m_data[0] == '\xef' + && m_data[1] == '\xbb' + && m_data[2] == '\xbf') + { + memmove(m_data, &m_data[3], m_size-3); + m_size -= 3; + } + m_data[m_size] = '\0'; - fclose(file); } } @@ -322,11 +329,12 @@ namespace bgfx uint32_t m_size; }; - void strInsert(char* _str, const char* _insert) + char* strInsert(char* _str, const char* _insert) { size_t len = strlen(_insert); memmove(&_str[len], _str, strlen(_str) ); memcpy(_str, _insert, len); + return _str + len; } void strReplace(char* _str, const char* _find, const char* _replace) @@ -946,8 +954,8 @@ namespace bgfx bool compiled = false; - FILE* file = fopen(filePath, "r"); - if (NULL == file) + bx::CrtFileReader reader; + if (!bx::open(&reader, filePath) ) { fprintf(stderr, "Unable to open file '%s'.\n", filePath); } @@ -995,7 +1003,8 @@ namespace bgfx if (0 == strncmp(typen, "flat", 4) || 0 == strncmp(typen, "smooth", 6) - || 0 == strncmp(typen, "noperspective", 13) ) + || 0 == strncmp(typen, "noperspective", 13) + || 0 == strncmp(typen, "centroid", 8) ) { interpolation = typen; typen = parse = bx::strws(bx::strword(parse) ); @@ -1056,15 +1065,24 @@ namespace bgfx char* data; char* input; { - const size_t padding = 1024; - uint32_t size = (uint32_t)fsize(file); + const size_t padding = 4096; + uint32_t size = (uint32_t)bx::getSize(&reader); data = new char[size+padding+1]; - size = (uint32_t)fread(data, 1, size, file); + size = (uint32_t)bx::read(&reader, data, size); + + if (data[0] == '\xef' + && data[1] == '\xbb' + && data[2] == '\xbf') + { + memmove(data, &data[3], size-3); + size -= 3; + } + // Compiler generates "error X3000: syntax error: unexpected end of file" // if input doesn't have empty line at EOF. data[size] = '\n'; memset(&data[size+1], 0, padding); - fclose(file); + bx::close(&reader); if (!raw) { @@ -1360,16 +1378,6 @@ namespace bgfx || 0 != essl || 0 != metal) { - if (120 == glsl - || 0 != essl) - { - preprocessor.writef( - "#define ivec2 vec2\n" - "#define ivec3 vec3\n" - "#define ivec4 vec4\n" - ); - } - if (0 == essl) { // bgfx shadow2D/Proj behave like EXT_shadow_samplers @@ -1447,9 +1455,10 @@ namespace bgfx if (hlsl < 4) { preprocessor.writef( + "#define centroid\n" "#define flat\n" - "#define smooth\n" "#define noperspective\n" + "#define smooth\n" ); } @@ -1457,12 +1466,13 @@ namespace bgfx if ('f' == shaderType) { - const char* brace = strstr(entry, "{"); - if (NULL != brace) + const char* insert = strstr(entry, "{"); + if (NULL != insert) { - strInsert(const_cast(brace+1), "\nvec4 bgfx_VoidFrag;\n"); + insert = strInsert(const_cast(insert+1), "\nvec4 bgfx_VoidFrag = vec4_splat(0.0);\n"); } + const bool hasFragColor = NULL != strstr(input, "gl_FragColor"); const bool hasFragCoord = NULL != strstr(input, "gl_FragCoord") || hlsl > 3 || hlsl == 2; const bool hasFragDepth = NULL != strstr(input, "gl_FragDepth"); const bool hasFrontFacing = NULL != strstr(input, "gl_FrontFacing"); @@ -1483,6 +1493,18 @@ namespace bgfx // GL errors when both gl_FragColor and gl_FragData is used. // This will trigger the same error with HLSL compiler too. preprocessor.writef("#define gl_FragColor gl_FragData_0_\n"); + + // If it has gl_FragData or gl_FragColor, color target at + // index 0 exists, otherwise shader is not modifying color + // targets. + hasFragData[0] |= hasFragColor || d3d < 11; + + if (NULL != insert + && d3d < 11 + && !hasFragColor) + { + insert = strInsert(const_cast(insert+1), "\ngl_FragColor = bgfx_VoidFrag;\n"); + } } preprocessor.writef("#define void_main()"); @@ -1512,11 +1534,9 @@ namespace bgfx } } - addFragData(preprocessor, input, 0, arg++ > 0); - const uint32_t maxRT = d3d > 9 ? BX_COUNTOF(hasFragData) : 4; - for (uint32_t ii = 1; ii < BX_COUNTOF(hasFragData); ++ii) + for (uint32_t ii = 0; ii < BX_COUNTOF(hasFragData); ++ii) { if (ii < maxRT) { @@ -1740,16 +1760,18 @@ namespace bgfx { std::string code; - const bool hasTextureLod = NULL != bx::findIdentifierMatch(input, s_ARB_shader_texture_lod /*EXT_shader_texture_lod*/); - const bool hasShader5 = NULL != bx::findIdentifierMatch(input, s_ARB_gpu_shader5); - const bool hasShaderPacking = NULL != bx::findIdentifierMatch(input, s_ARB_shading_language_packing); - const bool hasTextureMS = NULL != bx::findIdentifierMatch(input, s_ARB_texture_multisample); + const bool usesTextureLod = !!bx::findIdentifierMatch(input, s_ARB_shader_texture_lod /*EXT_shader_texture_lod*/); + const bool usesGpuShader5 = !!bx::findIdentifierMatch(input, s_ARB_gpu_shader5); + const bool usesPacking = !!bx::findIdentifierMatch(input, s_ARB_shading_language_packing); + const bool usesTextureMS = !!bx::findIdentifierMatch(input, s_ARB_texture_multisample); + const bool usesTexelFetch = !!bx::findIdentifierMatch(input, s_texelFetch); if (0 == essl) { - const bool need130 = 120 == glsl - && bx::findIdentifierMatch(input, s_130) - ; + const bool need130 = 120 == glsl && (false + || bx::findIdentifierMatch(input, s_130) + || usesTexelFetch + ); if (0 != metal) { @@ -1760,14 +1782,23 @@ namespace bgfx bx::stringPrintf(code, "#version %s\n", need130 ? "130" : profile); } - if (hasShader5) + if (130 > glsl) + { + bx::stringPrintf(code, + "#define ivec2 vec2\n" + "#define ivec3 vec3\n" + "#define ivec4 vec4\n" + ); + } + + if (usesGpuShader5) { bx::stringPrintf(code , "#extension GL_ARB_gpu_shader5 : enable\n" ); } - if (hasShaderPacking) + if (usesPacking) { bx::stringPrintf(code , "#extension GL_ARB_shading_language_packing : enable\n" @@ -1779,7 +1810,7 @@ namespace bgfx "#define bgfxShadow2DProj shadow2DProj\n" ); - if (hasTextureLod + if (usesTextureLod && 130 > glsl) { bx::stringPrintf(code @@ -1787,7 +1818,7 @@ namespace bgfx ); } - if (hasTextureMS) + if (usesTextureMS) { bx::stringPrintf(code , "#extension GL_ARB_texture_multisample : enable\n" @@ -1796,9 +1827,15 @@ namespace bgfx } else { + bx::stringPrintf(code, + "#define ivec2 vec2\n" + "#define ivec3 vec3\n" + "#define ivec4 vec4\n" + ); + // Pretend that all extensions are available. // This will be stripped later. - if (hasTextureLod) + if (usesTextureLod) { bx::stringPrintf(code , "#extension GL_EXT_shader_texture_lod : enable\n" @@ -1830,14 +1867,14 @@ namespace bgfx ); } - if (hasShader5) + if (usesGpuShader5) { bx::stringPrintf(code , "#extension GL_ARB_gpu_shader5 : enable\n" ); } - if (hasShaderPacking) + if (usesPacking) { bx::stringPrintf(code , "#extension GL_ARB_shading_language_packing : enable\n" diff --git a/3rdparty/bgfx/tools/texturec/texturec.cpp b/3rdparty/bgfx/tools/texturec/texturec.cpp index c1c271fddbc..687ccf82fdb 100644 --- a/3rdparty/bgfx/tools/texturec/texturec.cpp +++ b/3rdparty/bgfx/tools/texturec/texturec.cpp @@ -570,10 +570,13 @@ int main(int _argc, const char* _argv[]) const bool normalMap = cmdLine.hasArg('n', "normalmap"); const bool iqa = cmdLine.hasArg('\0', "iqa"); - uint32_t size = (uint32_t)bx::getSize(&reader); - const bgfx::Memory* mem = bgfx::alloc(size); - bx::read(&reader, mem->data, mem->size); - bx::close(&reader); + const bgfx::Memory* mem; + { + uint32_t size = (uint32_t)bx::getSize(&reader); + mem = bgfx::alloc(size); + bx::read(&reader, mem->data, mem->size); + bx::close(&reader); + } { using namespace bgfx; diff --git a/3rdparty/bgfx/tools/texturev/texturev.cpp b/3rdparty/bgfx/tools/texturev/texturev.cpp index 8d866f97799..faa10220d2f 100644 --- a/3rdparty/bgfx/tools/texturev/texturev.cpp +++ b/3rdparty/bgfx/tools/texturev/texturev.cpp @@ -33,12 +33,14 @@ namespace stl = tinystl; static const char* s_supportedExt[] = { + "bmp", "dds", "jpg", "jpeg", "hdr", "ktx", "png", + "psd", "pvr", "tga", }; diff --git a/3rdparty/bx/include/bx/crtimpl.h b/3rdparty/bx/include/bx/crtimpl.h index a4820334ee3..71b9e61e1c6 100644 --- a/3rdparty/bx/include/bx/crtimpl.h +++ b/3rdparty/bx/include/bx/crtimpl.h @@ -194,10 +194,10 @@ namespace bx #if BX_CONFIG_CRT_PROCESS -#if BX_COMPILER_MSVC_COMPATIBLE +#if BX_CRT_MSVC # define popen _popen # define pclose _pclose -#endif // BX_COMPILER_MSVC_COMPATIBLE +#endif // BX_CRT_MSVC class ProcessReader : public ReaderOpenI, public CloserI, public ReaderI { diff --git a/3rdparty/bx/include/bx/float4_langext.h b/3rdparty/bx/include/bx/float4_langext.h deleted file mode 100644 index c5c3dddfa02..00000000000 --- a/3rdparty/bx/include/bx/float4_langext.h +++ /dev/null @@ -1,482 +0,0 @@ -/* - * Copyright 2010-2016 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#ifndef BX_FLOAT4_LANGEXT_H_HEADER_GUARD -#define BX_FLOAT4_LANGEXT_H_HEADER_GUARD - -#include - -namespace bx -{ - typedef union float4_t - { - float __attribute__((vector_size(16))) vf; - int32_t __attribute__((vector_size(16))) vi; - uint32_t __attribute__((vector_size(16))) vu; - float fxyzw[4]; - int32_t ixyzw[4]; - uint32_t uxyzw[4]; - - } float4_t; - -#define ELEMx 0 -#define ELEMy 1 -#define ELEMz 2 -#define ELEMw 3 -#define IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ - BX_FLOAT4_FORCE_INLINE float4_t float4_swiz_##_x##_y##_z##_w(float4_t _a) \ - { \ - float4_t result; \ - result.vf = __builtin_shufflevector(_a.vf, _a.vf, ELEM##_x, ELEM##_y, ELEM##_z, ELEM##_w); \ - return result; \ - } - -#include "float4_swizzle.inl" - -#undef IMPLEMENT_SWIZZLE -#undef ELEMw -#undef ELEMz -#undef ELEMy -#undef ELEMx - -#define IMPLEMENT_TEST(_xyzw, _mask) \ - BX_FLOAT4_FORCE_INLINE bool float4_test_any_##_xyzw(float4_t _test) \ - { \ - uint32_t tmp = ( (_test.uxyzw[3]>>31)<<3) \ - | ( (_test.uxyzw[2]>>31)<<2) \ - | ( (_test.uxyzw[1]>>31)<<1) \ - | ( _test.uxyzw[0]>>31) \ - ; \ - return 0 != (tmp&(_mask) ); \ - } \ - \ - BX_FLOAT4_FORCE_INLINE bool float4_test_all_##_xyzw(float4_t _test) \ - { \ - uint32_t tmp = ( (_test.uxyzw[3]>>31)<<3) \ - | ( (_test.uxyzw[2]>>31)<<2) \ - | ( (_test.uxyzw[1]>>31)<<1) \ - | ( _test.uxyzw[0]>>31) \ - ; \ - return (_mask) == (tmp&(_mask) ); \ - } - -IMPLEMENT_TEST(x , 0x1); -IMPLEMENT_TEST(y , 0x2); -IMPLEMENT_TEST(xy , 0x3); -IMPLEMENT_TEST(z , 0x4); -IMPLEMENT_TEST(xz , 0x5); -IMPLEMENT_TEST(yz , 0x6); -IMPLEMENT_TEST(xyz , 0x7); -IMPLEMENT_TEST(w , 0x8); -IMPLEMENT_TEST(xw , 0x9); -IMPLEMENT_TEST(yw , 0xa); -IMPLEMENT_TEST(xyw , 0xb); -IMPLEMENT_TEST(zw , 0xc); -IMPLEMENT_TEST(xzw , 0xd); -IMPLEMENT_TEST(yzw , 0xe); -IMPLEMENT_TEST(xyzw , 0xf); - -#undef IMPLEMENT_TEST - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xyAB(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 0, 1, 4, 5); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_ABxy(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 4, 5, 0, 1); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_CDzw(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 5, 7, 2, 3); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_zwCD(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 2, 3, 5, 7); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xAyB(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 0, 4, 1, 5); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_yBxA(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 1, 5, 0, 4); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_zCwD(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 2, 6, 3, 7); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_CzDw(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 6, 2, 7, 3); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xAzC(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 0, 4, 2, 6); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_yBwD(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = __builtin_shufflevector(_a.vf, _b.vf, 1, 5, 3, 7); - return result; - } - - BX_FLOAT4_FORCE_INLINE float float4_x(float4_t _a) - { - return _a.fxyzw[0]; - } - - BX_FLOAT4_FORCE_INLINE float float4_y(float4_t _a) - { - return _a.fxyzw[1]; - } - - BX_FLOAT4_FORCE_INLINE float float4_z(float4_t _a) - { - return _a.fxyzw[2]; - } - - BX_FLOAT4_FORCE_INLINE float float4_w(float4_t _a) - { - return _a.fxyzw[3]; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ld(const void* _ptr) - { - const uint32_t* input = reinterpret_cast(_ptr); - float4_t result; - result.uxyzw[0] = input[0]; - result.uxyzw[1] = input[1]; - result.uxyzw[2] = input[2]; - result.uxyzw[3] = input[3]; - return result; - } - - BX_FLOAT4_FORCE_INLINE void float4_st(void* _ptr, float4_t _a) - { - uint32_t* result = reinterpret_cast(_ptr); - result[0] = _a.uxyzw[0]; - result[1] = _a.uxyzw[1]; - result[2] = _a.uxyzw[2]; - result[3] = _a.uxyzw[3]; - } - - BX_FLOAT4_FORCE_INLINE void float4_stx(void* _ptr, float4_t _a) - { - uint32_t* result = reinterpret_cast(_ptr); - result[0] = _a.uxyzw[0]; - } - - BX_FLOAT4_FORCE_INLINE void float4_stream(void* _ptr, float4_t _a) - { - uint32_t* result = reinterpret_cast(_ptr); - result[0] = _a.uxyzw[0]; - result[1] = _a.uxyzw[1]; - result[2] = _a.uxyzw[2]; - result[3] = _a.uxyzw[3]; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ld(float _x, float _y, float _z, float _w) - { - float4_t result; - result.vf = { _x, _y, _z, _w }; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) - { - float4_t result; - result.vu = { _x, _y, _z, _w }; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_splat(const void* _ptr) - { - const uint32_t val = *reinterpret_cast(_ptr); - float4_t result; - result.vu = { val, val, val, val }; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_splat(float _a) - { - return float4_ld(_a, _a, _a, _a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_isplat(uint32_t _a) - { - return float4_ild(_a, _a, _a, _a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_zero() - { - return float4_ild(0, 0, 0, 0); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_itof(float4_t _a) - { - float4_t result; - result.vf = __builtin_convertvector(_a.vi, float __attribute__((vector_size(16))) ); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ftoi(float4_t _a) - { - float4_t result; - result.vi = __builtin_convertvector(_a.vf, int32_t __attribute__((vector_size(16))) ); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_round(float4_t _a) - { - const float4_t tmp = float4_ftoi(_a); - const float4_t result = float4_itof(tmp); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_add(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = _a.vf + _b.vf; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sub(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = _a.vf - _b.vf; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_mul(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = _a.vf * _b.vf; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_div(float4_t _a, float4_t _b) - { - float4_t result; - result.vf = _a.vf / _b.vf; - return result; - } - -#if 0 - BX_FLOAT4_FORCE_INLINE float4_t float4_rcp_est(float4_t _a) - { - float4_t result; - const float4_t one = float4_splat(1.0f); - result.vf = one / _a.vf; - return result; - } -#endif // 0 - - BX_FLOAT4_FORCE_INLINE float4_t float4_sqrt(float4_t _a) - { - float4_t result; - result.vf[0] = sqrtf(_a.vf[0]); - result.vf[1] = sqrtf(_a.vf[1]); - result.vf[2] = sqrtf(_a.vf[2]); - result.vf[3] = sqrtf(_a.vf[3]); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_rsqrt_est(float4_t _a) - { - float4_t result; - result.vf[0] = 1.0f / sqrtf(_a.vf[0]); - result.vf[1] = 1.0f / sqrtf(_a.vf[1]); - result.vf[2] = 1.0f / sqrtf(_a.vf[2]); - result.vf[3] = 1.0f / sqrtf(_a.vf[3]); - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpeq(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vf == _b.vf; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmplt(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vf < _b.vf; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmple(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vf <= _b.vf; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpgt(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vf > _b.vf; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpge(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vf >= _b.vf; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_and(float4_t _a, float4_t _b) - { - float4_t result; - result.vu = _a.vu & _b.vu; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_andc(float4_t _a, float4_t _b) - { - float4_t result; - result.vu = _a.vu & ~_b.vu; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_or(float4_t _a, float4_t _b) - { - float4_t result; - result.vu = _a.vu | _b.vu; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_xor(float4_t _a, float4_t _b) - { - float4_t result; - result.vu = _a.vu ^ _b.vu; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sll(float4_t _a, int _count) - { - float4_t result; - const float4_t count = float4_isplat(_count); - result.vu = _a.vu << count.vi; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_srl(float4_t _a, int _count) - { - float4_t result; - const float4_t count = float4_isplat(_count); - result.vu = _a.vu >> count.vi; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sra(float4_t _a, int _count) - { - float4_t result; - const float4_t count = float4_isplat(_count); - result.vi = _a.vi >> count.vi; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmpeq(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vi == _b.vi; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmplt(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vi < _b.vi; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmpgt(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vi > _b.vi; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_iadd(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vi + _b.vi; - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_isub(float4_t _a, float4_t _b) - { - float4_t result; - result.vi = _a.vi - _b.vi; - return result; - } - -} // namespace bx - -#define float4_rcp float4_rcp_ni -#define float4_orx float4_orx_ni -#define float4_orc float4_orc_ni -#define float4_neg float4_neg_ni -#define float4_madd float4_madd_ni -#define float4_nmsub float4_nmsub_ni -#define float4_div_nr float4_div_nr_ni -#define float4_selb float4_selb_ni -#define float4_sels float4_sels_ni -#define float4_not float4_not_ni -#define float4_abs float4_abs_ni -#define float4_clamp float4_clamp_ni -#define float4_lerp float4_lerp_ni -#define float4_rcp_est float4_rcp_ni -#define float4_rsqrt float4_rsqrt_ni -#define float4_rsqrt_nr float4_rsqrt_nr_ni -#define float4_rsqrt_carmack float4_rsqrt_carmack_ni -#define float4_sqrt_nr float4_sqrt_nr_ni -#define float4_log2 float4_log2_ni -#define float4_exp2 float4_exp2_ni -#define float4_pow float4_pow_ni -#define float4_cross3 float4_cross3_ni -#define float4_normalize3 float4_normalize3_ni -#define float4_dot3 float4_dot3_ni -#define float4_dot float4_dot_ni -#define float4_ceil float4_ceil_ni -#define float4_floor float4_floor_ni -#define float4_min float4_min_ni -#define float4_max float4_max_ni -#define float4_imin float4_imin_ni -#define float4_imax float4_imax_ni -#include "float4_ni.h" - -#endif // BX_FLOAT4_LANGEXT_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/float4_neon.h b/3rdparty/bx/include/bx/float4_neon.h deleted file mode 100644 index 3b6fa185296..00000000000 --- a/3rdparty/bx/include/bx/float4_neon.h +++ /dev/null @@ -1,525 +0,0 @@ -/* - * Copyright 2010-2016 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#ifndef BX_FLOAT4_NEON_H_HEADER_GUARD -#define BX_FLOAT4_NEON_H_HEADER_GUARD - -namespace bx -{ - typedef __builtin_neon_sf float4_t __attribute__( (__vector_size__(16) ) ); - - typedef __builtin_neon_sf _f32x2_t __attribute__( (__vector_size__( 8) ) ); - typedef __builtin_neon_si _i32x4_t __attribute__( (__vector_size__(16) ) ); - typedef __builtin_neon_usi _u32x4_t __attribute__( (__vector_size__(16) ) ); - -#define ELEMx 0 -#define ELEMy 1 -#define ELEMz 2 -#define ELEMw 3 -#define IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ - BX_FLOAT4_FORCE_INLINE float4_t float4_swiz_##_x##_y##_z##_w(float4_t _a) \ - { \ - return __builtin_shuffle(_a, (_u32x4_t){ ELEM##_x, ELEM##_y, ELEM##_z, ELEM##_w }); \ - } - -#include "float4_swizzle.inl" - -#undef IMPLEMENT_SWIZZLE -#undef ELEMw -#undef ELEMz -#undef ELEMy -#undef ELEMx - -#define IMPLEMENT_TEST(_xyzw, _swizzle) \ - BX_FLOAT4_FORCE_INLINE bool float4_test_any_##_xyzw(float4_t _test); \ - BX_FLOAT4_FORCE_INLINE bool float4_test_all_##_xyzw(float4_t _test); - -IMPLEMENT_TEST(x , xxxx); -IMPLEMENT_TEST(y , yyyy); -IMPLEMENT_TEST(xy , xyyy); -IMPLEMENT_TEST(z , zzzz); -IMPLEMENT_TEST(xz , xzzz); -IMPLEMENT_TEST(yz , yzzz); -IMPLEMENT_TEST(xyz , xyzz); -IMPLEMENT_TEST(w , wwww); -IMPLEMENT_TEST(xw , xwww); -IMPLEMENT_TEST(yw , ywww); -IMPLEMENT_TEST(xyw , xyww); -IMPLEMENT_TEST(zw , zwww); -IMPLEMENT_TEST(xzw , xzww); -IMPLEMENT_TEST(yzw , yzww); -IMPLEMENT_TEST(xyzw , xyzw); - -#undef IMPLEMENT_TEST - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xyAB(float4_t _a, float4_t _b) - { - return __builtin_shuffle(_a, _b, (_u32x4_t){ 0, 1, 4, 5 }); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_ABxy(float4_t _a, float4_t _b) - { - return __builtin_shuffle(_a, _b, (_u32x4_t){ 4, 5, 0, 1 }); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_CDzw(float4_t _a, float4_t _b) - { - return __builtin_shuffle(_a, _b, (_u32x4_t){ 6, 7, 2, 3 }); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_zwCD(float4_t _a, float4_t _b) - { - return __builtin_shuffle(_a, _b, (_u32x4_t){ 2, 3, 6, 7 }); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xAyB(float4_t _a, float4_t _b) - { - return __builtin_shuffle(_a, _b, (_u32x4_t){ 0, 4, 1, 5 }); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_yBxA(float4_t _a, float4_t _b) - { - return __builtin_shuffle(_a, _b, (_u32x4_t){ 1, 5, 0, 4 }); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_zCwD(float4_t _a, float4_t _b) - { - return __builtin_shuffle(_a, _b, (_u32x4_t){ 2, 6, 3, 7 }); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_CzDw(float4_t _a, float4_t _b) - { - return __builtin_shuffle(_a, _b, (_u32x4_t){ 6, 2, 7, 3 }); - } - - BX_FLOAT4_FORCE_INLINE float float4_x(float4_t _a) - { - return __builtin_neon_vget_lanev4sf(_a, 0, 3); - } - - BX_FLOAT4_FORCE_INLINE float float4_y(float4_t _a) - { - return __builtin_neon_vget_lanev4sf(_a, 1, 3); - } - - BX_FLOAT4_FORCE_INLINE float float4_z(float4_t _a) - { - return __builtin_neon_vget_lanev4sf(_a, 2, 3); - } - - BX_FLOAT4_FORCE_INLINE float float4_w(float4_t _a) - { - return __builtin_neon_vget_lanev4sf(_a, 3, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ld(const void* _ptr) - { - return __builtin_neon_vld1v4sf( (const __builtin_neon_sf*)_ptr); - } - - BX_FLOAT4_FORCE_INLINE void float4_st(void* _ptr, float4_t _a) - { - __builtin_neon_vst1v4sf( (__builtin_neon_sf*)_ptr, _a); - } - - BX_FLOAT4_FORCE_INLINE void float4_stx(void* _ptr, float4_t _a) - { - __builtin_neon_vst1_lanev4sf( (__builtin_neon_sf*)_ptr, _a, 0); - } - - BX_FLOAT4_FORCE_INLINE void float4_stream(void* _ptr, float4_t _a) - { - __builtin_neon_vst1v4sf( (__builtin_neon_sf*)_ptr, _a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ld(float _x, float _y, float _z, float _w) - { - const float4_t val[4] = {_x, _y, _z, _w}; - return float4_ld(val); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) - { - const uint32_t val[4] = {_x, _y, _z, _w}; - const _i32x4_t tmp = __builtin_neon_vld1v4si( (const __builtin_neon_si*)val); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_splat(const void* _ptr) - { - const float4_t tmp0 = __builtin_neon_vld1v4sf( (const __builtin_neon_sf *)_ptr); - const _f32x2_t tmp1 = __builtin_neon_vget_lowv4sf(tmp0); - const float4_t result = __builtin_neon_vdup_lanev4sf(tmp1, 0); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_splat(float _a) - { - return __builtin_neon_vdup_nv4sf(_a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_isplat(uint32_t _a) - { - const _i32x4_t tmp = __builtin_neon_vdup_nv4si( (__builtin_neon_si)_a); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_zero() - { - return float4_isplat(0); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_itof(float4_t _a) - { - const _i32x4_t itof = __builtin_neon_vreinterpretv4siv4sf(_a); - const float4_t result = __builtin_neon_vcvtv4si(itof, 1); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ftoi(float4_t _a) - { - const _i32x4_t ftoi = __builtin_neon_vcvtv4sf(_a, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(ftoi); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_add(float4_t _a, float4_t _b) - { - return __builtin_neon_vaddv4sf(_a, _b, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sub(float4_t _a, float4_t _b) - { - return __builtin_neon_vsubv4sf(_a, _b, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_mul(float4_t _a, float4_t _b) - { - return __builtin_neon_vmulv4sf(_a, _b, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_rcp_est(float4_t _a) - { - return __builtin_neon_vrecpev4sf(_a, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_rsqrt_est(float4_t _a) - { - return __builtin_neon_vrsqrtev4sf(_a, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpeq(float4_t _a, float4_t _b) - { - const _i32x4_t tmp = __builtin_neon_vceqv4sf(_a, _b, 3); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmplt(float4_t _a, float4_t _b) - { - const _i32x4_t tmp = __builtin_neon_vcgtv4sf(_b, _a, 3); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmple(float4_t _a, float4_t _b) - { - const _i32x4_t tmp = __builtin_neon_vcgev4sf(_b, _a, 3); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpgt(float4_t _a, float4_t _b) - { - const _i32x4_t tmp = __builtin_neon_vcgtv4sf(_a, _b, 3); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpge(float4_t _a, float4_t _b) - { - const _i32x4_t tmp = __builtin_neon_vcgev4sf(_a, _b, 3); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_min(float4_t _a, float4_t _b) - { - return __builtin_neon_vminv4sf(_a, _b, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_max(float4_t _a, float4_t _b) - { - return __builtin_neon_vmaxv4sf(_a, _b, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_and(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vandv4si(tmp0, tmp1, 0); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_andc(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vbicv4si(tmp0, tmp1, 0); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_or(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vorrv4si(tmp0, tmp1, 0); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_xor(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_veorv4si(tmp0, tmp1, 0); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sll(float4_t _a, int _count) - { - if (__builtin_constant_p(_count) ) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vshl_nv4si(tmp0, _count, 0); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp1); - - return result; - } - - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t shift = __builtin_neon_vdup_nv4si( (__builtin_neon_si)_count); - const _i32x4_t tmp1 = __builtin_neon_vshlv4si(tmp0, shift, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp1); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_srl(float4_t _a, int _count) - { - if (__builtin_constant_p(_count) ) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vshr_nv4si(tmp0, _count, 0); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp1); - - return result; - } - - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t shift = __builtin_neon_vdup_nv4si( (__builtin_neon_si)-_count); - const _i32x4_t tmp1 = __builtin_neon_vshlv4si(tmp0, shift, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp1); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sra(float4_t _a, int _count) - { - if (__builtin_constant_p(_count) ) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vshr_nv4si(tmp0, _count, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp1); - - return result; - } - - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t shift = __builtin_neon_vdup_nv4si( (__builtin_neon_si)-_count); - const _i32x4_t tmp1 = __builtin_neon_vshlv4si(tmp0, shift, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp1); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_madd(float4_t _a, float4_t _b, float4_t _c) - { - return __builtin_neon_vmlav4sf(_c, _a, _b, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_nmsub(float4_t _a, float4_t _b, float4_t _c) - { - return __builtin_neon_vmlsv4sf(_c, _a, _b, 3); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmpeq(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vceqv4si(tmp0, tmp1, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmplt(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vcgtv4si(tmp1, tmp0, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmpgt(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vcgtv4si(tmp0, tmp1, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_imin(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vminv4si(tmp0, tmp1, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_imax(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vmaxv4si(tmp0, tmp1, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_iadd(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vaddv4si(tmp0, tmp1, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_isub(float4_t _a, float4_t _b) - { - const _i32x4_t tmp0 = __builtin_neon_vreinterpretv4siv4sf(_a); - const _i32x4_t tmp1 = __builtin_neon_vreinterpretv4siv4sf(_b); - const _i32x4_t tmp2 = __builtin_neon_vsubv4si(tmp0, tmp1, 1); - const float4_t result = __builtin_neon_vreinterpretv4sfv4si(tmp2); - - return result; - } - -} // namespace bx - -#define float4_shuf_xAzC float4_shuf_xAzC_ni -#define float4_shuf_yBwD float4_shuf_yBwD_ni -#define float4_rcp float4_rcp_ni -#define float4_orx float4_orx_ni -#define float4_orc float4_orc_ni -#define float4_neg float4_neg_ni -#define float4_madd float4_madd_ni -#define float4_nmsub float4_nmsub_ni -#define float4_div_nr float4_div_nr_ni -#define float4_div float4_div_nr_ni -#define float4_selb float4_selb_ni -#define float4_sels float4_sels_ni -#define float4_not float4_not_ni -#define float4_abs float4_abs_ni -#define float4_clamp float4_clamp_ni -#define float4_lerp float4_lerp_ni -#define float4_rsqrt float4_rsqrt_ni -#define float4_rsqrt_nr float4_rsqrt_nr_ni -#define float4_rsqrt_carmack float4_rsqrt_carmack_ni -#define float4_sqrt_nr float4_sqrt_nr_ni -#define float4_sqrt float4_sqrt_nr_ni -#define float4_log2 float4_log2_ni -#define float4_exp2 float4_exp2_ni -#define float4_pow float4_pow_ni -#define float4_cross3 float4_cross3_ni -#define float4_normalize3 float4_normalize3_ni -#define float4_dot3 float4_dot3_ni -#define float4_dot float4_dot_ni -#define float4_ceil float4_ceil_ni -#define float4_floor float4_floor_ni - -#include "float4_ni.h" - -namespace bx -{ -#define IMPLEMENT_TEST(_xyzw, _swizzle) \ - BX_FLOAT4_FORCE_INLINE bool float4_test_any_##_xyzw(float4_t _test) \ - { \ - const float4_t tmp0 = float4_swiz_##_swizzle(_test); \ - return float4_test_any_ni(tmp0); \ - } \ - \ - BX_FLOAT4_FORCE_INLINE bool float4_test_all_##_xyzw(float4_t _test) \ - { \ - const float4_t tmp0 = float4_swiz_##_swizzle(_test); \ - return float4_test_all_ni(tmp0); \ - } - -IMPLEMENT_TEST(x , xxxx); -IMPLEMENT_TEST(y , yyyy); -IMPLEMENT_TEST(xy , xyyy); -IMPLEMENT_TEST(z , zzzz); -IMPLEMENT_TEST(xz , xzzz); -IMPLEMENT_TEST(yz , yzzz); -IMPLEMENT_TEST(xyz , xyzz); -IMPLEMENT_TEST(w , wwww); -IMPLEMENT_TEST(xw , xwww); -IMPLEMENT_TEST(yw , ywww); -IMPLEMENT_TEST(xyw , xyww); -IMPLEMENT_TEST(zw , zwww); -IMPLEMENT_TEST(xzw , xzww); -IMPLEMENT_TEST(yzw , yzww); - - BX_FLOAT4_FORCE_INLINE bool float4_test_any_xyzw(float4_t _test) - { - return float4_test_any_ni(_test); - } - - BX_FLOAT4_FORCE_INLINE bool float4_test_all_xyzw(float4_t _test) - { - return float4_test_all_ni(_test); - } - -#undef IMPLEMENT_TEST -} // namespace bx - -#endif // BX_FLOAT4_NEON_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/float4_ni.h b/3rdparty/bx/include/bx/float4_ni.h deleted file mode 100644 index 644fa6eb386..00000000000 --- a/3rdparty/bx/include/bx/float4_ni.h +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Copyright 2010-2016 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#ifndef BX_FLOAT4_NI_H_HEADER_GUARD -#define BX_FLOAT4_NI_H_HEADER_GUARD - -namespace bx -{ - BX_FLOAT4_INLINE float4_t float4_rcp_ni(float4_t _a); - - BX_FLOAT4_INLINE float4_t float4_shuf_xAzC_ni(float4_t _a, float4_t _b) - { - const float4_t xAyB = float4_shuf_xAyB(_a, _b); - const float4_t zCwD = float4_shuf_zCwD(_a, _b); - const float4_t result = float4_shuf_xyAB(xAyB, zCwD); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_shuf_yBwD_ni(float4_t _a, float4_t _b) - { - const float4_t xAyB = float4_shuf_xAyB(_a, _b); - const float4_t zCwD = float4_shuf_zCwD(_a, _b); - const float4_t result = float4_shuf_zwCD(xAyB, zCwD); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_madd_ni(float4_t _a, float4_t _b, float4_t _c) - { - const float4_t mul = float4_mul(_a, _b); - const float4_t result = float4_add(mul, _c); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_nmsub_ni(float4_t _a, float4_t _b, float4_t _c) - { - const float4_t mul = float4_mul(_a, _b); - const float4_t result = float4_sub(_c, mul); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_div_nr_ni(float4_t _a, float4_t _b) - { - const float4_t oneish = float4_isplat(0x3f800001); - const float4_t est = float4_rcp_est(_b); - const float4_t iter0 = float4_mul(_a, est); - const float4_t tmp1 = float4_nmsub(_b, est, oneish); - const float4_t result = float4_madd(tmp1, iter0, iter0); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_rcp_ni(float4_t _a) - { - const float4_t one = float4_splat(1.0f); - const float4_t result = float4_div(one, _a); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_orx_ni(float4_t _a) - { - const float4_t zwxy = float4_swiz_zwxy(_a); - const float4_t tmp0 = float4_or(_a, zwxy); - const float4_t tmp1 = float4_swiz_yyyy(_a); - const float4_t tmp2 = float4_or(tmp0, tmp1); - const float4_t mf000 = float4_ild(UINT32_MAX, 0, 0, 0); - const float4_t result = float4_and(tmp2, mf000); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_orc_ni(float4_t _a, float4_t _b) - { - const float4_t aorb = float4_or(_a, _b); - const float4_t mffff = float4_isplat(UINT32_MAX); - const float4_t result = float4_xor(aorb, mffff); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_neg_ni(float4_t _a) - { - const float4_t zero = float4_zero(); - const float4_t result = float4_sub(zero, _a); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_selb_ni(float4_t _mask, float4_t _a, float4_t _b) - { - const float4_t sel_a = float4_and(_a, _mask); - const float4_t sel_b = float4_andc(_b, _mask); - const float4_t result = float4_or(sel_a, sel_b); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_sels_ni(float4_t _test, float4_t _a, float4_t _b) - { - const float4_t mask = float4_sra(_test, 31); - const float4_t result = float4_selb(mask, _a, _b); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_not_ni(float4_t _a) - { - const float4_t mffff = float4_isplat(UINT32_MAX); - const float4_t result = float4_xor(_a, mffff); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_min_ni(float4_t _a, float4_t _b) - { - const float4_t mask = float4_cmplt(_a, _b); - const float4_t result = float4_selb(mask, _a, _b); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_max_ni(float4_t _a, float4_t _b) - { - const float4_t mask = float4_cmpgt(_a, _b); - const float4_t result = float4_selb(mask, _a, _b); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_abs_ni(float4_t _a) - { - const float4_t a_neg = float4_neg(_a); - const float4_t result = float4_max(a_neg, _a); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_imin_ni(float4_t _a, float4_t _b) - { - const float4_t mask = float4_icmplt(_a, _b); - const float4_t result = float4_selb(mask, _a, _b); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_imax_ni(float4_t _a, float4_t _b) - { - const float4_t mask = float4_icmpgt(_a, _b); - const float4_t result = float4_selb(mask, _a, _b); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_clamp_ni(float4_t _a, float4_t _min, float4_t _max) - { - const float4_t tmp = float4_min(_a, _max); - const float4_t result = float4_max(tmp, _min); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_lerp_ni(float4_t _a, float4_t _b, float4_t _s) - { - const float4_t ba = float4_sub(_b, _a); - const float4_t result = float4_madd(_s, ba, _a); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_sqrt_nr_ni(float4_t _a) - { - const float4_t half = float4_splat(0.5f); - const float4_t one = float4_splat(1.0f); - const float4_t tmp0 = float4_rsqrt_est(_a); - const float4_t tmp1 = float4_mul(tmp0, _a); - const float4_t tmp2 = float4_mul(tmp1, half); - const float4_t tmp3 = float4_nmsub(tmp0, tmp1, one); - const float4_t result = float4_madd(tmp3, tmp2, tmp1); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_sqrt_nr1_ni(float4_t _a) - { - const float4_t half = float4_splat(0.5f); - - float4_t result = _a; - for (uint32_t ii = 0; ii < 11; ++ii) - { - const float4_t tmp1 = float4_div(_a, result); - const float4_t tmp2 = float4_add(tmp1, result); - result = float4_mul(tmp2, half); - } - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_rsqrt_ni(float4_t _a) - { - const float4_t one = float4_splat(1.0f); - const float4_t sqrt = float4_sqrt(_a); - const float4_t result = float4_div(one, sqrt); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_rsqrt_nr_ni(float4_t _a) - { - const float4_t rsqrt = float4_rsqrt_est(_a); - const float4_t iter0 = float4_mul(_a, rsqrt); - const float4_t iter1 = float4_mul(iter0, rsqrt); - const float4_t half = float4_splat(0.5f); - const float4_t half_rsqrt = float4_mul(half, rsqrt); - const float4_t three = float4_splat(3.0f); - const float4_t three_sub_iter1 = float4_sub(three, iter1); - const float4_t result = float4_mul(half_rsqrt, three_sub_iter1); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_rsqrt_carmack_ni(float4_t _a) - { - const float4_t half = float4_splat(0.5f); - const float4_t ah = float4_mul(half, _a); - const float4_t ashift = float4_sra(_a, 1); - const float4_t magic = float4_isplat(0x5f3759df); - const float4_t msuba = float4_isub(magic, ashift); - const float4_t msubasq = float4_mul(msuba, msuba); - const float4_t tmp0 = float4_splat(1.5f); - const float4_t tmp1 = float4_mul(ah, msubasq); - const float4_t tmp2 = float4_sub(tmp0, tmp1); - const float4_t result = float4_mul(msuba, tmp2); - - return result; - } - - namespace float4_logexp_detail - { - BX_FLOAT4_INLINE float4_t float4_poly1(float4_t _a, float _b, float _c) - { - const float4_t bbbb = float4_splat(_b); - const float4_t cccc = float4_splat(_c); - const float4_t result = float4_madd(cccc, _a, bbbb); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_poly2(float4_t _a, float _b, float _c, float _d) - { - const float4_t bbbb = float4_splat(_b); - const float4_t poly = float4_poly1(_a, _c, _d); - const float4_t result = float4_madd(poly, _a, bbbb); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_poly3(float4_t _a, float _b, float _c, float _d, float _e) - { - const float4_t bbbb = float4_splat(_b); - const float4_t poly = float4_poly2(_a, _c, _d, _e); - const float4_t result = float4_madd(poly, _a, bbbb); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_poly4(float4_t _a, float _b, float _c, float _d, float _e, float _f) - { - const float4_t bbbb = float4_splat(_b); - const float4_t poly = float4_poly3(_a, _c, _d, _e, _f); - const float4_t result = float4_madd(poly, _a, bbbb); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_poly5(float4_t _a, float _b, float _c, float _d, float _e, float _f, float _g) - { - const float4_t bbbb = float4_splat(_b); - const float4_t poly = float4_poly4(_a, _c, _d, _e, _f, _g); - const float4_t result = float4_madd(poly, _a, bbbb); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_logpoly(float4_t _a) - { -#if 1 - const float4_t result = float4_poly5(_a - , 3.11578814719469302614f, -3.32419399085241980044f - , 2.59883907202499966007f, -1.23152682416275988241f - , 0.318212422185251071475f, -0.0344359067839062357313f - ); -#elif 0 - const float4_t result = float4_poly4(_a - , 2.8882704548164776201f, -2.52074962577807006663f - , 1.48116647521213171641f, -0.465725644288844778798f - , 0.0596515482674574969533f - ); -#elif 0 - const float4_t result = float4_poly3(_a - , 2.61761038894603480148f, -1.75647175389045657003f - , 0.688243882994381274313f, -0.107254423828329604454f - ); -#else - const float4_t result = float4_poly2(_a - , 2.28330284476918490682f, -1.04913055217340124191f - , 0.204446009836232697516f - ); -#endif - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_exppoly(float4_t _a) - { -#if 1 - const float4_t result = float4_poly5(_a - , 9.9999994e-1f, 6.9315308e-1f - , 2.4015361e-1f, 5.5826318e-2f - , 8.9893397e-3f, 1.8775767e-3f - ); -#elif 0 - const float4_t result = float4_poly4(_a - , 1.0000026f, 6.9300383e-1f - , 2.4144275e-1f, 5.2011464e-2f - , 1.3534167e-2f - ); -#elif 0 - const float4_t result = float4_poly3(_a - , 9.9992520e-1f, 6.9583356e-1f - , 2.2606716e-1f, 7.8024521e-2f - ); -#else - const float4_t result = float4_poly2(_a - , 1.0017247f, 6.5763628e-1f - , 3.3718944e-1f - ); -#endif // 0 - - return result; - } - } // namespace float4_internal - - BX_FLOAT4_INLINE float4_t float4_log2_ni(float4_t _a) - { - const float4_t expmask = float4_isplat(0x7f800000); - const float4_t mantmask = float4_isplat(0x007fffff); - const float4_t one = float4_splat(1.0f); - - const float4_t c127 = float4_isplat(127); - const float4_t aexp = float4_and(_a, expmask); - const float4_t aexpsr = float4_srl(aexp, 23); - const float4_t tmp0 = float4_isub(aexpsr, c127); - const float4_t exp = float4_itof(tmp0); - - const float4_t amask = float4_and(_a, mantmask); - const float4_t mant = float4_or(amask, one); - - const float4_t poly = float4_logexp_detail::float4_logpoly(mant); - - const float4_t mandiff = float4_sub(mant, one); - const float4_t result = float4_madd(poly, mandiff, exp); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_exp2_ni(float4_t _a) - { - const float4_t min = float4_splat( 129.0f); - const float4_t max = float4_splat(-126.99999f); - const float4_t tmp0 = float4_min(_a, min); - const float4_t aaaa = float4_max(tmp0, max); - - const float4_t half = float4_splat(0.5f); - const float4_t tmp2 = float4_sub(aaaa, half); - const float4_t ipart = float4_ftoi(tmp2); - const float4_t iround = float4_itof(ipart); - const float4_t fpart = float4_sub(aaaa, iround); - - const float4_t c127 = float4_isplat(127); - const float4_t tmp5 = float4_iadd(ipart, c127); - const float4_t expipart = float4_sll(tmp5, 23); - - const float4_t expfpart = float4_logexp_detail::float4_exppoly(fpart); - - const float4_t result = float4_mul(expipart, expfpart); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_pow_ni(float4_t _a, float4_t _b) - { - const float4_t alog2 = float4_log2(_a); - const float4_t alog2b = float4_mul(alog2, _b); - const float4_t result = float4_exp2(alog2b); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_dot3_ni(float4_t _a, float4_t _b) - { - const float4_t xyzw = float4_mul(_a, _b); - const float4_t xxxx = float4_swiz_xxxx(xyzw); - const float4_t yyyy = float4_swiz_yyyy(xyzw); - const float4_t zzzz = float4_swiz_zzzz(xyzw); - const float4_t tmp1 = float4_add(xxxx, yyyy); - const float4_t result = float4_add(zzzz, tmp1); - return result; - } - - BX_FLOAT4_INLINE float4_t float4_cross3_ni(float4_t _a, float4_t _b) - { - // a.yzx * b.zxy - a.zxy * b.yzx == (a * b.yzx - a.yzx * b).yzx -#if 0 - const float4_t a_yzxw = float4_swiz_yzxw(_a); - const float4_t a_zxyw = float4_swiz_zxyw(_a); - const float4_t b_zxyw = float4_swiz_zxyw(_b); - const float4_t b_yzxw = float4_swiz_yzxw(_b); - const float4_t tmp = float4_mul(a_yzxw, b_zxyw); - const float4_t result = float4_nmsub(a_zxyw, b_yzxw, tmp); -#else - const float4_t a_yzxw = float4_swiz_yzxw(_a); - const float4_t b_yzxw = float4_swiz_yzxw(_b); - const float4_t tmp0 = float4_mul(_a, b_yzxw); - const float4_t tmp1 = float4_nmsub(a_yzxw, _b, tmp0); - const float4_t result = float4_swiz_yzxw(tmp1); -#endif - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_normalize3_ni(float4_t _a) - { - const float4_t dot3 = float4_dot3(_a, _a); - const float4_t invSqrt = float4_rsqrt(dot3); - const float4_t result = float4_mul(_a, invSqrt); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_dot_ni(float4_t _a, float4_t _b) - { - const float4_t xyzw = float4_mul(_a, _b); - const float4_t yzwx = float4_swiz_yzwx(xyzw); - const float4_t tmp0 = float4_add(xyzw, yzwx); - const float4_t zwxy = float4_swiz_zwxy(tmp0); - const float4_t result = float4_add(tmp0, zwxy); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_ceil_ni(float4_t _a) - { - const float4_t tmp0 = float4_ftoi(_a); - const float4_t tmp1 = float4_itof(tmp0); - const float4_t mask = float4_cmplt(tmp1, _a); - const float4_t one = float4_splat(1.0f); - const float4_t tmp2 = float4_and(one, mask); - const float4_t result = float4_add(tmp1, tmp2); - - return result; - } - - BX_FLOAT4_INLINE float4_t float4_floor_ni(float4_t _a) - { - const float4_t tmp0 = float4_ftoi(_a); - const float4_t tmp1 = float4_itof(tmp0); - const float4_t mask = float4_cmpgt(tmp1, _a); - const float4_t one = float4_splat(1.0f); - const float4_t tmp2 = float4_and(one, mask); - const float4_t result = float4_sub(tmp1, tmp2); - - return result; - } - - BX_FLOAT4_INLINE bool float4_test_any_ni(float4_t _a) - { - const float4_t mask = float4_sra(_a, 31); - const float4_t zwxy = float4_swiz_zwxy(mask); - const float4_t tmp0 = float4_or(mask, zwxy); - const float4_t tmp1 = float4_swiz_yyyy(tmp0); - const float4_t tmp2 = float4_or(tmp0, tmp1); - int res; - float4_stx(&res, tmp2); - return 0 != res; - } - - BX_FLOAT4_INLINE bool float4_test_all_ni(float4_t _a) - { - const float4_t bits = float4_sra(_a, 31); - const float4_t m1248 = float4_ild(1, 2, 4, 8); - const float4_t mask = float4_and(bits, m1248); - const float4_t zwxy = float4_swiz_zwxy(mask); - const float4_t tmp0 = float4_or(mask, zwxy); - const float4_t tmp1 = float4_swiz_yyyy(tmp0); - const float4_t tmp2 = float4_or(tmp0, tmp1); - int res; - float4_stx(&res, tmp2); - return 0xf == res; - } - -} // namespace bx - -#endif // BX_FLOAT4_NI_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/float4_sse.h b/3rdparty/bx/include/bx/float4_sse.h deleted file mode 100644 index 73272518efe..00000000000 --- a/3rdparty/bx/include/bx/float4_sse.h +++ /dev/null @@ -1,461 +0,0 @@ -/* - * Copyright 2010-2016 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#ifndef BX_FLOAT4_SSE_H_HEADER_GUARD -#define BX_FLOAT4_SSE_H_HEADER_GUARD - -#include // __m128i -#if defined(__SSE4_1__) -# include -#endif // defined(__SSE4_1__) -#include // __m128 - -namespace bx -{ - typedef __m128 float4_t; - -#define ELEMx 0 -#define ELEMy 1 -#define ELEMz 2 -#define ELEMw 3 -#define IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ - BX_FLOAT4_FORCE_INLINE float4_t float4_swiz_##_x##_y##_z##_w(float4_t _a) \ - { \ - return _mm_shuffle_ps( _a, _a, _MM_SHUFFLE(ELEM##_w, ELEM##_z, ELEM##_y, ELEM##_x ) ); \ - } - -#include "float4_swizzle.inl" - -#undef IMPLEMENT_SWIZZLE -#undef ELEMw -#undef ELEMz -#undef ELEMy -#undef ELEMx - -#define IMPLEMENT_TEST(_xyzw, _mask) \ - BX_FLOAT4_FORCE_INLINE bool float4_test_any_##_xyzw(float4_t _test) \ - { \ - return 0x0 != (_mm_movemask_ps(_test)&(_mask) ); \ - } \ - \ - BX_FLOAT4_FORCE_INLINE bool float4_test_all_##_xyzw(float4_t _test) \ - { \ - return (_mask) == (_mm_movemask_ps(_test)&(_mask) ); \ - } - -IMPLEMENT_TEST(x , 0x1); -IMPLEMENT_TEST(y , 0x2); -IMPLEMENT_TEST(xy , 0x3); -IMPLEMENT_TEST(z , 0x4); -IMPLEMENT_TEST(xz , 0x5); -IMPLEMENT_TEST(yz , 0x6); -IMPLEMENT_TEST(xyz , 0x7); -IMPLEMENT_TEST(w , 0x8); -IMPLEMENT_TEST(xw , 0x9); -IMPLEMENT_TEST(yw , 0xa); -IMPLEMENT_TEST(xyw , 0xb); -IMPLEMENT_TEST(zw , 0xc); -IMPLEMENT_TEST(xzw , 0xd); -IMPLEMENT_TEST(yzw , 0xe); -IMPLEMENT_TEST(xyzw , 0xf); - -#undef IMPLEMENT_TEST - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xyAB(float4_t _a, float4_t _b) - { - return _mm_movelh_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_ABxy(float4_t _a, float4_t _b) - { - return _mm_movelh_ps(_b, _a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_CDzw(float4_t _a, float4_t _b) - { - return _mm_movehl_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_zwCD(float4_t _a, float4_t _b) - { - return _mm_movehl_ps(_b, _a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xAyB(float4_t _a, float4_t _b) - { - return _mm_unpacklo_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_yBxA(float4_t _a, float4_t _b) - { - return _mm_unpacklo_ps(_b, _a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_zCwD(float4_t _a, float4_t _b) - { - return _mm_unpackhi_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_CzDw(float4_t _a, float4_t _b) - { - return _mm_unpackhi_ps(_b, _a); - } - - BX_FLOAT4_FORCE_INLINE float float4_x(float4_t _a) - { - return _mm_cvtss_f32(_a); - } - - BX_FLOAT4_FORCE_INLINE float float4_y(float4_t _a) - { - const float4_t yyyy = float4_swiz_yyyy(_a); - const float result = _mm_cvtss_f32(yyyy); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float float4_z(float4_t _a) - { - const float4_t zzzz = float4_swiz_zzzz(_a); - const float result = _mm_cvtss_f32(zzzz); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float float4_w(float4_t _a) - { - const float4_t wwww = float4_swiz_wwww(_a); - const float result = _mm_cvtss_f32(wwww); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ld(const void* _ptr) - { - return _mm_load_ps(reinterpret_cast(_ptr) ); - } - - BX_FLOAT4_FORCE_INLINE void float4_st(void* _ptr, float4_t _a) - { - _mm_store_ps(reinterpret_cast(_ptr), _a); - } - - BX_FLOAT4_FORCE_INLINE void float4_stx(void* _ptr, float4_t _a) - { - _mm_store_ss(reinterpret_cast(_ptr), _a); - } - - BX_FLOAT4_FORCE_INLINE void float4_stream(void* _ptr, float4_t _a) - { - _mm_stream_ps(reinterpret_cast(_ptr), _a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ld(float _x, float _y, float _z, float _w) - { - return _mm_set_ps(_w, _z, _y, _x); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) - { - const __m128i set = _mm_set_epi32(_w, _z, _y, _x); - const float4_t result = _mm_castsi128_ps(set); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_splat(const void* _ptr) - { - const float4_t x___ = _mm_load_ss(reinterpret_cast(_ptr) ); - const float4_t result = float4_swiz_xxxx(x___); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_splat(float _a) - { - return _mm_set1_ps(_a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_isplat(uint32_t _a) - { - const __m128i splat = _mm_set1_epi32(_a); - const float4_t result = _mm_castsi128_ps(splat); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_zero() - { - return _mm_setzero_ps(); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_itof(float4_t _a) - { - const __m128i itof = _mm_castps_si128(_a); - const float4_t result = _mm_cvtepi32_ps(itof); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_ftoi(float4_t _a) - { - const __m128i ftoi = _mm_cvtps_epi32(_a); - const float4_t result = _mm_castsi128_ps(ftoi); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_round(float4_t _a) - { -#if defined(__SSE4_1__) - return _mm_round_ps(_a, _MM_FROUND_NINT); -#else - const __m128i round = _mm_cvtps_epi32(_a); - const float4_t result = _mm_cvtepi32_ps(round); - - return result; -#endif // defined(__SSE4_1__) - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_add(float4_t _a, float4_t _b) - { - return _mm_add_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sub(float4_t _a, float4_t _b) - { - return _mm_sub_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_mul(float4_t _a, float4_t _b) - { - return _mm_mul_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_div(float4_t _a, float4_t _b) - { - return _mm_div_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_rcp_est(float4_t _a) - { - return _mm_rcp_ps(_a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sqrt(float4_t _a) - { - return _mm_sqrt_ps(_a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_rsqrt_est(float4_t _a) - { - return _mm_rsqrt_ps(_a); - } - -#if defined(__SSE4_1__) - BX_FLOAT4_FORCE_INLINE float4_t float4_dot3(float4_t _a, float4_t _b) - { - return _mm_dp_ps(_a, _b, 0x77); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_dot(float4_t _a, float4_t _b) - { - return _mm_dp_ps(_a, _b, 0xFF); - } -#endif // defined(__SSE4__) - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpeq(float4_t _a, float4_t _b) - { - return _mm_cmpeq_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmplt(float4_t _a, float4_t _b) - { - return _mm_cmplt_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmple(float4_t _a, float4_t _b) - { - return _mm_cmple_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpgt(float4_t _a, float4_t _b) - { - return _mm_cmpgt_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpge(float4_t _a, float4_t _b) - { - return _mm_cmpge_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_min(float4_t _a, float4_t _b) - { - return _mm_min_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_max(float4_t _a, float4_t _b) - { - return _mm_max_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_and(float4_t _a, float4_t _b) - { - return _mm_and_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_andc(float4_t _a, float4_t _b) - { - return _mm_andnot_ps(_b, _a); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_or(float4_t _a, float4_t _b) - { - return _mm_or_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_xor(float4_t _a, float4_t _b) - { - return _mm_xor_ps(_a, _b); - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sll(float4_t _a, int _count) - { - const __m128i a = _mm_castps_si128(_a); - const __m128i shift = _mm_slli_epi32(a, _count); - const float4_t result = _mm_castsi128_ps(shift); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_srl(float4_t _a, int _count) - { - const __m128i a = _mm_castps_si128(_a); - const __m128i shift = _mm_srli_epi32(a, _count); - const float4_t result = _mm_castsi128_ps(shift); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_sra(float4_t _a, int _count) - { - const __m128i a = _mm_castps_si128(_a); - const __m128i shift = _mm_srai_epi32(a, _count); - const float4_t result = _mm_castsi128_ps(shift); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmpeq(float4_t _a, float4_t _b) - { - const __m128i tmp0 = _mm_castps_si128(_a); - const __m128i tmp1 = _mm_castps_si128(_b); - const __m128i tmp2 = _mm_cmpeq_epi32(tmp0, tmp1); - const float4_t result = _mm_castsi128_ps(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmplt(float4_t _a, float4_t _b) - { - const __m128i tmp0 = _mm_castps_si128(_a); - const __m128i tmp1 = _mm_castps_si128(_b); - const __m128i tmp2 = _mm_cmplt_epi32(tmp0, tmp1); - const float4_t result = _mm_castsi128_ps(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_icmpgt(float4_t _a, float4_t _b) - { - const __m128i tmp0 = _mm_castps_si128(_a); - const __m128i tmp1 = _mm_castps_si128(_b); - const __m128i tmp2 = _mm_cmpgt_epi32(tmp0, tmp1); - const float4_t result = _mm_castsi128_ps(tmp2); - - return result; - } - -#if defined(__SSE4_1__) - BX_FLOAT4_FORCE_INLINE float4_t float4_imin(float4_t _a, float4_t _b) - { - const __m128i tmp0 = _mm_castps_si128(_a); - const __m128i tmp1 = _mm_castps_si128(_b); - const __m128i tmp2 = _mm_min_epi32(tmp0, tmp1); - const float4_t result = _mm_castsi128_ps(tmp2); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_imax(float4_t _a, float4_t _b) - { - const __m128i tmp0 = _mm_castps_si128(_a); - const __m128i tmp1 = _mm_castps_si128(_b); - const __m128i tmp2 = _mm_max_epi32(tmp0, tmp1); - const float4_t result = _mm_castsi128_ps(tmp2); - - return result; - } -#endif // defined(__SSE4_1__) - - BX_FLOAT4_FORCE_INLINE float4_t float4_iadd(float4_t _a, float4_t _b) - { - const __m128i a = _mm_castps_si128(_a); - const __m128i b = _mm_castps_si128(_b); - const __m128i add = _mm_add_epi32(a, b); - const float4_t result = _mm_castsi128_ps(add); - - return result; - } - - BX_FLOAT4_FORCE_INLINE float4_t float4_isub(float4_t _a, float4_t _b) - { - const __m128i a = _mm_castps_si128(_a); - const __m128i b = _mm_castps_si128(_b); - const __m128i sub = _mm_sub_epi32(a, b); - const float4_t result = _mm_castsi128_ps(sub); - - return result; - } - -} // namespace bx - -#define float4_shuf_xAzC float4_shuf_xAzC_ni -#define float4_shuf_yBwD float4_shuf_yBwD_ni -#define float4_rcp float4_rcp_ni -#define float4_orx float4_orx_ni -#define float4_orc float4_orc_ni -#define float4_neg float4_neg_ni -#define float4_madd float4_madd_ni -#define float4_nmsub float4_nmsub_ni -#define float4_div_nr float4_div_nr_ni -#define float4_selb float4_selb_ni -#define float4_sels float4_sels_ni -#define float4_not float4_not_ni -#define float4_abs float4_abs_ni -#define float4_clamp float4_clamp_ni -#define float4_lerp float4_lerp_ni -#define float4_rsqrt float4_rsqrt_ni -#define float4_rsqrt_nr float4_rsqrt_nr_ni -#define float4_rsqrt_carmack float4_rsqrt_carmack_ni -#define float4_sqrt_nr float4_sqrt_nr_ni -#define float4_log2 float4_log2_ni -#define float4_exp2 float4_exp2_ni -#define float4_pow float4_pow_ni -#define float4_cross3 float4_cross3_ni -#define float4_normalize3 float4_normalize3_ni -#define float4_ceil float4_ceil_ni -#define float4_floor float4_floor_ni - -#if !defined(__SSE4_1__) -# define float4_dot3 float4_dot3_ni -# define float4_dot float4_dot_ni -# define float4_imin float4_imin_ni -# define float4_imax float4_imax_ni -#endif // defined(__SSE4_1__) - -#include "float4_ni.h" - -#endif // BX_FLOAT4_SSE_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/float4_swizzle.inl b/3rdparty/bx/include/bx/float4_swizzle.inl deleted file mode 100644 index e53b8f020b2..00000000000 --- a/3rdparty/bx/include/bx/float4_swizzle.inl +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright 2010-2015 Branimir Karadzic. All rights reserved. - * License: http://www.opensource.org/licenses/BSD-2-Clause - */ - -#ifndef BX_FLOAT4_T_H_HEADER_GUARD -# error "xmacro file, must be included from float4_*.h" -#endif // BX_FLOAT4_T_H_HEADER_GUARD - -// included from float4_t.h -IMPLEMENT_SWIZZLE(x, x, x, x) -IMPLEMENT_SWIZZLE(x, x, x, y) -IMPLEMENT_SWIZZLE(x, x, x, z) -IMPLEMENT_SWIZZLE(x, x, x, w) -IMPLEMENT_SWIZZLE(x, x, y, x) -IMPLEMENT_SWIZZLE(x, x, y, y) -IMPLEMENT_SWIZZLE(x, x, y, z) -IMPLEMENT_SWIZZLE(x, x, y, w) -IMPLEMENT_SWIZZLE(x, x, z, x) -IMPLEMENT_SWIZZLE(x, x, z, y) -IMPLEMENT_SWIZZLE(x, x, z, z) -IMPLEMENT_SWIZZLE(x, x, z, w) -IMPLEMENT_SWIZZLE(x, x, w, x) -IMPLEMENT_SWIZZLE(x, x, w, y) -IMPLEMENT_SWIZZLE(x, x, w, z) -IMPLEMENT_SWIZZLE(x, x, w, w) -IMPLEMENT_SWIZZLE(x, y, x, x) -IMPLEMENT_SWIZZLE(x, y, x, y) -IMPLEMENT_SWIZZLE(x, y, x, z) -IMPLEMENT_SWIZZLE(x, y, x, w) -IMPLEMENT_SWIZZLE(x, y, y, x) -IMPLEMENT_SWIZZLE(x, y, y, y) -IMPLEMENT_SWIZZLE(x, y, y, z) -IMPLEMENT_SWIZZLE(x, y, y, w) -IMPLEMENT_SWIZZLE(x, y, z, x) -IMPLEMENT_SWIZZLE(x, y, z, y) -IMPLEMENT_SWIZZLE(x, y, z, z) -// IMPLEMENT_SWIZZLE(x, y, z, w) -IMPLEMENT_SWIZZLE(x, y, w, x) -IMPLEMENT_SWIZZLE(x, y, w, y) -IMPLEMENT_SWIZZLE(x, y, w, z) -IMPLEMENT_SWIZZLE(x, y, w, w) -IMPLEMENT_SWIZZLE(x, z, x, x) -IMPLEMENT_SWIZZLE(x, z, x, y) -IMPLEMENT_SWIZZLE(x, z, x, z) -IMPLEMENT_SWIZZLE(x, z, x, w) -IMPLEMENT_SWIZZLE(x, z, y, x) -IMPLEMENT_SWIZZLE(x, z, y, y) -IMPLEMENT_SWIZZLE(x, z, y, z) -IMPLEMENT_SWIZZLE(x, z, y, w) -IMPLEMENT_SWIZZLE(x, z, z, x) -IMPLEMENT_SWIZZLE(x, z, z, y) -IMPLEMENT_SWIZZLE(x, z, z, z) -IMPLEMENT_SWIZZLE(x, z, z, w) -IMPLEMENT_SWIZZLE(x, z, w, x) -IMPLEMENT_SWIZZLE(x, z, w, y) -IMPLEMENT_SWIZZLE(x, z, w, z) -IMPLEMENT_SWIZZLE(x, z, w, w) -IMPLEMENT_SWIZZLE(x, w, x, x) -IMPLEMENT_SWIZZLE(x, w, x, y) -IMPLEMENT_SWIZZLE(x, w, x, z) -IMPLEMENT_SWIZZLE(x, w, x, w) -IMPLEMENT_SWIZZLE(x, w, y, x) -IMPLEMENT_SWIZZLE(x, w, y, y) -IMPLEMENT_SWIZZLE(x, w, y, z) -IMPLEMENT_SWIZZLE(x, w, y, w) -IMPLEMENT_SWIZZLE(x, w, z, x) -IMPLEMENT_SWIZZLE(x, w, z, y) -IMPLEMENT_SWIZZLE(x, w, z, z) -IMPLEMENT_SWIZZLE(x, w, z, w) -IMPLEMENT_SWIZZLE(x, w, w, x) -IMPLEMENT_SWIZZLE(x, w, w, y) -IMPLEMENT_SWIZZLE(x, w, w, z) -IMPLEMENT_SWIZZLE(x, w, w, w) -IMPLEMENT_SWIZZLE(y, x, x, x) -IMPLEMENT_SWIZZLE(y, x, x, y) -IMPLEMENT_SWIZZLE(y, x, x, z) -IMPLEMENT_SWIZZLE(y, x, x, w) -IMPLEMENT_SWIZZLE(y, x, y, x) -IMPLEMENT_SWIZZLE(y, x, y, y) -IMPLEMENT_SWIZZLE(y, x, y, z) -IMPLEMENT_SWIZZLE(y, x, y, w) -IMPLEMENT_SWIZZLE(y, x, z, x) -IMPLEMENT_SWIZZLE(y, x, z, y) -IMPLEMENT_SWIZZLE(y, x, z, z) -IMPLEMENT_SWIZZLE(y, x, z, w) -IMPLEMENT_SWIZZLE(y, x, w, x) -IMPLEMENT_SWIZZLE(y, x, w, y) -IMPLEMENT_SWIZZLE(y, x, w, z) -IMPLEMENT_SWIZZLE(y, x, w, w) -IMPLEMENT_SWIZZLE(y, y, x, x) -IMPLEMENT_SWIZZLE(y, y, x, y) -IMPLEMENT_SWIZZLE(y, y, x, z) -IMPLEMENT_SWIZZLE(y, y, x, w) -IMPLEMENT_SWIZZLE(y, y, y, x) -IMPLEMENT_SWIZZLE(y, y, y, y) -IMPLEMENT_SWIZZLE(y, y, y, z) -IMPLEMENT_SWIZZLE(y, y, y, w) -IMPLEMENT_SWIZZLE(y, y, z, x) -IMPLEMENT_SWIZZLE(y, y, z, y) -IMPLEMENT_SWIZZLE(y, y, z, z) -IMPLEMENT_SWIZZLE(y, y, z, w) -IMPLEMENT_SWIZZLE(y, y, w, x) -IMPLEMENT_SWIZZLE(y, y, w, y) -IMPLEMENT_SWIZZLE(y, y, w, z) -IMPLEMENT_SWIZZLE(y, y, w, w) -IMPLEMENT_SWIZZLE(y, z, x, x) -IMPLEMENT_SWIZZLE(y, z, x, y) -IMPLEMENT_SWIZZLE(y, z, x, z) -IMPLEMENT_SWIZZLE(y, z, x, w) -IMPLEMENT_SWIZZLE(y, z, y, x) -IMPLEMENT_SWIZZLE(y, z, y, y) -IMPLEMENT_SWIZZLE(y, z, y, z) -IMPLEMENT_SWIZZLE(y, z, y, w) -IMPLEMENT_SWIZZLE(y, z, z, x) -IMPLEMENT_SWIZZLE(y, z, z, y) -IMPLEMENT_SWIZZLE(y, z, z, z) -IMPLEMENT_SWIZZLE(y, z, z, w) -IMPLEMENT_SWIZZLE(y, z, w, x) -IMPLEMENT_SWIZZLE(y, z, w, y) -IMPLEMENT_SWIZZLE(y, z, w, z) -IMPLEMENT_SWIZZLE(y, z, w, w) -IMPLEMENT_SWIZZLE(y, w, x, x) -IMPLEMENT_SWIZZLE(y, w, x, y) -IMPLEMENT_SWIZZLE(y, w, x, z) -IMPLEMENT_SWIZZLE(y, w, x, w) -IMPLEMENT_SWIZZLE(y, w, y, x) -IMPLEMENT_SWIZZLE(y, w, y, y) -IMPLEMENT_SWIZZLE(y, w, y, z) -IMPLEMENT_SWIZZLE(y, w, y, w) -IMPLEMENT_SWIZZLE(y, w, z, x) -IMPLEMENT_SWIZZLE(y, w, z, y) -IMPLEMENT_SWIZZLE(y, w, z, z) -IMPLEMENT_SWIZZLE(y, w, z, w) -IMPLEMENT_SWIZZLE(y, w, w, x) -IMPLEMENT_SWIZZLE(y, w, w, y) -IMPLEMENT_SWIZZLE(y, w, w, z) -IMPLEMENT_SWIZZLE(y, w, w, w) -IMPLEMENT_SWIZZLE(z, x, x, x) -IMPLEMENT_SWIZZLE(z, x, x, y) -IMPLEMENT_SWIZZLE(z, x, x, z) -IMPLEMENT_SWIZZLE(z, x, x, w) -IMPLEMENT_SWIZZLE(z, x, y, x) -IMPLEMENT_SWIZZLE(z, x, y, y) -IMPLEMENT_SWIZZLE(z, x, y, z) -IMPLEMENT_SWIZZLE(z, x, y, w) -IMPLEMENT_SWIZZLE(z, x, z, x) -IMPLEMENT_SWIZZLE(z, x, z, y) -IMPLEMENT_SWIZZLE(z, x, z, z) -IMPLEMENT_SWIZZLE(z, x, z, w) -IMPLEMENT_SWIZZLE(z, x, w, x) -IMPLEMENT_SWIZZLE(z, x, w, y) -IMPLEMENT_SWIZZLE(z, x, w, z) -IMPLEMENT_SWIZZLE(z, x, w, w) -IMPLEMENT_SWIZZLE(z, y, x, x) -IMPLEMENT_SWIZZLE(z, y, x, y) -IMPLEMENT_SWIZZLE(z, y, x, z) -IMPLEMENT_SWIZZLE(z, y, x, w) -IMPLEMENT_SWIZZLE(z, y, y, x) -IMPLEMENT_SWIZZLE(z, y, y, y) -IMPLEMENT_SWIZZLE(z, y, y, z) -IMPLEMENT_SWIZZLE(z, y, y, w) -IMPLEMENT_SWIZZLE(z, y, z, x) -IMPLEMENT_SWIZZLE(z, y, z, y) -IMPLEMENT_SWIZZLE(z, y, z, z) -IMPLEMENT_SWIZZLE(z, y, z, w) -IMPLEMENT_SWIZZLE(z, y, w, x) -IMPLEMENT_SWIZZLE(z, y, w, y) -IMPLEMENT_SWIZZLE(z, y, w, z) -IMPLEMENT_SWIZZLE(z, y, w, w) -IMPLEMENT_SWIZZLE(z, z, x, x) -IMPLEMENT_SWIZZLE(z, z, x, y) -IMPLEMENT_SWIZZLE(z, z, x, z) -IMPLEMENT_SWIZZLE(z, z, x, w) -IMPLEMENT_SWIZZLE(z, z, y, x) -IMPLEMENT_SWIZZLE(z, z, y, y) -IMPLEMENT_SWIZZLE(z, z, y, z) -IMPLEMENT_SWIZZLE(z, z, y, w) -IMPLEMENT_SWIZZLE(z, z, z, x) -IMPLEMENT_SWIZZLE(z, z, z, y) -IMPLEMENT_SWIZZLE(z, z, z, z) -IMPLEMENT_SWIZZLE(z, z, z, w) -IMPLEMENT_SWIZZLE(z, z, w, x) -IMPLEMENT_SWIZZLE(z, z, w, y) -IMPLEMENT_SWIZZLE(z, z, w, z) -IMPLEMENT_SWIZZLE(z, z, w, w) -IMPLEMENT_SWIZZLE(z, w, x, x) -IMPLEMENT_SWIZZLE(z, w, x, y) -IMPLEMENT_SWIZZLE(z, w, x, z) -IMPLEMENT_SWIZZLE(z, w, x, w) -IMPLEMENT_SWIZZLE(z, w, y, x) -IMPLEMENT_SWIZZLE(z, w, y, y) -IMPLEMENT_SWIZZLE(z, w, y, z) -IMPLEMENT_SWIZZLE(z, w, y, w) -IMPLEMENT_SWIZZLE(z, w, z, x) -IMPLEMENT_SWIZZLE(z, w, z, y) -IMPLEMENT_SWIZZLE(z, w, z, z) -IMPLEMENT_SWIZZLE(z, w, z, w) -IMPLEMENT_SWIZZLE(z, w, w, x) -IMPLEMENT_SWIZZLE(z, w, w, y) -IMPLEMENT_SWIZZLE(z, w, w, z) -IMPLEMENT_SWIZZLE(z, w, w, w) -IMPLEMENT_SWIZZLE(w, x, x, x) -IMPLEMENT_SWIZZLE(w, x, x, y) -IMPLEMENT_SWIZZLE(w, x, x, z) -IMPLEMENT_SWIZZLE(w, x, x, w) -IMPLEMENT_SWIZZLE(w, x, y, x) -IMPLEMENT_SWIZZLE(w, x, y, y) -IMPLEMENT_SWIZZLE(w, x, y, z) -IMPLEMENT_SWIZZLE(w, x, y, w) -IMPLEMENT_SWIZZLE(w, x, z, x) -IMPLEMENT_SWIZZLE(w, x, z, y) -IMPLEMENT_SWIZZLE(w, x, z, z) -IMPLEMENT_SWIZZLE(w, x, z, w) -IMPLEMENT_SWIZZLE(w, x, w, x) -IMPLEMENT_SWIZZLE(w, x, w, y) -IMPLEMENT_SWIZZLE(w, x, w, z) -IMPLEMENT_SWIZZLE(w, x, w, w) -IMPLEMENT_SWIZZLE(w, y, x, x) -IMPLEMENT_SWIZZLE(w, y, x, y) -IMPLEMENT_SWIZZLE(w, y, x, z) -IMPLEMENT_SWIZZLE(w, y, x, w) -IMPLEMENT_SWIZZLE(w, y, y, x) -IMPLEMENT_SWIZZLE(w, y, y, y) -IMPLEMENT_SWIZZLE(w, y, y, z) -IMPLEMENT_SWIZZLE(w, y, y, w) -IMPLEMENT_SWIZZLE(w, y, z, x) -IMPLEMENT_SWIZZLE(w, y, z, y) -IMPLEMENT_SWIZZLE(w, y, z, z) -IMPLEMENT_SWIZZLE(w, y, z, w) -IMPLEMENT_SWIZZLE(w, y, w, x) -IMPLEMENT_SWIZZLE(w, y, w, y) -IMPLEMENT_SWIZZLE(w, y, w, z) -IMPLEMENT_SWIZZLE(w, y, w, w) -IMPLEMENT_SWIZZLE(w, z, x, x) -IMPLEMENT_SWIZZLE(w, z, x, y) -IMPLEMENT_SWIZZLE(w, z, x, z) -IMPLEMENT_SWIZZLE(w, z, x, w) -IMPLEMENT_SWIZZLE(w, z, y, x) -IMPLEMENT_SWIZZLE(w, z, y, y) -IMPLEMENT_SWIZZLE(w, z, y, z) -IMPLEMENT_SWIZZLE(w, z, y, w) -IMPLEMENT_SWIZZLE(w, z, z, x) -IMPLEMENT_SWIZZLE(w, z, z, y) -IMPLEMENT_SWIZZLE(w, z, z, z) -IMPLEMENT_SWIZZLE(w, z, z, w) -IMPLEMENT_SWIZZLE(w, z, w, x) -IMPLEMENT_SWIZZLE(w, z, w, y) -IMPLEMENT_SWIZZLE(w, z, w, z) -IMPLEMENT_SWIZZLE(w, z, w, w) -IMPLEMENT_SWIZZLE(w, w, x, x) -IMPLEMENT_SWIZZLE(w, w, x, y) -IMPLEMENT_SWIZZLE(w, w, x, z) -IMPLEMENT_SWIZZLE(w, w, x, w) -IMPLEMENT_SWIZZLE(w, w, y, x) -IMPLEMENT_SWIZZLE(w, w, y, y) -IMPLEMENT_SWIZZLE(w, w, y, z) -IMPLEMENT_SWIZZLE(w, w, y, w) -IMPLEMENT_SWIZZLE(w, w, z, x) -IMPLEMENT_SWIZZLE(w, w, z, y) -IMPLEMENT_SWIZZLE(w, w, z, z) -IMPLEMENT_SWIZZLE(w, w, z, w) -IMPLEMENT_SWIZZLE(w, w, w, x) -IMPLEMENT_SWIZZLE(w, w, w, y) -IMPLEMENT_SWIZZLE(w, w, w, z) -IMPLEMENT_SWIZZLE(w, w, w, w) diff --git a/3rdparty/bx/include/bx/float4_t.h b/3rdparty/bx/include/bx/float4_t.h deleted file mode 100644 index 78fd4e8ebb5..00000000000 --- a/3rdparty/bx/include/bx/float4_t.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2010-2016 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#ifndef BX_FLOAT4_T_H_HEADER_GUARD -#define BX_FLOAT4_T_H_HEADER_GUARD - -#include "bx.h" - -#define BX_FLOAT4_FORCE_INLINE BX_FORCE_INLINE -#define BX_FLOAT4_INLINE static inline - -#if defined(__SSE2__) || (BX_COMPILER_MSVC && (BX_ARCH_64BIT || _M_IX86_FP >= 2) ) -# include "float4_sse.h" -#elif defined(__ARM_NEON__) && !BX_COMPILER_CLANG -# include "float4_neon.h" -#elif BX_COMPILER_CLANG \ - && !BX_PLATFORM_EMSCRIPTEN \ - && !BX_PLATFORM_IOS \ - && BX_CLANG_HAS_EXTENSION(attribute_ext_vector_type) -# include "float4_langext.h" -#else -# ifndef BX_FLOAT4_WARN_REFERENCE_IMPL -# define BX_FLOAT4_WARN_REFERENCE_IMPL 0 -# endif // BX_FLOAT4_WARN_REFERENCE_IMPL - -# if BX_FLOAT4_WARN_REFERENCE_IMPL -# pragma message("************************************\nUsing SIMD reference implementation!\n************************************") -# endif // BX_FLOAT4_WARN_REFERENCE_IMPL - -# include "float4_ref.h" -#endif // - -#endif // BX_FLOAT4_T_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/float4x4_t.h b/3rdparty/bx/include/bx/float4x4_t.h index e1bc4e1ca61..269dd633d3d 100644 --- a/3rdparty/bx/include/bx/float4x4_t.h +++ b/3rdparty/bx/include/bx/float4x4_t.h @@ -6,151 +6,151 @@ #ifndef BX_FLOAT4X4_H_HEADER_GUARD #define BX_FLOAT4X4_H_HEADER_GUARD -#include "float4_t.h" +#include "simd_t.h" namespace bx { BX_ALIGN_DECL_16(struct) float4x4_t { - float4_t col[4]; + simd128_t col[4]; }; - BX_FLOAT4_FORCE_INLINE float4_t float4_mul_xyz1(float4_t _a, const float4x4_t* _b) + BX_SIMD_FORCE_INLINE simd128_t simd_mul_xyz1(simd128_t _a, const float4x4_t* _b) { - const float4_t xxxx = float4_swiz_xxxx(_a); - const float4_t yyyy = float4_swiz_yyyy(_a); - const float4_t zzzz = float4_swiz_zzzz(_a); - const float4_t col0 = float4_mul(_b->col[0], xxxx); - const float4_t col1 = float4_mul(_b->col[1], yyyy); - const float4_t col2 = float4_madd(_b->col[2], zzzz, col0); - const float4_t col3 = float4_add(_b->col[3], col1); - const float4_t result = float4_add(col2, col3); + const simd128_t xxxx = simd_swiz_xxxx(_a); + const simd128_t yyyy = simd_swiz_yyyy(_a); + const simd128_t zzzz = simd_swiz_zzzz(_a); + const simd128_t col0 = simd_mul(_b->col[0], xxxx); + const simd128_t col1 = simd_mul(_b->col[1], yyyy); + const simd128_t col2 = simd_madd(_b->col[2], zzzz, col0); + const simd128_t col3 = simd_add(_b->col[3], col1); + const simd128_t result = simd_add(col2, col3); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_mul(float4_t _a, const float4x4_t* _b) + BX_SIMD_FORCE_INLINE simd128_t simd_mul(simd128_t _a, const float4x4_t* _b) { - const float4_t xxxx = float4_swiz_xxxx(_a); - const float4_t yyyy = float4_swiz_yyyy(_a); - const float4_t zzzz = float4_swiz_zzzz(_a); - const float4_t wwww = float4_swiz_wwww(_a); - const float4_t col0 = float4_mul(_b->col[0], xxxx); - const float4_t col1 = float4_mul(_b->col[1], yyyy); - const float4_t col2 = float4_madd(_b->col[2], zzzz, col0); - const float4_t col3 = float4_madd(_b->col[3], wwww, col1); - const float4_t result = float4_add(col2, col3); + const simd128_t xxxx = simd_swiz_xxxx(_a); + const simd128_t yyyy = simd_swiz_yyyy(_a); + const simd128_t zzzz = simd_swiz_zzzz(_a); + const simd128_t wwww = simd_swiz_wwww(_a); + const simd128_t col0 = simd_mul(_b->col[0], xxxx); + const simd128_t col1 = simd_mul(_b->col[1], yyyy); + const simd128_t col2 = simd_madd(_b->col[2], zzzz, col0); + const simd128_t col3 = simd_madd(_b->col[3], wwww, col1); + const simd128_t result = simd_add(col2, col3); return result; } - BX_FLOAT4_INLINE void float4x4_mul(float4x4_t* __restrict _result, const float4x4_t* __restrict _a, const float4x4_t* __restrict _b) + BX_SIMD_INLINE void float4x4_mul(float4x4_t* __restrict _result, const float4x4_t* __restrict _a, const float4x4_t* __restrict _b) { - _result->col[0] = float4_mul(_a->col[0], _b); - _result->col[1] = float4_mul(_a->col[1], _b); - _result->col[2] = float4_mul(_a->col[2], _b); - _result->col[3] = float4_mul(_a->col[3], _b); + _result->col[0] = simd_mul(_a->col[0], _b); + _result->col[1] = simd_mul(_a->col[1], _b); + _result->col[2] = simd_mul(_a->col[2], _b); + _result->col[3] = simd_mul(_a->col[3], _b); } - BX_FLOAT4_FORCE_INLINE void float4x4_transpose(float4x4_t* __restrict _result, const float4x4_t* __restrict _mtx) + BX_SIMD_FORCE_INLINE void float4x4_transpose(float4x4_t* __restrict _result, const float4x4_t* __restrict _mtx) { - const float4_t aibj = float4_shuf_xAyB(_mtx->col[0], _mtx->col[2]); // aibj - const float4_t emfn = float4_shuf_xAyB(_mtx->col[1], _mtx->col[3]); // emfn - const float4_t ckdl = float4_shuf_zCwD(_mtx->col[0], _mtx->col[2]); // ckdl - const float4_t gohp = float4_shuf_zCwD(_mtx->col[1], _mtx->col[3]); // gohp - _result->col[0] = float4_shuf_xAyB(aibj, emfn); // aeim - _result->col[1] = float4_shuf_zCwD(aibj, emfn); // bfjn - _result->col[2] = float4_shuf_xAyB(ckdl, gohp); // cgko - _result->col[3] = float4_shuf_zCwD(ckdl, gohp); // dhlp + const simd128_t aibj = simd_shuf_xAyB(_mtx->col[0], _mtx->col[2]); // aibj + const simd128_t emfn = simd_shuf_xAyB(_mtx->col[1], _mtx->col[3]); // emfn + const simd128_t ckdl = simd_shuf_zCwD(_mtx->col[0], _mtx->col[2]); // ckdl + const simd128_t gohp = simd_shuf_zCwD(_mtx->col[1], _mtx->col[3]); // gohp + _result->col[0] = simd_shuf_xAyB(aibj, emfn); // aeim + _result->col[1] = simd_shuf_zCwD(aibj, emfn); // bfjn + _result->col[2] = simd_shuf_xAyB(ckdl, gohp); // cgko + _result->col[3] = simd_shuf_zCwD(ckdl, gohp); // dhlp } - BX_FLOAT4_INLINE void float4x4_inverse(float4x4_t* __restrict _result, const float4x4_t* __restrict _a) + BX_SIMD_INLINE void float4x4_inverse(float4x4_t* __restrict _result, const float4x4_t* __restrict _a) { - const float4_t tmp0 = float4_shuf_xAzC(_a->col[0], _a->col[1]); - const float4_t tmp1 = float4_shuf_xAzC(_a->col[2], _a->col[3]); - const float4_t tmp2 = float4_shuf_yBwD(_a->col[0], _a->col[1]); - const float4_t tmp3 = float4_shuf_yBwD(_a->col[2], _a->col[3]); - const float4_t t0 = float4_shuf_xyAB(tmp0, tmp1); - const float4_t t1 = float4_shuf_xyAB(tmp3, tmp2); - const float4_t t2 = float4_shuf_zwCD(tmp0, tmp1); - const float4_t t3 = float4_shuf_zwCD(tmp3, tmp2); + const simd128_t tmp0 = simd_shuf_xAzC(_a->col[0], _a->col[1]); + const simd128_t tmp1 = simd_shuf_xAzC(_a->col[2], _a->col[3]); + const simd128_t tmp2 = simd_shuf_yBwD(_a->col[0], _a->col[1]); + const simd128_t tmp3 = simd_shuf_yBwD(_a->col[2], _a->col[3]); + const simd128_t t0 = simd_shuf_xyAB(tmp0, tmp1); + const simd128_t t1 = simd_shuf_xyAB(tmp3, tmp2); + const simd128_t t2 = simd_shuf_zwCD(tmp0, tmp1); + const simd128_t t3 = simd_shuf_zwCD(tmp3, tmp2); - const float4_t t23 = float4_mul(t2, t3); - const float4_t t23_yxwz = float4_swiz_yxwz(t23); - const float4_t t23_wzyx = float4_swiz_wzyx(t23); + const simd128_t t23 = simd_mul(t2, t3); + const simd128_t t23_yxwz = simd_swiz_yxwz(t23); + const simd128_t t23_wzyx = simd_swiz_wzyx(t23); - float4_t cof0, cof1, cof2, cof3; + simd128_t cof0, cof1, cof2, cof3; - const float4_t zero = float4_zero(); - cof0 = float4_nmsub(t1, t23_yxwz, zero); - cof0 = float4_madd(t1, t23_wzyx, cof0); + const simd128_t zero = simd_zero(); + cof0 = simd_nmsub(t1, t23_yxwz, zero); + cof0 = simd_madd(t1, t23_wzyx, cof0); - cof1 = float4_nmsub(t0, t23_yxwz, zero); - cof1 = float4_madd(t0, t23_wzyx, cof1); - cof1 = float4_swiz_zwxy(cof1); - - const float4_t t12 = float4_mul(t1, t2); - const float4_t t12_yxwz = float4_swiz_yxwz(t12); - const float4_t t12_wzyx = float4_swiz_wzyx(t12); - - cof0 = float4_madd(t3, t12_yxwz, cof0); - cof0 = float4_nmsub(t3, t12_wzyx, cof0); + cof1 = simd_nmsub(t0, t23_yxwz, zero); + cof1 = simd_madd(t0, t23_wzyx, cof1); + cof1 = simd_swiz_zwxy(cof1); - cof3 = float4_mul(t0, t12_yxwz); - cof3 = float4_nmsub(t0, t12_wzyx, cof3); - cof3 = float4_swiz_zwxy(cof3); + const simd128_t t12 = simd_mul(t1, t2); + const simd128_t t12_yxwz = simd_swiz_yxwz(t12); + const simd128_t t12_wzyx = simd_swiz_wzyx(t12); - const float4_t t1_zwxy = float4_swiz_zwxy(t1); - const float4_t t2_zwxy = float4_swiz_zwxy(t2); + cof0 = simd_madd(t3, t12_yxwz, cof0); + cof0 = simd_nmsub(t3, t12_wzyx, cof0); - const float4_t t13 = float4_mul(t1_zwxy, t3); - const float4_t t13_yxwz = float4_swiz_yxwz(t13); - const float4_t t13_wzyx = float4_swiz_wzyx(t13); + cof3 = simd_mul(t0, t12_yxwz); + cof3 = simd_nmsub(t0, t12_wzyx, cof3); + cof3 = simd_swiz_zwxy(cof3); - cof0 = float4_madd(t2_zwxy, t13_yxwz, cof0); - cof0 = float4_nmsub(t2_zwxy, t13_wzyx, cof0); + const simd128_t t1_zwxy = simd_swiz_zwxy(t1); + const simd128_t t2_zwxy = simd_swiz_zwxy(t2); - cof2 = float4_mul(t0, t13_yxwz); - cof2 = float4_nmsub(t0, t13_wzyx, cof2); - cof2 = float4_swiz_zwxy(cof2); + const simd128_t t13 = simd_mul(t1_zwxy, t3); + const simd128_t t13_yxwz = simd_swiz_yxwz(t13); + const simd128_t t13_wzyx = simd_swiz_wzyx(t13); - const float4_t t01 = float4_mul(t0, t1); - const float4_t t01_yxwz = float4_swiz_yxwz(t01); - const float4_t t01_wzyx = float4_swiz_wzyx(t01); + cof0 = simd_madd(t2_zwxy, t13_yxwz, cof0); + cof0 = simd_nmsub(t2_zwxy, t13_wzyx, cof0); - cof2 = float4_nmsub(t3, t01_yxwz, cof2); - cof2 = float4_madd(t3, t01_wzyx, cof2); + cof2 = simd_mul(t0, t13_yxwz); + cof2 = simd_nmsub(t0, t13_wzyx, cof2); + cof2 = simd_swiz_zwxy(cof2); - cof3 = float4_madd(t2_zwxy, t01_yxwz, cof3); - cof3 = float4_nmsub(t2_zwxy, t01_wzyx, cof3); + const simd128_t t01 = simd_mul(t0, t1); + const simd128_t t01_yxwz = simd_swiz_yxwz(t01); + const simd128_t t01_wzyx = simd_swiz_wzyx(t01); - const float4_t t03 = float4_mul(t0, t3); - const float4_t t03_yxwz = float4_swiz_yxwz(t03); - const float4_t t03_wzyx = float4_swiz_wzyx(t03); + cof2 = simd_nmsub(t3, t01_yxwz, cof2); + cof2 = simd_madd(t3, t01_wzyx, cof2); - cof1 = float4_nmsub(t2_zwxy, t03_yxwz, cof1); - cof1 = float4_madd(t2_zwxy, t03_wzyx, cof1); + cof3 = simd_madd(t2_zwxy, t01_yxwz, cof3); + cof3 = simd_nmsub(t2_zwxy, t01_wzyx, cof3); - cof2 = float4_madd(t1, t03_yxwz, cof2); - cof2 = float4_nmsub(t1, t03_wzyx, cof2); + const simd128_t t03 = simd_mul(t0, t3); + const simd128_t t03_yxwz = simd_swiz_yxwz(t03); + const simd128_t t03_wzyx = simd_swiz_wzyx(t03); - const float4_t t02 = float4_mul(t0, t2_zwxy); - const float4_t t02_yxwz = float4_swiz_yxwz(t02); - const float4_t t02_wzyx = float4_swiz_wzyx(t02); + cof1 = simd_nmsub(t2_zwxy, t03_yxwz, cof1); + cof1 = simd_madd(t2_zwxy, t03_wzyx, cof1); - cof1 = float4_madd(t3, t02_yxwz, cof1); - cof1 = float4_nmsub(t3, t02_wzyx, cof1); + cof2 = simd_madd(t1, t03_yxwz, cof2); + cof2 = simd_nmsub(t1, t03_wzyx, cof2); - cof3 = float4_nmsub(t1, t02_yxwz, cof3); - cof3 = float4_madd(t1, t02_wzyx, cof3); + const simd128_t t02 = simd_mul(t0, t2_zwxy); + const simd128_t t02_yxwz = simd_swiz_yxwz(t02); + const simd128_t t02_wzyx = simd_swiz_wzyx(t02); - const float4_t det = float4_dot(t0, cof0); - const float4_t invdet = float4_rcp(det); + cof1 = simd_madd(t3, t02_yxwz, cof1); + cof1 = simd_nmsub(t3, t02_wzyx, cof1); - _result->col[0] = float4_mul(cof0, invdet); - _result->col[1] = float4_mul(cof1, invdet); - _result->col[2] = float4_mul(cof2, invdet); - _result->col[3] = float4_mul(cof3, invdet); + cof3 = simd_nmsub(t1, t02_yxwz, cof3); + cof3 = simd_madd(t1, t02_wzyx, cof3); + + const simd128_t det = simd_dot(t0, cof0); + const simd128_t invdet = simd_rcp(det); + + _result->col[0] = simd_mul(cof0, invdet); + _result->col[1] = simd_mul(cof1, invdet); + _result->col[2] = simd_mul(cof2, invdet); + _result->col[3] = simd_mul(cof3, invdet); } } // namespace bx diff --git a/3rdparty/bx/include/bx/fpumath.h b/3rdparty/bx/include/bx/fpumath.h index 5f64564f688..7d7a2671bb2 100644 --- a/3rdparty/bx/include/bx/fpumath.h +++ b/3rdparty/bx/include/bx/fpumath.h @@ -341,7 +341,7 @@ namespace bx _result[2] = 1.0f / _a[2]; } - inline void vec3TangentFrame(const float* _n, float* _t, float* _b) + inline void vec3TangentFrame(const float* __restrict _n, float* __restrict _t, float* __restrict _b) { const float nx = _n[0]; const float ny = _n[1]; @@ -550,6 +550,30 @@ namespace bx _result[15] = 1.0f; } + inline void mtxScale(float* _result, float _scale) + { + mtxScale(_result, _scale, _scale, _scale); + } + + inline void mtxFromNormal(float* __restrict _result, const float* __restrict _normal, float _scale, const float* __restrict _pos) + { + float tangent[3]; + float bitangent[3]; + vec3TangentFrame(_normal, tangent, bitangent); + + vec3Mul(&_result[ 0], bitangent, _scale); + vec3Mul(&_result[ 4], _normal, _scale); + vec3Mul(&_result[ 8], tangent, _scale); + + _result[ 3] = 0.0f; + _result[ 7] = 0.0f; + _result[11] = 0.0f; + _result[12] = _pos[0]; + _result[13] = _pos[1]; + _result[14] = _pos[2]; + _result[15] = 1.0f; + } + inline void mtxQuat(float* __restrict _result, const float* __restrict _quat) { const float x = _quat[0]; diff --git a/3rdparty/bx/include/bx/handlealloc.h b/3rdparty/bx/include/bx/handlealloc.h index 7b10209ab2d..aad39cdd6f3 100644 --- a/3rdparty/bx/include/bx/handlealloc.h +++ b/3rdparty/bx/include/bx/handlealloc.h @@ -151,8 +151,6 @@ namespace bx static const uint16_t invalid = UINT16_MAX; HandleListT() - : m_front(invalid) - , m_back(invalid) { reset(); } @@ -250,6 +248,8 @@ namespace bx void reset() { memset(m_links, 0xff, sizeof(m_links) ); + m_front = invalid; + m_back = invalid; } private: diff --git a/3rdparty/bx/include/bx/macros.h b/3rdparty/bx/include/bx/macros.h index b4eaeae9287..870f8726738 100644 --- a/3rdparty/bx/include/bx/macros.h +++ b/3rdparty/bx/include/bx/macros.h @@ -63,7 +63,7 @@ #if BX_COMPILER_GCC || BX_COMPILER_CLANG # define BX_ALIGN_DECL(_align, _decl) _decl __attribute__( (aligned(_align) ) ) # define BX_ALLOW_UNUSED __attribute__( (unused) ) -# define BX_FORCE_INLINE __extension__ static __inline __attribute__( (__always_inline__) ) +# define BX_FORCE_INLINE inline __attribute__( (__always_inline__) ) # define BX_FUNCTION __PRETTY_FUNCTION__ # define BX_LIKELY(_x) __builtin_expect(!!(_x), 1) # define BX_UNLIKELY(_x) __builtin_expect(!!(_x), 0) @@ -71,7 +71,7 @@ # define BX_NO_RETURN __attribute__( (noreturn) ) # define BX_NO_VTABLE # define BX_OVERRIDE -# define BX_PRINTF_ARGS(_format, _args) __attribute__ ( (format(__printf__, _format, _args) ) ) +# define BX_PRINTF_ARGS(_format, _args) __attribute__( (format(__printf__, _format, _args) ) ) # if BX_CLANG_HAS_FEATURE(cxx_thread_local) # define BX_THREAD_LOCAL __thread # endif // BX_COMPILER_CLANG @@ -79,9 +79,9 @@ # define BX_THREAD_LOCAL __thread # endif // BX_COMPILER_GCC # define BX_ATTRIBUTE(_x) __attribute__( (_x) ) -# if BX_COMPILER_MSVC_COMPATIBLE +# if BX_CRT_MSVC # define __stdcall -# endif // BX_COMPILER_MSVC_COMPATIBLE +# endif // BX_CRT_MSVC #elif BX_COMPILER_MSVC # define BX_ALIGN_DECL(_align, _decl) __declspec(align(_align) ) _decl # define BX_ALLOW_UNUSED diff --git a/3rdparty/bx/include/bx/os.h b/3rdparty/bx/include/bx/os.h index 80ce4d5c5f9..0bdeb3c1eba 100644 --- a/3rdparty/bx/include/bx/os.h +++ b/3rdparty/bx/include/bx/os.h @@ -53,17 +53,17 @@ # elif BX_PLATFORM_OSX # include // mach_task_basic_info # elif BX_PLATFORM_HURD -# include // pthread_self +# include // getpid # elif BX_PLATFORM_ANDROID # include "debug.h" // getTid is not implemented... # endif // BX_PLATFORM_ANDROID #endif // BX_PLATFORM_ -#if BX_COMPILER_MSVC_COMPATIBLE +#if BX_CRT_MSVC # include // _getcwd #else # include // getcwd -#endif // BX_COMPILER_MSVC +#endif // BX_CRT_MSVC #if BX_PLATFORM_OSX # define BX_DL_EXT "dylib" @@ -259,7 +259,7 @@ namespace bx || BX_PLATFORM_WINRT BX_UNUSED(_path); return -1; -#elif BX_COMPILER_MSVC_COMPATIBLE +#elif BX_CRT_MSVC return ::_chdir(_path); #else return ::chdir(_path); @@ -273,7 +273,7 @@ namespace bx || BX_PLATFORM_WINRT BX_UNUSED(_buffer, _size); return NULL; -#elif BX_COMPILER_MSVC_COMPATIBLE +#elif BX_CRT_MSVC return ::_getcwd(_buffer, (int)_size); #else return ::getcwd(_buffer, _size); diff --git a/3rdparty/bx/include/bx/platform.h b/3rdparty/bx/include/bx/platform.h index 1c7b7d01414..02a80045285 100644 --- a/3rdparty/bx/include/bx/platform.h +++ b/3rdparty/bx/include/bx/platform.h @@ -15,7 +15,6 @@ #define BX_COMPILER_CLANG_ANALYZER 0 #define BX_COMPILER_GCC 0 #define BX_COMPILER_MSVC 0 -#define BX_COMPILER_MSVC_COMPATIBLE (BX_CRT_MSVC) // Endianess #define BX_CPU_ENDIAN_BIG 0 diff --git a/3rdparty/bx/include/bx/readerwriter.h b/3rdparty/bx/include/bx/readerwriter.h index 5460505a42e..47c5899d3f1 100644 --- a/3rdparty/bx/include/bx/readerwriter.h +++ b/3rdparty/bx/include/bx/readerwriter.h @@ -16,7 +16,7 @@ #include "error.h" #include "uint32_t.h" -#if BX_COMPILER_MSVC_COMPATIBLE +#if BX_CRT_MSVC # define fseeko64 _fseeki64 # define ftello64 _ftelli64 #elif BX_PLATFORM_ANDROID || BX_PLATFORM_BSD || BX_PLATFORM_IOS || BX_PLATFORM_OSX || BX_PLATFORM_QNX @@ -401,7 +401,7 @@ namespace bx } int64_t remainder = m_top-m_pos; - int32_t size = uint32_min(_size, int32_t(remainder > INT32_MAX ? INT32_MAX : remainder) ); + int32_t size = uint32_min(_size, uint32_t(int64_min(remainder, INT32_MAX) ) ); m_pos += size; if (size != _size) { @@ -454,7 +454,7 @@ namespace bx BX_CHECK(NULL != _err, "Reader/Writer interface calling functions must handle errors."); int64_t remainder = m_top-m_pos; - int32_t size = uint32_min(_size, int32_t(remainder > INT32_MAX ? INT32_MAX : remainder) ); + int32_t size = uint32_min(_size, uint32_t(int64_min(remainder, INT32_MAX) ) ); memcpy(_data, &m_data[m_pos], size); m_pos += size; if (size != _size) @@ -535,7 +535,7 @@ namespace bx } int64_t remainder = m_size-m_pos; - int32_t size = uint32_min(_size, int32_t(remainder > INT32_MAX ? INT32_MAX : remainder) ); + int32_t size = uint32_min(_size, uint32_t(int64_min(remainder, INT32_MAX) ) ); memcpy(&m_data[m_pos], _data, size); m_pos += size; m_top = int64_max(m_top, m_pos); diff --git a/3rdparty/bx/include/bx/simd128_langext.inl b/3rdparty/bx/include/bx/simd128_langext.inl new file mode 100644 index 00000000000..c89e6123349 --- /dev/null +++ b/3rdparty/bx/include/bx/simd128_langext.inl @@ -0,0 +1,515 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#ifndef BX_SIMD128_LANGEXT_H_HEADER_GUARD +#define BX_SIMD128_LANGEXT_H_HEADER_GUARD + +#define simd_rcp simd_rcp_ni +#define simd_orx simd_orx_ni +#define simd_orc simd_orc_ni +#define simd_neg simd_neg_ni +#define simd_madd simd_madd_ni +#define simd_nmsub simd_nmsub_ni +#define simd_div_nr simd_div_nr_ni +#define simd_selb simd_selb_ni +#define simd_sels simd_sels_ni +#define simd_not simd_not_ni +#define simd_abs simd_abs_ni +#define simd_clamp simd_clamp_ni +#define simd_lerp simd_lerp_ni +#define simd_rcp_est simd_rcp_ni +#define simd_rsqrt simd_rsqrt_ni +#define simd_rsqrt_nr simd_rsqrt_nr_ni +#define simd_rsqrt_carmack simd_rsqrt_carmack_ni +#define simd_sqrt_nr simd_sqrt_nr_ni +#define simd_log2 simd_log2_ni +#define simd_exp2 simd_exp2_ni +#define simd_pow simd_pow_ni +#define simd_cross3 simd_cross3_ni +#define simd_normalize3 simd_normalize3_ni +#define simd_dot3 simd_dot3_ni +#define simd_dot simd_dot_ni +#define simd_ceil simd_ceil_ni +#define simd_floor simd_floor_ni +#define simd_min simd_min_ni +#define simd_max simd_max_ni +#define simd_imin simd_imin_ni +#define simd_imax simd_imax_ni + +#include "simd_ni.inl" + +namespace bx +{ +#define ELEMx 0 +#define ELEMy 1 +#define ELEMz 2 +#define ELEMw 3 +#define BX_SIMD128_IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ + template<> \ + BX_SIMD_FORCE_INLINE simd128_langext_t simd_swiz_##_x##_y##_z##_w(simd128_langext_t _a) \ + { \ + simd128_langext_t result; \ + result.vf = __builtin_shufflevector(_a.vf, _a.vf, ELEM##_x, ELEM##_y, ELEM##_z, ELEM##_w); \ + return result; \ + } + +#include "simd128_swizzle.inl" + +#undef BX_SIMD128_IMPLEMENT_SWIZZLE +#undef ELEMw +#undef ELEMz +#undef ELEMy +#undef ELEMx + +#define BX_SIMD128_IMPLEMENT_TEST(_xyzw, _mask) \ + template<> \ + BX_SIMD_FORCE_INLINE bool simd_test_any_##_xyzw(simd128_langext_t _test) \ + { \ + uint32_t tmp = ( (_test.uxyzw[3]>>31)<<3) \ + | ( (_test.uxyzw[2]>>31)<<2) \ + | ( (_test.uxyzw[1]>>31)<<1) \ + | ( _test.uxyzw[0]>>31) \ + ; \ + return 0 != (tmp&(_mask) ); \ + } \ + \ + template<> \ + BX_SIMD_FORCE_INLINE bool simd_test_all_##_xyzw(simd128_langext_t _test) \ + { \ + uint32_t tmp = ( (_test.uxyzw[3]>>31)<<3) \ + | ( (_test.uxyzw[2]>>31)<<2) \ + | ( (_test.uxyzw[1]>>31)<<1) \ + | ( _test.uxyzw[0]>>31) \ + ; \ + return (_mask) == (tmp&(_mask) ); \ + } + +BX_SIMD128_IMPLEMENT_TEST(x , 0x1); +BX_SIMD128_IMPLEMENT_TEST(y , 0x2); +BX_SIMD128_IMPLEMENT_TEST(xy , 0x3); +BX_SIMD128_IMPLEMENT_TEST(z , 0x4); +BX_SIMD128_IMPLEMENT_TEST(xz , 0x5); +BX_SIMD128_IMPLEMENT_TEST(yz , 0x6); +BX_SIMD128_IMPLEMENT_TEST(xyz , 0x7); +BX_SIMD128_IMPLEMENT_TEST(w , 0x8); +BX_SIMD128_IMPLEMENT_TEST(xw , 0x9); +BX_SIMD128_IMPLEMENT_TEST(yw , 0xa); +BX_SIMD128_IMPLEMENT_TEST(xyw , 0xb); +BX_SIMD128_IMPLEMENT_TEST(zw , 0xc); +BX_SIMD128_IMPLEMENT_TEST(xzw , 0xd); +BX_SIMD128_IMPLEMENT_TEST(yzw , 0xe); +BX_SIMD128_IMPLEMENT_TEST(xyzw , 0xf); + +#undef BX_SIMD128_IMPLEMENT_TEST + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_xyAB(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 0, 1, 4, 5); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_ABxy(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 4, 5, 0, 1); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_CDzw(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 6, 7, 2, 3); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_zwCD(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 2, 3, 6, 7); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_xAyB(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 0, 4, 1, 5); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_yBxA(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 1, 5, 0, 4); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_zCwD(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 2, 6, 3, 7); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_CzDw(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 6, 2, 7, 3); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_xAzC(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 0, 4, 2, 6); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_shuf_yBwD(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = __builtin_shufflevector(_a.vf, _b.vf, 1, 5, 3, 7); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE float simd_x(simd128_langext_t _a) + { + return _a.fxyzw[0]; + } + + template<> + BX_SIMD_FORCE_INLINE float simd_y(simd128_langext_t _a) + { + return _a.fxyzw[1]; + } + + template<> + BX_SIMD_FORCE_INLINE float simd_z(simd128_langext_t _a) + { + return _a.fxyzw[2]; + } + + template<> + BX_SIMD_FORCE_INLINE float simd_w(simd128_langext_t _a) + { + return _a.fxyzw[3]; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_ld(const void* _ptr) + { + const uint32_t* input = reinterpret_cast(_ptr); + simd128_langext_t result; + result.uxyzw[0] = input[0]; + result.uxyzw[1] = input[1]; + result.uxyzw[2] = input[2]; + result.uxyzw[3] = input[3]; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE void simd_st(void* _ptr, simd128_langext_t _a) + { + uint32_t* result = reinterpret_cast(_ptr); + result[0] = _a.uxyzw[0]; + result[1] = _a.uxyzw[1]; + result[2] = _a.uxyzw[2]; + result[3] = _a.uxyzw[3]; + } + + template<> + BX_SIMD_FORCE_INLINE void simd_stx(void* _ptr, simd128_langext_t _a) + { + uint32_t* result = reinterpret_cast(_ptr); + result[0] = _a.uxyzw[0]; + } + + template<> + BX_SIMD_FORCE_INLINE void simd_stream(void* _ptr, simd128_langext_t _a) + { + uint32_t* result = reinterpret_cast(_ptr); + result[0] = _a.uxyzw[0]; + result[1] = _a.uxyzw[1]; + result[2] = _a.uxyzw[2]; + result[3] = _a.uxyzw[3]; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_ld(float _x, float _y, float _z, float _w) + { + simd128_langext_t result; + result.vf = (float __attribute__((vector_size(16)))){ _x, _y, _z, _w }; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) + { + simd128_langext_t result; + result.vu = (uint32_t __attribute__((vector_size(16)))){ _x, _y, _z, _w }; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_splat(const void* _ptr) + { + const uint32_t val = *reinterpret_cast(_ptr); + simd128_langext_t result; + result.vu = (uint32_t __attribute__((vector_size(16)))){ val, val, val, val }; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_splat(float _a) + { + return simd_ld(_a, _a, _a, _a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_isplat(uint32_t _a) + { + return simd_ild(_a, _a, _a, _a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_zero() + { + return simd_ild(0, 0, 0, 0); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_itof(simd128_langext_t _a) + { + simd128_langext_t result; + result.vf = __builtin_convertvector(_a.vi, float __attribute__((vector_size(16))) ); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_ftoi(simd128_langext_t _a) + { + simd128_langext_t result; + result.vi = __builtin_convertvector(_a.vf, int32_t __attribute__((vector_size(16))) ); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_round(simd128_langext_t _a) + { + const simd128_langext_t tmp = simd_ftoi(_a); + const simd128_langext_t result = simd_itof(tmp); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_add(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = _a.vf + _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_sub(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = _a.vf - _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_mul(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = _a.vf * _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_div(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vf = _a.vf / _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_sqrt(simd128_langext_t _a) + { + simd128_langext_t result; + result.vf[0] = sqrtf(_a.vf[0]); + result.vf[1] = sqrtf(_a.vf[1]); + result.vf[2] = sqrtf(_a.vf[2]); + result.vf[3] = sqrtf(_a.vf[3]); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_rsqrt_est(simd128_langext_t _a) + { + simd128_langext_t result; + result.vf[0] = 1.0f / sqrtf(_a.vf[0]); + result.vf[1] = 1.0f / sqrtf(_a.vf[1]); + result.vf[2] = 1.0f / sqrtf(_a.vf[2]); + result.vf[3] = 1.0f / sqrtf(_a.vf[3]); + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_cmpeq(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vf == _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_cmplt(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vf < _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_cmple(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vf <= _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_cmpgt(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vf > _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_cmpge(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vf >= _b.vf; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_and(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vu = _a.vu & _b.vu; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_andc(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vu = _a.vu & ~_b.vu; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_or(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vu = _a.vu | _b.vu; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_xor(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vu = _a.vu ^ _b.vu; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_sll(simd128_langext_t _a, int _count) + { + simd128_langext_t result; + const simd128_langext_t count = simd_isplat(_count); + result.vu = _a.vu << count.vi; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_srl(simd128_langext_t _a, int _count) + { + simd128_langext_t result; + const simd128_langext_t count = simd_isplat(_count); + result.vu = _a.vu >> count.vi; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_sra(simd128_langext_t _a, int _count) + { + simd128_langext_t result; + const simd128_langext_t count = simd_isplat(_count); + result.vi = _a.vi >> count.vi; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_icmpeq(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vi == _b.vi; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_icmplt(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vi < _b.vi; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_icmpgt(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vi > _b.vi; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_iadd(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vi + _b.vi; + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_langext_t simd_isub(simd128_langext_t _a, simd128_langext_t _b) + { + simd128_langext_t result; + result.vi = _a.vi - _b.vi; + return result; + } + + typedef simd128_langext_t simd128_t; + +} // namespace bx + +#endif // BX_SIMD128_LANGEXT_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/simd128_neon.inl b/3rdparty/bx/include/bx/simd128_neon.inl new file mode 100644 index 00000000000..1dd0d1f12b2 --- /dev/null +++ b/3rdparty/bx/include/bx/simd128_neon.inl @@ -0,0 +1,562 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#ifndef BX_SIMD128_NEON_H_HEADER_GUARD +#define BX_SIMD128_NEON_H_HEADER_GUARD + +#define simd_rcp simd_rcp_ni +#define simd_orx simd_orx_ni +#define simd_orc simd_orc_ni +#define simd_neg simd_neg_ni +#define simd_madd simd_madd_ni +#define simd_nmsub simd_nmsub_ni +#define simd_div_nr simd_div_nr_ni +#define simd_div simd_div_nr_ni +#define simd_selb simd_selb_ni +#define simd_sels simd_sels_ni +#define simd_not simd_not_ni +#define simd_abs simd_abs_ni +#define simd_clamp simd_clamp_ni +#define simd_lerp simd_lerp_ni +#define simd_rsqrt simd_rsqrt_ni +#define simd_rsqrt_nr simd_rsqrt_nr_ni +#define simd_rsqrt_carmack simd_rsqrt_carmack_ni +#define simd_sqrt_nr simd_sqrt_nr_ni +#define simd_sqrt simd_sqrt_nr_ni +#define simd_log2 simd_log2_ni +#define simd_exp2 simd_exp2_ni +#define simd_pow simd_pow_ni +#define simd_cross3 simd_cross3_ni +#define simd_normalize3 simd_normalize3_ni +#define simd_dot3 simd_dot3_ni +#define simd_dot simd_dot_ni +#define simd_ceil simd_ceil_ni +#define simd_floor simd_floor_ni + +#include "simd_ni.inl" + +namespace bx +{ +#define ELEMx 0 +#define ELEMy 1 +#define ELEMz 2 +#define ELEMw 3 +#define BX_SIMD128_IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ + template<> \ + BX_SIMD_FORCE_INLINE simd128_neon_t simd_swiz_##_x##_y##_z##_w(simd128_neon_t _a) \ + { \ + return __builtin_shuffle(_a, (uint32x4_t){ ELEM##_x, ELEM##_y, ELEM##_z, ELEM##_w }); \ + } + +#include "simd128_swizzle.inl" + +#undef BX_SIMD128_IMPLEMENT_SWIZZLE +#undef ELEMw +#undef ELEMz +#undef ELEMy +#undef ELEMx + +#define BX_SIMD128_IMPLEMENT_TEST(_xyzw, _swizzle) \ + template<> \ + BX_SIMD_FORCE_INLINE bool simd_test_any_##_xyzw(simd128_neon_t _test) \ + { \ + const simd128_neon_t tmp0 = simd_swiz_##_swizzle(_test); \ + return simd_test_any_ni(tmp0); \ + } \ + \ + template<> \ + BX_SIMD_FORCE_INLINE bool simd_test_all_##_xyzw(simd128_neon_t _test) \ + { \ + const simd128_neon_t tmp0 = simd_swiz_##_swizzle(_test); \ + return simd_test_all_ni(tmp0); \ + } + +BX_SIMD128_IMPLEMENT_TEST(x, xxxx); +BX_SIMD128_IMPLEMENT_TEST(y, yyyy); +BX_SIMD128_IMPLEMENT_TEST(xy, xyyy); +BX_SIMD128_IMPLEMENT_TEST(z, zzzz); +BX_SIMD128_IMPLEMENT_TEST(xz, xzzz); +BX_SIMD128_IMPLEMENT_TEST(yz, yzzz); +BX_SIMD128_IMPLEMENT_TEST(xyz, xyzz); +BX_SIMD128_IMPLEMENT_TEST(w, wwww); +BX_SIMD128_IMPLEMENT_TEST(xw, xwww); +BX_SIMD128_IMPLEMENT_TEST(yw, ywww); +BX_SIMD128_IMPLEMENT_TEST(xyw, xyww); +BX_SIMD128_IMPLEMENT_TEST(zw, zwww); +BX_SIMD128_IMPLEMENT_TEST(xzw, xzww); +BX_SIMD128_IMPLEMENT_TEST(yzw, yzww); +#undef BX_SIMD128_IMPLEMENT_TEST + + template<> + BX_SIMD_FORCE_INLINE bool simd_test_any_xyzw(simd128_neon_t _test) + { + return simd_test_any_ni(_test); + } + + template<> + BX_SIMD_FORCE_INLINE bool simd_test_all_xyzw(simd128_neon_t _test) + { + return simd_test_all_ni(_test); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_shuf_xyAB(simd128_neon_t _a, simd128_neon_t _b) + { + return __builtin_shuffle(_a, _b, (uint32x4_t){ 0, 1, 4, 5 }); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_shuf_ABxy(simd128_neon_t _a, simd128_neon_t _b) + { + return __builtin_shuffle(_a, _b, (uint32x4_t){ 4, 5, 0, 1 }); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_shuf_CDzw(simd128_neon_t _a, simd128_neon_t _b) + { + return __builtin_shuffle(_a, _b, (uint32x4_t){ 6, 7, 2, 3 }); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_shuf_zwCD(simd128_neon_t _a, simd128_neon_t _b) + { + return __builtin_shuffle(_a, _b, (uint32x4_t){ 2, 3, 6, 7 }); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_shuf_xAyB(simd128_neon_t _a, simd128_neon_t _b) + { + return __builtin_shuffle(_a, _b, (uint32x4_t){ 0, 4, 1, 5 }); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_shuf_yBxA(simd128_neon_t _a, simd128_neon_t _b) + { + return __builtin_shuffle(_a, _b, (uint32x4_t){ 1, 5, 0, 4 }); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_shuf_zCwD(simd128_neon_t _a, simd128_neon_t _b) + { + return __builtin_shuffle(_a, _b, (uint32x4_t){ 2, 6, 3, 7 }); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_shuf_CzDw(simd128_neon_t _a, simd128_neon_t _b) + { + return __builtin_shuffle(_a, _b, (uint32x4_t){ 6, 2, 7, 3 }); + } + + template<> + BX_SIMD_FORCE_INLINE float simd_x(simd128_neon_t _a) + { + return vgetq_lane_f32(_a, 0); + } + + template<> + BX_SIMD_FORCE_INLINE float simd_y(simd128_neon_t _a) + { + return vgetq_lane_f32(_a, 1); + } + + template<> + BX_SIMD_FORCE_INLINE float simd_z(simd128_neon_t _a) + { + return vgetq_lane_f32(_a, 2); + } + + template<> + BX_SIMD_FORCE_INLINE float simd_w(simd128_neon_t _a) + { + return vgetq_lane_f32(_a, 3); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_ld(const void* _ptr) + { + return vld1q_f32( (const float32_t*)_ptr); + } + + template<> + BX_SIMD_FORCE_INLINE void simd_st(void* _ptr, simd128_neon_t _a) + { + vst1q_f32( (float32_t*)_ptr, _a); + } + + template<> + BX_SIMD_FORCE_INLINE void simd_stx(void* _ptr, simd128_neon_t _a) + { + vst1q_lane_f32( (float32_t*)_ptr, _a, 0); + } + + template<> + BX_SIMD_FORCE_INLINE void simd_stream(void* _ptr, simd128_neon_t _a) + { + vst1q_f32( (float32_t*)_ptr, _a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_ld(float _x, float _y, float _z, float _w) + { + const float32_t val[4] = {_x, _y, _z, _w}; + return simd_ld(val); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) + { + const uint32_t val[4] = {_x, _y, _z, _w}; + const uint32x4_t tmp = vld1q_u32(val); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_splat(const void* _ptr) + { + const simd128_neon_t tmp0 = vld1q_f32( (const float32_t*)_ptr); + const float32x2_t tmp1 = vget_low_f32(tmp0); + const simd128_neon_t result = vdupq_lane_f32(tmp1, 0); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_splat(float _a) + { + return vdupq_n_f32(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_isplat(uint32_t _a) + { + const int32x4_t tmp = vdupq_n_s32(_a); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_zero() + { + return simd_isplat(0); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_itof(simd128_neon_t _a) + { + const int32x4_t itof = vreinterpretq_s32_f32(_a); + const simd128_neon_t result = vcvtq_f32_s32(itof); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_ftoi(simd128_neon_t _a) + { + const int32x4_t ftoi = vcvtq_s32_f32(_a); + const simd128_neon_t result = vreinterpretq_f32_s32(ftoi); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_add(simd128_neon_t _a, simd128_neon_t _b) + { + return vaddq_f32(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_sub(simd128_neon_t _a, simd128_neon_t _b) + { + return vsubq_f32(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_mul(simd128_neon_t _a, simd128_neon_t _b) + { + return vmulq_f32(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_rcp_est(simd128_neon_t _a) + { + return vrecpeq_f32(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_rsqrt_est(simd128_neon_t _a) + { + return vrsqrteq_f32(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_cmpeq(simd128_neon_t _a, simd128_neon_t _b) + { + const uint32x4_t tmp = vceqq_f32(_a, _b); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_cmplt(simd128_neon_t _a, simd128_neon_t _b) + { + const uint32x4_t tmp = vcltq_f32(_a, _b); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_cmple(simd128_neon_t _a, simd128_neon_t _b) + { + const uint32x4_t tmp = vcleq_f32(_a, _b); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_cmpgt(simd128_neon_t _a, simd128_neon_t _b) + { + const uint32x4_t tmp = vcgtq_f32(_a, _b); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_cmpge(simd128_neon_t _a, simd128_neon_t _b) + { + const uint32x4_t tmp = vcgeq_f32(_a, _b); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_min(simd128_neon_t _a, simd128_neon_t _b) + { + return vminq_f32(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_max(simd128_neon_t _a, simd128_neon_t _b) + { + return vmaxq_f32(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_and(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const int32x4_t tmp2 = vandq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_andc(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const int32x4_t tmp2 = vbicq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_or(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const int32x4_t tmp2 = vorrq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_xor(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const int32x4_t tmp2 = veorq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_sll(simd128_neon_t _a, int _count) + { + if (__builtin_constant_p(_count) ) + { + const uint32x4_t tmp0 = vreinterpretq_u32_f32(_a); + const uint32x4_t tmp1 = vshlq_n_u32(tmp0, _count); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp1); + + return result; + } + + const uint32x4_t tmp0 = vreinterpretq_u32_f32(_a); + const int32x4_t shift = vdupq_n_s32(_count); + const uint32x4_t tmp1 = vshlq_u32(tmp0, shift); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp1); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_srl(simd128_neon_t _a, int _count) + { + if (__builtin_constant_p(_count) ) + { + const uint32x4_t tmp0 = vreinterpretq_u32_f32(_a); + const uint32x4_t tmp1 = vshrq_n_u32(tmp0, _count); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp1); + + return result; + } + + const uint32x4_t tmp0 = vreinterpretq_u32_f32(_a); + const int32x4_t shift = vdupq_n_s32(-_count); + const uint32x4_t tmp1 = vshlq_u32(tmp0, shift); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp1); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_sra(simd128_neon_t _a, int _count) + { + if (__builtin_constant_p(_count) ) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vshrq_n_s32(tmp0, _count); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp1); + + return result; + } + + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t shift = vdupq_n_s32(-_count); + const int32x4_t tmp1 = vshlq_s32(tmp0, shift); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp1); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_madd(simd128_neon_t _a, simd128_neon_t _b, simd128_neon_t _c) + { + return vmlaq_f32(_c, _a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_nmsub(simd128_neon_t _a, simd128_neon_t _b, simd128_neon_t _c) + { + return vmlsq_f32(_c, _a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_icmpeq(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const uint32x4_t tmp2 = vceqq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_icmplt(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const uint32x4_t tmp2 = vcltq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_icmpgt(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const uint32x4_t tmp2 = vcgtq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_u32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_imin(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const int32x4_t tmp2 = vminq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_imax(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const int32x4_t tmp2 = vmaxq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_iadd(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const int32x4_t tmp2 = vaddq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_neon_t simd_isub(simd128_neon_t _a, simd128_neon_t _b) + { + const int32x4_t tmp0 = vreinterpretq_s32_f32(_a); + const int32x4_t tmp1 = vreinterpretq_s32_f32(_b); + const int32x4_t tmp2 = vsubq_s32(tmp0, tmp1); + const simd128_neon_t result = vreinterpretq_f32_s32(tmp2); + + return result; + } + + template<> + BX_SIMD_INLINE simd128_neon_t simd_shuf_xAzC(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_shuf_xAzC_ni(_a, _b); + } + + template<> + BX_SIMD_INLINE simd128_neon_t simd_shuf_yBwD(simd128_neon_t _a, simd128_neon_t _b) + { + return simd_shuf_yBwD_ni(_a, _b); + } + + typedef simd128_neon_t simd128_t; + +} // namespace bx + +#endif // BX_SIMD128_NEON_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/float4_ref.h b/3rdparty/bx/include/bx/simd128_ref.inl similarity index 57% rename from 3rdparty/bx/include/bx/float4_ref.h rename to 3rdparty/bx/include/bx/simd128_ref.inl index e54862ca371..da08f5088b6 100644 --- a/3rdparty/bx/include/bx/float4_ref.h +++ b/3rdparty/bx/include/bx/simd128_ref.inl @@ -3,29 +3,53 @@ * License: https://github.com/bkaradzic/bx#license-bsd-2-clause */ -#ifndef BX_FLOAT4_REF_H_HEADER_GUARD -#define BX_FLOAT4_REF_H_HEADER_GUARD +#ifndef BX_SIMD128_REF_H_HEADER_GUARD +#define BX_SIMD128_REF_H_HEADER_GUARD #include // sqrtf +#define simd_shuf_xAzC simd_shuf_xAzC_ni +#define simd_shuf_yBwD simd_shuf_yBwD_ni +#define simd_rcp simd_rcp_ni +#define simd_orx simd_orx_ni +#define simd_orc simd_orc_ni +#define simd_neg simd_neg_ni +#define simd_madd simd_madd_ni +#define simd_nmsub simd_nmsub_ni +#define simd_div_nr simd_div_nr_ni +#define simd_selb simd_selb_ni +#define simd_sels simd_sels_ni +#define simd_not simd_not_ni +#define simd_abs simd_abs_ni +#define simd_clamp simd_clamp_ni +#define simd_lerp simd_lerp_ni +#define simd_rsqrt simd_rsqrt_ni +#define simd_rsqrt_nr simd_rsqrt_nr_ni +#define simd_rsqrt_carmack simd_rsqrt_carmack_ni +#define simd_sqrt_nr simd_sqrt_nr_ni +#define simd_log2 simd_log2_ni +#define simd_exp2 simd_exp2_ni +#define simd_pow simd_pow_ni +#define simd_cross3 simd_cross3_ni +#define simd_normalize3 simd_normalize3_ni +#define simd_dot3 simd_dot3_ni +#define simd_dot simd_dot_ni +#define simd_ceil simd_ceil_ni +#define simd_floor simd_floor_ni + +#include "simd_ni.inl" + namespace bx { - typedef union float4_t - { - float fxyzw[4]; - int32_t ixyzw[4]; - uint32_t uxyzw[4]; - - } float4_t; - #define ELEMx 0 #define ELEMy 1 #define ELEMz 2 #define ELEMw 3 -#define IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ - BX_FLOAT4_FORCE_INLINE float4_t float4_swiz_##_x##_y##_z##_w(float4_t _a) \ +#define BX_SIMD128_IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ + template<> \ + BX_SIMD_FORCE_INLINE simd128_ref_t simd_swiz_##_x##_y##_z##_w(simd128_ref_t _a) \ { \ - float4_t result; \ + simd128_ref_t result; \ result.ixyzw[0] = _a.ixyzw[ELEM##_x]; \ result.ixyzw[1] = _a.ixyzw[ELEM##_y]; \ result.ixyzw[2] = _a.ixyzw[ELEM##_z]; \ @@ -33,16 +57,17 @@ namespace bx return result; \ } -#include "float4_swizzle.inl" +#include "simd128_swizzle.inl" -#undef IMPLEMENT_SWIZZLE +#undef BX_SIMD128_IMPLEMENT_SWIZZLE #undef ELEMw #undef ELEMz #undef ELEMy #undef ELEMx -#define IMPLEMENT_TEST(_xyzw, _mask) \ - BX_FLOAT4_FORCE_INLINE bool float4_test_any_##_xyzw(float4_t _test) \ +#define BX_SIMD128_IMPLEMENT_TEST(_xyzw, _mask) \ + template<> \ + BX_SIMD_FORCE_INLINE bool simd_test_any_##_xyzw(simd128_ref_t _test) \ { \ uint32_t tmp = ( (_test.uxyzw[3]>>31)<<3) \ | ( (_test.uxyzw[2]>>31)<<2) \ @@ -52,7 +77,8 @@ namespace bx return 0 != (tmp&(_mask) ); \ } \ \ - BX_FLOAT4_FORCE_INLINE bool float4_test_all_##_xyzw(float4_t _test) \ + template<> \ + BX_SIMD_FORCE_INLINE bool simd_test_all_##_xyzw(simd128_ref_t _test) \ { \ uint32_t tmp = ( (_test.uxyzw[3]>>31)<<3) \ | ( (_test.uxyzw[2]>>31)<<2) \ @@ -62,27 +88,28 @@ namespace bx return (_mask) == (tmp&(_mask) ); \ } -IMPLEMENT_TEST(x , 0x1); -IMPLEMENT_TEST(y , 0x2); -IMPLEMENT_TEST(xy , 0x3); -IMPLEMENT_TEST(z , 0x4); -IMPLEMENT_TEST(xz , 0x5); -IMPLEMENT_TEST(yz , 0x6); -IMPLEMENT_TEST(xyz , 0x7); -IMPLEMENT_TEST(w , 0x8); -IMPLEMENT_TEST(xw , 0x9); -IMPLEMENT_TEST(yw , 0xa); -IMPLEMENT_TEST(xyw , 0xb); -IMPLEMENT_TEST(zw , 0xc); -IMPLEMENT_TEST(xzw , 0xd); -IMPLEMENT_TEST(yzw , 0xe); -IMPLEMENT_TEST(xyzw , 0xf); +BX_SIMD128_IMPLEMENT_TEST(x , 0x1); +BX_SIMD128_IMPLEMENT_TEST(y , 0x2); +BX_SIMD128_IMPLEMENT_TEST(xy , 0x3); +BX_SIMD128_IMPLEMENT_TEST(z , 0x4); +BX_SIMD128_IMPLEMENT_TEST(xz , 0x5); +BX_SIMD128_IMPLEMENT_TEST(yz , 0x6); +BX_SIMD128_IMPLEMENT_TEST(xyz , 0x7); +BX_SIMD128_IMPLEMENT_TEST(w , 0x8); +BX_SIMD128_IMPLEMENT_TEST(xw , 0x9); +BX_SIMD128_IMPLEMENT_TEST(yw , 0xa); +BX_SIMD128_IMPLEMENT_TEST(xyw , 0xb); +BX_SIMD128_IMPLEMENT_TEST(zw , 0xc); +BX_SIMD128_IMPLEMENT_TEST(xzw , 0xd); +BX_SIMD128_IMPLEMENT_TEST(yzw , 0xe); +BX_SIMD128_IMPLEMENT_TEST(xyzw , 0xf); -#undef IMPLEMENT_TEST +#undef BX_SIMD128_IMPLEMENT_TEST - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xyAB(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_xyAB(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[0]; result.uxyzw[1] = _a.uxyzw[1]; result.uxyzw[2] = _b.uxyzw[0]; @@ -90,9 +117,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_ABxy(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_ABxy(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _b.uxyzw[0]; result.uxyzw[1] = _b.uxyzw[1]; result.uxyzw[2] = _a.uxyzw[0]; @@ -100,9 +128,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_CDzw(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_CDzw(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _b.uxyzw[2]; result.uxyzw[1] = _b.uxyzw[3]; result.uxyzw[2] = _a.uxyzw[2]; @@ -110,9 +139,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_zwCD(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_zwCD(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[2]; result.uxyzw[1] = _a.uxyzw[3]; result.uxyzw[2] = _b.uxyzw[2]; @@ -120,9 +150,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_xAyB(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_xAyB(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[0]; result.uxyzw[1] = _b.uxyzw[0]; result.uxyzw[2] = _a.uxyzw[1]; @@ -130,9 +161,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_yBxA(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_yBxA(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[1]; result.uxyzw[1] = _b.uxyzw[1]; result.uxyzw[2] = _a.uxyzw[0]; @@ -140,9 +172,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_zCwD(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_zCwD(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[2]; result.uxyzw[1] = _b.uxyzw[2]; result.uxyzw[2] = _a.uxyzw[3]; @@ -150,9 +183,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_shuf_CzDw(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_shuf_CzDw(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _b.uxyzw[2]; result.uxyzw[1] = _a.uxyzw[2]; result.uxyzw[2] = _b.uxyzw[3]; @@ -160,30 +194,35 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float float4_x(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE float simd_x(simd128_ref_t _a) { return _a.fxyzw[0]; } - BX_FLOAT4_FORCE_INLINE float float4_y(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE float simd_y(simd128_ref_t _a) { return _a.fxyzw[1]; } - BX_FLOAT4_FORCE_INLINE float float4_z(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE float simd_z(simd128_ref_t _a) { return _a.fxyzw[2]; } - BX_FLOAT4_FORCE_INLINE float float4_w(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE float simd_w(simd128_ref_t _a) { return _a.fxyzw[3]; } - BX_FLOAT4_FORCE_INLINE float4_t float4_ld(const void* _ptr) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_ld(const void* _ptr) { const uint32_t* input = reinterpret_cast(_ptr); - float4_t result; + simd128_ref_t result; result.uxyzw[0] = input[0]; result.uxyzw[1] = input[1]; result.uxyzw[2] = input[2]; @@ -191,7 +230,8 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE void float4_st(void* _ptr, float4_t _a) + template<> + BX_SIMD_FORCE_INLINE void simd_st(void* _ptr, simd128_ref_t _a) { uint32_t* result = reinterpret_cast(_ptr); result[0] = _a.uxyzw[0]; @@ -200,13 +240,15 @@ IMPLEMENT_TEST(xyzw , 0xf); result[3] = _a.uxyzw[3]; } - BX_FLOAT4_FORCE_INLINE void float4_stx(void* _ptr, float4_t _a) + template<> + BX_SIMD_FORCE_INLINE void simd_stx(void* _ptr, simd128_ref_t _a) { uint32_t* result = reinterpret_cast(_ptr); result[0] = _a.uxyzw[0]; } - BX_FLOAT4_FORCE_INLINE void float4_stream(void* _ptr, float4_t _a) + template<> + BX_SIMD_FORCE_INLINE void simd_stream(void* _ptr, simd128_ref_t _a) { uint32_t* result = reinterpret_cast(_ptr); result[0] = _a.uxyzw[0]; @@ -215,9 +257,10 @@ IMPLEMENT_TEST(xyzw , 0xf); result[3] = _a.uxyzw[3]; } - BX_FLOAT4_FORCE_INLINE float4_t float4_ld(float _x, float _y, float _z, float _w) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_ld(float _x, float _y, float _z, float _w) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = _x; result.fxyzw[1] = _y; result.fxyzw[2] = _z; @@ -225,9 +268,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _x; result.uxyzw[1] = _y; result.uxyzw[2] = _z; @@ -235,10 +279,11 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_splat(const void* _ptr) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_splat(const void* _ptr) { const uint32_t val = *reinterpret_cast(_ptr); - float4_t result; + simd128_ref_t result; result.uxyzw[0] = val; result.uxyzw[1] = val; result.uxyzw[2] = val; @@ -246,24 +291,28 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_splat(float _a) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_splat(float _a) { - return float4_ld(_a, _a, _a, _a); + return simd_ld(_a, _a, _a, _a); } - BX_FLOAT4_FORCE_INLINE float4_t float4_isplat(uint32_t _a) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_isplat(uint32_t _a) { - return float4_ild(_a, _a, _a, _a); + return simd_ild(_a, _a, _a, _a); } - BX_FLOAT4_FORCE_INLINE float4_t float4_zero() + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_zero() { - return float4_ild(0, 0, 0, 0); + return simd_ild(0, 0, 0, 0); } - BX_FLOAT4_FORCE_INLINE float4_t float4_itof(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_itof(simd128_ref_t _a) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = (float)_a.ixyzw[0]; result.fxyzw[1] = (float)_a.ixyzw[1]; result.fxyzw[2] = (float)_a.ixyzw[2]; @@ -271,9 +320,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_ftoi(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_ftoi(simd128_ref_t _a) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = (int)_a.fxyzw[0]; result.ixyzw[1] = (int)_a.fxyzw[1]; result.ixyzw[2] = (int)_a.fxyzw[2]; @@ -281,17 +331,16 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_round(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_round(simd128_ref_t _a) { - const float4_t tmp = float4_ftoi(_a); - const float4_t result = float4_itof(tmp); - - return result; + return simd_round_ni(_a); } - BX_FLOAT4_FORCE_INLINE float4_t float4_add(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_add(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = _a.fxyzw[0] + _b.fxyzw[0]; result.fxyzw[1] = _a.fxyzw[1] + _b.fxyzw[1]; result.fxyzw[2] = _a.fxyzw[2] + _b.fxyzw[2]; @@ -299,9 +348,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_sub(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_sub(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = _a.fxyzw[0] - _b.fxyzw[0]; result.fxyzw[1] = _a.fxyzw[1] - _b.fxyzw[1]; result.fxyzw[2] = _a.fxyzw[2] - _b.fxyzw[2]; @@ -309,9 +359,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_mul(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_mul(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = _a.fxyzw[0] * _b.fxyzw[0]; result.fxyzw[1] = _a.fxyzw[1] * _b.fxyzw[1]; result.fxyzw[2] = _a.fxyzw[2] * _b.fxyzw[2]; @@ -319,9 +370,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_div(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_div(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = _a.fxyzw[0] / _b.fxyzw[0]; result.fxyzw[1] = _a.fxyzw[1] / _b.fxyzw[1]; result.fxyzw[2] = _a.fxyzw[2] / _b.fxyzw[2]; @@ -329,9 +381,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_rcp_est(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_rcp_est(simd128_ref_t _a) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = 1.0f / _a.fxyzw[0]; result.fxyzw[1] = 1.0f / _a.fxyzw[1]; result.fxyzw[2] = 1.0f / _a.fxyzw[2]; @@ -339,9 +392,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_sqrt(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_sqrt(simd128_ref_t _a) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = sqrtf(_a.fxyzw[0]); result.fxyzw[1] = sqrtf(_a.fxyzw[1]); result.fxyzw[2] = sqrtf(_a.fxyzw[2]); @@ -349,9 +403,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_rsqrt_est(float4_t _a) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_rsqrt_est(simd128_ref_t _a) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = 1.0f / sqrtf(_a.fxyzw[0]); result.fxyzw[1] = 1.0f / sqrtf(_a.fxyzw[1]); result.fxyzw[2] = 1.0f / sqrtf(_a.fxyzw[2]); @@ -359,9 +414,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpeq(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_cmpeq(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.fxyzw[0] == _b.fxyzw[0] ? 0xffffffff : 0x0; result.ixyzw[1] = _a.fxyzw[1] == _b.fxyzw[1] ? 0xffffffff : 0x0; result.ixyzw[2] = _a.fxyzw[2] == _b.fxyzw[2] ? 0xffffffff : 0x0; @@ -369,9 +425,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_cmplt(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_cmplt(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.fxyzw[0] < _b.fxyzw[0] ? 0xffffffff : 0x0; result.ixyzw[1] = _a.fxyzw[1] < _b.fxyzw[1] ? 0xffffffff : 0x0; result.ixyzw[2] = _a.fxyzw[2] < _b.fxyzw[2] ? 0xffffffff : 0x0; @@ -379,9 +436,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_cmple(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_cmple(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.fxyzw[0] <= _b.fxyzw[0] ? 0xffffffff : 0x0; result.ixyzw[1] = _a.fxyzw[1] <= _b.fxyzw[1] ? 0xffffffff : 0x0; result.ixyzw[2] = _a.fxyzw[2] <= _b.fxyzw[2] ? 0xffffffff : 0x0; @@ -389,9 +447,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpgt(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_cmpgt(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.fxyzw[0] > _b.fxyzw[0] ? 0xffffffff : 0x0; result.ixyzw[1] = _a.fxyzw[1] > _b.fxyzw[1] ? 0xffffffff : 0x0; result.ixyzw[2] = _a.fxyzw[2] > _b.fxyzw[2] ? 0xffffffff : 0x0; @@ -399,9 +458,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_cmpge(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_cmpge(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.fxyzw[0] >= _b.fxyzw[0] ? 0xffffffff : 0x0; result.ixyzw[1] = _a.fxyzw[1] >= _b.fxyzw[1] ? 0xffffffff : 0x0; result.ixyzw[2] = _a.fxyzw[2] >= _b.fxyzw[2] ? 0xffffffff : 0x0; @@ -409,9 +469,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_min(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_min(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = _a.fxyzw[0] < _b.fxyzw[0] ? _a.fxyzw[0] : _b.fxyzw[0]; result.fxyzw[1] = _a.fxyzw[1] < _b.fxyzw[1] ? _a.fxyzw[1] : _b.fxyzw[1]; result.fxyzw[2] = _a.fxyzw[2] < _b.fxyzw[2] ? _a.fxyzw[2] : _b.fxyzw[2]; @@ -419,9 +480,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_max(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_max(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.fxyzw[0] = _a.fxyzw[0] > _b.fxyzw[0] ? _a.fxyzw[0] : _b.fxyzw[0]; result.fxyzw[1] = _a.fxyzw[1] > _b.fxyzw[1] ? _a.fxyzw[1] : _b.fxyzw[1]; result.fxyzw[2] = _a.fxyzw[2] > _b.fxyzw[2] ? _a.fxyzw[2] : _b.fxyzw[2]; @@ -429,9 +491,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_and(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_and(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[0] & _b.uxyzw[0]; result.uxyzw[1] = _a.uxyzw[1] & _b.uxyzw[1]; result.uxyzw[2] = _a.uxyzw[2] & _b.uxyzw[2]; @@ -439,9 +502,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_andc(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_andc(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[0] & ~_b.uxyzw[0]; result.uxyzw[1] = _a.uxyzw[1] & ~_b.uxyzw[1]; result.uxyzw[2] = _a.uxyzw[2] & ~_b.uxyzw[2]; @@ -449,9 +513,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_or(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_or(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[0] | _b.uxyzw[0]; result.uxyzw[1] = _a.uxyzw[1] | _b.uxyzw[1]; result.uxyzw[2] = _a.uxyzw[2] | _b.uxyzw[2]; @@ -459,9 +524,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_xor(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_xor(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[0] ^ _b.uxyzw[0]; result.uxyzw[1] = _a.uxyzw[1] ^ _b.uxyzw[1]; result.uxyzw[2] = _a.uxyzw[2] ^ _b.uxyzw[2]; @@ -469,9 +535,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_sll(float4_t _a, int _count) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_sll(simd128_ref_t _a, int _count) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[0] << _count; result.uxyzw[1] = _a.uxyzw[1] << _count; result.uxyzw[2] = _a.uxyzw[2] << _count; @@ -479,9 +546,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_srl(float4_t _a, int _count) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_srl(simd128_ref_t _a, int _count) { - float4_t result; + simd128_ref_t result; result.uxyzw[0] = _a.uxyzw[0] >> _count; result.uxyzw[1] = _a.uxyzw[1] >> _count; result.uxyzw[2] = _a.uxyzw[2] >> _count; @@ -489,9 +557,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_sra(float4_t _a, int _count) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_sra(simd128_ref_t _a, int _count) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.ixyzw[0] >> _count; result.ixyzw[1] = _a.ixyzw[1] >> _count; result.ixyzw[2] = _a.ixyzw[2] >> _count; @@ -499,9 +568,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_icmpeq(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_icmpeq(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.ixyzw[0] == _b.ixyzw[0] ? 0xffffffff : 0x0; result.ixyzw[1] = _a.ixyzw[1] == _b.ixyzw[1] ? 0xffffffff : 0x0; result.ixyzw[2] = _a.ixyzw[2] == _b.ixyzw[2] ? 0xffffffff : 0x0; @@ -509,9 +579,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_icmplt(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_icmplt(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.ixyzw[0] < _b.ixyzw[0] ? 0xffffffff : 0x0; result.ixyzw[1] = _a.ixyzw[1] < _b.ixyzw[1] ? 0xffffffff : 0x0; result.ixyzw[2] = _a.ixyzw[2] < _b.ixyzw[2] ? 0xffffffff : 0x0; @@ -519,9 +590,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_icmpgt(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_icmpgt(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.ixyzw[0] > _b.ixyzw[0] ? 0xffffffff : 0x0; result.ixyzw[1] = _a.ixyzw[1] > _b.ixyzw[1] ? 0xffffffff : 0x0; result.ixyzw[2] = _a.ixyzw[2] > _b.ixyzw[2] ? 0xffffffff : 0x0; @@ -529,9 +601,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_imin(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_imin(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.ixyzw[0] < _b.ixyzw[0] ? _a.ixyzw[0] : _b.ixyzw[0]; result.ixyzw[1] = _a.ixyzw[1] < _b.ixyzw[1] ? _a.ixyzw[1] : _b.ixyzw[1]; result.ixyzw[2] = _a.ixyzw[2] < _b.ixyzw[2] ? _a.ixyzw[2] : _b.ixyzw[2]; @@ -539,9 +612,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_imax(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_imax(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.ixyzw[0] > _b.ixyzw[0] ? _a.ixyzw[0] : _b.ixyzw[0]; result.ixyzw[1] = _a.ixyzw[1] > _b.ixyzw[1] ? _a.ixyzw[1] : _b.ixyzw[1]; result.ixyzw[2] = _a.ixyzw[2] > _b.ixyzw[2] ? _a.ixyzw[2] : _b.ixyzw[2]; @@ -549,9 +623,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_iadd(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_iadd(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.ixyzw[0] + _b.ixyzw[0]; result.ixyzw[1] = _a.ixyzw[1] + _b.ixyzw[1]; result.ixyzw[2] = _a.ixyzw[2] + _b.ixyzw[2]; @@ -559,9 +634,10 @@ IMPLEMENT_TEST(xyzw , 0xf); return result; } - BX_FLOAT4_FORCE_INLINE float4_t float4_isub(float4_t _a, float4_t _b) + template<> + BX_SIMD_FORCE_INLINE simd128_ref_t simd_isub(simd128_ref_t _a, simd128_ref_t _b) { - float4_t result; + simd128_ref_t result; result.ixyzw[0] = _a.ixyzw[0] - _b.ixyzw[0]; result.ixyzw[1] = _a.ixyzw[1] - _b.ixyzw[1]; result.ixyzw[2] = _a.ixyzw[2] - _b.ixyzw[2]; @@ -571,34 +647,4 @@ IMPLEMENT_TEST(xyzw , 0xf); } // namespace bx -#define float4_shuf_xAzC float4_shuf_xAzC_ni -#define float4_shuf_yBwD float4_shuf_yBwD_ni -#define float4_rcp float4_rcp_ni -#define float4_orx float4_orx_ni -#define float4_orc float4_orc_ni -#define float4_neg float4_neg_ni -#define float4_madd float4_madd_ni -#define float4_nmsub float4_nmsub_ni -#define float4_div_nr float4_div_nr_ni -#define float4_selb float4_selb_ni -#define float4_sels float4_sels_ni -#define float4_not float4_not_ni -#define float4_abs float4_abs_ni -#define float4_clamp float4_clamp_ni -#define float4_lerp float4_lerp_ni -#define float4_rsqrt float4_rsqrt_ni -#define float4_rsqrt_nr float4_rsqrt_nr_ni -#define float4_rsqrt_carmack float4_rsqrt_carmack_ni -#define float4_sqrt_nr float4_sqrt_nr_ni -#define float4_log2 float4_log2_ni -#define float4_exp2 float4_exp2_ni -#define float4_pow float4_pow_ni -#define float4_cross3 float4_cross3_ni -#define float4_normalize3 float4_normalize3_ni -#define float4_dot3 float4_dot3_ni -#define float4_dot float4_dot_ni -#define float4_ceil float4_ceil_ni -#define float4_floor float4_floor_ni -#include "float4_ni.h" - -#endif // BX_FLOAT4_REF_H_HEADER_GUARD +#endif // BX_SIMD128_REF_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/simd128_sse.inl b/3rdparty/bx/include/bx/simd128_sse.inl new file mode 100644 index 00000000000..b0ed8520ab4 --- /dev/null +++ b/3rdparty/bx/include/bx/simd128_sse.inl @@ -0,0 +1,647 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#ifndef BX_SIMD128_SSE_H_HEADER_GUARD +#define BX_SIMD128_SSE_H_HEADER_GUARD + +#include "simd_ni.inl" + +namespace bx +{ +#define ELEMx 0 +#define ELEMy 1 +#define ELEMz 2 +#define ELEMw 3 +#define BX_SIMD128_IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ + template<> \ + BX_SIMD_FORCE_INLINE simd128_sse_t simd_swiz_##_x##_y##_z##_w(simd128_sse_t _a) \ + { \ + return _mm_shuffle_ps( _a, _a, _MM_SHUFFLE(ELEM##_w, ELEM##_z, ELEM##_y, ELEM##_x ) ); \ + } + +#include "simd128_swizzle.inl" + +#undef BX_SIMD128_IMPLEMENT_SWIZZLE +#undef ELEMw +#undef ELEMz +#undef ELEMy +#undef ELEMx + +#define BX_SIMD128_IMPLEMENT_TEST(_xyzw, _mask) \ + template<> \ + BX_SIMD_FORCE_INLINE bool simd_test_any_##_xyzw(simd128_sse_t _test) \ + { \ + return 0x0 != (_mm_movemask_ps(_test)&(_mask) ); \ + } \ + \ + template<> \ + BX_SIMD_FORCE_INLINE bool simd_test_all_##_xyzw(simd128_sse_t _test) \ + { \ + return (_mask) == (_mm_movemask_ps(_test)&(_mask) ); \ + } + +BX_SIMD128_IMPLEMENT_TEST(x , 0x1); +BX_SIMD128_IMPLEMENT_TEST(y , 0x2); +BX_SIMD128_IMPLEMENT_TEST(xy , 0x3); +BX_SIMD128_IMPLEMENT_TEST(z , 0x4); +BX_SIMD128_IMPLEMENT_TEST(xz , 0x5); +BX_SIMD128_IMPLEMENT_TEST(yz , 0x6); +BX_SIMD128_IMPLEMENT_TEST(xyz , 0x7); +BX_SIMD128_IMPLEMENT_TEST(w , 0x8); +BX_SIMD128_IMPLEMENT_TEST(xw , 0x9); +BX_SIMD128_IMPLEMENT_TEST(yw , 0xa); +BX_SIMD128_IMPLEMENT_TEST(xyw , 0xb); +BX_SIMD128_IMPLEMENT_TEST(zw , 0xc); +BX_SIMD128_IMPLEMENT_TEST(xzw , 0xd); +BX_SIMD128_IMPLEMENT_TEST(yzw , 0xe); +BX_SIMD128_IMPLEMENT_TEST(xyzw , 0xf); + +#undef BX_SIMD128_IMPLEMENT_TEST + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_shuf_xyAB(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_movelh_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_shuf_ABxy(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_movelh_ps(_b, _a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_shuf_CDzw(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_movehl_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_shuf_zwCD(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_movehl_ps(_b, _a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_shuf_xAyB(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_unpacklo_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_shuf_yBxA(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_unpacklo_ps(_b, _a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_shuf_zCwD(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_unpackhi_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_shuf_CzDw(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_unpackhi_ps(_b, _a); + } + + template<> + BX_SIMD_FORCE_INLINE float simd_x(simd128_sse_t _a) + { + return _mm_cvtss_f32(_a); + } + + template<> + BX_SIMD_FORCE_INLINE float simd_y(simd128_sse_t _a) + { + const simd128_sse_t yyyy = simd_swiz_yyyy(_a); + const float result = _mm_cvtss_f32(yyyy); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE float simd_z(simd128_sse_t _a) + { + const simd128_sse_t zzzz = simd_swiz_zzzz(_a); + const float result = _mm_cvtss_f32(zzzz); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE float simd_w(simd128_sse_t _a) + { + const simd128_sse_t wwww = simd_swiz_wwww(_a); + const float result = _mm_cvtss_f32(wwww); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_ld(const void* _ptr) + { + return _mm_load_ps(reinterpret_cast(_ptr) ); + } + + template<> + BX_SIMD_FORCE_INLINE void simd_st(void* _ptr, simd128_sse_t _a) + { + _mm_store_ps(reinterpret_cast(_ptr), _a); + } + + template<> + BX_SIMD_FORCE_INLINE void simd_stx(void* _ptr, simd128_sse_t _a) + { + _mm_store_ss(reinterpret_cast(_ptr), _a); + } + + template<> + BX_SIMD_FORCE_INLINE void simd_stream(void* _ptr, simd128_sse_t _a) + { + _mm_stream_ps(reinterpret_cast(_ptr), _a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_ld(float _x, float _y, float _z, float _w) + { + return _mm_set_ps(_w, _z, _y, _x); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) + { + const __m128i set = _mm_set_epi32(_w, _z, _y, _x); + const simd128_sse_t result = _mm_castsi128_ps(set); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_splat(const void* _ptr) + { + const simd128_sse_t x___ = _mm_load_ss(reinterpret_cast(_ptr) ); + const simd128_sse_t result = simd_swiz_xxxx(x___); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_splat(float _a) + { + return _mm_set1_ps(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_isplat(uint32_t _a) + { + const __m128i splat = _mm_set1_epi32(_a); + const simd128_sse_t result = _mm_castsi128_ps(splat); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_zero() + { + return _mm_setzero_ps(); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_itof(simd128_sse_t _a) + { + const __m128i itof = _mm_castps_si128(_a); + const simd128_sse_t result = _mm_cvtepi32_ps(itof); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_ftoi(simd128_sse_t _a) + { + const __m128i ftoi = _mm_cvtps_epi32(_a); + const simd128_sse_t result = _mm_castsi128_ps(ftoi); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_round(simd128_sse_t _a) + { +#if defined(__SSE4_1__) + return _mm_round_ps(_a, _MM_FROUND_NINT); +#else + const __m128i round = _mm_cvtps_epi32(_a); + const simd128_sse_t result = _mm_cvtepi32_ps(round); + + return result; +#endif // defined(__SSE4_1__) + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_add(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_add_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_sub(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_sub_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_mul(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_mul_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_div(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_div_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_rcp_est(simd128_sse_t _a) + { + return _mm_rcp_ps(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_sqrt(simd128_sse_t _a) + { + return _mm_sqrt_ps(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_rsqrt_est(simd128_sse_t _a) + { + return _mm_rsqrt_ps(_a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_dot3(simd128_sse_t _a, simd128_sse_t _b) + { +#if defined(__SSE4_1__) + return _mm_dp_ps(_a, _b, 0x77); +#else + return simd_dot3_ni(_a, _b); +#endif // defined(__SSE4__) + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_dot(simd128_sse_t _a, simd128_sse_t _b) + { +#if defined(__SSE4_1__) + return _mm_dp_ps(_a, _b, 0xFF); +#else + return simd_dot_ni(_a, _b); +#endif // defined(__SSE4__) + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_cmpeq(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_cmpeq_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_cmplt(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_cmplt_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_cmple(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_cmple_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_cmpgt(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_cmpgt_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_cmpge(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_cmpge_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_min(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_min_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_max(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_max_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_and(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_and_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_andc(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_andnot_ps(_b, _a); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_or(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_or_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_xor(simd128_sse_t _a, simd128_sse_t _b) + { + return _mm_xor_ps(_a, _b); + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_sll(simd128_sse_t _a, int _count) + { + const __m128i a = _mm_castps_si128(_a); + const __m128i shift = _mm_slli_epi32(a, _count); + const simd128_sse_t result = _mm_castsi128_ps(shift); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_srl(simd128_sse_t _a, int _count) + { + const __m128i a = _mm_castps_si128(_a); + const __m128i shift = _mm_srli_epi32(a, _count); + const simd128_sse_t result = _mm_castsi128_ps(shift); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_sra(simd128_sse_t _a, int _count) + { + const __m128i a = _mm_castps_si128(_a); + const __m128i shift = _mm_srai_epi32(a, _count); + const simd128_sse_t result = _mm_castsi128_ps(shift); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_icmpeq(simd128_sse_t _a, simd128_sse_t _b) + { + const __m128i tmp0 = _mm_castps_si128(_a); + const __m128i tmp1 = _mm_castps_si128(_b); + const __m128i tmp2 = _mm_cmpeq_epi32(tmp0, tmp1); + const simd128_sse_t result = _mm_castsi128_ps(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_icmplt(simd128_sse_t _a, simd128_sse_t _b) + { + const __m128i tmp0 = _mm_castps_si128(_a); + const __m128i tmp1 = _mm_castps_si128(_b); + const __m128i tmp2 = _mm_cmplt_epi32(tmp0, tmp1); + const simd128_sse_t result = _mm_castsi128_ps(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_icmpgt(simd128_sse_t _a, simd128_sse_t _b) + { + const __m128i tmp0 = _mm_castps_si128(_a); + const __m128i tmp1 = _mm_castps_si128(_b); + const __m128i tmp2 = _mm_cmpgt_epi32(tmp0, tmp1); + const simd128_sse_t result = _mm_castsi128_ps(tmp2); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_imin(simd128_sse_t _a, simd128_sse_t _b) + { +#if defined(__SSE4_1__) + const __m128i tmp0 = _mm_castps_si128(_a); + const __m128i tmp1 = _mm_castps_si128(_b); + const __m128i tmp2 = _mm_min_epi32(tmp0, tmp1); + const simd128_sse_t result = _mm_castsi128_ps(tmp2); + + return result; +#else + return simd_imin_ni(_a, _b); +#endif // defined(__SSE4_1__) + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_imax(simd128_sse_t _a, simd128_sse_t _b) + { +#if defined(__SSE4_1__) + const __m128i tmp0 = _mm_castps_si128(_a); + const __m128i tmp1 = _mm_castps_si128(_b); + const __m128i tmp2 = _mm_max_epi32(tmp0, tmp1); + const simd128_sse_t result = _mm_castsi128_ps(tmp2); + + return result; +#else + return simd_imax_ni(_a, _b); +#endif // defined(__SSE4_1__) + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_iadd(simd128_sse_t _a, simd128_sse_t _b) + { + const __m128i a = _mm_castps_si128(_a); + const __m128i b = _mm_castps_si128(_b); + const __m128i add = _mm_add_epi32(a, b); + const simd128_sse_t result = _mm_castsi128_ps(add); + + return result; + } + + template<> + BX_SIMD_FORCE_INLINE simd128_sse_t simd_isub(simd128_sse_t _a, simd128_sse_t _b) + { + const __m128i a = _mm_castps_si128(_a); + const __m128i b = _mm_castps_si128(_b); + const __m128i sub = _mm_sub_epi32(a, b); + const simd128_sse_t result = _mm_castsi128_ps(sub); + + return result; + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_shuf_xAzC(simd128_sse_t _a, simd128_sse_t _b) + { + return simd_shuf_xAzC_ni(_a, _b); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_shuf_yBwD(simd128_sse_t _a, simd128_sse_t _b) + { + return simd_shuf_yBwD_ni(_a, _b); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_rcp(simd128_sse_t _a) + { + return simd_rcp_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_orx(simd128_sse_t _a) + { + return simd_orx_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_orc(simd128_sse_t _a, simd128_sse_t _b) + { + return simd_orc_ni(_a, _b); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_neg(simd128_sse_t _a) + { + return simd_neg_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_madd(simd128_sse_t _a, simd128_sse_t _b, simd128_sse_t _c) + { + return simd_madd_ni(_a, _b, _c); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_nmsub(simd128_sse_t _a, simd128_sse_t _b, simd128_sse_t _c) + { + return simd_nmsub_ni(_a, _b, _c); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_div_nr(simd128_sse_t _a, simd128_sse_t _b) + { + return simd_div_nr_ni(_a, _b); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_selb(simd128_sse_t _mask, simd128_sse_t _a, simd128_sse_t _b) + { + return simd_selb_ni(_mask, _a, _b); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_sels(simd128_sse_t _test, simd128_sse_t _a, simd128_sse_t _b) + { + return simd_sels_ni(_test, _a, _b); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_not(simd128_sse_t _a) + { + return simd_not_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_abs(simd128_sse_t _a) + { + return simd_abs_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_clamp(simd128_sse_t _a, simd128_sse_t _min, simd128_sse_t _max) + { + return simd_clamp_ni(_a, _min, _max); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_lerp(simd128_sse_t _a, simd128_sse_t _b, simd128_sse_t _s) + { + return simd_lerp_ni(_a, _b, _s); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_rsqrt(simd128_sse_t _a) + { + return simd_rsqrt_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_rsqrt_nr(simd128_sse_t _a) + { + return simd_rsqrt_nr_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_rsqrt_carmack(simd128_sse_t _a) + { + return simd_rsqrt_carmack_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_sqrt_nr(simd128_sse_t _a) + { + return simd_sqrt_nr_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_log2(simd128_sse_t _a) + { + return simd_log2_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_exp2(simd128_sse_t _a) + { + return simd_exp2_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_pow(simd128_sse_t _a, simd128_sse_t _b) + { + return simd_pow_ni(_a, _b); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_cross3(simd128_sse_t _a, simd128_sse_t _b) + { + return simd_cross3_ni(_a, _b); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_normalize3(simd128_sse_t _a) + { + return simd_normalize3_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_ceil(simd128_sse_t _a) + { + return simd_ceil_ni(_a); + } + + template<> + BX_SIMD_INLINE simd128_sse_t simd_floor(simd128_sse_t _a) + { + return simd_floor_ni(_a); + } + + typedef simd128_sse_t simd128_t; + +} // namespace bx + +#endif // BX_SIMD128_SSE_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/simd128_swizzle.inl b/3rdparty/bx/include/bx/simd128_swizzle.inl new file mode 100644 index 00000000000..4185be81b60 --- /dev/null +++ b/3rdparty/bx/include/bx/simd128_swizzle.inl @@ -0,0 +1,266 @@ +/* + * Copyright 2010-2015 Branimir Karadzic. All rights reserved. + * License: http://www.opensource.org/licenses/BSD-2-Clause + */ + +#ifndef BX_SIMD_T_H_HEADER_GUARD +# error "xmacro file, must be included from simd_*.h" +#endif // BX_FLOAT4_T_H_HEADER_GUARD + +// included from float4_t.h +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, x, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, z, z) +// BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, y, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, z, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(x, w, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, x, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, y, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, z, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(y, w, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, x, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, y, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, z, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(z, w, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, x, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, y, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, z, w, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, x, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, x, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, x, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, x, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, y, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, y, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, y, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, y, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, z, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, z, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, z, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, z, w) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, w, x) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, w, y) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, w, z) +BX_SIMD128_IMPLEMENT_SWIZZLE(w, w, w, w) diff --git a/3rdparty/bx/include/bx/simd256_avx.inl b/3rdparty/bx/include/bx/simd256_avx.inl new file mode 100644 index 00000000000..c0f925e4160 --- /dev/null +++ b/3rdparty/bx/include/bx/simd256_avx.inl @@ -0,0 +1,9 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#ifndef BX_SIMD256_AVX_H_HEADER_GUARD +#define BX_SIMD256_AVX_H_HEADER_GUARD + +#endif // BX_SIMD256_AVX_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/simd256_ref.inl b/3rdparty/bx/include/bx/simd256_ref.inl new file mode 100644 index 00000000000..84ecd6e5f9f --- /dev/null +++ b/3rdparty/bx/include/bx/simd256_ref.inl @@ -0,0 +1,9 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#ifndef BX_SIMD256_REF_H_HEADER_GUARD +#define BX_SIMD256_REF_H_HEADER_GUARD + +#endif // BX_SIMD256_REF_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/simd_ni.inl b/3rdparty/bx/include/bx/simd_ni.inl new file mode 100644 index 00000000000..cab10861e5e --- /dev/null +++ b/3rdparty/bx/include/bx/simd_ni.inl @@ -0,0 +1,558 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#ifndef BX_SIMD_NI_H_HEADER_GUARD +#define BX_SIMD_NI_H_HEADER_GUARD + +namespace bx +{ + template + BX_SIMD_INLINE Ty simd_shuf_xAzC_ni(Ty _a, Ty _b) + { + const Ty xAyB = simd_shuf_xAyB(_a, _b); + const Ty zCwD = simd_shuf_zCwD(_a, _b); + const Ty result = simd_shuf_xyAB(xAyB, zCwD); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_shuf_yBwD_ni(Ty _a, Ty _b) + { + const Ty xAyB = simd_shuf_xAyB(_a, _b); + const Ty zCwD = simd_shuf_zCwD(_a, _b); + const Ty result = simd_shuf_zwCD(xAyB, zCwD); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_madd_ni(Ty _a, Ty _b, Ty _c) + { + const Ty mul = simd_mul(_a, _b); + const Ty result = simd_add(mul, _c); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_nmsub_ni(Ty _a, Ty _b, Ty _c) + { + const Ty mul = simd_mul(_a, _b); + const Ty result = simd_sub(_c, mul); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_div_nr_ni(Ty _a, Ty _b) + { + const Ty oneish = simd_isplat(0x3f800001); + const Ty est = simd_rcp_est(_b); + const Ty iter0 = simd_mul(_a, est); + const Ty tmp1 = simd_nmsub(_b, est, oneish); + const Ty result = simd_madd(tmp1, iter0, iter0); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_rcp_ni(Ty _a) + { + const Ty one = simd_splat(1.0f); + const Ty result = simd_div(one, _a); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_orx_ni(Ty _a) + { + const Ty zwxy = simd_swiz_zwxy(_a); + const Ty tmp0 = simd_or(_a, zwxy); + const Ty tmp1 = simd_swiz_yyyy(_a); + const Ty tmp2 = simd_or(tmp0, tmp1); + const Ty mf000 = simd_ild(UINT32_MAX, 0, 0, 0); + const Ty result = simd_and(tmp2, mf000); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_orc_ni(Ty _a, Ty _b) + { + const Ty aorb = simd_or(_a, _b); + const Ty mffff = simd_isplat(UINT32_MAX); + const Ty result = simd_xor(aorb, mffff); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_neg_ni(Ty _a) + { + const Ty zero = simd_zero(); + const Ty result = simd_sub(zero, _a); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_selb_ni(Ty _mask, Ty _a, Ty _b) + { + const Ty sel_a = simd_and(_a, _mask); + const Ty sel_b = simd_andc(_b, _mask); + const Ty result = simd_or(sel_a, sel_b); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_sels_ni(Ty _test, Ty _a, Ty _b) + { + const Ty mask = simd_sra(_test, 31); + const Ty result = simd_selb(mask, _a, _b); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_not_ni(Ty _a) + { + const Ty mffff = simd_isplat(UINT32_MAX); + const Ty result = simd_xor(_a, mffff); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_min_ni(Ty _a, Ty _b) + { + const Ty mask = simd_cmplt(_a, _b); + const Ty result = simd_selb(mask, _a, _b); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_max_ni(Ty _a, Ty _b) + { + const Ty mask = simd_cmpgt(_a, _b); + const Ty result = simd_selb(mask, _a, _b); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_abs_ni(Ty _a) + { + const Ty a_neg = simd_neg(_a); + const Ty result = simd_max(a_neg, _a); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_imin_ni(Ty _a, Ty _b) + { + const Ty mask = simd_icmplt(_a, _b); + const Ty result = simd_selb(mask, _a, _b); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_imax_ni(Ty _a, Ty _b) + { + const Ty mask = simd_icmpgt(_a, _b); + const Ty result = simd_selb(mask, _a, _b); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_clamp_ni(Ty _a, Ty _min, Ty _max) + { + const Ty tmp = simd_min(_a, _max); + const Ty result = simd_max(tmp, _min); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_lerp_ni(Ty _a, Ty _b, Ty _s) + { + const Ty ba = simd_sub(_b, _a); + const Ty result = simd_madd(_s, ba, _a); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_sqrt_nr_ni(Ty _a) + { + const Ty half = simd_splat(0.5f); + const Ty one = simd_splat(1.0f); + const Ty tmp0 = simd_rsqrt_est(_a); + const Ty tmp1 = simd_mul(tmp0, _a); + const Ty tmp2 = simd_mul(tmp1, half); + const Ty tmp3 = simd_nmsub(tmp0, tmp1, one); + const Ty result = simd_madd(tmp3, tmp2, tmp1); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_sqrt_nr1_ni(Ty _a) + { + const Ty half = simd_splat(0.5f); + + Ty result = _a; + for (uint32_t ii = 0; ii < 11; ++ii) + { + const Ty tmp1 = simd_div(_a, result); + const Ty tmp2 = simd_add(tmp1, result); + result = simd_mul(tmp2, half); + } + + return result; + } + + template + BX_SIMD_INLINE Ty simd_rsqrt_ni(Ty _a) + { + const Ty one = simd_splat(1.0f); + const Ty sqrt = simd_sqrt(_a); + const Ty result = simd_div(one, sqrt); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_rsqrt_nr_ni(Ty _a) + { + const Ty rsqrt = simd_rsqrt_est(_a); + const Ty iter0 = simd_mul(_a, rsqrt); + const Ty iter1 = simd_mul(iter0, rsqrt); + const Ty half = simd_splat(0.5f); + const Ty half_rsqrt = simd_mul(half, rsqrt); + const Ty three = simd_splat(3.0f); + const Ty three_sub_iter1 = simd_sub(three, iter1); + const Ty result = simd_mul(half_rsqrt, three_sub_iter1); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_rsqrt_carmack_ni(Ty _a) + { + const Ty half = simd_splat(0.5f); + const Ty ah = simd_mul(half, _a); + const Ty ashift = simd_sra(_a, 1); + const Ty magic = simd_isplat(0x5f3759df); + const Ty msuba = simd_isub(magic, ashift); + const Ty msubasq = simd_mul(msuba, msuba); + const Ty tmp0 = simd_splat(1.5f); + const Ty tmp1 = simd_mul(ah, msubasq); + const Ty tmp2 = simd_sub(tmp0, tmp1); + const Ty result = simd_mul(msuba, tmp2); + + return result; + } + + namespace simd_logexp_detail + { + template + BX_SIMD_INLINE Ty simd_poly1(Ty _a, float _b, float _c) + { + const Ty bbbb = simd_splat(_b); + const Ty cccc = simd_splat(_c); + const Ty result = simd_madd(cccc, _a, bbbb); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_poly2(Ty _a, float _b, float _c, float _d) + { + const Ty bbbb = simd_splat(_b); + const Ty poly = simd_poly1(_a, _c, _d); + const Ty result = simd_madd(poly, _a, bbbb); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_poly3(Ty _a, float _b, float _c, float _d, float _e) + { + const Ty bbbb = simd_splat(_b); + const Ty poly = simd_poly2(_a, _c, _d, _e); + const Ty result = simd_madd(poly, _a, bbbb); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_poly4(Ty _a, float _b, float _c, float _d, float _e, float _f) + { + const Ty bbbb = simd_splat(_b); + const Ty poly = simd_poly3(_a, _c, _d, _e, _f); + const Ty result = simd_madd(poly, _a, bbbb); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_poly5(Ty _a, float _b, float _c, float _d, float _e, float _f, float _g) + { + const Ty bbbb = simd_splat(_b); + const Ty poly = simd_poly4(_a, _c, _d, _e, _f, _g); + const Ty result = simd_madd(poly, _a, bbbb); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_logpoly(Ty _a) + { +#if 1 + const Ty result = simd_poly5(_a + , 3.11578814719469302614f, -3.32419399085241980044f + , 2.59883907202499966007f, -1.23152682416275988241f + , 0.318212422185251071475f, -0.0344359067839062357313f + ); +#elif 0 + const Ty result = simd_poly4(_a + , 2.8882704548164776201f, -2.52074962577807006663f + , 1.48116647521213171641f, -0.465725644288844778798f + , 0.0596515482674574969533f + ); +#elif 0 + const Ty result = simd_poly3(_a + , 2.61761038894603480148f, -1.75647175389045657003f + , 0.688243882994381274313f, -0.107254423828329604454f + ); +#else + const Ty result = simd_poly2(_a + , 2.28330284476918490682f, -1.04913055217340124191f + , 0.204446009836232697516f + ); +#endif + + return result; + } + + template + BX_SIMD_INLINE Ty simd_exppoly(Ty _a) + { +#if 1 + const Ty result = simd_poly5(_a + , 9.9999994e-1f, 6.9315308e-1f + , 2.4015361e-1f, 5.5826318e-2f + , 8.9893397e-3f, 1.8775767e-3f + ); +#elif 0 + const Ty result = simd_poly4(_a + , 1.0000026f, 6.9300383e-1f + , 2.4144275e-1f, 5.2011464e-2f + , 1.3534167e-2f + ); +#elif 0 + const Ty result = simd_poly3(_a + , 9.9992520e-1f, 6.9583356e-1f + , 2.2606716e-1f, 7.8024521e-2f + ); +#else + const Ty result = simd_poly2(_a + , 1.0017247f, 6.5763628e-1f + , 3.3718944e-1f + ); +#endif // 0 + + return result; + } + } // namespace simd_internal + + template + BX_SIMD_INLINE Ty simd_log2_ni(Ty _a) + { + const Ty expmask = simd_isplat(0x7f800000); + const Ty mantmask = simd_isplat(0x007fffff); + const Ty one = simd_splat(1.0f); + + const Ty c127 = simd_isplat(127); + const Ty aexp = simd_and(_a, expmask); + const Ty aexpsr = simd_srl(aexp, 23); + const Ty tmp0 = simd_isub(aexpsr, c127); + const Ty exp = simd_itof(tmp0); + + const Ty amask = simd_and(_a, mantmask); + const Ty mant = simd_or(amask, one); + + const Ty poly = simd_logexp_detail::simd_logpoly(mant); + + const Ty mandiff = simd_sub(mant, one); + const Ty result = simd_madd(poly, mandiff, exp); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_exp2_ni(Ty _a) + { + const Ty min = simd_splat( 129.0f); + const Ty max = simd_splat(-126.99999f); + const Ty tmp0 = simd_min(_a, min); + const Ty aaaa = simd_max(tmp0, max); + + const Ty half = simd_splat(0.5f); + const Ty tmp2 = simd_sub(aaaa, half); + const Ty ipart = simd_ftoi(tmp2); + const Ty iround = simd_itof(ipart); + const Ty fpart = simd_sub(aaaa, iround); + + const Ty c127 = simd_isplat(127); + const Ty tmp5 = simd_iadd(ipart, c127); + const Ty expipart = simd_sll(tmp5, 23); + + const Ty expfpart = simd_logexp_detail::simd_exppoly(fpart); + + const Ty result = simd_mul(expipart, expfpart); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_pow_ni(Ty _a, Ty _b) + { + const Ty alog2 = simd_log2(_a); + const Ty alog2b = simd_mul(alog2, _b); + const Ty result = simd_exp2(alog2b); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_dot3_ni(Ty _a, Ty _b) + { + const Ty xyzw = simd_mul(_a, _b); + const Ty xxxx = simd_swiz_xxxx(xyzw); + const Ty yyyy = simd_swiz_yyyy(xyzw); + const Ty zzzz = simd_swiz_zzzz(xyzw); + const Ty tmp1 = simd_add(xxxx, yyyy); + const Ty result = simd_add(zzzz, tmp1); + return result; + } + + template + BX_SIMD_INLINE Ty simd_cross3_ni(Ty _a, Ty _b) + { + // a.yzx * b.zxy - a.zxy * b.yzx == (a * b.yzx - a.yzx * b).yzx +#if 0 + const Ty a_yzxw = simd_swiz_yzxw(_a); + const Ty a_zxyw = simd_swiz_zxyw(_a); + const Ty b_zxyw = simd_swiz_zxyw(_b); + const Ty b_yzxw = simd_swiz_yzxw(_b); + const Ty tmp = simd_mul(a_yzxw, b_zxyw); + const Ty result = simd_nmsub(a_zxyw, b_yzxw, tmp); +#else + const Ty a_yzxw = simd_swiz_yzxw(_a); + const Ty b_yzxw = simd_swiz_yzxw(_b); + const Ty tmp0 = simd_mul(_a, b_yzxw); + const Ty tmp1 = simd_nmsub(a_yzxw, _b, tmp0); + const Ty result = simd_swiz_yzxw(tmp1); +#endif + + return result; + } + + template + BX_SIMD_INLINE Ty simd_normalize3_ni(Ty _a) + { + const Ty dot3 = simd_dot3(_a, _a); + const Ty invSqrt = simd_rsqrt(dot3); + const Ty result = simd_mul(_a, invSqrt); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_dot_ni(Ty _a, Ty _b) + { + const Ty xyzw = simd_mul(_a, _b); + const Ty yzwx = simd_swiz_yzwx(xyzw); + const Ty tmp0 = simd_add(xyzw, yzwx); + const Ty zwxy = simd_swiz_zwxy(tmp0); + const Ty result = simd_add(tmp0, zwxy); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_ceil_ni(Ty _a) + { + const Ty tmp0 = simd_ftoi(_a); + const Ty tmp1 = simd_itof(tmp0); + const Ty mask = simd_cmplt(tmp1, _a); + const Ty one = simd_splat(1.0f); + const Ty tmp2 = simd_and(one, mask); + const Ty result = simd_add(tmp1, tmp2); + + return result; + } + + template + BX_SIMD_INLINE Ty simd_floor_ni(Ty _a) + { + const Ty tmp0 = simd_ftoi(_a); + const Ty tmp1 = simd_itof(tmp0); + const Ty mask = simd_cmpgt(tmp1, _a); + const Ty one = simd_splat(1.0f); + const Ty tmp2 = simd_and(one, mask); + const Ty result = simd_sub(tmp1, tmp2); + + return result; + } + + template + BX_SIMD_FORCE_INLINE Ty simd_round_ni(Ty _a) + { + const Ty tmp = simd_ftoi(_a); + const Ty result = simd_itof(tmp); + + return result; + } + + template + BX_SIMD_INLINE bool simd_test_any_ni(Ty _a) + { + const Ty mask = simd_sra(_a, 31); + const Ty zwxy = simd_swiz_zwxy(mask); + const Ty tmp0 = simd_or(mask, zwxy); + const Ty tmp1 = simd_swiz_yyyy(tmp0); + const Ty tmp2 = simd_or(tmp0, tmp1); + int res; + simd_stx(&res, tmp2); + return 0 != res; + } + + template + BX_SIMD_INLINE bool simd_test_all_ni(Ty _a) + { + const Ty bits = simd_sra(_a, 31); + const Ty m1248 = simd_ild(1, 2, 4, 8); + const Ty mask = simd_and(bits, m1248); + const Ty zwxy = simd_swiz_zwxy(mask); + const Ty tmp0 = simd_or(mask, zwxy); + const Ty tmp1 = simd_swiz_yyyy(tmp0); + const Ty tmp2 = simd_or(tmp0, tmp1); + int res; + simd_stx(&res, tmp2); + return 0xf == res; + } + +} // namespace bx + +#endif // BX_SIMD_NI_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/simd_t.h b/3rdparty/bx/include/bx/simd_t.h new file mode 100644 index 00000000000..a2884f6e734 --- /dev/null +++ b/3rdparty/bx/include/bx/simd_t.h @@ -0,0 +1,438 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#ifndef BX_SIMD_T_H_HEADER_GUARD +#define BX_SIMD_T_H_HEADER_GUARD + +#include "bx.h" + +#define BX_SIMD_FORCE_INLINE BX_FORCE_INLINE +#define BX_SIMD_INLINE inline + +#define BX_SIMD_AVX 0 +#define BX_SIMD_LANGEXT 0 +#define BX_SIMD_NEON 0 +#define BX_SIMD_SSE 0 + +#if defined(__AVX__) || defined(__AVX2__) +# include +# undef BX_SIMD_AVX +# define BX_SIMD_AVX 1 +#endif // + +#if defined(__SSE2__) || (BX_COMPILER_MSVC && (BX_ARCH_64BIT || _M_IX86_FP >= 2) ) +# include // __m128i +# if defined(__SSE4_1__) +# include +# endif // defined(__SSE4_1__) +# include // __m128 +# undef BX_SIMD_SSE +# define BX_SIMD_SSE 1 +#elif defined(__ARM_NEON__) && !BX_COMPILER_CLANG +# include +# undef BX_SIMD_NEON +# define BX_SIMD_NEON 1 +#elif BX_COMPILER_CLANG \ + && !BX_PLATFORM_EMSCRIPTEN \ + && !BX_PLATFORM_IOS \ + && BX_CLANG_HAS_EXTENSION(attribute_ext_vector_type) +# include +# undef BX_SIMD_LANGEXT +# define BX_SIMD_LANGEXT 1 +#endif // + +namespace bx +{ +#define ELEMx 0 +#define ELEMy 1 +#define ELEMz 2 +#define ELEMw 3 +#define BX_SIMD128_IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ + template \ + BX_SIMD_FORCE_INLINE Ty simd_swiz_##_x##_y##_z##_w(Ty _a); +#include "simd128_swizzle.inl" + +#undef BX_SIMD128_IMPLEMENT_SWIZZLE +#undef ELEMw +#undef ELEMz +#undef ELEMy +#undef ELEMx + +#define BX_SIMD128_IMPLEMENT_TEST(_xyzw) \ + template \ + BX_SIMD_FORCE_INLINE bool simd_test_any_##_xyzw(Ty _test); \ + \ + template \ + BX_SIMD_FORCE_INLINE bool simd_test_all_##_xyzw(Ty _test) + +BX_SIMD128_IMPLEMENT_TEST(x ); +BX_SIMD128_IMPLEMENT_TEST(y ); +BX_SIMD128_IMPLEMENT_TEST(xy ); +BX_SIMD128_IMPLEMENT_TEST(z ); +BX_SIMD128_IMPLEMENT_TEST(xz ); +BX_SIMD128_IMPLEMENT_TEST(yz ); +BX_SIMD128_IMPLEMENT_TEST(xyz ); +BX_SIMD128_IMPLEMENT_TEST(w ); +BX_SIMD128_IMPLEMENT_TEST(xw ); +BX_SIMD128_IMPLEMENT_TEST(yw ); +BX_SIMD128_IMPLEMENT_TEST(xyw ); +BX_SIMD128_IMPLEMENT_TEST(zw ); +BX_SIMD128_IMPLEMENT_TEST(xzw ); +BX_SIMD128_IMPLEMENT_TEST(yzw ); +BX_SIMD128_IMPLEMENT_TEST(xyzw); +#undef BX_SIMD128_IMPLEMENT_TEST + + template + BX_SIMD_FORCE_INLINE Ty simd_shuf_xyAB(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_shuf_ABxy(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_shuf_CDzw(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_shuf_zwCD(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_shuf_xAyB(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_shuf_yBxA(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_shuf_zCwD(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_shuf_CzDw(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE float simd_x(Ty _a); + + template + BX_SIMD_FORCE_INLINE float simd_y(Ty _a); + + template + BX_SIMD_FORCE_INLINE float simd_z(Ty _a); + + template + BX_SIMD_FORCE_INLINE float simd_w(Ty _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_ld(const void* _ptr); + + template + BX_SIMD_FORCE_INLINE void simd_st(void* _ptr, Ty _a); + + template + BX_SIMD_FORCE_INLINE void simd_stx(void* _ptr, Ty _a); + + template + BX_SIMD_FORCE_INLINE void simd_stream(void* _ptr, Ty _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_ld(float _x, float _y, float _z, float _w); + + template + BX_SIMD_FORCE_INLINE Ty simd_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w); + + template + BX_SIMD_FORCE_INLINE Ty simd_splat(const void* _ptr); + + template + BX_SIMD_FORCE_INLINE Ty simd_splat(float _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_isplat(uint32_t _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_zero(); + + template + BX_SIMD_FORCE_INLINE Ty simd_itof(Ty _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_ftoi(Ty _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_round(Ty _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_add(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_sub(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_mul(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_div(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_rcp_est(Ty _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_sqrt(Ty _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_rsqrt_est(Ty _a); + + template + BX_SIMD_FORCE_INLINE Ty simd_dot3(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_dot(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_cmpeq(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_cmplt(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_cmple(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_cmpgt(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_cmpge(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_min(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_max(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_and(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_andc(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_or(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_xor(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_sll(Ty _a, int _count); + + template + BX_SIMD_FORCE_INLINE Ty simd_srl(Ty _a, int _count); + + template + BX_SIMD_FORCE_INLINE Ty simd_sra(Ty _a, int _count); + + template + BX_SIMD_FORCE_INLINE Ty simd_icmpeq(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_icmplt(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_icmpgt(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_imin(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_imax(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_iadd(Ty _a, Ty _b); + + template + BX_SIMD_FORCE_INLINE Ty simd_isub(Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_shuf_xAzC(Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_shuf_yBwD(Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_rcp(Ty _a); + + template + BX_SIMD_INLINE Ty simd_orx(Ty _a); + + template + BX_SIMD_INLINE Ty simd_orc(Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_neg(Ty _a); + + template + BX_SIMD_INLINE Ty simd_madd(Ty _a, Ty _b, Ty _c); + + template + BX_SIMD_INLINE Ty simd_nmsub(Ty _a, Ty _b, Ty _c); + + template + BX_SIMD_INLINE Ty simd_div_nr(Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_selb(Ty _mask, Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_sels(Ty _test, Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_not(Ty _a); + + template + BX_SIMD_INLINE Ty simd_abs(Ty _a); + + template + BX_SIMD_INLINE Ty simd_clamp(Ty _a, Ty _min, Ty _max); + + template + BX_SIMD_INLINE Ty simd_lerp(Ty _a, Ty _b, Ty _s); + + template + BX_SIMD_INLINE Ty simd_rsqrt(Ty _a); + + template + BX_SIMD_INLINE Ty simd_rsqrt_nr(Ty _a); + + template + BX_SIMD_INLINE Ty simd_rsqrt_carmack(Ty _a); + + template + BX_SIMD_INLINE Ty simd_sqrt_nr(Ty _a); + + template + BX_SIMD_INLINE Ty simd_log2(Ty _a); + + template + BX_SIMD_INLINE Ty simd_exp2(Ty _a); + + template + BX_SIMD_INLINE Ty simd_pow(Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_cross3(Ty _a, Ty _b); + + template + BX_SIMD_INLINE Ty simd_normalize3(Ty _a); + + template + BX_SIMD_INLINE Ty simd_ceil(Ty _a); + + template + BX_SIMD_INLINE Ty simd_floor(Ty _a); + +#if BX_SIMD_AVX + typedef __m256 simd256_avx_t; +#endif // BX_SIMD_SSE + +#if BX_SIMD_LANGEXT + union simd128_langext_t + { + float __attribute__((vector_size(16))) vf; + int32_t __attribute__((vector_size(16))) vi; + uint32_t __attribute__((vector_size(16))) vu; + float fxyzw[4]; + int32_t ixyzw[4]; + uint32_t uxyzw[4]; + + }; +#endif // BX_SIMD_LANGEXT + +#if BX_SIMD_NEON + typedef float32x4_t simd128_neon_t; +#endif // BX_SIMD_NEON + +#if BX_SIMD_SSE + typedef __m128 simd128_sse_t; +#endif // BX_SIMD_SSE + + union simd128_ref_t + { + float fxyzw[4]; + int32_t ixyzw[4]; + uint32_t uxyzw[4]; + + }; + +} // namespace bx + +#if BX_SIMD_AVX +# include "simd256_avx.inl" +#endif // BX_SIMD_AVX + +#if BX_SIMD_LANGEXT +# include "simd128_langext.inl" +#endif // BX_SIMD_LANGEXT + +#if BX_SIMD_NEON +# include "simd128_neon.inl" +#endif // BX_SIMD_NEON + +#if BX_SIMD_SSE +# include "simd128_sse.inl" +#endif // BX_SIMD_SSE + +#include "simd128_ref.inl" +#include "simd256_ref.inl" + +namespace bx +{ +#if !( BX_SIMD_AVX \ + || BX_SIMD_LANGEXT \ + || BX_SIMD_NEON \ + || BX_SIMD_SSE \ + ) +# ifndef BX_SIMD_WARN_REFERENCE_IMPL +# define BX_SIMD_WARN_REFERENCE_IMPL 0 +# endif // BX_SIMD_WARN_REFERENCE_IMPL + +# if BX_SIMD_WARN_REFERENCE_IMPL +# pragma message("************************************\nUsing SIMD reference implementation!\n************************************") +# endif // BX_SIMD_WARN_REFERENCE_IMPL + + typedef simd128_ref_t simd128_t; +#endif // + + BX_SIMD_FORCE_INLINE simd128_t simd_zero() + { + return simd_zero(); + } + + BX_SIMD_FORCE_INLINE simd128_t simd_ld(const void* _ptr) + { + return simd_ld(_ptr); + } + + BX_SIMD_FORCE_INLINE simd128_t simd_ld(float _x, float _y, float _z, float _w) + { + return simd_ld(_x, _y, _z, _w); + } + + BX_SIMD_FORCE_INLINE simd128_t simd_ild(uint32_t _x, uint32_t _y, uint32_t _z, uint32_t _w) + { + return simd_ild(_x, _y, _z, _w); + } + + BX_SIMD_FORCE_INLINE simd128_t simd_splat(const void* _ptr) + { + return simd_splat(_ptr); + } + + BX_SIMD_FORCE_INLINE simd128_t simd_splat(float _a) + { + return simd_splat(_a); + } + + BX_SIMD_FORCE_INLINE simd128_t simd_isplat(uint32_t _a) + { + return simd_isplat(_a); + } +} // namespace bx + +#endif // BX_SIMD_T_H_HEADER_GUARD diff --git a/3rdparty/bx/include/bx/string.h b/3rdparty/bx/include/bx/string.h index 937f15d1def..1bd322528b3 100644 --- a/3rdparty/bx/include/bx/string.h +++ b/3rdparty/bx/include/bx/string.h @@ -30,7 +30,7 @@ namespace bx /// Case insensitive string compare. inline int32_t stricmp(const char* _a, const char* _b) { -#if BX_COMPILER_MSVC_COMPATIBLE +#if BX_CRT_MSVC return ::_stricmp(_a, _b); #else return ::strcasecmp(_a, _b); diff --git a/3rdparty/bx/scripts/bx.lua b/3rdparty/bx/scripts/bx.lua index aa09b050f8a..8cae8b419e8 100644 --- a/3rdparty/bx/scripts/bx.lua +++ b/3rdparty/bx/scripts/bx.lua @@ -21,4 +21,5 @@ project "bx" files { "../include/**.h", + "../include/**.inl", } diff --git a/3rdparty/bx/scripts/toolchain.lua b/3rdparty/bx/scripts/toolchain.lua index 5ff98ccf8c1..0f751dd3aa4 100644 --- a/3rdparty/bx/scripts/toolchain.lua +++ b/3rdparty/bx/scripts/toolchain.lua @@ -717,7 +717,7 @@ function toolchain(_buildDir, _libDir) "NoImportLib", } includedirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/include", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/include", "$(ANDROID_NDK_ROOT)/sources/android/native_app_glue", } linkoptions { @@ -811,10 +811,10 @@ function toolchain(_buildDir, _libDir) objdir (path.join(_buildDir, "android-mips/obj")) libdirs { path.join(_libDir, "lib/android-mips"), - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/mips", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/mips", } includedirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/mips/include", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/mips/include", } buildoptions { "--sysroot=" .. path.join("$(ANDROID_NDK_ROOT)/platforms", androidPlatform, "arch-mips"), @@ -832,10 +832,10 @@ function toolchain(_buildDir, _libDir) objdir (path.join(_buildDir, "android-x86/obj")) libdirs { path.join(_libDir, "lib/android-x86"), - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/x86", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86", } includedirs { - "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/x86/include", + "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/include", } buildoptions { "--sysroot=" .. path.join("$(ANDROID_NDK_ROOT)/platforms", androidPlatform, "arch-x86"), diff --git a/3rdparty/bx/tests/float4_t.cpp b/3rdparty/bx/tests/float4_t.cpp deleted file mode 100644 index 3bdfb1976b1..00000000000 --- a/3rdparty/bx/tests/float4_t.cpp +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright 2010-2016 Branimir Karadzic. All rights reserved. - * License: https://github.com/bkaradzic/bx#license-bsd-2-clause - */ - -#include "test.h" -#include -#include -#include - -using namespace bx; - -union float4_cast -{ - bx::float4_t f4; - float f[4]; - uint32_t ui[4]; - int32_t i[4]; - char c[16]; -}; - -void float4_check_bool(const char* _str, bool _a, bool _0) -{ - DBG("%s %d == %d" - , _str - , _a - , _0 - ); - - CHECK_EQUAL(_a, _0); -} - -void float4_check_int32(const char* _str, bx::float4_t _a, int32_t _0, int32_t _1, int32_t _2, int32_t _3) -{ - float4_cast c; c.f4 = _a; - DBG("%s (%d, %d, %d, %d) == (%d, %d, %d, %d)" - , _str - , c.i[0], c.i[1], c.i[2], c.i[3] - , _0, _1, _2, _3 - ); - - CHECK_EQUAL(c.i[0], _0); - CHECK_EQUAL(c.i[1], _1); - CHECK_EQUAL(c.i[2], _2); - CHECK_EQUAL(c.i[3], _3); -} - -void float4_check_uint32(const char* _str, bx::float4_t _a, uint32_t _0, uint32_t _1, uint32_t _2, uint32_t _3) -{ - float4_cast c; c.f4 = _a; - - DBG("%s (0x%08x, 0x%08x, 0x%08x, 0x%08x) == (0x%08x, 0x%08x, 0x%08x, 0x%08x)" - , _str - , c.ui[0], c.ui[1], c.ui[2], c.ui[3] - , _0, _1, _2, _3 - ); - - CHECK_EQUAL(c.ui[0], _0); - CHECK_EQUAL(c.ui[1], _1); - CHECK_EQUAL(c.ui[2], _2); - CHECK_EQUAL(c.ui[3], _3); -} - -void float4_check_float(const char* _str, bx::float4_t _a, float _0, float _1, float _2, float _3) -{ - float4_cast c; c.f4 = _a; - - DBG("%s (%f, %f, %f, %f) == (%f, %f, %f, %f)" - , _str - , c.f[0], c.f[1], c.f[2], c.f[3] - , _0, _1, _2, _3 - ); - - CHECK(bx::fequal(c.f[0], _0, 0.0001f) ); - CHECK(bx::fequal(c.f[1], _1, 0.0001f) ); - CHECK(bx::fequal(c.f[2], _2, 0.0001f) ); - CHECK(bx::fequal(c.f[3], _3, 0.0001f) ); -} - -void float4_check_string(const char* _str, bx::float4_t _a) -{ - float4_cast c; c.f4 = _a; - const char test[5] = { c.c[0], c.c[4], c.c[8], c.c[12], '\0' }; - - DBG("%s %s", _str, test); - - CHECK(0 == strcmp(_str, test) ); -} - -TEST(float4_swizzle) -{ - const float4_t xyzw = float4_ild(0x78787878, 0x79797979, 0x7a7a7a7a, 0x77777777); - -#define ELEMx 0 -#define ELEMy 1 -#define ELEMz 2 -#define ELEMw 3 -#define IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ - float4_check_string("" #_x #_y #_z #_w "", float4_swiz_##_x##_y##_z##_w(xyzw) ); \ - -#include - -#undef IMPLEMENT_SWIZZLE -#undef ELEMw -#undef ELEMz -#undef ELEMy -#undef ELEMx -} - -TEST(float4_shuffle) -{ - const float4_t xyzw = float4_ild(0x78787878, 0x79797979, 0x7a7a7a7a, 0x77777777); - const float4_t ABCD = float4_ild(0x41414141, 0x42424242, 0x43434343, 0x44444444); - float4_check_string("xyAB", float4_shuf_xyAB(xyzw, ABCD) ); - float4_check_string("ABxy", float4_shuf_ABxy(xyzw, ABCD) ); - float4_check_string("zwCD", float4_shuf_zwCD(xyzw, ABCD) ); - float4_check_string("CDzw", float4_shuf_CDzw(xyzw, ABCD) ); - float4_check_string("xAyB", float4_shuf_xAyB(xyzw, ABCD) ); - float4_check_string("zCwD", float4_shuf_zCwD(xyzw, ABCD) ); - float4_check_string("xAzC", float4_shuf_xAzC(xyzw, ABCD) ); - float4_check_string("yBwD", float4_shuf_yBwD(xyzw, ABCD) ); - float4_check_string("CzDw", float4_shuf_CzDw(xyzw, ABCD) ); -} - -TEST(float4_compare) -{ - float4_check_uint32("cmpeq" - , float4_cmpeq(float4_ld(1.0f, 2.0f, 3.0f, 4.0f), float4_ld(0.0f, 2.0f, 0.0f, 3.0f) ) - , 0, 0xffffffff, 0, 0 - ); - - float4_check_uint32("cmplt" - , float4_cmplt(float4_ld(1.0f, 2.0f, 3.0f, 4.0f), float4_ld(0.0f, 2.0f, 0.0f, 3.0f) ) - , 0, 0, 0, 0 - ); - - float4_check_uint32("cmple" - , float4_cmple(float4_ld(1.0f, 2.0f, 3.0f, 4.0f), float4_ld(0.0f, 2.0f, 0.0f, 3.0f) ) - , 0, 0xffffffff, 0, 0 - ); - - float4_check_uint32("cmpgt" - , float4_cmpgt(float4_ld(1.0f, 2.0f, 3.0f, 4.0f), float4_ld(0.0f, 2.0f, 0.0f, 3.0f) ) - , 0xffffffff, 0, 0xffffffff, 0xffffffff - ); - - float4_check_uint32("cmpge" - , float4_cmpge(float4_ld(1.0f, 2.0f, 3.0f, 4.0f), float4_ld(0.0f, 2.0f, 0.0f, 3.0f) ) - , 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff - ); - - float4_check_uint32("icmpeq" - , float4_icmpeq(float4_ild(0, 1, 2, 3), float4_ild(0, uint32_t(-2), 1, 3) ) - , 0xffffffff, 0, 0, 0xffffffff - ); - - float4_check_uint32("icmplt" - , float4_icmplt(float4_ild(0, 1, 2, 3), float4_ild(0, uint32_t(-2), 1, 3) ) - , 0, 0, 0, 0 - ); - - float4_check_uint32("icmpgt" - , float4_icmpgt(float4_ild(0, 1, 2, 3), float4_ild(0, uint32_t(-2), 1, 3) ) - , 0, 0xffffffff, 0xffffffff, 0 - ); -} - -TEST(float4_test) -{ - float4_check_bool("test_any_xyzw" - , float4_test_any_xyzw(float4_ild(0xffffffff, 0, 0, 0) ) - , true - ); - - float4_check_bool("test_all_xyzw" - , float4_test_all_xyzw(float4_ild(0xffffffff, 0, 0xffffffff, 0) ) - , false - ); - - float4_check_bool("test_all_xyzw" - , float4_test_all_xyzw(float4_ild(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff) ) - , true - ); - - float4_check_bool("test_all_xw" - , float4_test_all_xw(float4_ild(0xffffffff, 0, 0, 0xffffffff) ) - , true - ); - - float4_check_bool("test_all_xzw" - , float4_test_all_xzw(float4_ild(0xffffffff, 0, 0, 0xffffffff) ) - , false - ); -} - -TEST(float4_load) -{ - float4_check_float("ld" - , float4_ld(0.0f, 1.0f, 2.0f, 3.0f) - , 0.0f, 1.0f, 2.0f, 3.0f - ); - - float4_check_int32("ild" - , float4_ild(uint32_t(-1), 0, 1, 2) - , uint32_t(-1), 0, 1, 2 - ); - - float4_check_int32("ild" - , float4_ild(uint32_t(-1), uint32_t(-2), uint32_t(-3), uint32_t(-4) ) - , uint32_t(-1), uint32_t(-2), uint32_t(-3), uint32_t(-4) - ); - - float4_check_uint32("zero", float4_zero() - , 0, 0, 0, 0 - ); - - float4_check_uint32("isplat", float4_isplat(0x80000001) - , 0x80000001, 0x80000001, 0x80000001, 0x80000001 - ); - - float4_check_float("isplat", float4_splat(1.0f) - , 1.0f, 1.0f, 1.0f, 1.0f - ); -} - -TEST(float4_arithmetic) -{ - float4_check_float("madd" - , float4_madd(float4_ld(0.0f, 1.0f, 2.0f, 3.0f), float4_ld(4.0f, 5.0f, 6.0f, 7.0f), float4_ld(8.0f, 9.0f, 10.0f, 11.0f) ) - , 8.0f, 14.0f, 22.0f, 32.0f - ); - - float4_check_float("cross3" - , float4_cross3(float4_ld(1.0f, 0.0f, 0.0f, 0.0f), float4_ld(0.0f, 1.0f, 0.0f, 0.0f) ) - , 0.0f, 0.0f, 1.0f, 0.0f - ); -} - -TEST(float4_sqrt) -{ - float4_check_float("float4_sqrt" - , float4_sqrt(float4_ld(1.0f, 16.0f, 65536.0f, 123456.0f) ) - , 1.0f, 4.0f, 256.0f, 351.363060096f - ); - - float4_check_float("float4_sqrt_nr_ni" - , float4_sqrt_nr_ni(float4_ld(1.0f, 16.0f, 65536.0f, 123456.0f) ) - , 1.0f, 4.0f, 256.0f, 351.363060096f - ); - - float4_check_float("float4_sqrt_nr1_ni" - , float4_sqrt_nr1_ni(float4_ld(1.0f, 16.0f, 65536.0f, 123456.0f) ) - , 1.0f, 4.0f, 256.0f, 351.363060096f - ); -} - -TEST(float4) -{ - const float4_t isplat = float4_isplat(0x80000001); - float4_check_uint32("sll" - , float4_sll(isplat, 1) - , 0x00000002, 0x00000002, 0x00000002, 0x00000002 - ); - - float4_check_uint32("srl" - , float4_srl(isplat, 1) - , 0x40000000, 0x40000000, 0x40000000, 0x40000000 - ); - - float4_check_uint32("sra" - , float4_sra(isplat, 1) - , 0xc0000000, 0xc0000000, 0xc0000000, 0xc0000000 - ); - - float4_check_uint32("and" - , float4_and(float4_isplat(0x55555555), float4_isplat(0xaaaaaaaa) ) - , 0, 0, 0, 0 - ); - - float4_check_uint32("or " - , float4_or(float4_isplat(0x55555555), float4_isplat(0xaaaaaaaa) ) - , uint32_t(-1), uint32_t(-1), uint32_t(-1), uint32_t(-1) - ); - - float4_check_uint32("xor" - , float4_or(float4_isplat(0x55555555), float4_isplat(0xaaaaaaaa) ) - , uint32_t(-1), uint32_t(-1), uint32_t(-1), uint32_t(-1) - ); - - float4_check_int32("imin" - , float4_imin(float4_ild(0, 1, 2, 3), float4_ild(uint32_t(-1), 2, uint32_t(-2), 1) ) - , uint32_t(-1), 1, uint32_t(-2), 1 - ); - - float4_check_float("min" - , float4_min(float4_ld(0.0f, 1.0f, 2.0f, 3.0f), float4_ld(-1.0f, 2.0f, -2.0f, 1.0f) ) - , -1.0f, 1.0f, -2.0f, 1.0f - ); - - float4_check_int32("imax" - , float4_imax(float4_ild(0, 1, 2, 3), float4_ild(uint32_t(-1), 2, uint32_t(-2), 1) ) - , 0, 2, 2, 3 - ); - - float4_check_float("max" - , float4_max(float4_ld(0.0f, 1.0f, 2.0f, 3.0f), float4_ld(-1.0f, 2.0f, -2.0f, 1.0f) ) - , 0.0f, 2.0f, 2.0f, 3.0f - ); -} diff --git a/3rdparty/bx/tests/simd_t.cpp b/3rdparty/bx/tests/simd_t.cpp new file mode 100644 index 00000000000..999438a234a --- /dev/null +++ b/3rdparty/bx/tests/simd_t.cpp @@ -0,0 +1,309 @@ +/* + * Copyright 2010-2016 Branimir Karadzic. All rights reserved. + * License: https://github.com/bkaradzic/bx#license-bsd-2-clause + */ + +#include "test.h" +#include +#include +#include + +using namespace bx; + +union simd_cast +{ + bx::simd128_t f4; + float f[4]; + uint32_t ui[4]; + int32_t i[4]; + char c[16]; +}; + +void simd_check_bool(const char* _str, bool _a, bool _0) +{ + DBG("%s %d == %d" + , _str + , _a + , _0 + ); + + CHECK_EQUAL(_a, _0); +} + +void simd_check_int32(const char* _str, bx::simd128_t _a, int32_t _0, int32_t _1, int32_t _2, int32_t _3) +{ + simd_cast c; c.f4 = _a; + DBG("%s (%d, %d, %d, %d) == (%d, %d, %d, %d)" + , _str + , c.i[0], c.i[1], c.i[2], c.i[3] + , _0, _1, _2, _3 + ); + + CHECK_EQUAL(c.i[0], _0); + CHECK_EQUAL(c.i[1], _1); + CHECK_EQUAL(c.i[2], _2); + CHECK_EQUAL(c.i[3], _3); +} + +void simd_check_uint32(const char* _str, bx::simd128_t _a, uint32_t _0, uint32_t _1, uint32_t _2, uint32_t _3) +{ + simd_cast c; c.f4 = _a; + + DBG("%s (0x%08x, 0x%08x, 0x%08x, 0x%08x) == (0x%08x, 0x%08x, 0x%08x, 0x%08x)" + , _str + , c.ui[0], c.ui[1], c.ui[2], c.ui[3] + , _0, _1, _2, _3 + ); + + CHECK_EQUAL(c.ui[0], _0); + CHECK_EQUAL(c.ui[1], _1); + CHECK_EQUAL(c.ui[2], _2); + CHECK_EQUAL(c.ui[3], _3); +} + +void simd_check_float(const char* _str, bx::simd128_t _a, float _0, float _1, float _2, float _3) +{ + simd_cast c; c.f4 = _a; + + DBG("%s (%f, %f, %f, %f) == (%f, %f, %f, %f)" + , _str + , c.f[0], c.f[1], c.f[2], c.f[3] + , _0, _1, _2, _3 + ); + + CHECK(bx::fequal(c.f[0], _0, 0.0001f) ); + CHECK(bx::fequal(c.f[1], _1, 0.0001f) ); + CHECK(bx::fequal(c.f[2], _2, 0.0001f) ); + CHECK(bx::fequal(c.f[3], _3, 0.0001f) ); +} + +void simd_check_string(const char* _str, bx::simd128_t _a) +{ + simd_cast c; c.f4 = _a; + const char test[5] = { c.c[0], c.c[4], c.c[8], c.c[12], '\0' }; + + DBG("%s %s", _str, test); + + CHECK(0 == strcmp(_str, test) ); +} + +TEST(simd_swizzle) +{ + const simd128_t xyzw = simd_ild(0x78787878, 0x79797979, 0x7a7a7a7a, 0x77777777); + +#define ELEMx 0 +#define ELEMy 1 +#define ELEMz 2 +#define ELEMw 3 +#define BX_SIMD128_IMPLEMENT_SWIZZLE(_x, _y, _z, _w) \ + simd_check_string("" #_x #_y #_z #_w "", simd_swiz_##_x##_y##_z##_w(xyzw) ); \ + +#include + +#undef BX_SIMD128_IMPLEMENT_SWIZZLE +#undef ELEMw +#undef ELEMz +#undef ELEMy +#undef ELEMx +} + +TEST(simd_shuffle) +{ + const simd128_t xyzw = simd_ild(0x78787878, 0x79797979, 0x7a7a7a7a, 0x77777777); + const simd128_t ABCD = simd_ild(0x41414141, 0x42424242, 0x43434343, 0x44444444); + simd_check_string("xyAB", simd_shuf_xyAB(xyzw, ABCD) ); + simd_check_string("ABxy", simd_shuf_ABxy(xyzw, ABCD) ); + simd_check_string("zwCD", simd_shuf_zwCD(xyzw, ABCD) ); + simd_check_string("CDzw", simd_shuf_CDzw(xyzw, ABCD) ); + simd_check_string("xAyB", simd_shuf_xAyB(xyzw, ABCD) ); + simd_check_string("zCwD", simd_shuf_zCwD(xyzw, ABCD) ); + simd_check_string("xAzC", simd_shuf_xAzC(xyzw, ABCD) ); + simd_check_string("yBwD", simd_shuf_yBwD(xyzw, ABCD) ); + simd_check_string("CzDw", simd_shuf_CzDw(xyzw, ABCD) ); +} + +TEST(simd_compare) +{ + simd_check_uint32("cmpeq" + , simd_cmpeq(simd_ld(1.0f, 2.0f, 3.0f, 4.0f), simd_ld(0.0f, 2.0f, 0.0f, 3.0f) ) + , 0, 0xffffffff, 0, 0 + ); + + simd_check_uint32("cmplt" + , simd_cmplt(simd_ld(1.0f, 2.0f, 3.0f, 4.0f), simd_ld(0.0f, 2.0f, 0.0f, 3.0f) ) + , 0, 0, 0, 0 + ); + + simd_check_uint32("cmple" + , simd_cmple(simd_ld(1.0f, 2.0f, 3.0f, 4.0f), simd_ld(0.0f, 2.0f, 0.0f, 3.0f) ) + , 0, 0xffffffff, 0, 0 + ); + + simd_check_uint32("cmpgt" + , simd_cmpgt(simd_ld(1.0f, 2.0f, 3.0f, 4.0f), simd_ld(0.0f, 2.0f, 0.0f, 3.0f) ) + , 0xffffffff, 0, 0xffffffff, 0xffffffff + ); + + simd_check_uint32("cmpge" + , simd_cmpge(simd_ld(1.0f, 2.0f, 3.0f, 4.0f), simd_ld(0.0f, 2.0f, 0.0f, 3.0f) ) + , 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff + ); + + simd_check_uint32("icmpeq" + , simd_icmpeq(simd_ild(0, 1, 2, 3), simd_ild(0, uint32_t(-2), 1, 3) ) + , 0xffffffff, 0, 0, 0xffffffff + ); + + simd_check_uint32("icmplt" + , simd_icmplt(simd_ild(0, 1, 2, 3), simd_ild(0, uint32_t(-2), 1, 3) ) + , 0, 0, 0, 0 + ); + + simd_check_uint32("icmpgt" + , simd_icmpgt(simd_ild(0, 1, 2, 3), simd_ild(0, uint32_t(-2), 1, 3) ) + , 0, 0xffffffff, 0xffffffff, 0 + ); +} + +TEST(simd_test) +{ + simd_check_bool("test_any_xyzw" + , simd_test_any_xyzw(simd_ild(0xffffffff, 0, 0, 0) ) + , true + ); + + simd_check_bool("test_all_xyzw" + , simd_test_all_xyzw(simd_ild(0xffffffff, 0, 0xffffffff, 0) ) + , false + ); + + simd_check_bool("test_all_xyzw" + , simd_test_all_xyzw(simd_ild(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff) ) + , true + ); + + simd_check_bool("test_all_xw" + , simd_test_all_xw(simd_ild(0xffffffff, 0, 0, 0xffffffff) ) + , true + ); + + simd_check_bool("test_all_xzw" + , simd_test_all_xzw(simd_ild(0xffffffff, 0, 0, 0xffffffff) ) + , false + ); +} + +TEST(simd_load) +{ + simd_check_float("ld" + , simd_ld(0.0f, 1.0f, 2.0f, 3.0f) + , 0.0f, 1.0f, 2.0f, 3.0f + ); + + simd_check_int32("ild" + , simd_ild(uint32_t(-1), 0, 1, 2) + , uint32_t(-1), 0, 1, 2 + ); + + simd_check_int32("ild" + , simd_ild(uint32_t(-1), uint32_t(-2), uint32_t(-3), uint32_t(-4) ) + , uint32_t(-1), uint32_t(-2), uint32_t(-3), uint32_t(-4) + ); + + simd_check_uint32("zero", simd_zero() + , 0, 0, 0, 0 + ); + + simd_check_uint32("isplat", simd_isplat(0x80000001) + , 0x80000001, 0x80000001, 0x80000001, 0x80000001 + ); + + simd_check_float("isplat", simd_splat(1.0f) + , 1.0f, 1.0f, 1.0f, 1.0f + ); +} + +TEST(simd_arithmetic) +{ + simd_check_float("madd" + , simd_madd(simd_ld(0.0f, 1.0f, 2.0f, 3.0f), simd_ld(4.0f, 5.0f, 6.0f, 7.0f), simd_ld(8.0f, 9.0f, 10.0f, 11.0f) ) + , 8.0f, 14.0f, 22.0f, 32.0f + ); + + simd_check_float("cross3" + , simd_cross3(simd_ld(1.0f, 0.0f, 0.0f, 0.0f), simd_ld(0.0f, 1.0f, 0.0f, 0.0f) ) + , 0.0f, 0.0f, 1.0f, 0.0f + ); +} + +TEST(simd_sqrt) +{ + simd_check_float("simd_sqrt" + , simd_sqrt(simd_ld(1.0f, 16.0f, 65536.0f, 123456.0f) ) + , 1.0f, 4.0f, 256.0f, 351.363060096f + ); + + simd_check_float("simd_sqrt_nr_ni" + , simd_sqrt_nr_ni(simd_ld(1.0f, 16.0f, 65536.0f, 123456.0f) ) + , 1.0f, 4.0f, 256.0f, 351.363060096f + ); + + simd_check_float("simd_sqrt_nr1_ni" + , simd_sqrt_nr1_ni(simd_ld(1.0f, 16.0f, 65536.0f, 123456.0f) ) + , 1.0f, 4.0f, 256.0f, 351.363060096f + ); +} + +TEST(float4) +{ + const simd128_t isplat = simd_isplat(0x80000001); + simd_check_uint32("sll" + , simd_sll(isplat, 1) + , 0x00000002, 0x00000002, 0x00000002, 0x00000002 + ); + + simd_check_uint32("srl" + , simd_srl(isplat, 1) + , 0x40000000, 0x40000000, 0x40000000, 0x40000000 + ); + + simd_check_uint32("sra" + , simd_sra(isplat, 1) + , 0xc0000000, 0xc0000000, 0xc0000000, 0xc0000000 + ); + + simd_check_uint32("and" + , simd_and(simd_isplat(0x55555555), simd_isplat(0xaaaaaaaa) ) + , 0, 0, 0, 0 + ); + + simd_check_uint32("or " + , simd_or(simd_isplat(0x55555555), simd_isplat(0xaaaaaaaa) ) + , uint32_t(-1), uint32_t(-1), uint32_t(-1), uint32_t(-1) + ); + + simd_check_uint32("xor" + , simd_or(simd_isplat(0x55555555), simd_isplat(0xaaaaaaaa) ) + , uint32_t(-1), uint32_t(-1), uint32_t(-1), uint32_t(-1) + ); + + simd_check_int32("imin" + , simd_imin(simd_ild(0, 1, 2, 3), simd_ild(uint32_t(-1), 2, uint32_t(-2), 1) ) + , uint32_t(-1), 1, uint32_t(-2), 1 + ); + + simd_check_float("min" + , simd_min(simd_ld(0.0f, 1.0f, 2.0f, 3.0f), simd_ld(-1.0f, 2.0f, -2.0f, 1.0f) ) + , -1.0f, 1.0f, -2.0f, 1.0f + ); + + simd_check_int32("imax" + , simd_imax(simd_ild(0, 1, 2, 3), simd_ild(uint32_t(-1), 2, uint32_t(-2), 1) ) + , 0, 2, 2, 3 + ); + + simd_check_float("max" + , simd_max(simd_ld(0.0f, 1.0f, 2.0f, 3.0f), simd_ld(-1.0f, 2.0f, -2.0f, 1.0f) ) + , 0.0f, 2.0f, 2.0f, 3.0f + ); +} diff --git a/3rdparty/bx/tests/vector_nodefault.cpp b/3rdparty/bx/tests/vector_nodefault.cpp index 4a8bc8cf1dd..1340b0c0b3d 100644 --- a/3rdparty/bx/tests/vector_nodefault.cpp +++ b/3rdparty/bx/tests/vector_nodefault.cpp @@ -33,10 +33,14 @@ #include #include +#if !BX_CRT_MSVC +# define _strdup strdup +#endif // !BX_CRT_MSVC + struct nodefault { - nodefault(const char* s) { data = strdup(s); } + nodefault(const char* s) { data = _strdup(s); } ~nodefault() { free(data); } - nodefault(const nodefault& other) { data = 0; if (other.data) data = strdup(other.data); } + nodefault(const nodefault& other) { data = 0; if (other.data) data = _strdup(other.data); } nodefault& operator=(const nodefault& other) { nodefault(other).swap(*this); return *this; } void swap(nodefault& other) { std::swap(data, other.data); } @@ -148,7 +152,7 @@ TEST(vector_nodefault_popback) { v.push_back("24"); CHECK(v.back() == "24"); - + v.pop_back(); CHECK(v.back() == "12"); diff --git a/3rdparty/bx/tools/bin/darwin/genie b/3rdparty/bx/tools/bin/darwin/genie index a092d05c1d2ef9273d07ae02f547cc41675bcee3..ca02eb914508ba85ccb25bd474853ff43f122cd4 100755 GIT binary patch delta 38509 zcmchgcYKc5|Nrm%x<`hDAS5KXg^&=D5H)I6%-W-N$+$zvl3{blYEe5lC>0ue3vR2m zYqn_Z(P~Q@szz(Z`n}J2zb>Mm@%?`P`StPW^*+znd7pEgeVyyvcW&7S%4GjiX6EFg z_pOF^{<}YG;d{l7dKwHyk|*WKtHE&8bJi~ni+6ZzRO&!Yi3Z}Vn#Kmj_dI3&teJJ< ztnsAJe98KT{v1J^^@FjYx816;*$4N=#OACht6x@Qt-SX@j=WKl^D+=?Dsm=8W^$x& zGDqeSn^fd=t(2^ZDy2*JAjj55Y)-kc%;eJ*= zW%M^^pN*Vm5_72sn9F;cUAVo_GGW9VdEaQx+GF-N?XbFJT`{*cT_ju8(!8h_CorVw zx6T@8sq9wV#Sln$ZQLqri=~mdnTz54td7OAT&+P~>*I>_4t>?|(GtfUySM3+V_A)@ z*%sAJRR0ROt}d;N#VF7DlscHQl!csM+$DFgtKE{d%BO+X#-~<8o5_Kjl&Q7(Y1Sj3 z@XDVk`n%=$_YEzl^>WR4-10Na?VqiNmY*3~PTZHSy*^FC{-3kj`Zm+X{hT$&H?Vkx z2d`f@>HIp-kKBrsGrSHg{d4X~Uq7SvRoC2Gr5+izhCgOq_p7D#@0#V~e^v{>mi4E9 z8ExF%ERQnZ7ixIbYDl-WeBV;*YSyhXOAF1uLfo5p@|E1VWt#(?#kx18qL&_64)b1&_ZU+%Te zv&`DOrCBN6=W8#rbKQH~G-)pvWj*LUOdG!_cTk_7yi6aMt+{QJ(%rQa&vFkAJ89Hj zKFOLjqO11J!>qg!WwquLa$QG$ZPI?bpLKLhS?#yXth_Nbw96y1{2i6FT_bWM9m|Yb z{=MA1%n>fyn7pjmNj0?AdAai^rI@sfH?rKPhG;9&bL&iXxN7HyiC%@v`W@#@-0~<>pq#^f^)r2*VnZBVOj0IudI#yB5UaPcCB$(){ozZXqOk~ zdi*fStaT5_op<4YNt;tPx9624S8YzYtmD6?Y30i0Ho8&OtfhXMn~*m|)AA?e-nc!& zs*M?w+wZ{!i}u~HT(2iHHLd=TtYyz?XcsfG&Oa;bJ>OlHuI1#P@(y=;{rayWUY5s0 zvRv~6w97-XLh|=$u|u+M=TFh*XJid|zRT@Ky2T)U=VonsQ8u^Ri+rPYBK6D8uQc~F zDIAkpK5J~xQgeqGOK3||=1wy%*DfbJBaFsmqsOcyiy^fX-NJK5l5?YG9ANZmmS{12 zeR1b~YLO>-uLHRNnS(^A*;u~9OCvYjle~c~so~^;BHQsvo+E&oa9V@Kn$?+VHoj*x zMHsElwHD(pSM5o(=wH}4Q2Q*}`9opjWwZ8EALqv6#*!v&WlwRWq_M4bw7V$jW2~-; z?#>oI#xoY}P$y^UGR7lX$cgq;m`QT{eGu~cb@=05g(xg*`=^zE~;#w9-+80+O+On{d#X$4evP{`g`~E8Ov1JH_WeyG_wTh28J;>pM0aet$|k`|mG4o@?NYR?9VN7JZ*jt&x)rWusZJVzgx?#!hdRkx`RCTHk|CpH0Ri zR_(hT;`(-D+2Vz}={>%Cu4=W!Je?>fA?w;fK__+XqOKpQ zYj<_+sjj`%^<#DIr>@cJ8mq2x>N-GO2dZm=x+bY>in^w%Yr47)QP*MlW(VDVgo07( zI!0YH)peY@PEglR)OC`&PEpsX>N;IrXR7OLb)BQG^VD^|x-L}LMe6#6x@N2EGP*im z2j(bPp{}dcb&a~NQ`ZgZx=CHPsOwgB-L9@X)ODA-?orpT)peh`9#Gdq>iP{`4Td(; z%1nD=Hr(0=}_z;H&%kT~k zC(7_T4#&%IHizvpJcq+kGCYaG4k|?-38OfohYY81xT_4ua=4=mcjs_h8E(VjRx;d} z!_8zkg2PQ@IEcdyWZ0j>b!FI#!?h^vxMgMtml03BRqdkS4wskV zqZ}?H!+SVfN`^OaxP%PnaJZ-p&*!kG3{O>IM;SK>nH*t};dBlgWq1IGUp}UAZw^0` z;SL;rB*T#$ejvkjIQ*v!hj93o4BI$-Q--}c{Id+ZIvB1=cu`!{{*nye=kPfhzQN%$ zGJKK4-^%bw4j+@@eH=b4!&^DLUxrt4_$wJ+#NnMXJd?xQ91hnfZw3>-00h94H= zSs=rC93CyhS2;XfhEH=iLxvA=c(4rb;BcZ0uj6pM3}v^1MM;CY0kffYe^>e5L;A2LR@@;Jx%l*tt~IWPRkf=i?M(poDQvH|M>X0 zAU#QlEhTke=)0uy3U*IOj)_XJ#n>9y{xw10zDN?2oD>(|KaI2L+gB!q6fBBnY7LAr z&c2!2!!iyV{&Uv@)vDQ=$ET*H+hPXTV+Pscl2dI_NjCeisF-wHVpMv}09#yYa-uDL zfZZ0KG{l~oX15JViAo=k_9ln;I8}JWawO#u`>$%RsP55eGI1Z7U(%Z#WLZ+}=^3d> zHW?c_FgZRcNH)kjdG?Az;t*S0QdFWn_)U6yQmnJn7g{l^r#&iWfUJB_OkDq9@xY<^ zm?$I)Wok`Tpkt=?ej!pq(RpG!pla-Pi5)?4aO-IAl< zc8qOI16xvj0+&82c3?(Yx-4))d|G-?LBC*U`Wo$Tt;C=Z+Yo9tsueYHPwaTJ%46q6pGoTPVVLVUVC zH7bF7E$D5NicF_g$wTI#|0hy@G6mMwNw@#fOH`JTqu=z5?j|~aq16!w;>_OS{z|Qs z2elgAHz`fE$No5TsUT{CwDi>Yr2e6C@ky~ka0sylR0&XxqBpxBZ~x$bGq#XIHb$yF zB_S%to@h@>m+qxZvSBDt;ynudOWFRZ6=V)O!_R0R8hh!Ld6NUp9hzk{Dbm%rO;fW+ zUmmE4ygt~{lWoy9=X#4d0Q1<#15{>*dC5`j1_%%FysjlhwKEd+oBtjYkZvFyhY(G#K>N zN%h%%4~uVMUEv8S?zx!DiHM6@rRwiS&`i~fBCVW$x&w6<1;wa~+A;^Qkr}APade1sKxSC*$fw{P$Y->>T-Ew2UFBV%dEeYFxSecNE`xHC zOAM7kcjy(~r(mpV(*m(I`pA0qdXut`nDv>ttVOZ-=#uudP{Fv~m$h;w3kcMJlv*{D zbLM63p}A1g+L89?jQ*{X;*y z+pjwcWEb8qwTiWA%BnlcH7lIg z#5X01k_p~)I~I4275hhNKBC=Atq|%YetxNy)5G&$YIXH+0p02KO7n0jK5``Wa(YyJ zl07xVCW|_Hv?uy2#5U0StoNB0?$MhhZ6htT5o)YRnEpn&#C z3BzqsL!#mnO1WkuGsW`MpFkuKXNIo(E4 z+?kv;T{(%qjEIY#rbcf!65Qyh0FOn$o7IU_y<+ZqT>sSMj1-Dc_Kg~s5Y=CG-P=b9 zo_}b5eL3_ixC4{h9<|o;^UK-4r0KI+4vf{%wDhR-v`~7c_U&({aT7&bx3?qt-^Nz8 zg{$W)6-y2G0#0dz;!{%oLk4=BN}eQcq|q=pb+8t5#;!8?*Ywmgi%~PkZ>_1aS%t#8 znM<0Rwv8GjW*snN^kM0=ti7AT!gZ#|veo~qlPG$~)T;2i zE@HzW(+7p$O(*&sHkC0^VMOL(Q;AxtfPE9=lj0Mp(NgV$GvZV2u|Xd->(rTspshw| zozRHj%E9h^Q-Ug!Q7cb~7#wB|6dk`Ym5G#kRBUYDw2bIjN*R-$oH{%xFfF(;Pgx#K z@=0Lev7_!+pi3mrJ7Nj6s0fk0#av%}blg-=Y=|;f5nd-umEFQaY?VVps|Tiu4kt`? zO|s}SPM9h-R4M-VMVBST(2)fc9e0|Giy|jYE;VILnms)T)l5syNR6@gl^Z=$)Lr-y zB)6&D62YQFkhzDb|E=ko=zGCbQcU{Y;#F4W6Q2~5kP&O|t2aixJuOHTp7!Q@P1QuT z-z-H+suqj2)8;2$P1K-jk+MYO;L|rc)gCoSEv9cnG+EUac@QnZ4H{JLOoKc=rcHcw zSsyW^3uP@o9bS!_-)y4Q}c{wIPv@>jc^% z#m9-u4QY5ENjG_E1Y?6N6@<;z>>`z#&cK?qlYh*AU-)X zImMn7^w0XF(nGsohI0DKCwN@2gBO8bU|Rt3G^KGo%hi(aJUQ#r04 zEkv7sK70%AY~=c@--G(7eg}S( zw;<1kBZGPc4h^ixs_f7@gcDvr? zVt+exY3Iwf=F*)@|K~|6yq20TwbO?P-l$~G1zt4t%~`>{nR@M@h#FyGwQzKX)(whx zUSDcHXbw_!c(YFY2Vc6ANLy~M*GS$om^MT5ps2q+Jvu7QE_d|rP7ZR=8$vpQWOs=B z%gsUJbq+18*O!}%IloMgQw znBBbS3@$!y_&;)@O#tt#Y=Q1(i~N*QSM5G}8^bM3lRzm3TA$3iA$;y2no)d(#I1s?J=Yf95W?E&pt&x3f(?4hrl6^~wgj zhu3PLTH_=@W!{HEsP6J z8|nyp!E4sNX`8N*%_94DZr`<2(`J3;{mR69$l2tBcS%uu>ol#cq0 z+F$R%$^jwt$|h@vY=fO!otD;a7WH9?^VL3!hf!9->3YBtW5Hx`4mx6~Xc3D~S-hP& zCoMxiUyQd%S(u(&xJowa;zcHX>hsqZdA@0m-Am48@lT9*!@iAD{S{g=78 zv)&&TdZCux&TD^xg-Z=)(f4ml@xnc8%L2;Yq2>q@`%RWA@-v8X&X)HqE=IBYmD%0d z^}c1GPqF4SD$_b8(-yCRt#V*m^~wQaR=&m8S=80~wU4-4%H&qGU3}8OD1K_FCP;H? zHtRQ<=57$S_pScUn*r9_;T;PcYshJ78~tyNItreag#DX%{kX$MIfRLmU97zvaX|r* z$w~H5TZ=a*ErGGs1La3Sd=?%WKp%tYn~Z;RF!SGItNv?B6vAB%(?aqSq%hUj24};r zR$ji6d6pOZ_fVb_C@N?M7h*JLu#TkBkkYxRXGuB+sj6r) zmJ+@o=_Di?D>JPA9`x0;Z=jUqtlE&Y6%v=&noiQ%8DdQum1RDnYO(hridqhdOYV7x zqy_I};OR|Ydz}fXhuD9JZcNI4C>=$|VN|+Ul5RtqEA|h!Rr+`s8TQ7h$yQe4p_JidqsZxFNNA`Wk~%@^!JT%J zr16mARHs=VlC*!8s4~=ANxLvhbRz54Yc`j59;Zs6?}#6RR6!0ye-Ba)K|#6qkhBd_ z6>gpzBsn1srxxDU`)`v2)8MP*h_`&3Hh~A*m0f1}yC%DHT$CF5V52 z7C`DL_J2;rb2S)FKpD(V5hQuf(Ql|av^Pl|A=Ou7#5#c_`y8=rxHZ&m6{5m<_*|u^ z&5+`_#2#)2!|#xqaPcBYGR)=Mq_fnUq&AQSslpVVK++6I6AdCi%UarV9cg!-dvitYx(xp|`JNGj+`!BHi+)kjg(97tP5(ZSYoB5aY> z?75C~-}&qs%7f-CNo66qbLtl)86bs-2OF&wJVWSPt`!$>LN}qtA1M|n4S9BqBFPU@ zw5qr@hor6x#N|;`{ErZY(fW|0K7>@1%i`~0FhoFV!7Ud_QfElLWXJk>CXnEyvTcVlafz|99yB zuJHSm2aP{1lItL0enpa0dMW2NmaCpXQW~TX9-DJW8oE?mc2Jjpji~oI&xaIs4AN{> zUr&EpC2KC@JhMglF;vfe6KNF4<@ZbIv{ce6=sAj{laQM8Y{?<%HYD0&$i@96NyWb8 z3_s-Y`H-YqUy6ETsm&T8svY-JBsGB@Qe$)-NuwbpiOq9pnv!x5N+T}z9+ECY+RMee zLsEPW-?$DJ&zqLd;gFj0dQZw6DD8Oo$(49lj#x8}N|%kOh1?R?CsRx8p?LS@oNsv^ zgEvSrL8{7!NLmPK5Er{QN!K9V5D%Qx+9_YrJ*JXAYbDHq3c=C5I;L;#MLJ$4bnZ95=g4CfxWuP7Odd8h@>7HS*pdW z%psEEAeH3~x+Ynb!}}0A3yHQ~jLPD^i=&3HcNdE44yiK_<547y zhh%3dhopUwJjK#&*4l2yW&8bjkhoNl1-Z zx>BP7Nf1?ZrIIr?CAob|C$`!u;9?^4# zHB{^Mm6$Sv${PC>XEdEVv<>y%aY&sx?{tzLL7K~6i%81+TCa@UuXr9JX+5OR#Mp1F z73JdZx{saO$};)O4R$psrNri0tdxb~E4$3!LOzA}iTs&VHsAf6`d2xlD$3L+plsn` z`;erz2iR$(x`l;S+Ux^j%`8fO5;0~m_z;yafudF&Wakuaqd6qqhg4Hm&0nT}eo(ZY zP3gT3v-2Jv{@%2VE;_&N;?Wce>SyorKPRCjE;g&o^?oA-A zR()x`L(+lcVni0*?+T)@H?B|1?o&u(IfGb|I-cM>gT>}~w8DGMq5DiY$yy(t8%u$- z%eq2ul>2}ms!Chsa`@{>v1Sh4vhlZ^u%fEG2gTHfvXr+*H%QtB33Fb~h24+>cs$6t zpnIvT{5*S;v>9GwxV7bLr^|PI!^>R#btLWlPTZbrZD`v3-7`_>v^CJ}G<;g}QzD&; zkavoc@rrJh8@A`C#F}~ZN^}3T_fF(c7ZiQZnwH#1&qGf+Mg1;u z!hYhXPd7Nn+P z=|p+ODoh~%tgLJjLUmQUvsrqGuduE6XPl1 zHvJAe?d1`gLr#HzvNVCm!AX+FLZZF@WV+!ClGfa1uiyEG6{*(o_gL!AQ?m_83n1}> z(IuUviT9p~wM%G9UPN4u2tQ6+-^`J;t&~rbHupK3e15*l0bKS0ORHol)f>PUP z<(tD9NQ3zH2_$*{#p&LYgSGm+!L+QoLwX?wpQ5U?p@usDH+y|7ntV>uDA{&TS^9>z zy#1C^*Gz#{nODHcz*gJUXarB1>fu=PA7LJlOTP{qx1$z z6<@JeO&*eRLREkDOq|HER?~WGB0q zL{G)p7@Wfjvll8a2j@CS@9{v%A!!$+w&LeeJTiWQGC&Pat6UJu6%o5uQ3V5waF!M2 zKvu6A<=-gkj4OeHb_KAHV&61@nC+@GOg>DtJ!3CbU za-F;dy$3HSat~G7pL6sOo0rf%NO=XPU2h(vw5pRn37(UA!ItCk79@w*zlxTg#$`CK z)}rWXeriXT5%o4wuM7+37=NzZA{u82kQVanJ4DitkhZFKW$QzdqN|A8GK24{at6&g zgElmJ?n4^IgFrr+B16Q$O|dj z#$6_mWQO#i7<-gjxH1q~pCymxkWQ&XP0=Qgz;;y&!3P4dK3(ns|6kQEw~dom%sqGLNG9HUttT zhum`xf8(WAH&RAJiR0=&BxyIKYW%ER1&qe>Ozravq_I4%XKu5)YBeLo!fn=unk7P9 z-bMv_T#E~o$3F7((<%r0hWA8`?NsnKbwu=b^6OZS{rX~Tkjo@UAB)Z3P-A}$9L$p~ zl3Lc~eNJ?mTQZ%bm5>ry$|30nr0u+5$X*&)pA)9@V3obJy}sDxqyqiiK-?zlR;m%Z zWby4LP-9Pkw57m2-b%W)F}u>K@f0d(Utmw((T@Vwc(cj)1d2bOe~bXu<|U45J{ihp ze)Jw9$^8SqhlAIOJ0vZFL_1*lA*44|qI*;J3d94Nq^?ax{!XgbzDQAJ7d5n3Gj>^o z_2e+^66I_k1-%b%+8&a$x)r-l;5~>xRn^j(B_9#>skM>YSs-3w{{}YY0V=0z;SWXX zZfef{?Koi*5w(IBwoE8^la@7F3~3NA+Ej$=P$GC-)+gx>q&jM(SYt_g(M}B9Lv<_D zo^Qf~$hwuHy0jO&C`wE0Abyc9>pQSZhFmu3&HS>}rrqcuT7N}le6KUdJ>mY%{))!) z%g$mA#c5@_ip$dH#7FGo#f@&JTjWBT#)Bz@B;RhL=hx)@Z8!GD3nV>{UEQj8XN^8f zQM)g4?+K}vc(9*W>i*qDvAvYR!)SJ%R-m^csUJGVus-h1)Kd@oFCpW@ibdqPGDaMy zoU~tKM832Ec2Q-YtVkT^Fp7)On`XREf0l6SHi0A)q`v%=Sw~VmNHch1oF!=~q$6_d z&_nMSZ9C{0d^CacqqqD`B-@U&ygrHLU-``~mOT3nW~qZ5Y2~y@gT=1>RMr)#;`V;( zv~8&z{YQZ}8*f_UQ_@(k&x?k9q)&j9DC%CINg*HU#~`&=#{i!4JSi`o6HYDAtcOUC z%wWBU`pivzDqCTQ2slUs=)EDL^+77r$3w-4gS6Y+J&axH^FF*gtb$U5$EqCtTOc*! zMN>YgjzQv&eXMeB|20euJVe!eI-Il2QW;p~gpL^@cF8Em2#zZ7a=v(ka6e2P*?2TZ zJ>k0aJ4|EDWejWMxnb^5PSKD`@N!-o81|<4ji9_I#-68DtS#_9kB>!EPEQBtT8mc~ zS@hBlG2$C)l>?b#%{Nre{h932Nmc>R^Rv+Q$bCpTZNOMj?}#|lnRtL zO^i57-F9!9SVq>Z#dLP1jg>s0kSl&wNd46o*cw8UC3=PkI7Z%^XR!BiHSDeO5#4#F zNTn!k?M$)o7~OlqTz2_hj>!sEGfjg^^F%&HX^j_%D#yv*Tp)T%dw!vqa-4DvS3r7HhWdNWT2B2L&tUn^W?9eD zKF&~ms=AK!xzJ-Vv*l;*S4lqxy|p-VhL_ks){EBPQIYcy)096{r-5PGz8&f*e`jLTb%JR-WbDqfe<$(O5X1D;AP{I~ z?qsh!JYMBf%6o?>eTK?%b|*(o;RB)x6!qRNmacLWtRw06F0qijwVhv!<7cRp@9$+7 z^-Uytl73HbI?2#_^5Y_s?z ztX@oOhFsl3PKbdrs>(@@;?pmy?4A!#iUa59{=Xn-W{=vp|;mzzZIR% z(*m{qTQP#H+d}xzQ5G#w>iZLQzT;#?c^=7;QtA{-sUm6yeTqyB*%BGC`p9e%pXqE!5z-CRY{!*m-tQo5gIsW_hda)r7|`upcuKg^F551JOIA$8-r zMUeCwQd=ph^Qwv$I9-@{FpcIe`Gi~$yDn10KD{VzU!;d|hkW*+y`=mwB@tMjA7ydC z&$%Y_sgIgBXCOD`eY%c`Xj9r5y1jx+jw~@9seWp;nR-6Y7b7oQ8)&1St5+RUdlH_L zV6s!-{VQ}*nDU&96aIEpi-Pos%b>pd(1u#O(hGKNs>YqCoaRj+@vEqd9Gxv+dH~ekKyFG!HTA<*;FFD&-5w()`>CIj->UEQIH5HnLKch;yMq2IH?AL{lX*Wsj zLugNVHS)Sd+H=Emb*A_cH(gO9BYlKUPk8qWKo3p0)4QFPYZ6<2q~3aF7Qg&Ry*0|h z?&`Z3I3vk{wm`N|ZP9NkjkZV7lDJpjw{kM|r9_{3*R4$){qbv~)I{<>{WnmL>c52w zdmZ);>{D3tGyZK0$ zSo*0+^&_mV&)Isz+F(Oq>%d0Bc7W{-I{-EvHWPL#?0jkI{)QX~n_&0A9)&#%dmZ); z>{D3t3ofV^tUqiJYy@m$*fy};$vS9JGsHqjfgJ@q33d)_Htags9k7RBPs3h?&4Yai zYrqfrdcgX=r25MORD=))TOYP1Y!}#munDlkU?;#*R_edk22JJruqFTgu+_+%-io;d zIH)zXzbt@1ggLF5>31KMZvK$DI=B<~J@6iIBX9^Uh%&!OaOt+pt-y)k_Tc*t2wfp` zZ^sFGfd{u|js@=o4+491;P_Nrt_~5=0UJ_VTUE)2yi}{lpC0K z8~@-3lI3qGH`t|d+wFxt0(%Pf9PDM-Ut#Y`OTSZ`m}TM&8V}~8EChcBUJCX~<@nX$ z2=FHGIq){HDUJPig99bg4ILkt`G&R(c4!G6Fod})_)Bmf@V=oOZwH%4GADsuM=|T8 zsSJ1o;=3|C3=<*5!hwE(SPdhW(VW5O;AY@e;F;h};9eNcdT+PR4TIRw0U4zE=;z&#JE_;!X`5FVCb zhdSUJ-IyDJf4|2WMuH#Ec1_MWy$>(Z{zG+Y795g~aDoNkYdon!w2;Ns_*ec``@InhW%c zxQ#twi^G&x0qpq~r@sQO3;qc_0Q@U>4zWW{tUn?A1c$%DmHy@opMoEQUw|VX za=d|Fl4L%oz-Dm!M;z~}$Adk=y&oHRb5In*XOB67FL?74<_h5N!Ii-_^D6rlIId9mHrPXf)=B<+Dqt4N;2-hv#h1ZIYz=yz5;32LYpYO^3`mHkl!3R-P zJ-%q+cl~d_>z_5qTC|J?pC4av_1wVgUJ=tIE^~>RUv@wpBinhfE*i0%<=>!`Ct%OO zUWEM__7?14u+L%5UR+8~*pjg2V1r<*!G^=uV(T!}h0p-D32Zai*0AkiJHvK|?G4)x zHWoG>HW79(>@e6-%F--zKo|!*5q1jfY*+!C4Z9L{Bdim4AM7#MGq9InufwW-mb3g8 zg!fBwAKe3w0Y3!0l;-%C;FjRouUMZ3wiM+qc?$LbhxoByad0egxEvg%A*_c(MX-lI zCkO_&EkjI$rrL4{t6?|8I$`(0s*L0)y9h!5*F0W<4aK;qF0gK}%e-07?#?Ax2|n9{ zc^!CCPv*_w>b;n^gBvnC3|~Q*8pRHWz`ui!f&0aA{I}p4;2*$6`g8mxupjsuc-#Pv zzX^V(xDja@8vd?<>@(uOJ>!8xilj8Z*A`Pr>*7RMT{@B+2M!;_@tQz-p z*@CVAX53ick^IWLO^4xAB$x&}8+JbI7qB_7YhX9QZioE}_7LoG*fX#fV6Vacs%&*S zGKO#u_95&`SbKSHk>dBzWY=sg?7zWn`YSl}Ci5L|t>2g*fm?u|gTIHrh8rwKyc_uO z@0`9kcmVwqJ2a6UhH?<O1R6!2XHg~ZM=W$LL!ZOTMW^3-&axu-s}0QhR4=rNS)ZA6z@hLzu$kkF zN>&f#vAFl6Fuuc}W^7lsVB4$%+ooOF4)4wOQ54(MIJQfY*!DnxeUC*}dBG=azk?k(mHB7-%9)IBvzTp*FWGij!S?;N zZ2y8izJWPqGuv_prKLv+{g$1|X!~)t@mJaY`6JsMKe26olWo^~Y|lJq`$dphrEf*w zUX%qI(2?z$fow~zW&6=aw)^+8{pKQB`6wHAnT2ybEh>XjcD8rp*$zl%>zcu~#t63g zL9&G?ILT4`Q;Hixp+=pVgNgNgo1qNofsY0bigo@D7?F6!*29rfF$ zxqM-A+@`;$moD;eQ_E7|Y+>dK;5_hq#Dyt-JPl`+CHQ(#W;(P{@zp7zjPDArRGB#% zTrHG&2s7nCQnCRPlvg*FSo28S%Meqy!)4*H2%E?7S?+XvQ9 z%zgmt2WG#3^#ij9VEw?1c4VpoySi`-(@TRx3HcEG=u;qBpj|Y2$QS~_VIMKm5~kwE zgByYKz#oFY>dyW>z;k;rM}u#I6E*68)n~offz~#~FF$4;1#TJ3JPEuAJO`ZFpX0N^ zQxllifa@hO?*WelA9q052Z0t*Re&bRoZxrxA{-k14b~3=H52>m2Z2Sw`axiMuznC2 z2G$P(9StDpCxNZN>Lif5pa-~B8W*TP_y{-^yfmHThlBNlL-_~WvW4}7L-{>o$v8N4 z7_uSgCx`OeNYX(+Iot`>PY#cP^^?QPV4NHpZh`fK!)IXq;Lyd)`SZac^}jC!{p7GB zSU))o2e;1T8h!xI2Gi3(75E^yFSzSi_NS+Wik}Z20`?t8@$&I78p7vNAf60<4*ncG zVFJgm00&NGrpJ!D!PObeyTSWrGamr&&SE|VzD!G~I?uQOVgDEG@DsTCQs!IWyI}ck z6WK+rmT|n1K4F%;6T2TI>yevSI<6MEMUj1L+3;2ROYLzeNA47;V@tf-aa6UK7D-DTO%01K>yx=96IkAo4s|KZyJZtRF<)0qX~mPr>>@q|u#QR2@Xh=f4L8 z{Up){EKee3jRU~?L1Y+MKZvXgRtJ&f-weD>9!wIq2XC-3_X003k1sp)hwvzX9n!!* zRAe3v{uMk4oD#_KS>Udfn3sWn2d@WzK(9cuKwp7}R>qedjzWm2!49Xu`@vViO>1)e zAK+y0Bk&clR*0LpbuIQU46aa{xiol5ZCZb2i2@vG2aFEZO{A+JggJ5*@K%rxifQ7uzptU2iDK31DPEL z{jj<^9Q4ELx?mhu8=8Ujv+A~B{j9nhSU;=o2iDK32Z8mo>LH40{^^I+4mjwC)l%q-ehw}Mele2$OMxe3G6xZ>=l^pEb>Z;kSaxU$E;Ww16L>4w4(>Xh z<5TtYUe3h|99b_AOAlBtK)y_!{^`?^5XzvOJQ#Eaf_G>gU4nwmjYK^%3J|_ zYXx(-144(jEHnV02e$-U@tuzL;0SOZumHz{^>gG5uzrr53D(b%9g`vG2g$R*`a$wy zJ;4?(;7agu@K$hiF30Z&*W1c`8r*va^JVa*zZE+Sx1~U@Lr3v%*S`i|2m2S{cr(5h z8VGg;*8+QkKLBTfTY)!$KL&fL4{WIaQy_%l6Pyv?0pL%-`X@JY!J81jS~9JM@}I4j zV`3ZF_K5iuI0bwOd|$GB{$Gb+c)|%DfWyEq!PmiNFTP8CM06W$ofek_}6rcw9 z<>#EB0eHh)=CYez9A64-jbg3@p45-IHuxO4HFy<1U+C?Ca2E~(!6Onm zgJIxg6yQ^Eww>bz_}duf6=1J8=B?oR1DW@Mf9=ieI00cVn&dp#6?`4s7$2ED0FOk0 zj3v26mV=9f^Ke5OxG4%$4g4W@iNnwcLKkGv3haj(bpg*pi$sH$p$k&M-r(`zI?-Ii z+290>fo$-C_hdZv|7Hkhlt91O3{I)d8Jq?W4`KcZ>|TfYF1RY#=))~?ssYD)ffFN` z%Ym!aBBuKrYCxD;lO39Ymmonma8?bDj|YDb{}JE-_)h_U6VCphgFAk}yb+vQjpn}` z{JSA|gt5a(@WkrO*T7v+qx;}7O*vlkE1X z)ny(9_Cc3T0_Q#DcmZzxjClpvaRNdvgiCI`l?(CPUbA|_5I9C!8hQ)3GBL!%hBk<42ucKsIm>T0iqc`FsXgjW+|A`Rf3xq7dDDVLA6!2p3eDF^2DsZVKoPH;` z8VYm(99e7!-@)P!?lgEqG24mv|TWG57@dE|%Vl;2Gdw!PS;< z`g@XT9Wcc42IYlhhmn5Sy#+hC({z$e^ynkzQs6g#FbGzE&qw*Z55^x18d`w$zX$9J z*8hGm3atM@Vk)tE{_B5GI1Uc_UnI@~>wi$V1f27bA0ErW`WL%5g7q(U?*Z#y+&%)< zzv%r#0G|K)H@&aHLH}lV9$5co_hT@=*=?}WiY8l3|6;c{SpQ;o09gNGcQ{!8V)y$M zsQ+aK`Zv2G9T-P9#1VD;U1;<4av_qoMpgX8ZpXV--g f^A`)7!0L*S$w#NSh>2!O2 delta 33370 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 W6>tDN{R8_?g4g;wwZ<;~HU1x?8)bw5 diff --git a/3rdparty/bx/tools/bin/linux/genie b/3rdparty/bx/tools/bin/linux/genie index b497f5dc9b18d289d18c8c6442c4ce2183456345..7b68c735e1b81cf1c3c2049773ac1eee6e3a2f69 100755 GIT binary patch delta 28737 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 GTK^vt&5T9> delta 23887 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 aY6J}bP*pobYoL+?{p{7&dbM)Vn*2ZD4CM|0 diff --git a/3rdparty/bx/tools/bin/windows/genie.exe b/3rdparty/bx/tools/bin/windows/genie.exe index 8111412afcf6bd4ba6e34956c455b7eb1c9c4da4..1fd05d21798c0e3b5eec8a0b9de93511b25da2dd 100644 GIT binary patch delta 14536 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 delta 9917 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 diff --git a/scripts/src/3rdparty.lua b/scripts/src/3rdparty.lua index e3c29933220..2dacc9b8b81 100644 --- a/scripts/src/3rdparty.lua +++ b/scripts/src/3rdparty.lua @@ -735,8 +735,16 @@ end configuration { } + local version = str_to_version(_OPTIONS["gcc_version"]) + if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "gcc") then + if version >= 60000 then + buildoptions_cpp { + "-Wno-misleading-indentation", + } + end + end + if _OPTIONS["targetos"]=="windows" then - local version = str_to_version(_OPTIONS["gcc_version"]) if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "clang") then buildoptions { "-Wno-unknown-attributes", @@ -747,7 +755,6 @@ end end if _OPTIONS["targetos"]=="macosx" then - local version = str_to_version(_OPTIONS["gcc_version"]) if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "clang") then buildoptions { "-Wno-switch", From a8ebc114372476314a3817daa010b71f85d329e1 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 6 Aug 2016 14:23:30 +0200 Subject: [PATCH 044/116] update rapidjson (nw) --- 3rdparty/rapidjson/.gitignore | 1 + 3rdparty/rapidjson/.gitmodules | 2 +- 3rdparty/rapidjson/.travis.yml | 97 ++----------------- 3rdparty/rapidjson/CMakeLists.txt | 31 ++++++ .../rapidjson/CMakeModules/FindGTestSrc.cmake | 2 +- 3rdparty/rapidjson/doc/dom.md | 1 + 3rdparty/rapidjson/doc/features.md | 1 + 3rdparty/rapidjson/doc/misc/footer.html | 16 --- 3rdparty/rapidjson/doc/misc/header.html | 9 -- 3rdparty/rapidjson/doc/npm.md | 31 ++++++ 3rdparty/rapidjson/doc/sax.md | 2 +- 3rdparty/rapidjson/doc/sax.zh-cn.md | 3 +- 3rdparty/rapidjson/doc/schema.md | 4 +- 3rdparty/rapidjson/doc/schema.zh-cn.md | 4 +- 3rdparty/rapidjson/doc/tutorial.md | 2 +- 3rdparty/rapidjson/doc/tutorial.zh-cn.md | 4 +- .../example/parsebyparts/parsebyparts.cpp | 3 +- .../rapidjson/include/rapidjson/allocators.h | 32 +++--- .../rapidjson/include/rapidjson/document.h | 36 ++++--- .../rapidjson/include/rapidjson/encodings.h | 6 +- .../include/rapidjson/internal/dtoa.h | 3 +- .../include/rapidjson/internal/strtod.h | 2 +- .../rapidjson/include/rapidjson/pointer.h | 8 +- .../include/rapidjson/prettywriter.h | 6 ++ .../rapidjson/include/rapidjson/rapidjson.h | 2 +- 3rdparty/rapidjson/include/rapidjson/reader.h | 24 ++++- 3rdparty/rapidjson/include/rapidjson/schema.h | 40 +++----- 3rdparty/rapidjson/include/rapidjson/stream.h | 2 +- 3rdparty/rapidjson/include/rapidjson/writer.h | 82 +++++++++++----- 3rdparty/rapidjson/package.json | 7 +- .../rapidjson/test/unittest/CMakeLists.txt | 15 ++- 3rdparty/rapidjson/test/unittest/dtoatest.cpp | 1 + .../rapidjson/test/unittest/encodingstest.cpp | 3 +- .../test/unittest/istreamwrappertest.cpp | 3 +- 3rdparty/rapidjson/test/unittest/itoatest.cpp | 2 + .../rapidjson/test/unittest/readertest.cpp | 75 ++++++++++++-- .../rapidjson/test/unittest/schematest.cpp | 2 +- .../test/unittest/stringbuffertest.cpp | 7 ++ .../rapidjson/test/unittest/valuetest.cpp | 30 ++++-- .../rapidjson/test/unittest/writertest.cpp | 32 ++++-- 3rdparty/rapidjson/travis-doxygen.sh | 4 +- 41 files changed, 389 insertions(+), 248 deletions(-) create mode 100644 3rdparty/rapidjson/doc/npm.md diff --git a/3rdparty/rapidjson/.gitignore b/3rdparty/rapidjson/.gitignore index 2c412c2bba9..e7e8fba9bb3 100644 --- a/3rdparty/rapidjson/.gitignore +++ b/3rdparty/rapidjson/.gitignore @@ -20,5 +20,6 @@ Testing /googletest install_manifest.txt Doxyfile +Doxyfile.zh-cn DartConfiguration.tcl *.nupkg diff --git a/3rdparty/rapidjson/.gitmodules b/3rdparty/rapidjson/.gitmodules index 8e9d1f376c2..5e41f7c9751 100644 --- a/3rdparty/rapidjson/.gitmodules +++ b/3rdparty/rapidjson/.gitmodules @@ -1,3 +1,3 @@ [submodule "thirdparty/gtest"] path = thirdparty/gtest - url = https://chromium.googlesource.com/external/googletest.git + url = https://github.com/google/googletest.git diff --git a/3rdparty/rapidjson/.travis.yml b/3rdparty/rapidjson/.travis.yml index 9266277b606..f9319f2edb9 100644 --- a/3rdparty/rapidjson/.travis.yml +++ b/3rdparty/rapidjson/.travis.yml @@ -1,16 +1,12 @@ +sudo: required +dist: precise + language: cpp -sudo: false cache: - ccache -addons: - apt: - packages: &default_packages - - cmake - - valgrind - env: -global: + global: - USE_CCACHE=1 - CCACHE_SLOPPINESS=pch_defines,time_macros - CCACHE_COMPRESS=1 @@ -20,108 +16,41 @@ global: - GITHUB_REPO='miloyip/rapidjson' - secure: "HrsaCb+N66EG1HR+LWH1u51SjaJyRwJEDzqJGYMB7LJ/bfqb9mWKF1fLvZGk46W5t7TVaXRDD5KHFx9DPWvKn4gRUVkwTHEy262ah5ORh8M6n/6VVVajeV/AYt2C0sswdkDBDO4Xq+xy5gdw3G8s1A4Inbm73pUh+6vx+7ltBbk=" +before_install: + - sudo apt-add-repository -y ppa:ubuntu-toolchain-r/test + - sudo apt-get update -qq + - sudo apt-get install -y cmake valgrind g++-multilib libc6-dbg:i386 + matrix: include: # gcc - env: CONF=release ARCH=x86 CXX11=ON compiler: gcc - addons: - apt: - packages: - - *default_packages - - g++-multilib - - libc6-dbg:i386 - env: CONF=release ARCH=x86_64 CXX11=ON compiler: gcc - env: CONF=debug ARCH=x86 CXX11=OFF compiler: gcc - addons: - apt: - packages: - - *default_packages - - g++-multilib - - libc6-dbg:i386 - env: CONF=debug ARCH=x86_64 CXX11=OFF compiler: gcc # clang - env: CONF=debug ARCH=x86 CXX11=ON CCACHE_CPP2=yes compiler: clang - addons: - apt: - sources: - - llvm-toolchain-precise-3.7 - - ubuntu-toolchain-r-test - packages: - - *default_packages - - g++-multilib - - libc6-dbg:i386 - - clang-3.7 - env: CONF=debug ARCH=x86_64 CXX11=ON CCACHE_CPP2=yes compiler: clang - addons: - apt: - sources: - - llvm-toolchain-precise-3.7 - - ubuntu-toolchain-r-test - packages: - - *default_packages - - clang-3.7 - env: CONF=debug ARCH=x86 CXX11=OFF CCACHE_CPP2=yes compiler: clang - addons: - apt: - sources: - - llvm-toolchain-precise-3.7 - - ubuntu-toolchain-r-test - packages: - - *default_packages - - g++-multilib - - libc6-dbg:i386 - - clang-3.7 - env: CONF=debug ARCH=x86_64 CXX11=OFF CCACHE_CPP2=yes compiler: clang - addons: - apt: - sources: - - llvm-toolchain-precise-3.7 - - ubuntu-toolchain-r-test - packages: - - *default_packages - - clang-3.7 - env: CONF=release ARCH=x86 CXX11=ON CCACHE_CPP2=yes compiler: clang - addons: - apt: - sources: - - llvm-toolchain-precise-3.7 - - ubuntu-toolchain-r-test - packages: - - *default_packages - - g++-multilib - - libc6-dbg:i386 - - clang-3.7 - env: CONF=release ARCH=x86_64 CXX11=ON CCACHE_CPP2=yes compiler: clang - addons: - apt: - sources: - - llvm-toolchain-precise-3.7 - - ubuntu-toolchain-r-test - packages: - - *default_packages - - clang-3.7 # coverage report - env: CONF=debug ARCH=x86 CXX11=ON GCOV_FLAGS='--coverage' compiler: gcc cache: - ccache - pip - addons: - apt: - packages: - - *default_packages - - g++-multilib - - libc6-dbg:i386 after_success: - pip install --user cpp-coveralls - coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h @@ -130,12 +59,6 @@ matrix: cache: - ccache - pip - addons: - apt: - packages: - - *default_packages - - g++-multilib - - libc6-dbg:i386 after_success: - pip install --user cpp-coveralls - coveralls -r .. --gcov-options '\-lp' -e thirdparty -e example -e test -e build/CMakeFiles -e include/rapidjson/msinttypes -e include/rapidjson/internal/meta.h -e include/rapidjson/error/en.h @@ -158,7 +81,7 @@ before_script: - mkdir build script: - - if [ "$CXX" = "clang++" ]; then export CXX="clang++-3.7" CC="clang-3.7"; fi + - if [ "$CXX" = "clang++" ]; then export CXXFLAGS="-stdlib=libc++ ${CXXFLAGS}"; fi - > eval "ARCH_FLAGS=\${ARCH_FLAGS_${ARCH}}" ; (cd build && cmake diff --git a/3rdparty/rapidjson/CMakeLists.txt b/3rdparty/rapidjson/CMakeLists.txt index d315b749b96..96bfdc2aebe 100644 --- a/3rdparty/rapidjson/CMakeLists.txt +++ b/3rdparty/rapidjson/CMakeLists.txt @@ -1,4 +1,8 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +if(POLICY CMP0025) + # detect Apple's Clang + cmake_policy(SET CMP0025 NEW) +endif() if(POLICY CMP0054) cmake_policy(SET CMP0054 NEW) endif() @@ -28,6 +32,9 @@ option(RAPIDJSON_BUILD_THIRDPARTY_GTEST option(RAPIDJSON_BUILD_CXX11 "Build rapidjson with C++11 (gcc/clang)" ON) +option(RAPIDJSON_BUILD_ASAN "Build rapidjson with address sanitizer (gcc/clang)" OFF) +option(RAPIDJSON_BUILD_UBSAN "Build rapidjson with undefined behavior sanitizer (gcc/clang)" OFF) + option(RAPIDJSON_HAS_STDSTRING "" OFF) if(RAPIDJSON_HAS_STDSTRING) add_definitions(-DRAPIDJSON_HAS_STDSTRING) @@ -51,11 +58,35 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif() endif() + if (RAPIDJSON_BUILD_ASAN) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.0") + message(FATAL_ERROR "GCC < 4.8 doesn't support the address sanitizer") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") + endif() + endif() + if (RAPIDJSON_BUILD_UBSAN) + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9.0") + message(FATAL_ERROR "GCC < 4.9 doesn't support the undefined behavior sanitizer") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") + endif() + endif() elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra -Werror -Wno-missing-field-initializers") if (RAPIDJSON_BUILD_CXX11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif() + if (RAPIDJSON_BUILD_ASAN) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") + endif() + if (RAPIDJSON_BUILD_UBSAN) + if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") + endif() + endif() elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") diff --git a/3rdparty/rapidjson/CMakeModules/FindGTestSrc.cmake b/3rdparty/rapidjson/CMakeModules/FindGTestSrc.cmake index f942a8dafcd..f3cb8c99089 100644 --- a/3rdparty/rapidjson/CMakeModules/FindGTestSrc.cmake +++ b/3rdparty/rapidjson/CMakeModules/FindGTestSrc.cmake @@ -1,7 +1,7 @@ SET(GTEST_SEARCH_PATH "${GTEST_SOURCE_DIR}" - "${CMAKE_CURRENT_LIST_DIR}/../thirdparty/gtest") + "${CMAKE_CURRENT_LIST_DIR}/../thirdparty/gtest/googletest") IF(UNIX) IF(RAPIDJSON_BUILD_THIRDPARTY_GTEST) diff --git a/3rdparty/rapidjson/doc/dom.md b/3rdparty/rapidjson/doc/dom.md index 60480c318ca..6c541fe93c6 100644 --- a/3rdparty/rapidjson/doc/dom.md +++ b/3rdparty/rapidjson/doc/dom.md @@ -118,6 +118,7 @@ Parse flags | Meaning `kParseCommentsFlag` | Allow one-line `// ...` and multi-line `/* ... */` comments (relaxed JSON syntax). `kParseNumbersAsStringsFlag` | Parse numerical type values as strings. `kParseTrailingCommasFlag` | Allow trailing commas at the end of objects and arrays (relaxed JSON syntax). +`kParseNanAndInfFlag` | Allow parsing `NaN`, `Inf`, `Infinity`, `-Inf` and `-Infinity` as `double` values (relaxed JSON syntax). By using a non-type template parameter, instead of a function parameter, C++ compiler can generate code which is optimized for specified combinations, improving speed, and reducing code size (if only using a single specialization). The downside is the flags needed to be determined in compile-time. diff --git a/3rdparty/rapidjson/doc/features.md b/3rdparty/rapidjson/doc/features.md index f092cf1fade..984c6abaee0 100644 --- a/3rdparty/rapidjson/doc/features.md +++ b/3rdparty/rapidjson/doc/features.md @@ -26,6 +26,7 @@ * Support optional relaxed syntax. * Single line (`// ...`) and multiple line (`/* ... */`) comments (`kParseCommentsFlag`). * Trailing commas at the end of objects and arrays (`kParseTrailingCommasFlag`). +* [NPM compliant](doc/npm.md). ## Unicode diff --git a/3rdparty/rapidjson/doc/misc/footer.html b/3rdparty/rapidjson/doc/misc/footer.html index 843aa110448..77f11311880 100644 --- a/3rdparty/rapidjson/doc/misc/footer.html +++ b/3rdparty/rapidjson/doc/misc/footer.html @@ -7,21 +7,5 @@ - - diff --git a/3rdparty/rapidjson/doc/misc/header.html b/3rdparty/rapidjson/doc/misc/header.html index d43f2aaff9a..2dbe7214658 100644 --- a/3rdparty/rapidjson/doc/misc/header.html +++ b/3rdparty/rapidjson/doc/misc/header.html @@ -16,15 +16,6 @@ $mathjax $extrastylesheet -

diff --git a/3rdparty/rapidjson/doc/npm.md b/3rdparty/rapidjson/doc/npm.md new file mode 100644 index 00000000000..5efa7682137 --- /dev/null +++ b/3rdparty/rapidjson/doc/npm.md @@ -0,0 +1,31 @@ +## NPM + +# package.json {#package} + +~~~~~~~~~~js +{ + ... + "dependencies": { + ... + "rapidjson": "git@github.com:miloyip/rapidjson.git" + }, + ... + "gypfile": true +} +~~~~~~~~~~ + +# binding.gyp {#binding} + +~~~~~~~~~~js +{ + ... + 'targets': [ + { + ... + 'include_dirs': [ + ', MyHandler> { bool Null() { cout << "Null()" << endl; return true; } bool Bool(bool b) { cout << "Bool(" << boolalpha << b << ")" << endl; return true; } bool Int(int i) { cout << "Int(" << i << ")" << endl; return true; } diff --git a/3rdparty/rapidjson/doc/sax.zh-cn.md b/3rdparty/rapidjson/doc/sax.zh-cn.md index b66957c3ea3..7b8aabe4345 100644 --- a/3rdparty/rapidjson/doc/sax.zh-cn.md +++ b/3rdparty/rapidjson/doc/sax.zh-cn.md @@ -59,7 +59,7 @@ EndObject(7) using namespace rapidjson; using namespace std; -struct MyHandler { +struct MyHandler : public BaseReaderHandler, MyHandler> { bool Null() { cout << "Null()" << endl; return true; } bool Bool(bool b) { cout << "Bool(" << boolalpha << b << ")" << endl; return true; } bool Int(int i) { cout << "Int(" << i << ")" << endl; return true; } @@ -106,6 +106,7 @@ class Handler { bool Int64(int64_t i); bool Uint64(uint64_t i); bool Double(double d); + bool RawNumber(const Ch* str, SizeType length, bool copy); bool String(const Ch* str, SizeType length, bool copy); bool StartObject(); bool Key(const Ch* str, SizeType length, bool copy); diff --git a/3rdparty/rapidjson/doc/schema.md b/3rdparty/rapidjson/doc/schema.md index 6d66fa5dd04..1fad5fbce34 100644 --- a/3rdparty/rapidjson/doc/schema.md +++ b/3rdparty/rapidjson/doc/schema.md @@ -152,7 +152,7 @@ JSON Schema supports [`$ref` keyword](http://spacetelescope.github.io/understand { "$ref": "definitions.json#/address" } ~~~ -As `SchemaValidator` does not know how to resolve such URI, it needs a user-provided `IRemoteSchemaDocumentProvider` instance to do so. +As `SchemaDocument` does not know how to resolve such URI, it needs a user-provided `IRemoteSchemaDocumentProvider` instance to do so. ~~~ class MyRemoteSchemaDocumentProvider : public IRemoteSchemaDocumentProvider { @@ -165,7 +165,7 @@ public: // ... MyRemoteSchemaDocumentProvider provider; -SchemaValidator validator(schema, &provider); +SchemaDocument schema(sd, &provider); ~~~ ## Conformance diff --git a/3rdparty/rapidjson/doc/schema.zh-cn.md b/3rdparty/rapidjson/doc/schema.zh-cn.md index 95f5a6956f7..345b7c54f7a 100644 --- a/3rdparty/rapidjson/doc/schema.zh-cn.md +++ b/3rdparty/rapidjson/doc/schema.zh-cn.md @@ -152,7 +152,7 @@ JSON Schema æ”¯æŒ [`$ref` 关键字](http://spacetelescope.github.io/understand { "$ref": "definitions.json#/address" } ~~~ -由于 `SchemaValidator` å¹¶ä¸çŸ¥é“如何处ç†é‚£äº› URI,它需è¦ä½¿ç”¨è€…æä¾›ä¸€ä¸ª `IRemoteSchemaDocumentProvider` 的实例去处ç†ã€‚ +由于 `SchemaDocument` å¹¶ä¸çŸ¥é“如何处ç†é‚£äº› URI,它需è¦ä½¿ç”¨è€…æä¾›ä¸€ä¸ª `IRemoteSchemaDocumentProvider` 的实例去处ç†ã€‚ ~~~ class MyRemoteSchemaDocumentProvider : public IRemoteSchemaDocumentProvider { @@ -165,7 +165,7 @@ public: // ... MyRemoteSchemaDocumentProvider provider; -SchemaValidator validator(schema, &provider); +SchemaDocument schema(sd, &provider); ~~~ ## 标准的符åˆç¨‹åº¦ diff --git a/3rdparty/rapidjson/doc/tutorial.md b/3rdparty/rapidjson/doc/tutorial.md index 121102345b4..0da07dc5d91 100644 --- a/3rdparty/rapidjson/doc/tutorial.md +++ b/3rdparty/rapidjson/doc/tutorial.md @@ -166,7 +166,7 @@ If we are unsure whether a member exists, we need to call `HasMember()` before c ~~~~~~~~~~cpp Value::ConstMemberIterator itr = document.FindMember("hello"); if (itr != document.MemberEnd()) - printf("%s %s\n", itr->value.GetString()); + printf("%s\n", itr->value.GetString()); ~~~~~~~~~~ ## Querying Number {#QueryNumber} diff --git a/3rdparty/rapidjson/doc/tutorial.zh-cn.md b/3rdparty/rapidjson/doc/tutorial.zh-cn.md index 7a0e6e504c7..f5db1ca6fa4 100644 --- a/3rdparty/rapidjson/doc/tutorial.zh-cn.md +++ b/3rdparty/rapidjson/doc/tutorial.zh-cn.md @@ -166,7 +166,7 @@ Type of member a is Array ~~~~~~~~~~cpp Value::ConstMemberIterator itr = document.FindMember("hello"); if (itr != document.MemberEnd()) - printf("%s %s\n", itr->value.GetString()); + printf("%s\n", itr->value.GetString()); ~~~~~~~~~~ ## 查询 Number {#QueryNumber} @@ -379,7 +379,7 @@ const char * cstr = getenv("USER"); size_t cstr_len = ...; // 如果有长度 Value s; // s.SetString(cstr); // è¿™ä¸èƒ½é€šè¿‡ç¼–译 -s.SetString(StringRef(cstr)); // å¯ä»¥ï¼Œå‡è®¾å®ƒçš„生命周期案全,并且是以空字符结尾的 +s.SetString(StringRef(cstr)); // å¯ä»¥ï¼Œå‡è®¾å®ƒçš„生命周期安全,并且是以空字符结尾的 s = StringRef(cstr); // 上行的缩写 s.SetString(StringRef(cstr, cstr_len));// 更快,å¯å¤„ç†ç©ºå­—符 s = StringRef(cstr, cstr_len); // 上行的缩写 diff --git a/3rdparty/rapidjson/example/parsebyparts/parsebyparts.cpp b/3rdparty/rapidjson/example/parsebyparts/parsebyparts.cpp index 919d9083458..57eed005dea 100644 --- a/3rdparty/rapidjson/example/parsebyparts/parsebyparts.cpp +++ b/3rdparty/rapidjson/example/parsebyparts/parsebyparts.cpp @@ -1,7 +1,8 @@ // Example of parsing JSON to document by parts. // Using C++11 threads -#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1700) +// Temporarily disable for clang (older version) due to incompatibility with libstdc++ +#if (__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1700)) && !defined(__clang__) #include "rapidjson/document.h" #include "rapidjson/error/en.h" diff --git a/3rdparty/rapidjson/include/rapidjson/allocators.h b/3rdparty/rapidjson/include/rapidjson/allocators.h index c705969729a..98affe03fbf 100644 --- a/3rdparty/rapidjson/include/rapidjson/allocators.h +++ b/3rdparty/rapidjson/include/rapidjson/allocators.h @@ -179,7 +179,8 @@ public: size = RAPIDJSON_ALIGN(size); if (chunkHead_ == 0 || chunkHead_->size + size > chunkHead_->capacity) - AddChunk(chunk_capacity_ > size ? chunk_capacity_ : size); + if (!AddChunk(chunk_capacity_ > size ? chunk_capacity_ : size)) + return NULL; void *buffer = reinterpret_cast(chunkHead_) + RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + chunkHead_->size; chunkHead_->size += size; @@ -211,11 +212,13 @@ public: } // Realloc process: allocate and copy memory, do not free original buffer. - void* newBuffer = Malloc(newSize); - RAPIDJSON_ASSERT(newBuffer != 0); // Do not handle out-of-memory explicitly. - if (originalSize) - std::memcpy(newBuffer, originalPtr, originalSize); - return newBuffer; + if (void* newBuffer = Malloc(newSize)) { + if (originalSize) + std::memcpy(newBuffer, originalPtr, originalSize); + return newBuffer; + } + else + return NULL; } //! Frees a memory block (concept Allocator) @@ -229,15 +232,20 @@ private: //! Creates a new chunk. /*! \param capacity Capacity of the chunk in bytes. + \return true if success. */ - void AddChunk(size_t capacity) { + bool AddChunk(size_t capacity) { if (!baseAllocator_) ownBaseAllocator_ = baseAllocator_ = RAPIDJSON_NEW(BaseAllocator()); - ChunkHeader* chunk = reinterpret_cast(baseAllocator_->Malloc(RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + capacity)); - chunk->capacity = capacity; - chunk->size = 0; - chunk->next = chunkHead_; - chunkHead_ = chunk; + if (ChunkHeader* chunk = reinterpret_cast(baseAllocator_->Malloc(RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + capacity))) { + chunk->capacity = capacity; + chunk->size = 0; + chunk->next = chunkHead_; + chunkHead_ = chunk; + return true; + } + else + return false; } static const int kDefaultChunkCapacity = 64 * 1024; //!< Default chunk capacity. diff --git a/3rdparty/rapidjson/include/rapidjson/document.h b/3rdparty/rapidjson/include/rapidjson/document.h index d286eb1e51a..e3e20dfbdc9 100644 --- a/3rdparty/rapidjson/include/rapidjson/document.h +++ b/3rdparty/rapidjson/include/rapidjson/document.h @@ -23,24 +23,26 @@ #include "memorystream.h" #include "encodedstream.h" #include // placement new +#include -#ifdef _MSC_VER RAPIDJSON_DIAG_PUSH +#ifdef _MSC_VER RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant RAPIDJSON_DIAG_OFF(4244) // conversion from kXxxFlags to 'uint16_t', possible loss of data #endif #ifdef __clang__ -RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_OFF(padded) RAPIDJSON_DIAG_OFF(switch-enum) RAPIDJSON_DIAG_OFF(c++98-compat) #endif #ifdef __GNUC__ -RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_OFF(effc++) +#if __GNUC__ >= 6 +RAPIDJSON_DIAG_OFF(terminate) // ignore throwing RAPIDJSON_ASSERT in RAPIDJSON_NOEXCEPT functions #endif +#endif // __GNUC__ #ifndef RAPIDJSON_NOMEMBERITERATORCLASS #include // std::iterator, std::random_access_iterator_tag @@ -478,7 +480,7 @@ template struct TypeHelper > { typedef std::basic_string StringType; static bool Is(const ValueType& v) { return v.IsString(); } - static StringType Get(const ValueType& v) { return v.GetString(); } + static StringType Get(const ValueType& v) { return StringType(v.GetString(), v.GetStringLength()); } static ValueType& Set(ValueType& v, const StringType& data, typename ValueType::AllocatorType& a) { return v.SetString(data, a); } }; #endif @@ -952,12 +954,16 @@ public: if (IsUint64()) { uint64_t u = GetUint64(); volatile double d = static_cast(u); - return static_cast(d) == u; + return (d >= 0.0) + && (d < static_cast(std::numeric_limits::max())) + && (u == static_cast(d)); } if (IsInt64()) { int64_t i = GetInt64(); volatile double d = static_cast(i); - return static_cast< int64_t>(d) == i; + return (d >= static_cast(std::numeric_limits::min())) + && (d < static_cast(std::numeric_limits::max())) + && (i == static_cast(d)); } return true; // double, int, uint are always lossless } @@ -973,6 +979,9 @@ public: bool IsLosslessFloat() const { if (!IsNumber()) return false; double a = GetDouble(); + if (a < static_cast(-std::numeric_limits::max()) + || a > static_cast(std::numeric_limits::max())) + return false; double b = static_cast(static_cast(a)); return a >= b && a <= b; // Prevent -Wfloat-equal } @@ -1160,8 +1169,8 @@ public: \return Iterator to member, if it exists. Otherwise returns \ref MemberEnd(). */ - MemberIterator FindMember(const std::basic_string& name) { return FindMember(StringRef(name)); } - ConstMemberIterator FindMember(const std::basic_string& name) const { return FindMember(StringRef(name)); } + MemberIterator FindMember(const std::basic_string& name) { return FindMember(GenericValue(StringRef(name))); } + ConstMemberIterator FindMember(const std::basic_string& name) const { return FindMember(GenericValue(StringRef(name))); } #endif //! Add a member (name-value pair) to the object. @@ -2561,17 +2570,6 @@ private: }; RAPIDJSON_NAMESPACE_END - -#ifdef _MSC_VER RAPIDJSON_DIAG_POP -#endif - -#ifdef __clang__ -RAPIDJSON_DIAG_POP -#endif - -#ifdef __GNUC__ -RAPIDJSON_DIAG_POP -#endif #endif // RAPIDJSON_DOCUMENT_H_ diff --git a/3rdparty/rapidjson/include/rapidjson/encodings.h b/3rdparty/rapidjson/include/rapidjson/encodings.h index edfc9901615..baa7c2b17f8 100644 --- a/3rdparty/rapidjson/include/rapidjson/encodings.h +++ b/3rdparty/rapidjson/include/rapidjson/encodings.h @@ -154,7 +154,11 @@ struct UTF8 { } unsigned char type = GetRange(static_cast(c)); - *codepoint = (0xFF >> type) & static_cast(c); + if (type >= 32) { + *codepoint = 0; + } else { + *codepoint = (0xFF >> type) & static_cast(c); + } bool result = true; switch (type) { case 2: TAIL(); return result; diff --git a/3rdparty/rapidjson/include/rapidjson/internal/dtoa.h b/3rdparty/rapidjson/include/rapidjson/internal/dtoa.h index bc454960f11..8d6350e626d 100644 --- a/3rdparty/rapidjson/include/rapidjson/internal/dtoa.h +++ b/3rdparty/rapidjson/include/rapidjson/internal/dtoa.h @@ -102,7 +102,8 @@ inline void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buff kappa--; if (p2 < delta) { *K += kappa; - GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * kPow10[-static_cast(kappa)]); + int index = -static_cast(kappa); + GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * (index < 9 ? kPow10[-static_cast(kappa)] : 0)); return; } } diff --git a/3rdparty/rapidjson/include/rapidjson/internal/strtod.h b/3rdparty/rapidjson/include/rapidjson/internal/strtod.h index fd4b01e8dde..289c413b07b 100644 --- a/3rdparty/rapidjson/include/rapidjson/internal/strtod.h +++ b/3rdparty/rapidjson/include/rapidjson/internal/strtod.h @@ -142,7 +142,7 @@ inline bool StrtodDiyFp(const char* decimals, size_t length, size_t decimalPosit size_t remaining = length - i; const unsigned kUlpShift = 3; const unsigned kUlp = 1 << kUlpShift; - int error = (remaining == 0) ? 0 : kUlp / 2; + int64_t error = (remaining == 0) ? 0 : kUlp / 2; DiyFp v(significand, 0); v = v.Normalize(); diff --git a/3rdparty/rapidjson/include/rapidjson/pointer.h b/3rdparty/rapidjson/include/rapidjson/pointer.h index c9852779fb9..0206ac1c8b6 100644 --- a/3rdparty/rapidjson/include/rapidjson/pointer.h +++ b/3rdparty/rapidjson/include/rapidjson/pointer.h @@ -767,8 +767,12 @@ private: tokenCount_ = rhs.tokenCount_ + extraToken; tokens_ = static_cast(allocator_->Malloc(tokenCount_ * sizeof(Token) + (nameBufferSize + extraNameBufferSize) * sizeof(Ch))); nameBuffer_ = reinterpret_cast(tokens_ + tokenCount_); - std::memcpy(tokens_, rhs.tokens_, rhs.tokenCount_ * sizeof(Token)); - std::memcpy(nameBuffer_, rhs.nameBuffer_, nameBufferSize * sizeof(Ch)); + if (rhs.tokenCount_ > 0) { + std::memcpy(tokens_, rhs.tokens_, rhs.tokenCount_ * sizeof(Token)); + } + if (nameBufferSize > 0) { + std::memcpy(nameBuffer_, rhs.nameBuffer_, nameBufferSize * sizeof(Ch)); + } // Adjust pointers to name buffer std::ptrdiff_t diff = nameBuffer_ - rhs.nameBuffer_; diff --git a/3rdparty/rapidjson/include/rapidjson/prettywriter.h b/3rdparty/rapidjson/include/rapidjson/prettywriter.h index 75dc474f4c1..0dcb0fee923 100644 --- a/3rdparty/rapidjson/include/rapidjson/prettywriter.h +++ b/3rdparty/rapidjson/include/rapidjson/prettywriter.h @@ -115,6 +115,12 @@ public: } bool Key(const Ch* str, SizeType length, bool copy = false) { return String(str, length, copy); } + +#if RAPIDJSON_HAS_STDSTRING + bool Key(const std::basic_string& str) { + return Key(str.data(), SizeType(str.size())); + } +#endif bool EndObject(SizeType memberCount = 0) { (void)memberCount; diff --git a/3rdparty/rapidjson/include/rapidjson/rapidjson.h b/3rdparty/rapidjson/include/rapidjson/rapidjson.h index 062e25e1132..4bdaed611ee 100644 --- a/3rdparty/rapidjson/include/rapidjson/rapidjson.h +++ b/3rdparty/rapidjson/include/rapidjson/rapidjson.h @@ -250,7 +250,7 @@ //! Whether using 64-bit architecture #ifndef RAPIDJSON_64BIT -#if defined(__LP64__) || defined(_WIN64) || defined(__EMSCRIPTEN__) +#if defined(__LP64__) || (defined(__x86_64__) && defined(__ILP32__)) || defined(_WIN64) || defined(__EMSCRIPTEN__) #define RAPIDJSON_64BIT 1 #else #define RAPIDJSON_64BIT 0 diff --git a/3rdparty/rapidjson/include/rapidjson/reader.h b/3rdparty/rapidjson/include/rapidjson/reader.h index 16e2d073ce1..19f8849b14c 100644 --- a/3rdparty/rapidjson/include/rapidjson/reader.h +++ b/3rdparty/rapidjson/include/rapidjson/reader.h @@ -23,6 +23,7 @@ #include "internal/meta.h" #include "internal/stack.h" #include "internal/strtod.h" +#include #if defined(RAPIDJSON_SIMD) && defined(_MSC_VER) #include @@ -42,6 +43,7 @@ RAPIDJSON_DIAG_OFF(4702) // unreachable code #ifdef __clang__ RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(old-style-cast) RAPIDJSON_DIAG_OFF(padded) RAPIDJSON_DIAG_OFF(switch-enum) #endif @@ -150,6 +152,7 @@ enum ParseFlag { kParseCommentsFlag = 32, //!< Allow one-line (//) and multi-line (/**/) comments. kParseNumbersAsStringsFlag = 64, //!< Parse all numbers (ints/doubles) as strings. kParseTrailingCommasFlag = 128, //!< Allow trailing commas at the end of objects and arrays. + kParseNanAndInfFlag = 256, //!< Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles. kParseDefaultFlags = RAPIDJSON_PARSE_DEFAULT_FLAGS //!< Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS }; @@ -1137,6 +1140,8 @@ private: (parseFlags & kParseInsituFlag) == 0> s(*this, copy.s); size_t startOffset = s.Tell(); + double d = 0.0; + bool useNanOrInf = false; // Parse minus bool minus = Consume(s, '-'); @@ -1178,12 +1183,26 @@ private: significandDigit++; } } + // Parse NaN or Infinity here + else if ((parseFlags & kParseNanAndInfFlag) && RAPIDJSON_LIKELY((s.Peek() == 'I' || s.Peek() == 'N'))) { + useNanOrInf = true; + if (RAPIDJSON_LIKELY(Consume(s, 'N') && Consume(s, 'a') && Consume(s, 'N'))) { + d = std::numeric_limits::quiet_NaN(); + } + else if (RAPIDJSON_LIKELY(Consume(s, 'I') && Consume(s, 'n') && Consume(s, 'f'))) { + d = (minus ? -std::numeric_limits::infinity() : std::numeric_limits::infinity()); + if (RAPIDJSON_UNLIKELY(s.Peek() == 'i' && !(Consume(s, 'i') && Consume(s, 'n') + && Consume(s, 'i') && Consume(s, 't') && Consume(s, 'y')))) + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); + } + else + RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); + } else RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell()); // Parse 64bit int bool useDouble = false; - double d = 0.0; if (use64bit) { if (minus) while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) { @@ -1346,6 +1365,9 @@ private: cont = handler.Double(minus ? -d : d); } + else if (useNanOrInf) { + cont = handler.Double(d); + } else { if (use64bit) { if (minus) diff --git a/3rdparty/rapidjson/include/rapidjson/schema.h b/3rdparty/rapidjson/include/rapidjson/schema.h index 0a8bb7c5f14..b182aa27f0b 100644 --- a/3rdparty/rapidjson/include/rapidjson/schema.h +++ b/3rdparty/rapidjson/include/rapidjson/schema.h @@ -19,13 +19,6 @@ #include "pointer.h" #include // abs, floor -#ifdef __clang__ -RAPIDJSON_DIAG_PUSH -RAPIDJSON_DIAG_OFF(weak-vtables) -RAPIDJSON_DIAG_OFF(exit-time-destructors) -RAPIDJSON_DIAG_OFF(c++98-compat-pedantic) -#endif - #if !defined(RAPIDJSON_SCHEMA_USE_INTERNALREGEX) #define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 1 #else @@ -58,18 +51,20 @@ RAPIDJSON_DIAG_OFF(c++98-compat-pedantic) #include "stringbuffer.h" #endif -#if defined(__GNUC__) RAPIDJSON_DIAG_PUSH + +#if defined(__GNUC__) RAPIDJSON_DIAG_OFF(effc++) #endif #ifdef __clang__ -RAPIDJSON_DIAG_PUSH +RAPIDJSON_DIAG_OFF(weak-vtables) +RAPIDJSON_DIAG_OFF(exit-time-destructors) +RAPIDJSON_DIAG_OFF(c++98-compat-pedantic) RAPIDJSON_DIAG_OFF(variadic-macros) #endif #ifdef _MSC_VER -RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_OFF(4512) // assignment operator could not be generated #endif @@ -413,9 +408,11 @@ public: } } - AssignIfExist(allOf_, *schemaDocument, p, value, GetAllOfString(), document); - AssignIfExist(anyOf_, *schemaDocument, p, value, GetAnyOfString(), document); - AssignIfExist(oneOf_, *schemaDocument, p, value, GetOneOfString(), document); + if (schemaDocument) { + AssignIfExist(allOf_, *schemaDocument, p, value, GetAllOfString(), document); + AssignIfExist(anyOf_, *schemaDocument, p, value, GetAnyOfString(), document); + AssignIfExist(oneOf_, *schemaDocument, p, value, GetOneOfString(), document); + } if (const ValueType* v = GetMember(value, GetNotString())) { schemaDocument->CreateSchema(¬_, p.Append(GetNotString(), allocator_), *v, document); @@ -578,7 +575,9 @@ public: } ~Schema() { - allocator_->Free(enum_); + if (allocator_) { + allocator_->Free(enum_); + } if (properties_) { for (SizeType i = 0; i < propertyCount_; i++) properties_[i].~Property(); @@ -1339,7 +1338,7 @@ public: \param remoteProvider An optional remote schema document provider for resolving remote reference. Can be null. \param allocator An optional allocator instance for allocating memory. Can be null. */ - GenericSchemaDocument(const ValueType& document, IRemoteSchemaDocumentProviderType* remoteProvider = 0, Allocator* allocator = 0) RAPIDJSON_NOEXCEPT : + explicit GenericSchemaDocument(const ValueType& document, IRemoteSchemaDocumentProviderType* remoteProvider = 0, Allocator* allocator = 0) : remoteProvider_(remoteProvider), allocator_(allocator), ownAllocator_(), @@ -2002,17 +2001,6 @@ private: }; RAPIDJSON_NAMESPACE_END - -#if defined(__GNUC__) RAPIDJSON_DIAG_POP -#endif - -#ifdef __clang__ -RAPIDJSON_DIAG_POP -#endif - -#ifdef _MSC_VER -RAPIDJSON_DIAG_POP -#endif #endif // RAPIDJSON_SCHEMA_H_ diff --git a/3rdparty/rapidjson/include/rapidjson/stream.h b/3rdparty/rapidjson/include/rapidjson/stream.h index dd2783b4134..fef82c252ff 100644 --- a/3rdparty/rapidjson/include/rapidjson/stream.h +++ b/3rdparty/rapidjson/include/rapidjson/stream.h @@ -95,7 +95,7 @@ inline void PutUnsafe(Stream& stream, typename Stream::Ch c) { //! Put N copies of a character to a stream. template inline void PutN(Stream& stream, Ch c, size_t n) { - PutReserve(stream, n); + PutReserve(stream, n); for (size_t i = 0; i < n; i++) PutUnsafe(stream, c); } diff --git a/3rdparty/rapidjson/include/rapidjson/writer.h b/3rdparty/rapidjson/include/rapidjson/writer.h index 2809f705841..112d767ef8a 100644 --- a/3rdparty/rapidjson/include/rapidjson/writer.h +++ b/3rdparty/rapidjson/include/rapidjson/writer.h @@ -41,6 +41,7 @@ RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant #ifdef __clang__ RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_OFF(padded) +RAPIDJSON_DIAG_OFF(unreachable-code) #endif RAPIDJSON_NAMESPACE_BEGIN @@ -62,6 +63,7 @@ RAPIDJSON_NAMESPACE_BEGIN enum WriteFlag { kWriteNoFlags = 0, //!< No flags are set. kWriteValidateEncodingFlag = 1, //!< Validate encoding of JSON strings. + kWriteNanAndInfFlag = 2, //!< Allow writing of Inf, -Inf and NaN. kWriteDefaultFlags = RAPIDJSON_WRITE_DEFAULT_FLAGS //!< Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS }; @@ -167,30 +169,30 @@ public: */ //@{ - bool Null() { Prefix(kNullType); return WriteNull(); } - bool Bool(bool b) { Prefix(b ? kTrueType : kFalseType); return WriteBool(b); } - bool Int(int i) { Prefix(kNumberType); return WriteInt(i); } - bool Uint(unsigned u) { Prefix(kNumberType); return WriteUint(u); } - bool Int64(int64_t i64) { Prefix(kNumberType); return WriteInt64(i64); } - bool Uint64(uint64_t u64) { Prefix(kNumberType); return WriteUint64(u64); } + bool Null() { Prefix(kNullType); return EndValue(WriteNull()); } + bool Bool(bool b) { Prefix(b ? kTrueType : kFalseType); return EndValue(WriteBool(b)); } + bool Int(int i) { Prefix(kNumberType); return EndValue(WriteInt(i)); } + bool Uint(unsigned u) { Prefix(kNumberType); return EndValue(WriteUint(u)); } + bool Int64(int64_t i64) { Prefix(kNumberType); return EndValue(WriteInt64(i64)); } + bool Uint64(uint64_t u64) { Prefix(kNumberType); return EndValue(WriteUint64(u64)); } //! Writes the given \c double value to the stream /*! \param d The value to be written. \return Whether it is succeed. */ - bool Double(double d) { Prefix(kNumberType); return WriteDouble(d); } + bool Double(double d) { Prefix(kNumberType); return EndValue(WriteDouble(d)); } bool RawNumber(const Ch* str, SizeType length, bool copy = false) { (void)copy; Prefix(kNumberType); - return WriteString(str, length); + return EndValue(WriteString(str, length)); } bool String(const Ch* str, SizeType length, bool copy = false) { (void)copy; Prefix(kStringType); - return WriteString(str, length); + return EndValue(WriteString(str, length)); } #if RAPIDJSON_HAS_STDSTRING @@ -212,10 +214,7 @@ public: RAPIDJSON_ASSERT(level_stack_.GetSize() >= sizeof(Level)); RAPIDJSON_ASSERT(!level_stack_.template Top()->inArray); level_stack_.template Pop(1); - bool ret = WriteEndObject(); - if (RAPIDJSON_UNLIKELY(level_stack_.Empty())) // end of json text - os_->Flush(); - return ret; + return EndValue(WriteEndObject()); } bool StartArray() { @@ -229,10 +228,7 @@ public: RAPIDJSON_ASSERT(level_stack_.GetSize() >= sizeof(Level)); RAPIDJSON_ASSERT(level_stack_.template Top()->inArray); level_stack_.template Pop(1); - bool ret = WriteEndArray(); - if (RAPIDJSON_UNLIKELY(level_stack_.Empty())) // end of json text - os_->Flush(); - return ret; + return EndValue(WriteEndArray()); } //@} @@ -253,7 +249,7 @@ public: \param length Length of the json. \param type Type of the root of json. */ - bool RawValue(const Ch* json, size_t length, Type type) { Prefix(type); return WriteRawValue(json, length); } + bool RawValue(const Ch* json, size_t length, Type type) { Prefix(type); return EndValue(WriteRawValue(json, length)); } protected: //! Information for each nested level @@ -319,9 +315,25 @@ protected: } bool WriteDouble(double d) { - if (internal::Double(d).IsNanOrInf()) - return false; - + if (internal::Double(d).IsNanOrInf()) { + if (!(writeFlags & kWriteNanAndInfFlag)) + return false; + if (internal::Double(d).IsNan()) { + PutReserve(*os_, 3); + PutUnsafe(*os_, 'N'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'N'); + return true; + } + if (internal::Double(d).Sign()) { + PutReserve(*os_, 9); + PutUnsafe(*os_, '-'); + } + else + PutReserve(*os_, 8); + PutUnsafe(*os_, 'I'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'f'); + PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'y'); + return true; + } + char buffer[25]; char* end = internal::dtoa(d, buffer, maxDecimalPlaces_); PutReserve(*os_, static_cast(end - buffer)); @@ -442,6 +454,13 @@ protected: } } + // Flush the value if it is the top level one. + bool EndValue(bool ret) { + if (RAPIDJSON_UNLIKELY(level_stack_.Empty())) // end of json text + os_->Flush(); + return ret; + } + OutputStream* os_; internal::Stack level_stack_; int maxDecimalPlaces_; @@ -489,8 +508,25 @@ inline bool Writer::WriteUint64(uint64_t u) { template<> inline bool Writer::WriteDouble(double d) { - if (internal::Double(d).IsNanOrInf()) - return false; + if (internal::Double(d).IsNanOrInf()) { + // Note: This code path can only be reached if (RAPIDJSON_WRITE_DEFAULT_FLAGS & kWriteNanAndInfFlag). + if (!(kWriteDefaultFlags & kWriteNanAndInfFlag)) + return false; + if (internal::Double(d).IsNan()) { + PutReserve(*os_, 3); + PutUnsafe(*os_, 'N'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'N'); + return true; + } + if (internal::Double(d).Sign()) { + PutReserve(*os_, 9); + PutUnsafe(*os_, '-'); + } + else + PutReserve(*os_, 8); + PutUnsafe(*os_, 'I'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'f'); + PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'y'); + return true; + } char *buffer = os_->Push(25); char* end = internal::dtoa(d, buffer, maxDecimalPlaces_); diff --git a/3rdparty/rapidjson/package.json b/3rdparty/rapidjson/package.json index 9e5e4f23ce6..cc6087a5ca3 100644 --- a/3rdparty/rapidjson/package.json +++ b/3rdparty/rapidjson/package.json @@ -1,8 +1,8 @@ { "name": "rapidjson", - "version": "1.0.3", + "version": "1.0.4", "description": "![](doc/logo/rapidjson.png)", - "main": "index.js", + "main": "include_dirs.js", "directories": { "doc": "doc", "example": "example", @@ -20,6 +20,5 @@ "bugs": { "url": "https://github.com/miloyip/rapidjson/issues" }, - "homepage": "https://github.com/miloyip/rapidjson#readme", - "main": "include_dirs.js" + "homepage": "https://github.com/miloyip/rapidjson#readme" } diff --git a/3rdparty/rapidjson/test/unittest/CMakeLists.txt b/3rdparty/rapidjson/test/unittest/CMakeLists.txt index 4e3b0714761..b3204d6c8d6 100644 --- a/3rdparty/rapidjson/test/unittest/CMakeLists.txt +++ b/3rdparty/rapidjson/test/unittest/CMakeLists.txt @@ -1,3 +1,5 @@ +include(CheckCXXCompilerFlag) + set(UNITTEST_SOURCES allocatorstest.cpp bigintegertest.cpp @@ -38,11 +40,14 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal") elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default -Wfloat-equal -Wimplicit-fallthrough -Weverything") - # If the user is running a newer version of Clang that includes the - # -Wdouble-promotion, we will ignore that warning. - # if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 3.7) - # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-double-promotion") - # endif() + # If the user is running a newer version of Clang that includes the + # -Wdouble-promotion, we will ignore that warning. + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 3.7) + CHECK_CXX_COMPILER_FLAG("-Wno-double-promotion" HAS_NO_DOUBLE_PROMOTION) + if (HAS_NO_DOUBLE_PROMOTION) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-double-promotion") + endif() + endif() elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # Force to always compile with /W4 if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") diff --git a/3rdparty/rapidjson/test/unittest/dtoatest.cpp b/3rdparty/rapidjson/test/unittest/dtoatest.cpp index fe28271f976..afd76eb09ab 100644 --- a/3rdparty/rapidjson/test/unittest/dtoatest.cpp +++ b/3rdparty/rapidjson/test/unittest/dtoatest.cpp @@ -37,6 +37,7 @@ TEST(dtoa, normal) { TEST_DTOA(1.2345678, "1.2345678"); TEST_DTOA(0.123456789012, "0.123456789012"); TEST_DTOA(1234567.8, "1234567.8"); + TEST_DTOA(-79.39773355813419, "-79.39773355813419"); TEST_DTOA(0.000001, "0.000001"); TEST_DTOA(0.0000001, "1e-7"); TEST_DTOA(1e30, "1e30"); diff --git a/3rdparty/rapidjson/test/unittest/encodingstest.cpp b/3rdparty/rapidjson/test/unittest/encodingstest.cpp index 4104880015e..67b0391ed06 100644 --- a/3rdparty/rapidjson/test/unittest/encodingstest.cpp +++ b/3rdparty/rapidjson/test/unittest/encodingstest.cpp @@ -302,8 +302,9 @@ TEST(EncodingsTest, UTF8) { decodedCount++; } - if (*encodedStr) // This decoder cannot handle U+0000 + if (*encodedStr) { // This decoder cannot handle U+0000 EXPECT_EQ(1u, decodedCount); // Should only contain one code point + } EXPECT_EQ(UTF8_ACCEPT, state); if (UTF8_ACCEPT != state) diff --git a/3rdparty/rapidjson/test/unittest/istreamwrappertest.cpp b/3rdparty/rapidjson/test/unittest/istreamwrappertest.cpp index 28c756cc9c9..9d6fbcff0de 100644 --- a/3rdparty/rapidjson/test/unittest/istreamwrappertest.cpp +++ b/3rdparty/rapidjson/test/unittest/istreamwrappertest.cpp @@ -50,8 +50,9 @@ static void TestStringStream() { StringStreamType iss(s); BasicIStreamWrapper is(iss); EXPECT_EQ(0, is.Tell()); - if (sizeof(Ch) == 1) + if (sizeof(Ch) == 1) { EXPECT_EQ(0, is.Peek4()); // less than 4 bytes + } for (int i = 0; i < 3; i++) { EXPECT_EQ(static_cast(i), is.Tell()); EXPECT_EQ('A' + i, is.Peek()); diff --git a/3rdparty/rapidjson/test/unittest/itoatest.cpp b/3rdparty/rapidjson/test/unittest/itoatest.cpp index 79db1c71dcd..b752a6a26ee 100644 --- a/3rdparty/rapidjson/test/unittest/itoatest.cpp +++ b/3rdparty/rapidjson/test/unittest/itoatest.cpp @@ -84,6 +84,8 @@ static void Verify(void(*f)(T, char*), char* (*g)(T, char*)) { VerifyValue(Traits::Negate(i + 1), f, g); } last = i; + if (i > static_cast(std::numeric_limits::max() / static_cast(power))) + break; i *= power; } while (last < i); } diff --git a/3rdparty/rapidjson/test/unittest/readertest.cpp b/3rdparty/rapidjson/test/unittest/readertest.cpp index 329af2a7ea4..64a1f9c3cf4 100644 --- a/3rdparty/rapidjson/test/unittest/readertest.cpp +++ b/3rdparty/rapidjson/test/unittest/readertest.cpp @@ -19,17 +19,21 @@ #include "rapidjson/internal/itoa.h" #include "rapidjson/memorystream.h" +#include + using namespace rapidjson; -#ifdef __GNUC__ RAPIDJSON_DIAG_PUSH +#ifdef __GNUC__ RAPIDJSON_DIAG_OFF(effc++) RAPIDJSON_DIAG_OFF(float-equal) RAPIDJSON_DIAG_OFF(missing-noreturn) +#if __GNUC__ >= 7 +RAPIDJSON_DIAG_OFF(dangling-else) #endif +#endif // __GNUC__ #ifdef __clang__ -RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_OFF(variadic-macros) RAPIDJSON_DIAG_OFF(c++98-compat-pedantic) #endif @@ -1774,10 +1778,67 @@ TEST(Reader, TrailingCommaHandlerTerminationIterative) { TestTrailingCommaHandlerTermination(); } -#ifdef __GNUC__ -RAPIDJSON_DIAG_POP -#endif +TEST(Reader, ParseNanAndInfinity) { +#define TEST_NAN_INF(str, x) \ + { \ + { \ + StringStream s(str); \ + ParseDoubleHandler h; \ + Reader reader; \ + ASSERT_EQ(kParseErrorNone, reader.Parse(s, h).Code()); \ + EXPECT_EQ(1u, h.step_); \ + internal::Double e(x), a(h.actual_); \ + EXPECT_EQ(e.IsNan(), a.IsNan()); \ + EXPECT_EQ(e.IsInf(), a.IsInf()); \ + if (!e.IsNan()) \ + EXPECT_EQ(e.Sign(), a.Sign()); \ + } \ + { \ + const char* json = "{ \"naninfdouble\": " str " } "; \ + StringStream s(json); \ + NumbersAsStringsHandler h(str); \ + Reader reader; \ + EXPECT_TRUE(reader.Parse(s, h)); \ + } \ + { \ + char* json = StrDup("{ \"naninfdouble\": " str " } "); \ + InsituStringStream s(json); \ + NumbersAsStringsHandler h(str); \ + Reader reader; \ + EXPECT_TRUE(reader.Parse(s, h)); \ + free(json); \ + } \ + } +#define TEST_NAN_INF_ERROR(errorCode, str, errorOffset) \ + { \ + int streamPos = errorOffset; \ + char buffer[1001]; \ + strncpy(buffer, str, 1000); \ + InsituStringStream s(buffer); \ + BaseReaderHandler<> h; \ + Reader reader; \ + EXPECT_FALSE(reader.Parse(s, h)); \ + EXPECT_EQ(errorCode, reader.GetParseErrorCode());\ + EXPECT_EQ(errorOffset, reader.GetErrorOffset());\ + EXPECT_EQ(streamPos, s.Tell());\ + } + + double nan = std::numeric_limits::quiet_NaN(); + double inf = std::numeric_limits::infinity(); + + TEST_NAN_INF("NaN", nan); + TEST_NAN_INF("-NaN", nan); + TEST_NAN_INF("Inf", inf); + TEST_NAN_INF("Infinity", inf); + TEST_NAN_INF("-Inf", -inf); + TEST_NAN_INF("-Infinity", -inf); + TEST_NAN_INF_ERROR(kParseErrorValueInvalid, "nan", 1); + TEST_NAN_INF_ERROR(kParseErrorValueInvalid, "-nan", 1); + TEST_NAN_INF_ERROR(kParseErrorValueInvalid, "NAN", 1); + TEST_NAN_INF_ERROR(kParseErrorValueInvalid, "-Infinty", 6); + +#undef TEST_NAN_INF_ERROR +#undef TEST_NAN_INF +} -#ifdef __clang__ RAPIDJSON_DIAG_POP -#endif diff --git a/3rdparty/rapidjson/test/unittest/schematest.cpp b/3rdparty/rapidjson/test/unittest/schematest.cpp index d1027ad51c5..d75b1e593e0 100644 --- a/3rdparty/rapidjson/test/unittest/schematest.cpp +++ b/3rdparty/rapidjson/test/unittest/schematest.cpp @@ -111,7 +111,7 @@ TEST(SchemaValidator, Hasher) { EXPECT_FALSE(d.HasParseError());\ EXPECT_TRUE(expected == d.Accept(validator));\ EXPECT_TRUE(expected == validator.IsValid());\ - if (expected && !validator.IsValid()) {\ + if ((expected) && !validator.IsValid()) {\ StringBuffer sb;\ validator.GetInvalidSchemaPointer().StringifyUriFragment(sb);\ printf("Invalid schema: %s\n", sb.GetString());\ diff --git a/3rdparty/rapidjson/test/unittest/stringbuffertest.cpp b/3rdparty/rapidjson/test/unittest/stringbuffertest.cpp index 9be98fce268..ded513cddcf 100644 --- a/3rdparty/rapidjson/test/unittest/stringbuffertest.cpp +++ b/3rdparty/rapidjson/test/unittest/stringbuffertest.cpp @@ -37,6 +37,13 @@ TEST(StringBuffer, Put) { EXPECT_STREQ("A", buffer.GetString()); } +TEST(StringBuffer, PutN_Issue672) { + GenericStringBuffer, MemoryPoolAllocator<> > buffer; + EXPECT_EQ(0, buffer.GetSize()); + rapidjson::PutN(buffer, ' ', 1); + EXPECT_EQ(1, buffer.GetSize()); +} + TEST(StringBuffer, Clear) { StringBuffer buffer; buffer.Put('A'); diff --git a/3rdparty/rapidjson/test/unittest/valuetest.cpp b/3rdparty/rapidjson/test/unittest/valuetest.cpp index feec049d09d..fefc001d45d 100644 --- a/3rdparty/rapidjson/test/unittest/valuetest.cpp +++ b/3rdparty/rapidjson/test/unittest/valuetest.cpp @@ -545,8 +545,10 @@ TEST(Value, Int64) { // Templated functions EXPECT_TRUE(z.Is()); EXPECT_EQ(i, z.Get()); +#if 0 // signed integer underflow is undefined behaviour EXPECT_EQ(i - 1, z.Set(i - 1).Get()); EXPECT_EQ(i - 2, z.Set(i - 2).Get()); +#endif } TEST(Value, Uint64) { @@ -671,6 +673,7 @@ TEST(Value, Float) { } TEST(Value, IsLosslessDouble) { + EXPECT_TRUE(Value(0.0).IsLosslessDouble()); EXPECT_TRUE(Value(12.34).IsLosslessDouble()); EXPECT_TRUE(Value(-123).IsLosslessDouble()); EXPECT_TRUE(Value(2147483648u).IsLosslessDouble()); @@ -679,8 +682,19 @@ TEST(Value, IsLosslessDouble) { EXPECT_TRUE(Value(RAPIDJSON_UINT64_C2(0xA0000000, 0x00000000)).IsLosslessDouble()); #endif - EXPECT_FALSE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF))).IsLosslessDouble()); - EXPECT_FALSE(Value(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF)).IsLosslessDouble()); + EXPECT_FALSE(Value(static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF))).IsLosslessDouble()); // INT64_MAX + EXPECT_FALSE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF))).IsLosslessDouble()); // -INT64_MAX + EXPECT_TRUE(Value(-static_cast(RAPIDJSON_UINT64_C2(0x7FFFFFFF, 0xFFFFFFFF)) - 1).IsLosslessDouble()); // INT64_MIN + EXPECT_FALSE(Value(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0xFFFFFFFF)).IsLosslessDouble()); // UINT64_MAX + + EXPECT_TRUE(Value(3.4028234e38f).IsLosslessDouble()); // FLT_MAX + EXPECT_TRUE(Value(-3.4028234e38f).IsLosslessDouble()); // -FLT_MAX + EXPECT_TRUE(Value(1.17549435e-38f).IsLosslessDouble()); // FLT_MIN + EXPECT_TRUE(Value(-1.17549435e-38f).IsLosslessDouble()); // -FLT_MIN + EXPECT_TRUE(Value(1.7976931348623157e+308).IsLosslessDouble()); // DBL_MAX + EXPECT_TRUE(Value(-1.7976931348623157e+308).IsLosslessDouble()); // -DBL_MAX + EXPECT_TRUE(Value(2.2250738585072014e-308).IsLosslessDouble()); // DBL_MIN + EXPECT_TRUE(Value(-2.2250738585072014e-308).IsLosslessDouble()); // -DBL_MIN } TEST(Value, IsLosslessFloat) { @@ -1119,14 +1133,18 @@ TEST(Value, ArrayHelperRangeFor) { { int i = 0; - for (auto& v : x.GetArray()) - EXPECT_EQ(i++, v.GetInt()); + for (auto& v : x.GetArray()) { + EXPECT_EQ(i, v.GetInt()); + i++; + } EXPECT_EQ(i, 10); } { int i = 0; - for (const auto& v : const_cast(x).GetArray()) - EXPECT_EQ(i++, v.GetInt()); + for (const auto& v : const_cast(x).GetArray()) { + EXPECT_EQ(i, v.GetInt()); + i++; + } EXPECT_EQ(i, 10); } diff --git a/3rdparty/rapidjson/test/unittest/writertest.cpp b/3rdparty/rapidjson/test/unittest/writertest.cpp index 9c68c539a83..29f7626092c 100644 --- a/3rdparty/rapidjson/test/unittest/writertest.cpp +++ b/3rdparty/rapidjson/test/unittest/writertest.cpp @@ -439,33 +439,47 @@ TEST(Writer, InvalidEventSequence) { } } -extern double zero; // clang -Wmissing-variable-declarations -double zero = 0.0; // Use global variable to prevent compiler warning - TEST(Writer, NaN) { - double nan = zero / zero; + double nan = std::numeric_limits::quiet_NaN(); + EXPECT_TRUE(internal::Double(nan).IsNan()); StringBuffer buffer; - Writer writer(buffer); - EXPECT_FALSE(writer.Double(nan)); - + { + Writer writer(buffer); + EXPECT_FALSE(writer.Double(nan)); + } + { + Writer, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); + EXPECT_TRUE(writer.Double(nan)); + EXPECT_STREQ("NaN", buffer.GetString()); + } GenericStringBuffer > buffer2; Writer > > writer2(buffer2); EXPECT_FALSE(writer2.Double(nan)); } TEST(Writer, Inf) { - double inf = 1.0 / zero; + double inf = std::numeric_limits::infinity(); + EXPECT_TRUE(internal::Double(inf).IsInf()); StringBuffer buffer; { Writer writer(buffer); - EXPECT_FALSE(writer.Double(inf)); + EXPECT_FALSE(writer.Double(inf)); } { Writer writer(buffer); EXPECT_FALSE(writer.Double(-inf)); } + { + Writer, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); + EXPECT_TRUE(writer.Double(inf)); + } + { + Writer, UTF8<>, CrtAllocator, kWriteNanAndInfFlag> writer(buffer); + EXPECT_TRUE(writer.Double(-inf)); + } + EXPECT_STREQ("Infinity-Infinity", buffer.GetString()); } TEST(Writer, RawValue) { diff --git a/3rdparty/rapidjson/travis-doxygen.sh b/3rdparty/rapidjson/travis-doxygen.sh index e9eb6b9c2b9..31a50cfa921 100644 --- a/3rdparty/rapidjson/travis-doxygen.sh +++ b/3rdparty/rapidjson/travis-doxygen.sh @@ -42,8 +42,8 @@ abort() { skip "Running Doxygen only for updates on 'master' branch (current: ${TRAVIS_BRANCH})." # check for job number -[ "${TRAVIS_JOB_NUMBER}" = "${TRAVIS_BUILD_NUMBER}.1" ] || \ - skip "Running Doxygen only on first job of build ${TRAVIS_BUILD_NUMBER} (current: ${TRAVIS_JOB_NUMBER})." +# [ "${TRAVIS_JOB_NUMBER}" = "${TRAVIS_BUILD_NUMBER}.1" ] || \ +# skip "Running Doxygen only on first job of build ${TRAVIS_BUILD_NUMBER} (current: ${TRAVIS_JOB_NUMBER})." # install doxygen binary distribution doxygen_install() From 7f5e233933332226222e2510511cdc7c8ff8fbc2 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Sat, 6 Aug 2016 08:54:37 -0400 Subject: [PATCH 045/116] Created a tiny_rom_entry structure for the purposes of rom_entry declarations in code, and a first pass at the required core changes to unpack tiny_rom_entry structures at runtime. WARNING - I've done preliminary testing on a tiny build (pacman works), but nothing more. I know for a fact that a full compile fails --- src/devices/bus/a1bus/a1cassette.cpp | 2 +- src/devices/bus/a1bus/a1cassette.h | 2 +- src/devices/bus/a1bus/a1cffa.cpp | 2 +- src/devices/bus/a1bus/a1cffa.h | 2 +- src/devices/bus/a2bus/a2applicard.cpp | 2 +- src/devices/bus/a2bus/a2applicard.h | 2 +- src/devices/bus/a2bus/a2cffa.cpp | 4 +-- src/devices/bus/a2bus/a2cffa.h | 4 +-- src/devices/bus/a2bus/a2corvus.cpp | 2 +- src/devices/bus/a2bus/a2corvus.h | 2 +- src/devices/bus/a2bus/a2diskii.cpp | 2 +- src/devices/bus/a2bus/a2diskii.h | 2 +- src/devices/bus/a2bus/a2diskiing.cpp | 2 +- src/devices/bus/a2bus/a2diskiing.h | 2 +- src/devices/bus/a2bus/a2hsscsi.cpp | 2 +- src/devices/bus/a2bus/a2hsscsi.h | 2 +- src/devices/bus/a2bus/a2memexp.cpp | 4 +-- src/devices/bus/a2bus/a2memexp.h | 4 +-- src/devices/bus/a2bus/a2pic.cpp | 2 +- src/devices/bus/a2bus/a2pic.h | 2 +- src/devices/bus/a2bus/a2scsi.cpp | 2 +- src/devices/bus/a2bus/a2scsi.h | 2 +- src/devices/bus/a2bus/a2ssc.cpp | 2 +- src/devices/bus/a2bus/a2ssc.h | 2 +- src/devices/bus/a2bus/a2swyft.cpp | 2 +- src/devices/bus/a2bus/a2swyft.h | 2 +- src/devices/bus/a2bus/a2thunderclock.cpp | 2 +- src/devices/bus/a2bus/a2thunderclock.h | 2 +- src/devices/bus/a2bus/a2ultraterm.cpp | 4 +-- src/devices/bus/a2bus/a2ultraterm.h | 4 +-- src/devices/bus/a2bus/a2videoterm.cpp | 12 ++++----- src/devices/bus/a2bus/a2videoterm.h | 12 ++++----- src/devices/bus/a2bus/a2vulcan.cpp | 4 +-- src/devices/bus/a2bus/a2vulcan.h | 4 +-- src/devices/bus/a2bus/a2zipdrive.cpp | 2 +- src/devices/bus/a2bus/a2zipdrive.h | 2 +- src/devices/bus/a2bus/corvfdc01.cpp | 2 +- src/devices/bus/a2bus/corvfdc01.h | 2 +- src/devices/bus/a2bus/corvfdc02.cpp | 2 +- src/devices/bus/a2bus/corvfdc02.h | 2 +- src/devices/bus/a2bus/mouse.cpp | 2 +- src/devices/bus/a2bus/mouse.h | 2 +- src/devices/bus/a2bus/timemasterho.cpp | 2 +- src/devices/bus/a2bus/timemasterho.h | 2 +- src/devices/bus/abcbus/fd2.cpp | 2 +- src/devices/bus/abcbus/fd2.h | 2 +- src/devices/bus/abcbus/hdc.cpp | 2 +- src/devices/bus/abcbus/hdc.h | 2 +- src/devices/bus/abcbus/lux10828.cpp | 2 +- src/devices/bus/abcbus/lux10828.h | 2 +- src/devices/bus/abcbus/lux21046.cpp | 2 +- src/devices/bus/abcbus/lux21046.h | 2 +- src/devices/bus/abcbus/lux21056.cpp | 2 +- src/devices/bus/abcbus/lux21056.h | 2 +- src/devices/bus/abcbus/memcard.cpp | 2 +- src/devices/bus/abcbus/memcard.h | 2 +- src/devices/bus/abcbus/sio.cpp | 2 +- src/devices/bus/abcbus/sio.h | 2 +- src/devices/bus/abcbus/slutprov.cpp | 2 +- src/devices/bus/abcbus/slutprov.h | 2 +- src/devices/bus/abcbus/turbo.cpp | 2 +- src/devices/bus/abcbus/turbo.h | 2 +- src/devices/bus/abcbus/uni800.cpp | 2 +- src/devices/bus/abcbus/uni800.h | 2 +- src/devices/bus/abckb/abc77.cpp | 2 +- src/devices/bus/abckb/abc77.h | 2 +- src/devices/bus/abckb/abc800kb.cpp | 2 +- src/devices/bus/abckb/abc800kb.h | 2 +- src/devices/bus/abckb/abc99.cpp | 2 +- src/devices/bus/abckb/abc99.h | 2 +- src/devices/bus/adam/ide.cpp | 2 +- src/devices/bus/adam/ide.h | 2 +- src/devices/bus/adamnet/ddp.cpp | 2 +- src/devices/bus/adamnet/ddp.h | 2 +- src/devices/bus/adamnet/fdc.cpp | 2 +- src/devices/bus/adamnet/fdc.h | 2 +- src/devices/bus/adamnet/kb.cpp | 2 +- src/devices/bus/adamnet/kb.h | 2 +- src/devices/bus/adamnet/printer.cpp | 2 +- src/devices/bus/adamnet/printer.h | 2 +- src/devices/bus/adamnet/spi.cpp | 2 +- src/devices/bus/adamnet/spi.h | 2 +- src/devices/bus/amiga/zorro/a590.cpp | 2 +- src/devices/bus/amiga/zorro/a590.h | 2 +- src/devices/bus/amiga/zorro/action_replay.cpp | 6 ++--- src/devices/bus/amiga/zorro/action_replay.h | 6 ++--- src/devices/bus/amiga/zorro/buddha.cpp | 2 +- src/devices/bus/amiga/zorro/buddha.h | 2 +- src/devices/bus/bml3/bml3kanji.cpp | 2 +- src/devices/bus/bml3/bml3kanji.h | 2 +- src/devices/bus/bml3/bml3mp1802.cpp | 2 +- src/devices/bus/bml3/bml3mp1802.h | 2 +- src/devices/bus/bml3/bml3mp1805.cpp | 2 +- src/devices/bus/bml3/bml3mp1805.h | 2 +- src/devices/bus/bw2/ramcard.cpp | 2 +- src/devices/bus/bw2/ramcard.h | 2 +- src/devices/bus/c64/currah_speech.cpp | 2 +- src/devices/bus/c64/currah_speech.h | 2 +- src/devices/bus/c64/fcc.cpp | 2 +- src/devices/bus/c64/fcc.h | 2 +- src/devices/bus/c64/multiscreen.cpp | 2 +- src/devices/bus/c64/multiscreen.h | 2 +- src/devices/bus/c64/supercpu.cpp | 2 +- src/devices/bus/c64/supercpu.h | 2 +- src/devices/bus/c64/xl80.cpp | 2 +- src/devices/bus/c64/xl80.h | 2 +- src/devices/bus/cbm2/hrg.cpp | 2 +- src/devices/bus/cbm2/hrg.h | 2 +- src/devices/bus/cbmiec/c1526.cpp | 4 +-- src/devices/bus/cbmiec/c1526.h | 4 +-- src/devices/bus/cbmiec/c1541.cpp | 24 ++++++++--------- src/devices/bus/cbmiec/c1541.h | 24 ++++++++--------- src/devices/bus/cbmiec/c1571.cpp | 8 +++--- src/devices/bus/cbmiec/c1571.h | 8 +++--- src/devices/bus/cbmiec/c1581.cpp | 4 +-- src/devices/bus/cbmiec/c1581.h | 4 +-- src/devices/bus/cbmiec/c64_nl10.cpp | 2 +- src/devices/bus/cbmiec/c64_nl10.h | 2 +- src/devices/bus/cbmiec/cmdhd.cpp | 2 +- src/devices/bus/cbmiec/cmdhd.h | 2 +- src/devices/bus/cbmiec/fd2000.cpp | 2 +- src/devices/bus/cbmiec/fd2000.h | 2 +- src/devices/bus/cbmiec/interpod.cpp | 2 +- src/devices/bus/cbmiec/interpod.h | 2 +- src/devices/bus/cbmiec/serialbox.cpp | 2 +- src/devices/bus/cbmiec/serialbox.h | 2 +- src/devices/bus/cbmiec/vic1515.cpp | 2 +- src/devices/bus/cbmiec/vic1515.h | 2 +- src/devices/bus/cbmiec/vic1520.cpp | 2 +- src/devices/bus/cbmiec/vic1520.h | 2 +- src/devices/bus/centronics/comxpl80.cpp | 2 +- src/devices/bus/centronics/comxpl80.h | 2 +- src/devices/bus/centronics/epson_ex800.cpp | 2 +- src/devices/bus/centronics/epson_ex800.h | 2 +- src/devices/bus/centronics/epson_lx800.cpp | 2 +- src/devices/bus/centronics/epson_lx800.h | 2 +- src/devices/bus/centronics/epson_lx810l.cpp | 4 +-- src/devices/bus/centronics/epson_lx810l.h | 4 +-- src/devices/bus/centronics/nec_p72.cpp | 2 +- src/devices/bus/centronics/nec_p72.h | 2 +- src/devices/bus/cgenie/expansion/floppy.cpp | 2 +- src/devices/bus/cgenie/expansion/floppy.h | 2 +- src/devices/bus/coco/coco_fdc.cpp | 12 ++++----- src/devices/bus/coco/coco_fdc.h | 12 ++++----- src/devices/bus/coco/coco_pak.cpp | 2 +- src/devices/bus/coco/coco_pak.h | 2 +- src/devices/bus/comx35/clm.cpp | 2 +- src/devices/bus/comx35/clm.h | 2 +- src/devices/bus/comx35/eprom.cpp | 2 +- src/devices/bus/comx35/eprom.h | 2 +- src/devices/bus/comx35/expbox.cpp | 2 +- src/devices/bus/comx35/expbox.h | 2 +- src/devices/bus/comx35/fdc.cpp | 2 +- src/devices/bus/comx35/fdc.h | 2 +- src/devices/bus/comx35/printer.cpp | 2 +- src/devices/bus/comx35/printer.h | 2 +- src/devices/bus/comx35/thermal.cpp | 2 +- src/devices/bus/comx35/thermal.h | 2 +- src/devices/bus/cpc/brunword4.cpp | 2 +- src/devices/bus/cpc/brunword4.h | 2 +- src/devices/bus/cpc/cpc_rs232.cpp | 4 +-- src/devices/bus/cpc/cpc_rs232.h | 4 +-- src/devices/bus/cpc/cpc_ssa1.cpp | 4 +-- src/devices/bus/cpc/cpc_ssa1.h | 4 +-- src/devices/bus/cpc/ddi1.cpp | 2 +- src/devices/bus/cpc/ddi1.h | 2 +- src/devices/bus/cpc/hd20.cpp | 2 +- src/devices/bus/cpc/hd20.h | 2 +- src/devices/bus/cpc/mface2.cpp | 2 +- src/devices/bus/cpc/mface2.h | 2 +- src/devices/bus/cpc/smartwatch.cpp | 2 +- src/devices/bus/cpc/smartwatch.h | 2 +- src/devices/bus/cpc/transtape.cpp | 2 +- src/devices/bus/cpc/transtape.h | 2 +- src/devices/bus/dmv/k220.cpp | 2 +- src/devices/bus/dmv/k220.h | 2 +- src/devices/bus/dmv/k230.cpp | 8 +++--- src/devices/bus/dmv/k230.h | 8 +++--- src/devices/bus/dmv/k806.cpp | 2 +- src/devices/bus/dmv/k806.h | 2 +- src/devices/bus/ecbbus/grip.cpp | 2 +- src/devices/bus/ecbbus/grip.h | 2 +- src/devices/bus/econet/e01.cpp | 2 +- src/devices/bus/econet/e01.h | 2 +- src/devices/bus/electron/m2105.cpp | 2 +- src/devices/bus/electron/m2105.h | 2 +- src/devices/bus/ep64/exdos.cpp | 2 +- src/devices/bus/ep64/exdos.h | 2 +- src/devices/bus/epson_sio/pf10.cpp | 2 +- src/devices/bus/epson_sio/pf10.h | 2 +- src/devices/bus/epson_sio/tf20.cpp | 2 +- src/devices/bus/epson_sio/tf20.h | 2 +- src/devices/bus/ieee488/c2031.cpp | 2 +- src/devices/bus/ieee488/c2031.h | 2 +- src/devices/bus/ieee488/c2040.cpp | 6 ++--- src/devices/bus/ieee488/c2040.h | 6 ++--- src/devices/bus/ieee488/c2040fdc.cpp | 2 +- src/devices/bus/ieee488/c2040fdc.h | 2 +- src/devices/bus/ieee488/c8050.cpp | 6 ++--- src/devices/bus/ieee488/c8050.h | 6 ++--- src/devices/bus/ieee488/c8050fdc.cpp | 2 +- src/devices/bus/ieee488/c8050fdc.h | 2 +- src/devices/bus/ieee488/c8280.cpp | 2 +- src/devices/bus/ieee488/c8280.h | 2 +- src/devices/bus/ieee488/d9060.cpp | 2 +- src/devices/bus/ieee488/d9060.h | 2 +- src/devices/bus/ieee488/hardbox.cpp | 2 +- src/devices/bus/ieee488/hardbox.h | 2 +- src/devices/bus/ieee488/shark.cpp | 2 +- src/devices/bus/ieee488/shark.h | 2 +- src/devices/bus/ieee488/softbox.cpp | 2 +- src/devices/bus/ieee488/softbox.h | 2 +- src/devices/bus/imi7000/imi5000h.cpp | 2 +- src/devices/bus/imi7000/imi5000h.h | 2 +- src/devices/bus/intv/ecs.cpp | 2 +- src/devices/bus/intv/ecs.h | 2 +- src/devices/bus/intv/voice.cpp | 2 +- src/devices/bus/intv/voice.h | 2 +- src/devices/bus/iq151/disc2.cpp | 2 +- src/devices/bus/iq151/disc2.h | 2 +- src/devices/bus/iq151/minigraf.cpp | 2 +- src/devices/bus/iq151/minigraf.h | 2 +- src/devices/bus/iq151/ms151a.cpp | 2 +- src/devices/bus/iq151/ms151a.h | 2 +- src/devices/bus/iq151/rom.cpp | 2 +- src/devices/bus/iq151/rom.h | 2 +- src/devices/bus/iq151/video32.cpp | 2 +- src/devices/bus/iq151/video32.h | 2 +- src/devices/bus/iq151/video64.cpp | 2 +- src/devices/bus/iq151/video64.h | 2 +- src/devices/bus/isa/3c505.cpp | 2 +- src/devices/bus/isa/3c505.h | 2 +- src/devices/bus/isa/aga.cpp | 4 +-- src/devices/bus/isa/aga.h | 4 +-- src/devices/bus/isa/aha1542.cpp | 2 +- src/devices/bus/isa/aha1542.h | 2 +- src/devices/bus/isa/cga.cpp | 14 +++++----- src/devices/bus/isa/cga.h | 14 +++++----- src/devices/bus/isa/dectalk.cpp | 2 +- src/devices/bus/isa/dectalk.h | 2 +- src/devices/bus/isa/ega.cpp | 2 +- src/devices/bus/isa/ega.h | 2 +- src/devices/bus/isa/finalchs.cpp | 2 +- src/devices/bus/isa/finalchs.h | 2 +- src/devices/bus/isa/hdc.cpp | 2 +- src/devices/bus/isa/hdc.h | 2 +- src/devices/bus/isa/ibm_mfc.cpp | 2 +- src/devices/bus/isa/ibm_mfc.h | 2 +- src/devices/bus/isa/mc1502_fdc.cpp | 2 +- src/devices/bus/isa/mc1502_fdc.h | 2 +- src/devices/bus/isa/mc1502_rom.cpp | 2 +- src/devices/bus/isa/mc1502_rom.h | 2 +- src/devices/bus/isa/mda.cpp | 4 +-- src/devices/bus/isa/mda.h | 4 +-- src/devices/bus/isa/mufdc.cpp | 4 +-- src/devices/bus/isa/mufdc.h | 4 +-- src/devices/bus/isa/omti8621.cpp | 4 +-- src/devices/bus/isa/omti8621.h | 4 +-- src/devices/bus/isa/p1_fdc.cpp | 2 +- src/devices/bus/isa/p1_fdc.h | 2 +- src/devices/bus/isa/p1_hdc.cpp | 2 +- src/devices/bus/isa/p1_hdc.h | 2 +- src/devices/bus/isa/p1_rom.cpp | 2 +- src/devices/bus/isa/p1_rom.h | 2 +- src/devices/bus/isa/pc1640_iga.cpp | 2 +- src/devices/bus/isa/pc1640_iga.h | 2 +- src/devices/bus/isa/pgc.cpp | 2 +- src/devices/bus/isa/pgc.h | 2 +- src/devices/bus/isa/sb16.cpp | 2 +- src/devices/bus/isa/sb16.h | 2 +- src/devices/bus/isa/side116.cpp | 2 +- src/devices/bus/isa/side116.h | 2 +- src/devices/bus/isa/stereo_fx.cpp | 2 +- src/devices/bus/isa/stereo_fx.h | 2 +- src/devices/bus/isa/svga_cirrus.cpp | 4 +-- src/devices/bus/isa/svga_cirrus.h | 4 +-- src/devices/bus/isa/svga_s3.cpp | 8 +++--- src/devices/bus/isa/svga_s3.h | 8 +++--- src/devices/bus/isa/svga_trident.cpp | 2 +- src/devices/bus/isa/svga_trident.h | 2 +- src/devices/bus/isa/svga_tseng.cpp | 2 +- src/devices/bus/isa/svga_tseng.h | 2 +- src/devices/bus/isa/vga.cpp | 2 +- src/devices/bus/isa/vga.h | 2 +- src/devices/bus/isa/vga_ati.cpp | 6 ++--- src/devices/bus/isa/vga_ati.h | 6 ++--- src/devices/bus/isa/wd1002a_wx1.cpp | 2 +- src/devices/bus/isa/wd1002a_wx1.h | 2 +- src/devices/bus/isa/wdxt_gen.cpp | 2 +- src/devices/bus/isa/wdxt_gen.h | 2 +- src/devices/bus/isa/xtide.cpp | 2 +- src/devices/bus/isa/xtide.h | 2 +- src/devices/bus/kc/d004.cpp | 4 +-- src/devices/bus/kc/d004.h | 4 +-- src/devices/bus/kc/rom.cpp | 2 +- src/devices/bus/kc/rom.h | 2 +- src/devices/bus/macpds/pds_tpdfpd.cpp | 2 +- src/devices/bus/macpds/pds_tpdfpd.h | 2 +- src/devices/bus/msx_cart/bm_012.cpp | 2 +- src/devices/bus/msx_cart/bm_012.h | 2 +- src/devices/bus/msx_cart/moonsound.cpp | 2 +- src/devices/bus/msx_cart/moonsound.h | 2 +- src/devices/bus/msx_cart/msx_audio.cpp | 4 +-- src/devices/bus/msx_cart/msx_audio.h | 4 +-- src/devices/bus/msx_cart/yamaha.cpp | 4 +-- src/devices/bus/msx_cart/yamaha.h | 4 +-- src/devices/bus/nes/aladdin.cpp | 2 +- src/devices/bus/nes/aladdin.h | 2 +- src/devices/bus/nes/datach.cpp | 2 +- src/devices/bus/nes/datach.h | 2 +- src/devices/bus/nes/disksys.cpp | 2 +- src/devices/bus/nes/disksys.h | 2 +- src/devices/bus/nes/karastudio.cpp | 2 +- src/devices/bus/nes/karastudio.h | 2 +- src/devices/bus/nes/sunsoft_dcs.cpp | 2 +- src/devices/bus/nes/sunsoft_dcs.h | 2 +- src/devices/bus/newbrain/eim.cpp | 2 +- src/devices/bus/newbrain/eim.h | 2 +- src/devices/bus/newbrain/fdc.cpp | 2 +- src/devices/bus/newbrain/fdc.h | 2 +- src/devices/bus/nubus/nubus_48gc.cpp | 4 +-- src/devices/bus/nubus/nubus_48gc.h | 4 +-- src/devices/bus/nubus/nubus_asntmc3b.cpp | 4 +-- src/devices/bus/nubus/nubus_asntmc3b.h | 4 +-- src/devices/bus/nubus/nubus_cb264.cpp | 2 +- src/devices/bus/nubus/nubus_cb264.h | 2 +- src/devices/bus/nubus/nubus_image.cpp | 2 +- src/devices/bus/nubus/nubus_image.h | 2 +- src/devices/bus/nubus/nubus_m2hires.cpp | 2 +- src/devices/bus/nubus/nubus_m2hires.h | 2 +- src/devices/bus/nubus/nubus_m2video.cpp | 2 +- src/devices/bus/nubus/nubus_m2video.h | 2 +- src/devices/bus/nubus/nubus_radiustpd.cpp | 2 +- src/devices/bus/nubus/nubus_radiustpd.h | 2 +- src/devices/bus/nubus/nubus_spec8.cpp | 2 +- src/devices/bus/nubus/nubus_spec8.h | 2 +- src/devices/bus/nubus/nubus_specpdq.cpp | 2 +- src/devices/bus/nubus/nubus_specpdq.h | 2 +- src/devices/bus/nubus/nubus_vikbw.cpp | 2 +- src/devices/bus/nubus/nubus_vikbw.h | 2 +- src/devices/bus/nubus/nubus_wsportrait.cpp | 2 +- src/devices/bus/nubus/nubus_wsportrait.h | 2 +- src/devices/bus/nubus/pds30_30hr.cpp | 2 +- src/devices/bus/nubus/pds30_30hr.h | 2 +- src/devices/bus/nubus/pds30_cb264.cpp | 2 +- src/devices/bus/nubus/pds30_cb264.h | 2 +- src/devices/bus/nubus/pds30_mc30.cpp | 2 +- src/devices/bus/nubus/pds30_mc30.h | 2 +- src/devices/bus/nubus/pds30_procolor816.cpp | 2 +- src/devices/bus/nubus/pds30_procolor816.h | 2 +- src/devices/bus/nubus/pds30_sigmalview.cpp | 2 +- src/devices/bus/nubus/pds30_sigmalview.h | 2 +- src/devices/bus/odyssey2/voice.cpp | 2 +- src/devices/bus/odyssey2/voice.h | 2 +- src/devices/bus/oricext/jasmin.cpp | 2 +- src/devices/bus/oricext/microdisc.cpp | 2 +- src/devices/bus/pc_kbd/ec1841.cpp | 2 +- src/devices/bus/pc_kbd/ec1841.h | 2 +- src/devices/bus/pc_kbd/iskr1030.cpp | 2 +- src/devices/bus/pc_kbd/iskr1030.h | 2 +- src/devices/bus/pc_kbd/keytro.cpp | 2 +- src/devices/bus/pc_kbd/keytro.h | 2 +- src/devices/bus/pc_kbd/msnat.cpp | 2 +- src/devices/bus/pc_kbd/msnat.h | 2 +- src/devices/bus/pc_kbd/pc83.cpp | 2 +- src/devices/bus/pc_kbd/pc83.h | 2 +- src/devices/bus/pc_kbd/pcat84.cpp | 4 +-- src/devices/bus/pc_kbd/pcat84.h | 4 +-- src/devices/bus/pc_kbd/pcxt83.cpp | 2 +- src/devices/bus/pc_kbd/pcxt83.h | 2 +- src/devices/bus/pet/hsg.cpp | 2 +- src/devices/bus/pet/hsg.h | 2 +- src/devices/bus/pet/superpet.cpp | 2 +- src/devices/bus/pet/superpet.h | 2 +- src/devices/bus/plus4/c1551.cpp | 2 +- src/devices/bus/plus4/c1551.h | 2 +- src/devices/bus/plus4/sid.cpp | 2 +- src/devices/bus/plus4/sid.h | 2 +- src/devices/bus/ql/cst_q_plus4.cpp | 2 +- src/devices/bus/ql/cst_q_plus4.h | 2 +- src/devices/bus/ql/cst_qdisc.cpp | 2 +- src/devices/bus/ql/cst_qdisc.h | 2 +- src/devices/bus/ql/cumana_fdi.cpp | 2 +- src/devices/bus/ql/cumana_fdi.h | 2 +- src/devices/bus/ql/kempston_di.cpp | 2 +- src/devices/bus/ql/kempston_di.h | 2 +- src/devices/bus/ql/miracle_gold_card.cpp | 2 +- src/devices/bus/ql/miracle_gold_card.h | 2 +- src/devices/bus/ql/miracle_hd.cpp | 2 +- src/devices/bus/ql/miracle_hd.h | 2 +- src/devices/bus/ql/mp_fdi.cpp | 2 +- src/devices/bus/ql/mp_fdi.h | 2 +- src/devices/bus/ql/opd_basic_master.cpp | 2 +- src/devices/bus/ql/opd_basic_master.h | 2 +- src/devices/bus/ql/pcml_qdisk.cpp | 2 +- src/devices/bus/ql/pcml_qdisk.h | 2 +- src/devices/bus/ql/qubide.cpp | 2 +- src/devices/bus/ql/qubide.h | 2 +- src/devices/bus/ql/sandy_superdisk.cpp | 2 +- src/devices/bus/ql/sandy_superdisk.h | 2 +- src/devices/bus/ql/sandy_superqboard.cpp | 2 +- src/devices/bus/ql/sandy_superqboard.h | 2 +- src/devices/bus/ql/trumpcard.cpp | 2 +- src/devices/bus/ql/trumpcard.h | 2 +- src/devices/bus/s100/dj2db.cpp | 2 +- src/devices/bus/s100/dj2db.h | 2 +- src/devices/bus/s100/djdma.cpp | 2 +- src/devices/bus/s100/djdma.h | 2 +- src/devices/bus/s100/mm65k16s.cpp | 2 +- src/devices/bus/s100/mm65k16s.h | 2 +- src/devices/bus/s100/nsmdsa.cpp | 2 +- src/devices/bus/s100/nsmdsa.h | 2 +- src/devices/bus/s100/nsmdsad.cpp | 2 +- src/devices/bus/s100/nsmdsad.h | 2 +- src/devices/bus/scsi/omti5100.cpp | 2 +- src/devices/bus/scsi/s1410.cpp | 2 +- src/devices/bus/scsi/s1410.h | 2 +- src/devices/bus/scsi/sa1403d.cpp | 2 +- src/devices/bus/scsi/sa1403d.h | 2 +- src/devices/bus/snes/upd.cpp | 16 +++++------ src/devices/bus/snes/upd.h | 16 +++++------ src/devices/bus/spc1000/fdd.cpp | 2 +- src/devices/bus/spc1000/fdd.h | 2 +- src/devices/bus/svi3x8/expander/sv603.cpp | 2 +- src/devices/bus/svi3x8/expander/sv603.h | 2 +- src/devices/bus/svi3x8/slot/sv806.cpp | 2 +- src/devices/bus/svi3x8/slot/sv806.h | 2 +- src/devices/bus/ti99_peb/bwg.cpp | 2 +- src/devices/bus/ti99_peb/evpc.cpp | 2 +- src/devices/bus/ti99_peb/evpc.h | 2 +- src/devices/bus/ti99_peb/hfdc.cpp | 2 +- src/devices/bus/ti99_peb/myarcmem.cpp | 2 +- src/devices/bus/ti99_peb/pcode.cpp | 2 +- src/devices/bus/ti99_peb/pcode.h | 2 +- src/devices/bus/ti99_peb/spchsyn.cpp | 2 +- src/devices/bus/ti99_peb/spchsyn.h | 2 +- src/devices/bus/ti99_peb/ti_fdc.cpp | 2 +- src/devices/bus/ti99_peb/ti_rs232.cpp | 2 +- src/devices/bus/ti99_peb/tn_ide.cpp | 2 +- src/devices/bus/ti99_peb/tn_ide.h | 2 +- src/devices/bus/ti99x/gromport.cpp | 4 +-- src/devices/bus/ti99x/gromport.h | 4 +-- src/devices/bus/tiki100/8088.cpp | 2 +- src/devices/bus/tiki100/8088.h | 2 +- src/devices/bus/tvc/hbf.cpp | 2 +- src/devices/bus/tvc/hbf.h | 2 +- src/devices/bus/vic20/fe3.cpp | 2 +- src/devices/bus/vic20/fe3.h | 2 +- src/devices/bus/vip/vp700.cpp | 2 +- src/devices/bus/vip/vp700.h | 2 +- src/devices/bus/vtech/memexp/floppy.cpp | 2 +- src/devices/bus/vtech/memexp/floppy.h | 2 +- src/devices/bus/vtech/memexp/rs232.cpp | 2 +- src/devices/bus/vtech/memexp/rs232.h | 2 +- src/devices/bus/vtech/memexp/rtty.cpp | 2 +- src/devices/bus/vtech/memexp/rtty.h | 2 +- src/devices/bus/vtech/memexp/wordpro.cpp | 2 +- src/devices/bus/vtech/memexp/wordpro.h | 2 +- src/devices/bus/wangpc/lic.cpp | 2 +- src/devices/bus/wangpc/lic.h | 2 +- src/devices/bus/wangpc/rtc.cpp | 2 +- src/devices/bus/wangpc/rtc.h | 2 +- src/devices/bus/wangpc/tig.cpp | 2 +- src/devices/bus/wangpc/tig.h | 2 +- src/devices/bus/wangpc/wdc.cpp | 2 +- src/devices/bus/wangpc/wdc.h | 2 +- src/devices/bus/x68k/x68k_scsiext.cpp | 2 +- src/devices/bus/x68k/x68k_scsiext.h | 2 +- src/devices/cpu/alto2/alto2cpu.cpp | 2 +- src/devices/cpu/alto2/alto2cpu.h | 2 +- src/devices/cpu/tms32031/tms32031.cpp | 2 +- src/devices/cpu/tms32031/tms32031.h | 2 +- src/devices/machine/at_keybc.cpp | 2 +- src/devices/machine/at_keybc.h | 2 +- src/devices/machine/i80130.cpp | 2 +- src/devices/machine/i80130.h | 2 +- src/devices/machine/ldp1000.cpp | 2 +- src/devices/machine/ldp1000.h | 2 +- src/devices/machine/ldp1450.cpp | 2 +- src/devices/machine/ldp1450.h | 2 +- src/devices/machine/ldpr8210.cpp | 4 +-- src/devices/machine/ldpr8210.h | 4 +-- src/devices/machine/ldv1000.cpp | 2 +- src/devices/machine/ldv1000.h | 2 +- src/devices/machine/ldvp931.cpp | 2 +- src/devices/machine/ldvp931.h | 2 +- src/devices/machine/mpu401.cpp | 2 +- src/devices/machine/mpu401.h | 2 +- src/devices/machine/pdc.cpp | 2 +- src/devices/machine/pdc.h | 2 +- src/devices/machine/wozfdc.cpp | 2 +- src/devices/machine/wozfdc.h | 2 +- src/devices/sound/2608intf.cpp | 2 +- src/devices/sound/2608intf.h | 2 +- src/devices/sound/bsmt2000.cpp | 2 +- src/devices/sound/bsmt2000.h | 2 +- src/devices/sound/qs1000.cpp | 2 +- src/devices/sound/qs1000.h | 2 +- src/devices/sound/qsound.cpp | 2 +- src/devices/sound/votrax.cpp | 2 +- src/devices/sound/votrax.h | 2 +- src/devices/video/ef9365.cpp | 2 +- src/devices/video/ef9365.h | 2 +- src/devices/video/hd44780.cpp | 2 +- src/devices/video/hd44780.h | 2 +- src/devices/video/hd61830.cpp | 2 +- src/devices/video/hd61830.h | 2 +- src/devices/video/hd63484.cpp | 2 +- src/devices/video/hd63484.h | 2 +- src/devices/video/m50458.cpp | 2 +- src/devices/video/m50458.h | 2 +- src/devices/video/mb90082.cpp | 2 +- src/devices/video/mb90082.h | 2 +- src/devices/video/msm6222b.cpp | 2 +- src/devices/video/msm6222b.h | 2 +- src/devices/video/saa5050.cpp | 16 +++++------ src/devices/video/saa5050.h | 16 +++++------ src/devices/video/sed1200.cpp | 8 +++--- src/devices/video/sed1200.h | 8 +++--- src/devices/video/sed1330.cpp | 2 +- src/devices/video/sed1330.h | 2 +- src/devices/video/upd7220.cpp | 2 +- src/devices/video/upd7220.h | 2 +- src/emu/device.cpp | 16 ++++++++++- src/emu/device.h | 5 ++-- src/emu/driver.cpp | 2 +- src/emu/driver.h | 2 +- src/emu/gamedrv.h | 2 +- src/emu/romentry.h | 24 ++++++++++++----- src/emu/romload.cpp | 27 +++++++++++++++++++ src/emu/romload.h | 5 +++- src/frontend/mame/info.cpp | 9 ++++--- src/frontend/mame/ui/miscmenu.cpp | 6 +++-- src/frontend/mame/ui/selgame.cpp | 17 +++++++----- src/frontend/mame/ui/selsoft.cpp | 6 +++-- src/mame/audio/midway.h | 2 +- src/mame/audio/namco52.h | 2 +- src/mame/audio/namco54.h | 2 +- src/mame/audio/t5182.h | 2 +- src/mame/drivers/4enlinea.cpp | 2 +- src/mame/drivers/pcxt.cpp | 4 +-- src/mame/machine/abc1600mac.h | 2 +- src/mame/machine/abc80kb.h | 2 +- src/mame/machine/amigakbd.h | 2 +- src/mame/machine/apricotkb.h | 2 +- src/mame/machine/beta.h | 2 +- src/mame/machine/compiskb.h | 2 +- src/mame/machine/cuda.h | 2 +- src/mame/machine/dec_lk201.h | 2 +- src/mame/machine/dmv_keyb.h | 2 +- src/mame/machine/egret.h | 2 +- src/mame/machine/ie15_kbd.h | 2 +- src/mame/machine/jvs13551.h | 2 +- src/mame/machine/k573dio.h | 2 +- src/mame/machine/k573mcr.h | 2 +- src/mame/machine/k573msu.h | 2 +- src/mame/machine/k573npu.h | 2 +- src/mame/machine/k7659kb.h | 2 +- src/mame/machine/km035.h | 2 +- src/mame/machine/m1comm.h | 2 +- src/mame/machine/m20_8086.h | 2 +- src/mame/machine/m24_kbd.h | 2 +- src/mame/machine/m24_z8000.h | 2 +- src/mame/machine/mackbd.h | 2 +- src/mame/machine/mie.h | 2 +- src/mame/machine/mm1kb.h | 2 +- src/mame/machine/ms7004.h | 2 +- src/mame/machine/namco50.h | 2 +- src/mame/machine/namco51.h | 2 +- src/mame/machine/namco53.h | 2 +- src/mame/machine/namco62.h | 2 +- src/mame/machine/namcomcu.h | 10 +++---- src/mame/machine/nmk004.h | 2 +- src/mame/machine/pc1512kb.h | 2 +- src/mame/machine/pc9801_118.h | 2 +- src/mame/machine/pc9801_86.h | 2 +- src/mame/machine/pcd_kbd.h | 2 +- src/mame/machine/psxcd.h | 2 +- src/mame/machine/tandy2kb.h | 2 +- src/mame/machine/trs80m2kb.h | 2 +- src/mame/machine/v1050kb.h | 2 +- src/mame/machine/victor9k_fdc.h | 2 +- src/mame/machine/victor9kb.h | 2 +- src/mame/machine/wangpckb.h | 2 +- src/mame/machine/x820kb.h | 2 +- src/mame/video/abc1600.h | 2 +- src/mame/video/gic.h | 2 +- src/mame/video/pcd.h | 4 +-- src/mame/video/stic.h | 2 +- 589 files changed, 843 insertions(+), 776 deletions(-) diff --git a/src/devices/bus/a1bus/a1cassette.cpp b/src/devices/bus/a1bus/a1cassette.cpp index 94eab958858..9a33b667fa9 100644 --- a/src/devices/bus/a1bus/a1cassette.cpp +++ b/src/devices/bus/a1bus/a1cassette.cpp @@ -47,7 +47,7 @@ machine_config_constructor a1bus_cassette_device::device_mconfig_additions() con return MACHINE_CONFIG_NAME( cassette ); } -const rom_entry *a1bus_cassette_device::device_rom_region() const +const tiny_rom_entry *a1bus_cassette_device::device_rom_region() const { return ROM_NAME( cassette ); } diff --git a/src/devices/bus/a1bus/a1cassette.h b/src/devices/bus/a1bus/a1cassette.h index 482704b31cf..b5391e680ff 100644 --- a/src/devices/bus/a1bus/a1cassette.h +++ b/src/devices/bus/a1bus/a1cassette.h @@ -29,7 +29,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; optional_device m_cassette; diff --git a/src/devices/bus/a1bus/a1cffa.cpp b/src/devices/bus/a1bus/a1cffa.cpp index fc0ff3da3a1..4edaf39c5d0 100644 --- a/src/devices/bus/a1bus/a1cffa.cpp +++ b/src/devices/bus/a1bus/a1cffa.cpp @@ -42,7 +42,7 @@ machine_config_constructor a1bus_cffa_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( cffa ); } -const rom_entry *a1bus_cffa_device::device_rom_region() const +const tiny_rom_entry *a1bus_cffa_device::device_rom_region() const { return ROM_NAME( cffa ); } diff --git a/src/devices/bus/a1bus/a1cffa.h b/src/devices/bus/a1bus/a1cffa.h index d395468891b..1a342c34b33 100644 --- a/src/devices/bus/a1bus/a1cffa.h +++ b/src/devices/bus/a1bus/a1cffa.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; required_device m_ata; diff --git a/src/devices/bus/a2bus/a2applicard.cpp b/src/devices/bus/a2bus/a2applicard.cpp index cb647b6476b..3075bd12ede 100644 --- a/src/devices/bus/a2bus/a2applicard.cpp +++ b/src/devices/bus/a2bus/a2applicard.cpp @@ -66,7 +66,7 @@ machine_config_constructor a2bus_applicard_device::device_mconfig_additions() co // device_rom_region - device-specific ROMs //------------------------------------------------- -const rom_entry *a2bus_applicard_device::device_rom_region() const +const tiny_rom_entry *a2bus_applicard_device::device_rom_region() const { return ROM_NAME( a2applicard ); } diff --git a/src/devices/bus/a2bus/a2applicard.h b/src/devices/bus/a2bus/a2applicard.h index e1bb4b4d685..fa0b11be8bf 100644 --- a/src/devices/bus/a2bus/a2applicard.h +++ b/src/devices/bus/a2bus/a2applicard.h @@ -38,7 +38,7 @@ public: protected: virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // overrides of standard a2bus slot functions virtual UINT8 read_c0nx(address_space &space, UINT8 offset) override; diff --git a/src/devices/bus/a2bus/a2cffa.cpp b/src/devices/bus/a2bus/a2cffa.cpp index aa7f6336ce2..85eef339230 100644 --- a/src/devices/bus/a2bus/a2cffa.cpp +++ b/src/devices/bus/a2bus/a2cffa.cpp @@ -68,12 +68,12 @@ machine_config_constructor a2bus_cffa2000_device::device_mconfig_additions() con // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_cffa2000_device::device_rom_region() const +const tiny_rom_entry *a2bus_cffa2000_device::device_rom_region() const { return ROM_NAME( cffa2 ); } -const rom_entry *a2bus_cffa2_6502_device::device_rom_region() const +const tiny_rom_entry *a2bus_cffa2_6502_device::device_rom_region() const { return ROM_NAME( cffa2_6502 ); } diff --git a/src/devices/bus/a2bus/a2cffa.h b/src/devices/bus/a2bus/a2cffa.h index 4215bde504f..b628fb16d1a 100644 --- a/src/devices/bus/a2bus/a2cffa.h +++ b/src/devices/bus/a2bus/a2cffa.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: virtual void device_start() override; @@ -70,7 +70,7 @@ class a2bus_cffa2_6502_device : public a2bus_cffa2000_device, public device_nvra { public: a2bus_cffa2_6502_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device_config_nvram_interface overrides diff --git a/src/devices/bus/a2bus/a2corvus.cpp b/src/devices/bus/a2bus/a2corvus.cpp index 6e33d0be8fa..cc95c3919cb 100644 --- a/src/devices/bus/a2bus/a2corvus.cpp +++ b/src/devices/bus/a2bus/a2corvus.cpp @@ -92,7 +92,7 @@ machine_config_constructor a2bus_corvus_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_corvus_device::device_rom_region() const +const tiny_rom_entry *a2bus_corvus_device::device_rom_region() const { return ROM_NAME( corvus ); } diff --git a/src/devices/bus/a2bus/a2corvus.h b/src/devices/bus/a2bus/a2corvus.h index e7751089e33..2e64d8b9cdc 100644 --- a/src/devices/bus/a2bus/a2corvus.h +++ b/src/devices/bus/a2bus/a2corvus.h @@ -31,7 +31,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; required_device m_corvushd; diff --git a/src/devices/bus/a2bus/a2diskii.cpp b/src/devices/bus/a2bus/a2diskii.cpp index 488b675a5f9..cfda06bbdcb 100644 --- a/src/devices/bus/a2bus/a2diskii.cpp +++ b/src/devices/bus/a2bus/a2diskii.cpp @@ -81,7 +81,7 @@ machine_config_constructor a2bus_iwmflop_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_floppy_device::device_rom_region() const +const tiny_rom_entry *a2bus_floppy_device::device_rom_region() const { return ROM_NAME( diskii ); } diff --git a/src/devices/bus/a2bus/a2diskii.h b/src/devices/bus/a2bus/a2diskii.h index 9e01464893e..75363e244ed 100644 --- a/src/devices/bus/a2bus/a2diskii.h +++ b/src/devices/bus/a2bus/a2diskii.h @@ -29,7 +29,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: virtual void device_start() override; diff --git a/src/devices/bus/a2bus/a2diskiing.cpp b/src/devices/bus/a2bus/a2diskiing.cpp index 474e228b6fa..cf83f6d16df 100644 --- a/src/devices/bus/a2bus/a2diskiing.cpp +++ b/src/devices/bus/a2bus/a2diskiing.cpp @@ -59,7 +59,7 @@ machine_config_constructor a2bus_diskiing_device::device_mconfig_additions() con // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_diskiing_device::device_rom_region() const +const tiny_rom_entry *a2bus_diskiing_device::device_rom_region() const { return ROM_NAME( diskiing ); } diff --git a/src/devices/bus/a2bus/a2diskiing.h b/src/devices/bus/a2bus/a2diskiing.h index 28cfa664be0..f1ac98cc8c0 100644 --- a/src/devices/bus/a2bus/a2diskiing.h +++ b/src/devices/bus/a2bus/a2diskiing.h @@ -32,7 +32,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); diff --git a/src/devices/bus/a2bus/a2hsscsi.cpp b/src/devices/bus/a2bus/a2hsscsi.cpp index fa2744c995e..a9869d57f4d 100644 --- a/src/devices/bus/a2bus/a2hsscsi.cpp +++ b/src/devices/bus/a2bus/a2hsscsi.cpp @@ -104,7 +104,7 @@ machine_config_constructor a2bus_hsscsi_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_hsscsi_device::device_rom_region() const +const tiny_rom_entry *a2bus_hsscsi_device::device_rom_region() const { return ROM_NAME( hsscsi ); } diff --git a/src/devices/bus/a2bus/a2hsscsi.h b/src/devices/bus/a2bus/a2hsscsi.h index d4d07ce04ea..11f2ae7a48a 100644 --- a/src/devices/bus/a2bus/a2hsscsi.h +++ b/src/devices/bus/a2bus/a2hsscsi.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; required_device m_ncr5380; required_device m_scsibus; diff --git a/src/devices/bus/a2bus/a2memexp.cpp b/src/devices/bus/a2bus/a2memexp.cpp index 9832b3160e2..d7177d645d1 100644 --- a/src/devices/bus/a2bus/a2memexp.cpp +++ b/src/devices/bus/a2bus/a2memexp.cpp @@ -59,12 +59,12 @@ machine_config_constructor a2bus_memexp_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_memexp_device::device_rom_region() const +const tiny_rom_entry *a2bus_memexp_device::device_rom_region() const { return ROM_NAME( memexp ); } -const rom_entry *a2bus_ramfactor_device::device_rom_region() const +const tiny_rom_entry *a2bus_ramfactor_device::device_rom_region() const { return ROM_NAME( ramfactor ); } diff --git a/src/devices/bus/a2bus/a2memexp.h b/src/devices/bus/a2bus/a2memexp.h index 8ce49163db1..c953e0f7bf8 100644 --- a/src/devices/bus/a2bus/a2memexp.h +++ b/src/devices/bus/a2bus/a2memexp.h @@ -28,7 +28,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; bool m_isramfactor; UINT8 m_bankhior; @@ -62,7 +62,7 @@ class a2bus_ramfactor_device : public a2bus_memexp_device public: a2bus_ramfactor_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/a2bus/a2pic.cpp b/src/devices/bus/a2bus/a2pic.cpp index c16ee6f2140..3592b2d582c 100644 --- a/src/devices/bus/a2bus/a2pic.cpp +++ b/src/devices/bus/a2bus/a2pic.cpp @@ -89,7 +89,7 @@ machine_config_constructor a2bus_pic_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_pic_device::device_rom_region() const +const tiny_rom_entry *a2bus_pic_device::device_rom_region() const { return ROM_NAME( pic ); } diff --git a/src/devices/bus/a2bus/a2pic.h b/src/devices/bus/a2bus/a2pic.h index 997e4a342a6..9e5df928f9b 100644 --- a/src/devices/bus/a2bus/a2pic.h +++ b/src/devices/bus/a2bus/a2pic.h @@ -29,7 +29,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; required_ioport m_dsw1; diff --git a/src/devices/bus/a2bus/a2scsi.cpp b/src/devices/bus/a2bus/a2scsi.cpp index 50a715893bf..7b154901ec5 100644 --- a/src/devices/bus/a2bus/a2scsi.cpp +++ b/src/devices/bus/a2bus/a2scsi.cpp @@ -97,7 +97,7 @@ machine_config_constructor a2bus_scsi_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_scsi_device::device_rom_region() const +const tiny_rom_entry *a2bus_scsi_device::device_rom_region() const { return ROM_NAME( scsi ); } diff --git a/src/devices/bus/a2bus/a2scsi.h b/src/devices/bus/a2bus/a2scsi.h index b6132577846..09b4ad18fe2 100644 --- a/src/devices/bus/a2bus/a2scsi.h +++ b/src/devices/bus/a2bus/a2scsi.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; required_device m_ncr5380; required_device m_scsibus; diff --git a/src/devices/bus/a2bus/a2ssc.cpp b/src/devices/bus/a2bus/a2ssc.cpp index d2765ebc557..b7189b77992 100644 --- a/src/devices/bus/a2bus/a2ssc.cpp +++ b/src/devices/bus/a2bus/a2ssc.cpp @@ -118,7 +118,7 @@ machine_config_constructor a2bus_ssc_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_ssc_device::device_rom_region() const +const tiny_rom_entry *a2bus_ssc_device::device_rom_region() const { return ROM_NAME( ssc ); } diff --git a/src/devices/bus/a2bus/a2ssc.h b/src/devices/bus/a2bus/a2ssc.h index bca78273307..bdcaca2e900 100644 --- a/src/devices/bus/a2bus/a2ssc.h +++ b/src/devices/bus/a2bus/a2ssc.h @@ -29,7 +29,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; required_ioport m_dsw1, m_dsw2; diff --git a/src/devices/bus/a2bus/a2swyft.cpp b/src/devices/bus/a2bus/a2swyft.cpp index d47e7770937..b5f0d65c60d 100644 --- a/src/devices/bus/a2bus/a2swyft.cpp +++ b/src/devices/bus/a2bus/a2swyft.cpp @@ -36,7 +36,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_swyft_device::device_rom_region() const +const tiny_rom_entry *a2bus_swyft_device::device_rom_region() const { return ROM_NAME( swyft ); } diff --git a/src/devices/bus/a2bus/a2swyft.h b/src/devices/bus/a2bus/a2swyft.h index 564a76ac6b9..a490d266ac9 100644 --- a/src/devices/bus/a2bus/a2swyft.h +++ b/src/devices/bus/a2bus/a2swyft.h @@ -27,7 +27,7 @@ public: a2bus_swyft_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); a2bus_swyft_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: virtual void device_start() override; diff --git a/src/devices/bus/a2bus/a2thunderclock.cpp b/src/devices/bus/a2bus/a2thunderclock.cpp index 8b378f238b6..e789b364a51 100644 --- a/src/devices/bus/a2bus/a2thunderclock.cpp +++ b/src/devices/bus/a2bus/a2thunderclock.cpp @@ -67,7 +67,7 @@ machine_config_constructor a2bus_thunderclock_device::device_mconfig_additions() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_thunderclock_device::device_rom_region() const +const tiny_rom_entry *a2bus_thunderclock_device::device_rom_region() const { return ROM_NAME( thunderclock ); } diff --git a/src/devices/bus/a2bus/a2thunderclock.h b/src/devices/bus/a2bus/a2thunderclock.h index 55ab8fe4389..324b6a30ea0 100644 --- a/src/devices/bus/a2bus/a2thunderclock.h +++ b/src/devices/bus/a2bus/a2thunderclock.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE_LINE_MEMBER( upd_dataout_w ); diff --git a/src/devices/bus/a2bus/a2ultraterm.cpp b/src/devices/bus/a2bus/a2ultraterm.cpp index 6f7722e46ea..3898e4be0c3 100644 --- a/src/devices/bus/a2bus/a2ultraterm.cpp +++ b/src/devices/bus/a2bus/a2ultraterm.cpp @@ -124,12 +124,12 @@ machine_config_constructor a2bus_videx160_device::device_mconfig_additions() con // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_ultraterm_device::device_rom_region() const +const tiny_rom_entry *a2bus_ultraterm_device::device_rom_region() const { return ROM_NAME( a2ultraterm ); } -const rom_entry *a2bus_ultratermenh_device::device_rom_region() const +const tiny_rom_entry *a2bus_ultratermenh_device::device_rom_region() const { return ROM_NAME( a2ultratermenh ); } diff --git a/src/devices/bus/a2bus/a2ultraterm.h b/src/devices/bus/a2bus/a2ultraterm.h index cbd435106cf..3eadec62422 100644 --- a/src/devices/bus/a2bus/a2ultraterm.h +++ b/src/devices/bus/a2bus/a2ultraterm.h @@ -61,7 +61,7 @@ class a2bus_ultraterm_device : public a2bus_videx160_device public: a2bus_ultraterm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class a2bus_ultratermenh_device : public a2bus_videx160_device @@ -69,7 +69,7 @@ class a2bus_ultratermenh_device : public a2bus_videx160_device public: a2bus_ultratermenh_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/a2bus/a2videoterm.cpp b/src/devices/bus/a2bus/a2videoterm.cpp index 4fc271c604f..f6d00066321 100644 --- a/src/devices/bus/a2bus/a2videoterm.cpp +++ b/src/devices/bus/a2bus/a2videoterm.cpp @@ -138,32 +138,32 @@ machine_config_constructor a2bus_videx80_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_videoterm_device::device_rom_region() const +const tiny_rom_entry *a2bus_videoterm_device::device_rom_region() const { return ROM_NAME( a2videoterm ); } -const rom_entry *a2bus_ap16_device::device_rom_region() const +const tiny_rom_entry *a2bus_ap16_device::device_rom_region() const { return ROM_NAME( a2ap16 ); } -const rom_entry *a2bus_ap16alt_device::device_rom_region() const +const tiny_rom_entry *a2bus_ap16alt_device::device_rom_region() const { return ROM_NAME( a2ap16alt ); } -const rom_entry *a2bus_vtc1_device::device_rom_region() const +const tiny_rom_entry *a2bus_vtc1_device::device_rom_region() const { return ROM_NAME( vtc1 ); } -const rom_entry *a2bus_vtc2_device::device_rom_region() const +const tiny_rom_entry *a2bus_vtc2_device::device_rom_region() const { return ROM_NAME( vtc2 ); } -const rom_entry *a2bus_aevm80_device::device_rom_region() const +const tiny_rom_entry *a2bus_aevm80_device::device_rom_region() const { return ROM_NAME( a2aevm80 ); } diff --git a/src/devices/bus/a2bus/a2videoterm.h b/src/devices/bus/a2bus/a2videoterm.h index 654103879ec..23b29ca86d4 100644 --- a/src/devices/bus/a2bus/a2videoterm.h +++ b/src/devices/bus/a2bus/a2videoterm.h @@ -62,7 +62,7 @@ class a2bus_videoterm_device : public a2bus_videx80_device public: a2bus_videoterm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class a2bus_ap16_device : public a2bus_videx80_device @@ -70,7 +70,7 @@ class a2bus_ap16_device : public a2bus_videx80_device public: a2bus_ap16_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual UINT8 read_cnxx(address_space &space, UINT8 offset) override; }; @@ -81,7 +81,7 @@ class a2bus_ap16alt_device : public a2bus_videx80_device public: a2bus_ap16alt_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual UINT8 read_cnxx(address_space &space, UINT8 offset) override; }; @@ -91,7 +91,7 @@ class a2bus_vtc1_device : public a2bus_videx80_device public: a2bus_vtc1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class a2bus_vtc2_device : public a2bus_videx80_device @@ -99,7 +99,7 @@ class a2bus_vtc2_device : public a2bus_videx80_device public: a2bus_vtc2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class a2bus_aevm80_device : public a2bus_videx80_device @@ -107,7 +107,7 @@ class a2bus_aevm80_device : public a2bus_videx80_device public: a2bus_aevm80_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/a2bus/a2vulcan.cpp b/src/devices/bus/a2bus/a2vulcan.cpp index f917d179ffd..c17631287c6 100644 --- a/src/devices/bus/a2bus/a2vulcan.cpp +++ b/src/devices/bus/a2bus/a2vulcan.cpp @@ -100,12 +100,12 @@ machine_config_constructor a2bus_vulcanbase_device::device_mconfig_additions() c // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_vulcan_device::device_rom_region() const +const tiny_rom_entry *a2bus_vulcan_device::device_rom_region() const { return ROM_NAME( vulcan ); } -const rom_entry *a2bus_vulcangold_device::device_rom_region() const +const tiny_rom_entry *a2bus_vulcangold_device::device_rom_region() const { return ROM_NAME( vulcangold ); } diff --git a/src/devices/bus/a2bus/a2vulcan.h b/src/devices/bus/a2bus/a2vulcan.h index 25871c70fcb..03facf5dcbf 100644 --- a/src/devices/bus/a2bus/a2vulcan.h +++ b/src/devices/bus/a2bus/a2vulcan.h @@ -56,7 +56,7 @@ class a2bus_vulcan_device : public a2bus_vulcanbase_device { public: a2bus_vulcan_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: virtual void device_start() override; @@ -68,7 +68,7 @@ class a2bus_vulcangold_device : public a2bus_vulcanbase_device { public: a2bus_vulcangold_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/a2bus/a2zipdrive.cpp b/src/devices/bus/a2bus/a2zipdrive.cpp index 8213a63e010..f7a78aa4223 100644 --- a/src/devices/bus/a2bus/a2zipdrive.cpp +++ b/src/devices/bus/a2bus/a2zipdrive.cpp @@ -60,7 +60,7 @@ machine_config_constructor a2bus_zipdrivebase_device::device_mconfig_additions() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_zipdrivebase_device::device_rom_region() const +const tiny_rom_entry *a2bus_zipdrivebase_device::device_rom_region() const { return ROM_NAME( zipdrive ); } diff --git a/src/devices/bus/a2bus/a2zipdrive.h b/src/devices/bus/a2bus/a2zipdrive.h index 43af97dd532..cdc4a15bca6 100644 --- a/src/devices/bus/a2bus/a2zipdrive.h +++ b/src/devices/bus/a2bus/a2zipdrive.h @@ -31,7 +31,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: virtual void device_start() override; diff --git a/src/devices/bus/a2bus/corvfdc01.cpp b/src/devices/bus/a2bus/corvfdc01.cpp index c8f93b725d1..335315e0022 100644 --- a/src/devices/bus/a2bus/corvfdc01.cpp +++ b/src/devices/bus/a2bus/corvfdc01.cpp @@ -101,7 +101,7 @@ machine_config_constructor a2bus_corvfdc01_device::device_mconfig_additions() co // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_corvfdc01_device::device_rom_region() const +const tiny_rom_entry *a2bus_corvfdc01_device::device_rom_region() const { return ROM_NAME( fdc01 ); } diff --git a/src/devices/bus/a2bus/corvfdc01.h b/src/devices/bus/a2bus/corvfdc01.h index 256ebd45ca3..626a2ca145d 100644 --- a/src/devices/bus/a2bus/corvfdc01.h +++ b/src/devices/bus/a2bus/corvfdc01.h @@ -31,7 +31,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE_LINE_MEMBER(intrq_w); DECLARE_WRITE_LINE_MEMBER(drq_w); diff --git a/src/devices/bus/a2bus/corvfdc02.cpp b/src/devices/bus/a2bus/corvfdc02.cpp index 870fc194bfb..89201538f6a 100644 --- a/src/devices/bus/a2bus/corvfdc02.cpp +++ b/src/devices/bus/a2bus/corvfdc02.cpp @@ -71,7 +71,7 @@ machine_config_constructor a2bus_corvfdc02_device::device_mconfig_additions() co // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_corvfdc02_device::device_rom_region() const +const tiny_rom_entry *a2bus_corvfdc02_device::device_rom_region() const { return ROM_NAME( fdc02 ); } diff --git a/src/devices/bus/a2bus/corvfdc02.h b/src/devices/bus/a2bus/corvfdc02.h index b47aba0b10f..d7a1d6a2a1e 100644 --- a/src/devices/bus/a2bus/corvfdc02.h +++ b/src/devices/bus/a2bus/corvfdc02.h @@ -31,7 +31,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE_LINE_MEMBER(intrq_w); DECLARE_WRITE_LINE_MEMBER(drq_w); diff --git a/src/devices/bus/a2bus/mouse.cpp b/src/devices/bus/a2bus/mouse.cpp index 3d4e11d3487..02eec429329 100644 --- a/src/devices/bus/a2bus/mouse.cpp +++ b/src/devices/bus/a2bus/mouse.cpp @@ -163,7 +163,7 @@ machine_config_constructor a2bus_mouse_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_mouse_device::device_rom_region() const +const tiny_rom_entry *a2bus_mouse_device::device_rom_region() const { return ROM_NAME( mouse ); } diff --git a/src/devices/bus/a2bus/mouse.h b/src/devices/bus/a2bus/mouse.h index 669487f1ec4..a5bf3a5c831 100644 --- a/src/devices/bus/a2bus/mouse.h +++ b/src/devices/bus/a2bus/mouse.h @@ -31,7 +31,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/devices/bus/a2bus/timemasterho.cpp b/src/devices/bus/a2bus/timemasterho.cpp index 9b8543613f2..647dc774116 100644 --- a/src/devices/bus/a2bus/timemasterho.cpp +++ b/src/devices/bus/a2bus/timemasterho.cpp @@ -112,7 +112,7 @@ machine_config_constructor a2bus_timemasterho_device::device_mconfig_additions() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_timemasterho_device::device_rom_region() const +const tiny_rom_entry *a2bus_timemasterho_device::device_rom_region() const { return ROM_NAME( timemaster ); } diff --git a/src/devices/bus/a2bus/timemasterho.h b/src/devices/bus/a2bus/timemasterho.h index d1442593efc..87fa840bc8f 100644 --- a/src/devices/bus/a2bus/timemasterho.h +++ b/src/devices/bus/a2bus/timemasterho.h @@ -31,7 +31,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; DECLARE_WRITE8_MEMBER(pia_out_a); diff --git a/src/devices/bus/abcbus/fd2.cpp b/src/devices/bus/abcbus/fd2.cpp index e967c3050cf..cc906c3e925 100644 --- a/src/devices/bus/abcbus/fd2.cpp +++ b/src/devices/bus/abcbus/fd2.cpp @@ -75,7 +75,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc_fd2_t::device_rom_region() const +const tiny_rom_entry *abc_fd2_t::device_rom_region() const { return ROM_NAME( abc_fd2 ); } diff --git a/src/devices/bus/abcbus/fd2.h b/src/devices/bus/abcbus/fd2.h index 752c97d818b..78d5bc0c767 100644 --- a/src/devices/bus/abcbus/fd2.h +++ b/src/devices/bus/abcbus/fd2.h @@ -35,7 +35,7 @@ public: abc_fd2_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_WRITE8_MEMBER( status_w ); diff --git a/src/devices/bus/abcbus/hdc.cpp b/src/devices/bus/abcbus/hdc.cpp index 4108daa85a3..28636376d3e 100644 --- a/src/devices/bus/abcbus/hdc.cpp +++ b/src/devices/bus/abcbus/hdc.cpp @@ -43,7 +43,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc_hdc_device::device_rom_region() const +const tiny_rom_entry *abc_hdc_device::device_rom_region() const { return ROM_NAME( abc_hdc ); } diff --git a/src/devices/bus/abcbus/hdc.h b/src/devices/bus/abcbus/hdc.h index 565a3302a88..d0417be0a31 100644 --- a/src/devices/bus/abcbus/hdc.h +++ b/src/devices/bus/abcbus/hdc.h @@ -33,7 +33,7 @@ public: abc_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/abcbus/lux10828.cpp b/src/devices/bus/abcbus/lux10828.cpp index 4b9c074e193..7955b3135fd 100644 --- a/src/devices/bus/abcbus/lux10828.cpp +++ b/src/devices/bus/abcbus/lux10828.cpp @@ -172,7 +172,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *luxor_55_10828_device::device_rom_region() const +const tiny_rom_entry *luxor_55_10828_device::device_rom_region() const { return ROM_NAME( luxor_55_10828 ); } diff --git a/src/devices/bus/abcbus/lux10828.h b/src/devices/bus/abcbus/lux10828.h index 1d48f042013..4be7801b873 100644 --- a/src/devices/bus/abcbus/lux10828.h +++ b/src/devices/bus/abcbus/lux10828.h @@ -72,7 +72,7 @@ public: DECLARE_FLOPPY_FORMATS( floppy_formats ); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/abcbus/lux21046.cpp b/src/devices/bus/abcbus/lux21046.cpp index 1931cbad35a..a6187c278ed 100644 --- a/src/devices/bus/abcbus/lux21046.cpp +++ b/src/devices/bus/abcbus/lux21046.cpp @@ -126,7 +126,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *luxor_55_21046_device::device_rom_region() const +const tiny_rom_entry *luxor_55_21046_device::device_rom_region() const { return ROM_NAME( luxor_55_21046 ); } diff --git a/src/devices/bus/abcbus/lux21046.h b/src/devices/bus/abcbus/lux21046.h index da6a5ef5c66..d63d02d8ebb 100644 --- a/src/devices/bus/abcbus/lux21046.h +++ b/src/devices/bus/abcbus/lux21046.h @@ -57,7 +57,7 @@ public: luxor_55_21046_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/abcbus/lux21056.cpp b/src/devices/bus/abcbus/lux21056.cpp index f5227393a0a..f84d5b18414 100644 --- a/src/devices/bus/abcbus/lux21056.cpp +++ b/src/devices/bus/abcbus/lux21056.cpp @@ -122,7 +122,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *luxor_55_21056_device::device_rom_region() const +const tiny_rom_entry *luxor_55_21056_device::device_rom_region() const { return ROM_NAME( luxor_55_21056 ); } diff --git a/src/devices/bus/abcbus/lux21056.h b/src/devices/bus/abcbus/lux21056.h index c5fde193476..769bc9ad93e 100644 --- a/src/devices/bus/abcbus/lux21056.h +++ b/src/devices/bus/abcbus/lux21056.h @@ -34,7 +34,7 @@ public: luxor_55_21056_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/abcbus/memcard.cpp b/src/devices/bus/abcbus/memcard.cpp index c7fbd2f3f31..9195f3b135b 100644 --- a/src/devices/bus/abcbus/memcard.cpp +++ b/src/devices/bus/abcbus/memcard.cpp @@ -94,7 +94,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc_memory_card_t::device_rom_region() const +const tiny_rom_entry *abc_memory_card_t::device_rom_region() const { return ROM_NAME( abc_dos ); } diff --git a/src/devices/bus/abcbus/memcard.h b/src/devices/bus/abcbus/memcard.h index 7fb79f435fe..a9e0e349ca7 100644 --- a/src/devices/bus/abcbus/memcard.h +++ b/src/devices/bus/abcbus/memcard.h @@ -30,7 +30,7 @@ public: abc_memory_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/abcbus/sio.cpp b/src/devices/bus/abcbus/sio.cpp index fe4d93ac2e7..bf1c733281d 100644 --- a/src/devices/bus/abcbus/sio.cpp +++ b/src/devices/bus/abcbus/sio.cpp @@ -65,7 +65,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc_sio_device::device_rom_region() const +const tiny_rom_entry *abc_sio_device::device_rom_region() const { return ROM_NAME( abc_sio ); } diff --git a/src/devices/bus/abcbus/sio.h b/src/devices/bus/abcbus/sio.h index e76b4ad07a4..991de18f0ed 100644 --- a/src/devices/bus/abcbus/sio.h +++ b/src/devices/bus/abcbus/sio.h @@ -26,7 +26,7 @@ public: abc_sio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/abcbus/slutprov.cpp b/src/devices/bus/abcbus/slutprov.cpp index bd1184c15c5..b10415badca 100644 --- a/src/devices/bus/abcbus/slutprov.cpp +++ b/src/devices/bus/abcbus/slutprov.cpp @@ -25,7 +25,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc_slutprov_device::device_rom_region() const +const tiny_rom_entry *abc_slutprov_device::device_rom_region() const { return ROM_NAME( abc_slutprov ); } diff --git a/src/devices/bus/abcbus/slutprov.h b/src/devices/bus/abcbus/slutprov.h index f5b7cf661fb..bb4c6262c43 100644 --- a/src/devices/bus/abcbus/slutprov.h +++ b/src/devices/bus/abcbus/slutprov.h @@ -24,7 +24,7 @@ public: abc_slutprov_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/abcbus/turbo.cpp b/src/devices/bus/abcbus/turbo.cpp index 1f16cadab96..ecf035d432f 100644 --- a/src/devices/bus/abcbus/turbo.cpp +++ b/src/devices/bus/abcbus/turbo.cpp @@ -44,7 +44,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *turbo_kontroller_device::device_rom_region() const +const tiny_rom_entry *turbo_kontroller_device::device_rom_region() const { return ROM_NAME( turbo_kontroller ); } diff --git a/src/devices/bus/abcbus/turbo.h b/src/devices/bus/abcbus/turbo.h index b4678c4b14c..9423f095f9f 100644 --- a/src/devices/bus/abcbus/turbo.h +++ b/src/devices/bus/abcbus/turbo.h @@ -32,7 +32,7 @@ public: turbo_kontroller_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/abcbus/uni800.cpp b/src/devices/bus/abcbus/uni800.cpp index 9d22dc0a6cd..d3657841e90 100644 --- a/src/devices/bus/abcbus/uni800.cpp +++ b/src/devices/bus/abcbus/uni800.cpp @@ -56,7 +56,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc_uni800_device::device_rom_region() const +const tiny_rom_entry *abc_uni800_device::device_rom_region() const { return ROM_NAME( abc_uni800 ); } diff --git a/src/devices/bus/abcbus/uni800.h b/src/devices/bus/abcbus/uni800.h index be1d9086c4e..bc298f6d6c0 100644 --- a/src/devices/bus/abcbus/uni800.h +++ b/src/devices/bus/abcbus/uni800.h @@ -24,7 +24,7 @@ public: abc_uni800_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/abckb/abc77.cpp b/src/devices/bus/abckb/abc77.cpp index 315d678db8b..0fd9c53d7b8 100644 --- a/src/devices/bus/abckb/abc77.cpp +++ b/src/devices/bus/abckb/abc77.cpp @@ -77,7 +77,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc77_device::device_rom_region() const +const tiny_rom_entry *abc77_device::device_rom_region() const { return ROM_NAME( abc77 ); } diff --git a/src/devices/bus/abckb/abc77.h b/src/devices/bus/abckb/abc77.h index 0e8744ed6c2..f3521bfd0af 100644 --- a/src/devices/bus/abckb/abc77.h +++ b/src/devices/bus/abckb/abc77.h @@ -35,7 +35,7 @@ public: abc77_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/abckb/abc800kb.cpp b/src/devices/bus/abckb/abc800kb.cpp index 511b1fe7c91..aedd983e202 100644 --- a/src/devices/bus/abckb/abc800kb.cpp +++ b/src/devices/bus/abckb/abc800kb.cpp @@ -101,7 +101,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc800_keyboard_device::device_rom_region() const +const tiny_rom_entry *abc800_keyboard_device::device_rom_region() const { return ROM_NAME( abc800_keyboard ); } diff --git a/src/devices/bus/abckb/abc800kb.h b/src/devices/bus/abckb/abc800kb.h index 61e55826d54..9606706a08b 100644 --- a/src/devices/bus/abckb/abc800kb.h +++ b/src/devices/bus/abckb/abc800kb.h @@ -33,7 +33,7 @@ public: abc800_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/abckb/abc99.cpp b/src/devices/bus/abckb/abc99.cpp index 8dc4d9e75c7..eb3ed258968 100644 --- a/src/devices/bus/abckb/abc99.cpp +++ b/src/devices/bus/abckb/abc99.cpp @@ -94,7 +94,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc99_device::device_rom_region() const +const tiny_rom_entry *abc99_device::device_rom_region() const { return ROM_NAME( abc99 ); } diff --git a/src/devices/bus/abckb/abc99.h b/src/devices/bus/abckb/abc99.h index 5ca05436a0b..5002039cf93 100644 --- a/src/devices/bus/abckb/abc99.h +++ b/src/devices/bus/abckb/abc99.h @@ -32,7 +32,7 @@ public: abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/adam/ide.cpp b/src/devices/bus/adam/ide.cpp index 54d4240f7db..ad3f56159e3 100644 --- a/src/devices/bus/adam/ide.cpp +++ b/src/devices/bus/adam/ide.cpp @@ -51,7 +51,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *powermate_ide_device::device_rom_region() const +const tiny_rom_entry *powermate_ide_device::device_rom_region() const { return ROM_NAME( adam_ata ); } diff --git a/src/devices/bus/adam/ide.h b/src/devices/bus/adam/ide.h index f26f42a3c1d..4f29001b8d9 100644 --- a/src/devices/bus/adam/ide.h +++ b/src/devices/bus/adam/ide.h @@ -32,7 +32,7 @@ public: powermate_ide_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/adamnet/ddp.cpp b/src/devices/bus/adamnet/ddp.cpp index 2a2f674d0c3..6e82af0b985 100644 --- a/src/devices/bus/adamnet/ddp.cpp +++ b/src/devices/bus/adamnet/ddp.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *adam_digital_data_pack_device::device_rom_region() const +const tiny_rom_entry *adam_digital_data_pack_device::device_rom_region() const { return ROM_NAME( adam_ddp ); } diff --git a/src/devices/bus/adamnet/ddp.h b/src/devices/bus/adamnet/ddp.h index 1a2a2402d03..f5255317d6d 100644 --- a/src/devices/bus/adamnet/ddp.h +++ b/src/devices/bus/adamnet/ddp.h @@ -33,7 +33,7 @@ public: adam_digital_data_pack_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // not really public diff --git a/src/devices/bus/adamnet/fdc.cpp b/src/devices/bus/adamnet/fdc.cpp index e83ac70766d..cf99e564b78 100644 --- a/src/devices/bus/adamnet/fdc.cpp +++ b/src/devices/bus/adamnet/fdc.cpp @@ -66,7 +66,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *adam_fdc_device::device_rom_region() const +const tiny_rom_entry *adam_fdc_device::device_rom_region() const { return ROM_NAME( adam_fdc ); } diff --git a/src/devices/bus/adamnet/fdc.h b/src/devices/bus/adamnet/fdc.h index a8cd3d17648..72838e385a7 100644 --- a/src/devices/bus/adamnet/fdc.h +++ b/src/devices/bus/adamnet/fdc.h @@ -33,7 +33,7 @@ public: adam_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/adamnet/kb.cpp b/src/devices/bus/adamnet/kb.cpp index a9cc31b8edf..0a2481bc7cd 100644 --- a/src/devices/bus/adamnet/kb.cpp +++ b/src/devices/bus/adamnet/kb.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *adam_keyboard_device::device_rom_region() const +const tiny_rom_entry *adam_keyboard_device::device_rom_region() const { return ROM_NAME( adam_kb ); } diff --git a/src/devices/bus/adamnet/kb.h b/src/devices/bus/adamnet/kb.h index a9cb98450dd..34885d083c9 100644 --- a/src/devices/bus/adamnet/kb.h +++ b/src/devices/bus/adamnet/kb.h @@ -31,7 +31,7 @@ public: adam_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/adamnet/printer.cpp b/src/devices/bus/adamnet/printer.cpp index 7de2db87b2e..9062b7aec52 100644 --- a/src/devices/bus/adamnet/printer.cpp +++ b/src/devices/bus/adamnet/printer.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *adam_printer_device::device_rom_region() const +const tiny_rom_entry *adam_printer_device::device_rom_region() const { return ROM_NAME( adam_prn ); } diff --git a/src/devices/bus/adamnet/printer.h b/src/devices/bus/adamnet/printer.h index 13025fe5393..1bb657e3d91 100644 --- a/src/devices/bus/adamnet/printer.h +++ b/src/devices/bus/adamnet/printer.h @@ -31,7 +31,7 @@ public: adam_printer_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // not really public diff --git a/src/devices/bus/adamnet/spi.cpp b/src/devices/bus/adamnet/spi.cpp index 29da38c0b7b..e15e7dd0d9f 100644 --- a/src/devices/bus/adamnet/spi.cpp +++ b/src/devices/bus/adamnet/spi.cpp @@ -42,7 +42,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *adam_spi_device::device_rom_region() const +const tiny_rom_entry *adam_spi_device::device_rom_region() const { return ROM_NAME( adam_spi ); } diff --git a/src/devices/bus/adamnet/spi.h b/src/devices/bus/adamnet/spi.h index 81abae409e3..47a26511a38 100644 --- a/src/devices/bus/adamnet/spi.h +++ b/src/devices/bus/adamnet/spi.h @@ -34,7 +34,7 @@ public: adam_spi_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // not really public diff --git a/src/devices/bus/amiga/zorro/a590.cpp b/src/devices/bus/amiga/zorro/a590.cpp index 1d66ba99f6e..5cd5c0c9f6b 100644 --- a/src/devices/bus/amiga/zorro/a590.cpp +++ b/src/devices/bus/amiga/zorro/a590.cpp @@ -177,7 +177,7 @@ ROM_START( dmac_hdc ) ROM_LOAD("390333-03.u5", 0x000, 0x104, CRC(dc4a8d9b) SHA1(761a1318106e49057f95258699076ec1079967ad)) ROM_END -const rom_entry *dmac_hdc_device::device_rom_region() const +const tiny_rom_entry *dmac_hdc_device::device_rom_region() const { return ROM_NAME( dmac_hdc ); } diff --git a/src/devices/bus/amiga/zorro/a590.h b/src/devices/bus/amiga/zorro/a590.h index 488585fd0cb..252074a2e33 100644 --- a/src/devices/bus/amiga/zorro/a590.h +++ b/src/devices/bus/amiga/zorro/a590.h @@ -34,7 +34,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER( dmac_scsi_r ); DECLARE_WRITE8_MEMBER( dmac_scsi_w ); diff --git a/src/devices/bus/amiga/zorro/action_replay.cpp b/src/devices/bus/amiga/zorro/action_replay.cpp index 03711e56f1c..8fd4f7b0eeb 100644 --- a/src/devices/bus/amiga/zorro/action_replay.cpp +++ b/src/devices/bus/amiga/zorro/action_replay.cpp @@ -52,7 +52,7 @@ ROM_START( ar_mk1 ) ROMX_LOAD("ar1_v150.bin", 0x0000, 0x10000, BAD_DUMP CRC(f82c4258) SHA1(843b433b2c56640e045d5fdc854dc6b1a4964e7c), ROM_BIOS(2)) ROM_END -const rom_entry *action_replay_mk1_device::device_rom_region() const +const tiny_rom_entry *action_replay_mk1_device::device_rom_region() const { return ROM_NAME( ar_mk1 ); } @@ -68,7 +68,7 @@ ROM_START( ar_mk2 ) ROMX_LOAD("ar2_v214.bin", 0x0000, 0x20000, BAD_DUMP CRC(1bb3d0a8) SHA1(14b1f5a69efb6f4e2331970e6ca0f33c0f04ac91), ROM_BIOS(3)) ROM_END -const rom_entry *action_replay_mk2_device::device_rom_region() const +const tiny_rom_entry *action_replay_mk2_device::device_rom_region() const { return ROM_NAME( ar_mk2 ); } @@ -83,7 +83,7 @@ ROM_START( ar_mk3 ) ROMX_LOAD("ar3_v314.bin", 0x0000, 0x40000, BAD_DUMP CRC(009f7768) SHA1(0439d6ccc2a0e5c2e83fcf2389dc4d4a440a4c62), ROM_BIOS(2)) ROM_END -const rom_entry *action_replay_mk3_device::device_rom_region() const +const tiny_rom_entry *action_replay_mk3_device::device_rom_region() const { return ROM_NAME( ar_mk3 ); } diff --git a/src/devices/bus/amiga/zorro/action_replay.h b/src/devices/bus/amiga/zorro/action_replay.h index 7e1eb942796..cf73b5c602b 100644 --- a/src/devices/bus/amiga/zorro/action_replay.h +++ b/src/devices/bus/amiga/zorro/action_replay.h @@ -51,7 +51,7 @@ public: action_replay_mk1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class action_replay_mk2_device : public action_replay_device @@ -61,7 +61,7 @@ public: action_replay_mk2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class action_replay_mk3_device : public action_replay_device @@ -71,7 +71,7 @@ public: action_replay_mk3_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/amiga/zorro/buddha.cpp b/src/devices/bus/amiga/zorro/buddha.cpp index 6f21e86d9be..512802f39fc 100644 --- a/src/devices/bus/amiga/zorro/buddha.cpp +++ b/src/devices/bus/amiga/zorro/buddha.cpp @@ -53,7 +53,7 @@ ROM_START( buddha ) ROMX_LOAD("buddha_103-17.rom", 0x0000, 0x8000, CRC(2b7b24e0) SHA1(ec17a58962c373a2892090ec9b1722d2c326d631), ROM_SKIP(1) | ROM_BIOS(2)) ROM_END -const rom_entry *buddha_device::device_rom_region() const +const tiny_rom_entry *buddha_device::device_rom_region() const { return ROM_NAME( buddha ); } diff --git a/src/devices/bus/amiga/zorro/buddha.h b/src/devices/bus/amiga/zorro/buddha.h index f8e213db69d..be2d569c5de 100644 --- a/src/devices/bus/amiga/zorro/buddha.h +++ b/src/devices/bus/amiga/zorro/buddha.h @@ -56,7 +56,7 @@ public: protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/bus/bml3/bml3kanji.cpp b/src/devices/bus/bml3/bml3kanji.cpp index 0b0d4f519e2..c2af2911e65 100644 --- a/src/devices/bus/bml3/bml3kanji.cpp +++ b/src/devices/bus/bml3/bml3kanji.cpp @@ -51,7 +51,7 @@ machine_config_constructor bml3bus_kanji_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *bml3bus_kanji_device::device_rom_region() const +const tiny_rom_entry *bml3bus_kanji_device::device_rom_region() const { return ROM_NAME( kanji ); } diff --git a/src/devices/bus/bml3/bml3kanji.h b/src/devices/bus/bml3/bml3kanji.h index 8a1c8dd24df..c91ba3cca2e 100644 --- a/src/devices/bus/bml3/bml3kanji.h +++ b/src/devices/bus/bml3/bml3kanji.h @@ -28,7 +28,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(bml3_kanji_r); DECLARE_WRITE8_MEMBER(bml3_kanji_w); diff --git a/src/devices/bus/bml3/bml3mp1802.cpp b/src/devices/bus/bml3/bml3mp1802.cpp index 911d72c725e..d8d22c1467b 100644 --- a/src/devices/bus/bml3/bml3mp1802.cpp +++ b/src/devices/bus/bml3/bml3mp1802.cpp @@ -70,7 +70,7 @@ machine_config_constructor bml3bus_mp1802_device::device_mconfig_additions() con // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *bml3bus_mp1802_device::device_rom_region() const +const tiny_rom_entry *bml3bus_mp1802_device::device_rom_region() const { return ROM_NAME( mp1802 ); } diff --git a/src/devices/bus/bml3/bml3mp1802.h b/src/devices/bus/bml3/bml3mp1802.h index de42c95261a..60191295d36 100644 --- a/src/devices/bus/bml3/bml3mp1802.h +++ b/src/devices/bus/bml3/bml3mp1802.h @@ -32,7 +32,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(bml3_mp1802_r); DECLARE_WRITE8_MEMBER(bml3_mp1802_w); diff --git a/src/devices/bus/bml3/bml3mp1805.cpp b/src/devices/bus/bml3/bml3mp1805.cpp index e1b2317b7c6..23027eeffd0 100644 --- a/src/devices/bus/bml3/bml3mp1805.cpp +++ b/src/devices/bus/bml3/bml3mp1805.cpp @@ -69,7 +69,7 @@ machine_config_constructor bml3bus_mp1805_device::device_mconfig_additions() con // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *bml3bus_mp1805_device::device_rom_region() const +const tiny_rom_entry *bml3bus_mp1805_device::device_rom_region() const { return ROM_NAME( mp1805 ); } diff --git a/src/devices/bus/bml3/bml3mp1805.h b/src/devices/bus/bml3/bml3mp1805.h index 57ffdfefcaa..662eecfff6a 100644 --- a/src/devices/bus/bml3/bml3mp1805.h +++ b/src/devices/bus/bml3/bml3mp1805.h @@ -31,7 +31,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(bml3_mp1805_r); DECLARE_WRITE8_MEMBER(bml3_mp1805_w); diff --git a/src/devices/bus/bw2/ramcard.cpp b/src/devices/bus/bw2/ramcard.cpp index 16f5da689cc..bd8e6e76261 100644 --- a/src/devices/bus/bw2/ramcard.cpp +++ b/src/devices/bus/bw2/ramcard.cpp @@ -31,7 +31,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *bw2_ramcard_device::device_rom_region() const +const tiny_rom_entry *bw2_ramcard_device::device_rom_region() const { return ROM_NAME( bw2_ramcard ); } diff --git a/src/devices/bus/bw2/ramcard.h b/src/devices/bus/bw2/ramcard.h index da66c4d670d..de510eddb96 100644 --- a/src/devices/bus/bw2/ramcard.h +++ b/src/devices/bus/bw2/ramcard.h @@ -30,7 +30,7 @@ public: bw2_ramcard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/c64/currah_speech.cpp b/src/devices/bus/c64/currah_speech.cpp index 8e73f0801f1..1285730416c 100644 --- a/src/devices/bus/c64/currah_speech.cpp +++ b/src/devices/bus/c64/currah_speech.cpp @@ -100,7 +100,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c64_currah_speech_cartridge_device::device_rom_region() const +const tiny_rom_entry *c64_currah_speech_cartridge_device::device_rom_region() const { return ROM_NAME( c64_currah_speech ); } diff --git a/src/devices/bus/c64/currah_speech.h b/src/devices/bus/c64/currah_speech.h index 1ca31571bbd..03f684275d2 100644 --- a/src/devices/bus/c64/currah_speech.h +++ b/src/devices/bus/c64/currah_speech.h @@ -32,7 +32,7 @@ public: c64_currah_speech_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/c64/fcc.cpp b/src/devices/bus/c64/fcc.cpp index 0757ae94e76..93e5fe4ccc4 100644 --- a/src/devices/bus/c64/fcc.cpp +++ b/src/devices/bus/c64/fcc.cpp @@ -53,7 +53,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c64_final_chesscard_device::device_rom_region() const +const tiny_rom_entry *c64_final_chesscard_device::device_rom_region() const { return ROM_NAME( c64_fcc ); } diff --git a/src/devices/bus/c64/fcc.h b/src/devices/bus/c64/fcc.h index a2952e34c0f..29d22dde05c 100644 --- a/src/devices/bus/c64/fcc.h +++ b/src/devices/bus/c64/fcc.h @@ -32,7 +32,7 @@ public: c64_final_chesscard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/c64/multiscreen.cpp b/src/devices/bus/c64/multiscreen.cpp index 1c54b055986..d0848bf5a24 100644 --- a/src/devices/bus/c64/multiscreen.cpp +++ b/src/devices/bus/c64/multiscreen.cpp @@ -95,7 +95,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c64_multiscreen_cartridge_device::device_rom_region() const +const tiny_rom_entry *c64_multiscreen_cartridge_device::device_rom_region() const { return ROM_NAME( c64_multiscreen ); } diff --git a/src/devices/bus/c64/multiscreen.h b/src/devices/bus/c64/multiscreen.h index 1b56cdda70f..f68024d2267 100644 --- a/src/devices/bus/c64/multiscreen.h +++ b/src/devices/bus/c64/multiscreen.h @@ -33,7 +33,7 @@ public: c64_multiscreen_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/c64/supercpu.cpp b/src/devices/bus/c64/supercpu.cpp index cb8a28e2198..f7d36540732 100644 --- a/src/devices/bus/c64/supercpu.cpp +++ b/src/devices/bus/c64/supercpu.cpp @@ -38,7 +38,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c64_supercpu_device::device_rom_region() const +const tiny_rom_entry *c64_supercpu_device::device_rom_region() const { return ROM_NAME( c64_supercpu ); } diff --git a/src/devices/bus/c64/supercpu.h b/src/devices/bus/c64/supercpu.h index df799261faf..ea3618fe6de 100644 --- a/src/devices/bus/c64/supercpu.h +++ b/src/devices/bus/c64/supercpu.h @@ -31,7 +31,7 @@ public: c64_supercpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/c64/xl80.cpp b/src/devices/bus/c64/xl80.cpp index 5f4a1eaa285..561ae033148 100644 --- a/src/devices/bus/c64/xl80.cpp +++ b/src/devices/bus/c64/xl80.cpp @@ -72,7 +72,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c64_xl80_device::device_rom_region() const +const tiny_rom_entry *c64_xl80_device::device_rom_region() const { return ROM_NAME( c64_xl80 ); } diff --git a/src/devices/bus/c64/xl80.h b/src/devices/bus/c64/xl80.h index b167b549265..22caa7a5042 100644 --- a/src/devices/bus/c64/xl80.h +++ b/src/devices/bus/c64/xl80.h @@ -32,7 +32,7 @@ public: c64_xl80_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // not really public diff --git a/src/devices/bus/cbm2/hrg.cpp b/src/devices/bus/cbm2/hrg.cpp index 6bc88abdadb..ecc42220d80 100644 --- a/src/devices/bus/cbm2/hrg.cpp +++ b/src/devices/bus/cbm2/hrg.cpp @@ -54,7 +54,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cbm2_hrg_t::device_rom_region() const +const tiny_rom_entry *cbm2_hrg_t::device_rom_region() const { return ROM_NAME( cbm2_hrg ); } diff --git a/src/devices/bus/cbm2/hrg.h b/src/devices/bus/cbm2/hrg.h index c93b806b3e1..d4c813a6d48 100644 --- a/src/devices/bus/cbm2/hrg.h +++ b/src/devices/bus/cbm2/hrg.h @@ -31,7 +31,7 @@ public: cbm2_hrg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/cbmiec/c1526.cpp b/src/devices/bus/cbmiec/c1526.cpp index 61353ffeb62..c475eb79f08 100644 --- a/src/devices/bus/cbmiec/c1526.cpp +++ b/src/devices/bus/cbmiec/c1526.cpp @@ -48,7 +48,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1526_t::device_rom_region() const +const tiny_rom_entry *c1526_t::device_rom_region() const { return ROM_NAME( c1526 ); } @@ -68,7 +68,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c4023_t::device_rom_region() const +const tiny_rom_entry *c4023_t::device_rom_region() const { return ROM_NAME( c4023 ); } diff --git a/src/devices/bus/cbmiec/c1526.h b/src/devices/bus/cbmiec/c1526.h index deba3be2ce7..d8ab0567905 100644 --- a/src/devices/bus/cbmiec/c1526.h +++ b/src/devices/bus/cbmiec/c1526.h @@ -49,7 +49,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device_cbm_iec_interface overrides @@ -71,7 +71,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device_ieee488_interface overrides diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp index 6e1be701b64..3a763c1f53e 100644 --- a/src/devices/bus/cbmiec/c1541.cpp +++ b/src/devices/bus/cbmiec/c1541.cpp @@ -189,7 +189,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1540_t::device_rom_region() const +const tiny_rom_entry *c1540_t::device_rom_region() const { return ROM_NAME( c1540 ); } @@ -233,7 +233,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1541_t::device_rom_region() const +const tiny_rom_entry *c1541_t::device_rom_region() const { return ROM_NAME( c1541 ); } @@ -257,7 +257,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1541c_t::device_rom_region() const +const tiny_rom_entry *c1541c_t::device_rom_region() const { return ROM_NAME( c1541c ); } @@ -283,7 +283,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1541ii_t::device_rom_region() const +const tiny_rom_entry *c1541ii_t::device_rom_region() const { return ROM_NAME( c1541ii ); } @@ -311,7 +311,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *sx1541_t::device_rom_region() const +const tiny_rom_entry *sx1541_t::device_rom_region() const { return ROM_NAME( sx1541 ); } @@ -331,7 +331,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *fsd1_t::device_rom_region() const +const tiny_rom_entry *fsd1_t::device_rom_region() const { return ROM_NAME( fsd1 ); } @@ -359,7 +359,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *fsd2_t::device_rom_region() const +const tiny_rom_entry *fsd2_t::device_rom_region() const { return ROM_NAME( fsd2 ); } @@ -380,7 +380,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *csd1_t::device_rom_region() const +const tiny_rom_entry *csd1_t::device_rom_region() const { return ROM_NAME( csd1 ); } @@ -400,7 +400,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1541_dolphin_dos_t::device_rom_region() const +const tiny_rom_entry *c1541_dolphin_dos_t::device_rom_region() const { return ROM_NAME( c1541dd ); } @@ -421,7 +421,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1541_professional_dos_v1_t::device_rom_region() const +const tiny_rom_entry *c1541_professional_dos_v1_t::device_rom_region() const { return ROM_NAME( c1541pd ); } @@ -446,7 +446,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1541_prologic_dos_classic_t::device_rom_region() const +const tiny_rom_entry *c1541_prologic_dos_classic_t::device_rom_region() const { return ROM_NAME( c1541pdc ); } @@ -470,7 +470,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *indus_gt_t::device_rom_region() const +const tiny_rom_entry *indus_gt_t::device_rom_region() const { return ROM_NAME( indusgt ); } diff --git a/src/devices/bus/cbmiec/c1541.h b/src/devices/bus/cbmiec/c1541.h index df03b9429af..7192089e65a 100644 --- a/src/devices/bus/cbmiec/c1541.h +++ b/src/devices/bus/cbmiec/c1541.h @@ -108,7 +108,7 @@ public: c1540_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -121,7 +121,7 @@ public: c1541_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -134,7 +134,7 @@ public: c1541c_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // not really public @@ -151,7 +151,7 @@ public: c1541ii_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -164,7 +164,7 @@ public: sx1541_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -177,7 +177,7 @@ public: fsd1_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -190,7 +190,7 @@ public: fsd2_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // device-level overrides virtual void device_start() override; @@ -206,7 +206,7 @@ public: csd1_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -219,7 +219,7 @@ public: c1541_dolphin_dos_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; }; @@ -233,7 +233,7 @@ public: c1541_professional_dos_v1_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; }; @@ -247,7 +247,7 @@ public: c1541_prologic_dos_classic_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // not really public @@ -277,7 +277,7 @@ public: indus_gt_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; diff --git a/src/devices/bus/cbmiec/c1571.cpp b/src/devices/bus/cbmiec/c1571.cpp index 976455387ae..b7d98b8b15d 100644 --- a/src/devices/bus/cbmiec/c1571.cpp +++ b/src/devices/bus/cbmiec/c1571.cpp @@ -63,7 +63,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1570_t::device_rom_region() const +const tiny_rom_entry *c1570_t::device_rom_region() const { return ROM_NAME( c1570 ); } @@ -89,7 +89,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1571_t::device_rom_region() const +const tiny_rom_entry *c1571_t::device_rom_region() const { return ROM_NAME( c1571 ); } @@ -113,7 +113,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1571cr_t::device_rom_region() const +const tiny_rom_entry *c1571cr_t::device_rom_region() const { return ROM_NAME( c1571cr ); } @@ -133,7 +133,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *mini_chief_t::device_rom_region() const +const tiny_rom_entry *mini_chief_t::device_rom_region() const { return ROM_NAME( minichief ); } diff --git a/src/devices/bus/cbmiec/c1571.h b/src/devices/bus/cbmiec/c1571.h index cd0da9a3a3d..74d90080615 100644 --- a/src/devices/bus/cbmiec/c1571.h +++ b/src/devices/bus/cbmiec/c1571.h @@ -48,7 +48,7 @@ public: c1571_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; @@ -134,7 +134,7 @@ public: c1570_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; }; @@ -148,7 +148,7 @@ public: c1571cr_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_WRITE8_MEMBER( via0_pa_w ); @@ -165,7 +165,7 @@ public: mini_chief_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ8_MEMBER( cia_pa_r ); diff --git a/src/devices/bus/cbmiec/c1581.cpp b/src/devices/bus/cbmiec/c1581.cpp index e13317654a2..1bfcad12218 100644 --- a/src/devices/bus/cbmiec/c1581.cpp +++ b/src/devices/bus/cbmiec/c1581.cpp @@ -58,7 +58,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1581_t::device_rom_region() const +const tiny_rom_entry *c1581_t::device_rom_region() const { return ROM_NAME( c1581 ); } @@ -78,7 +78,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1563_t::device_rom_region() const +const tiny_rom_entry *c1563_t::device_rom_region() const { return ROM_NAME( c1563 ); } diff --git a/src/devices/bus/cbmiec/c1581.h b/src/devices/bus/cbmiec/c1581.h index adcbaf63468..0694bc77ab8 100644 --- a/src/devices/bus/cbmiec/c1581.h +++ b/src/devices/bus/cbmiec/c1581.h @@ -43,7 +43,7 @@ public: c1581_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; @@ -99,7 +99,7 @@ public: c1563_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; diff --git a/src/devices/bus/cbmiec/c64_nl10.cpp b/src/devices/bus/cbmiec/c64_nl10.cpp index 970baa2f941..9ee058adf80 100644 --- a/src/devices/bus/cbmiec/c64_nl10.cpp +++ b/src/devices/bus/cbmiec/c64_nl10.cpp @@ -31,7 +31,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c64_nl10_interface_device::device_rom_region() const +const tiny_rom_entry *c64_nl10_interface_device::device_rom_region() const { return ROM_NAME( c64_nl10_interface ); } diff --git a/src/devices/bus/cbmiec/c64_nl10.h b/src/devices/bus/cbmiec/c64_nl10.h index 143758c98e4..99da4a2c141 100644 --- a/src/devices/bus/cbmiec/c64_nl10.h +++ b/src/devices/bus/cbmiec/c64_nl10.h @@ -30,7 +30,7 @@ public: c64_nl10_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/cbmiec/cmdhd.cpp b/src/devices/bus/cbmiec/cmdhd.cpp index d3025700fa7..ef26f7be706 100644 --- a/src/devices/bus/cbmiec/cmdhd.cpp +++ b/src/devices/bus/cbmiec/cmdhd.cpp @@ -49,7 +49,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cmd_hd_device::device_rom_region() const +const tiny_rom_entry *cmd_hd_device::device_rom_region() const { return ROM_NAME( cmd_hd ); } diff --git a/src/devices/bus/cbmiec/cmdhd.h b/src/devices/bus/cbmiec/cmdhd.h index 2a1a244affe..9869531b05d 100644 --- a/src/devices/bus/cbmiec/cmdhd.h +++ b/src/devices/bus/cbmiec/cmdhd.h @@ -43,7 +43,7 @@ public: cmd_hd_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_WRITE8_MEMBER( led_w ); diff --git a/src/devices/bus/cbmiec/fd2000.cpp b/src/devices/bus/cbmiec/fd2000.cpp index d31b9d97507..c9040a6c657 100644 --- a/src/devices/bus/cbmiec/fd2000.cpp +++ b/src/devices/bus/cbmiec/fd2000.cpp @@ -74,7 +74,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *fd2000_device::device_rom_region() const +const tiny_rom_entry *fd2000_device::device_rom_region() const { switch (m_variant) { diff --git a/src/devices/bus/cbmiec/fd2000.h b/src/devices/bus/cbmiec/fd2000.h index 90f6db128ca..4a660cd218d 100644 --- a/src/devices/bus/cbmiec/fd2000.h +++ b/src/devices/bus/cbmiec/fd2000.h @@ -49,7 +49,7 @@ public: }; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ8_MEMBER( via_pa_r ); diff --git a/src/devices/bus/cbmiec/interpod.cpp b/src/devices/bus/cbmiec/interpod.cpp index f15d014a00a..ebf1a6b3776 100644 --- a/src/devices/bus/cbmiec/interpod.cpp +++ b/src/devices/bus/cbmiec/interpod.cpp @@ -98,7 +98,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *interpod_device::device_rom_region() const +const tiny_rom_entry *interpod_device::device_rom_region() const { return ROM_NAME( interpod ); } diff --git a/src/devices/bus/cbmiec/interpod.h b/src/devices/bus/cbmiec/interpod.h index 0de21651381..833bcd94a35 100644 --- a/src/devices/bus/cbmiec/interpod.h +++ b/src/devices/bus/cbmiec/interpod.h @@ -52,7 +52,7 @@ public: interpod_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/cbmiec/serialbox.cpp b/src/devices/bus/cbmiec/serialbox.cpp index c3b653cb030..617a4c3eded 100644 --- a/src/devices/bus/cbmiec/serialbox.cpp +++ b/src/devices/bus/cbmiec/serialbox.cpp @@ -48,7 +48,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *serial_box_device::device_rom_region() const +const tiny_rom_entry *serial_box_device::device_rom_region() const { return ROM_NAME( serial_box ); } diff --git a/src/devices/bus/cbmiec/serialbox.h b/src/devices/bus/cbmiec/serialbox.h index 93c558b9512..090ebdfb091 100644 --- a/src/devices/bus/cbmiec/serialbox.h +++ b/src/devices/bus/cbmiec/serialbox.h @@ -39,7 +39,7 @@ public: serial_box_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/cbmiec/vic1515.cpp b/src/devices/bus/cbmiec/vic1515.cpp index 61f19761d7a..c1ab23f427a 100644 --- a/src/devices/bus/cbmiec/vic1515.cpp +++ b/src/devices/bus/cbmiec/vic1515.cpp @@ -31,7 +31,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *vic1515_t::device_rom_region() const +const tiny_rom_entry *vic1515_t::device_rom_region() const { return ROM_NAME( vic1515 ); } diff --git a/src/devices/bus/cbmiec/vic1515.h b/src/devices/bus/cbmiec/vic1515.h index d726bdb4087..9cf6a53b3d1 100644 --- a/src/devices/bus/cbmiec/vic1515.h +++ b/src/devices/bus/cbmiec/vic1515.h @@ -31,7 +31,7 @@ public: vic1515_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/cbmiec/vic1520.cpp b/src/devices/bus/cbmiec/vic1520.cpp index 55cd372f385..9d62de41bb6 100644 --- a/src/devices/bus/cbmiec/vic1520.cpp +++ b/src/devices/bus/cbmiec/vic1520.cpp @@ -71,7 +71,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *vic1520_t::device_rom_region() const +const tiny_rom_entry *vic1520_t::device_rom_region() const { return ROM_NAME( vic1520 ); } diff --git a/src/devices/bus/cbmiec/vic1520.h b/src/devices/bus/cbmiec/vic1520.h index 61bd5e314ef..9f893766bf8 100644 --- a/src/devices/bus/cbmiec/vic1520.h +++ b/src/devices/bus/cbmiec/vic1520.h @@ -31,7 +31,7 @@ public: vic1520_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/centronics/comxpl80.cpp b/src/devices/bus/centronics/comxpl80.cpp index be2fc18e39d..2db0e42694a 100644 --- a/src/devices/bus/centronics/comxpl80.cpp +++ b/src/devices/bus/centronics/comxpl80.cpp @@ -51,7 +51,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *comx_pl80_device::device_rom_region() const +const tiny_rom_entry *comx_pl80_device::device_rom_region() const { return ROM_NAME( comxpl80 ); } diff --git a/src/devices/bus/centronics/comxpl80.h b/src/devices/bus/centronics/comxpl80.h index 96821d1f5eb..9301fcc5ef3 100644 --- a/src/devices/bus/centronics/comxpl80.h +++ b/src/devices/bus/centronics/comxpl80.h @@ -31,7 +31,7 @@ public: comx_pl80_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/centronics/epson_ex800.cpp b/src/devices/bus/centronics/epson_ex800.cpp index c09cc8f4af7..3e50493f6aa 100644 --- a/src/devices/bus/centronics/epson_ex800.cpp +++ b/src/devices/bus/centronics/epson_ex800.cpp @@ -186,7 +186,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *epson_ex800_t::device_rom_region() const +const tiny_rom_entry *epson_ex800_t::device_rom_region() const { return ROM_NAME( ex800 ); } diff --git a/src/devices/bus/centronics/epson_ex800.h b/src/devices/bus/centronics/epson_ex800.h index 2b28229c0df..e5dabd1cc42 100644 --- a/src/devices/bus/centronics/epson_ex800.h +++ b/src/devices/bus/centronics/epson_ex800.h @@ -32,7 +32,7 @@ public: epson_ex800_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/centronics/epson_lx800.cpp b/src/devices/bus/centronics/epson_lx800.cpp index 3898cd30bd9..3eb784999ba 100644 --- a/src/devices/bus/centronics/epson_lx800.cpp +++ b/src/devices/bus/centronics/epson_lx800.cpp @@ -40,7 +40,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *epson_lx800_t::device_rom_region() const +const tiny_rom_entry *epson_lx800_t::device_rom_region() const { return ROM_NAME( lx800 ); } diff --git a/src/devices/bus/centronics/epson_lx800.h b/src/devices/bus/centronics/epson_lx800.h index 89e88ceb6d9..a8cd3113749 100644 --- a/src/devices/bus/centronics/epson_lx800.h +++ b/src/devices/bus/centronics/epson_lx800.h @@ -34,7 +34,7 @@ public: epson_lx800_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/centronics/epson_lx810l.cpp b/src/devices/bus/centronics/epson_lx810l.cpp index 5b179fe2ad0..1ceeb810caf 100644 --- a/src/devices/bus/centronics/epson_lx810l.cpp +++ b/src/devices/bus/centronics/epson_lx810l.cpp @@ -71,7 +71,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *epson_lx810l_t::device_rom_region() const +const tiny_rom_entry *epson_lx810l_t::device_rom_region() const { return ROM_NAME( lx810l ); } @@ -81,7 +81,7 @@ const rom_entry *epson_lx810l_t::device_rom_region() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *epson_ap2000_t::device_rom_region() const +const tiny_rom_entry *epson_ap2000_t::device_rom_region() const { return ROM_NAME( ap2000 ); } diff --git a/src/devices/bus/centronics/epson_lx810l.h b/src/devices/bus/centronics/epson_lx810l.h index 072f30500bd..6a58929a405 100644 --- a/src/devices/bus/centronics/epson_lx810l.h +++ b/src/devices/bus/centronics/epson_lx810l.h @@ -47,7 +47,7 @@ public: UINT32 clock, const char *shortname, const char *source); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; @@ -147,7 +147,7 @@ public: device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; diff --git a/src/devices/bus/centronics/nec_p72.cpp b/src/devices/bus/centronics/nec_p72.cpp index 0c45018359d..45a0822ebac 100644 --- a/src/devices/bus/centronics/nec_p72.cpp +++ b/src/devices/bus/centronics/nec_p72.cpp @@ -25,7 +25,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nec_p72_t::device_rom_region() const +const tiny_rom_entry *nec_p72_t::device_rom_region() const { return ROM_NAME( p72 ); } diff --git a/src/devices/bus/centronics/nec_p72.h b/src/devices/bus/centronics/nec_p72.h index ef7c67f85f1..3638170d4b5 100644 --- a/src/devices/bus/centronics/nec_p72.h +++ b/src/devices/bus/centronics/nec_p72.h @@ -28,7 +28,7 @@ public: UINT32 clock, const char *shortname, const char *source); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/cgenie/expansion/floppy.cpp b/src/devices/bus/cgenie/expansion/floppy.cpp index fdd61b88855..676d73a0659 100644 --- a/src/devices/bus/cgenie/expansion/floppy.cpp +++ b/src/devices/bus/cgenie/expansion/floppy.cpp @@ -59,7 +59,7 @@ ROM_START( cgenie_fdc ) ROM_LOAD("cgdos.rom", 0x0000, 0x2000, CRC(2a96cf74) SHA1(6dcac110f87897e1ee7521aefbb3d77a14815893)) ROM_END -const rom_entry *cgenie_fdc_device::device_rom_region() const +const tiny_rom_entry *cgenie_fdc_device::device_rom_region() const { return ROM_NAME( cgenie_fdc ); } diff --git a/src/devices/bus/cgenie/expansion/floppy.h b/src/devices/bus/cgenie/expansion/floppy.h index 540b2febebe..8717371fc89 100644 --- a/src/devices/bus/cgenie/expansion/floppy.h +++ b/src/devices/bus/cgenie/expansion/floppy.h @@ -44,7 +44,7 @@ public: protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/bus/coco/coco_fdc.cpp b/src/devices/bus/coco/coco_fdc.cpp index 46ee2bb8d93..ae66083b403 100644 --- a/src/devices/bus/coco/coco_fdc.cpp +++ b/src/devices/bus/coco/coco_fdc.cpp @@ -226,7 +226,7 @@ machine_config_constructor coco_fdc_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *coco_fdc_device::device_rom_region() const +const tiny_rom_entry *coco_fdc_device::device_rom_region() const { return ROM_NAME( coco_fdc ); } @@ -482,7 +482,7 @@ machine_config_constructor dragon_fdc_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *dragon_fdc_device::device_rom_region() const +const tiny_rom_entry *dragon_fdc_device::device_rom_region() const { return ROM_NAME( dragon_fdc ); } @@ -624,7 +624,7 @@ sdtandy_fdc_device::sdtandy_fdc_device(const machine_config &mconfig, const char // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *sdtandy_fdc_device::device_rom_region() const +const tiny_rom_entry *sdtandy_fdc_device::device_rom_region() const { return ROM_NAME( sdtandy_fdc ); } @@ -656,7 +656,7 @@ coco_fdc_v11_device::coco_fdc_v11_device(const machine_config &mconfig, const ch // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *coco_fdc_v11_device::device_rom_region() const +const tiny_rom_entry *coco_fdc_v11_device::device_rom_region() const { return ROM_NAME( coco_fdc_v11 ); } @@ -680,7 +680,7 @@ coco3_hdb1_device::coco3_hdb1_device(const machine_config &mconfig, const char * { } -const rom_entry *coco3_hdb1_device::device_rom_region() const +const tiny_rom_entry *coco3_hdb1_device::device_rom_region() const { return ROM_NAME( coco3_hdb1 ); } @@ -709,7 +709,7 @@ cp400_fdc_device::cp400_fdc_device(const machine_config &mconfig, const char *ta // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cp400_fdc_device::device_rom_region() const +const tiny_rom_entry *cp400_fdc_device::device_rom_region() const { return ROM_NAME( cp400_fdc ); } diff --git a/src/devices/bus/coco/coco_fdc.h b/src/devices/bus/coco/coco_fdc.h index 067fd3fde19..f1f4db0226e 100644 --- a/src/devices/bus/coco/coco_fdc.h +++ b/src/devices/bus/coco/coco_fdc.h @@ -41,7 +41,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual UINT8* get_cart_base() override; @@ -93,7 +93,7 @@ public: coco_fdc_v11_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -110,7 +110,7 @@ public: coco3_hdb1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -127,7 +127,7 @@ public: cp400_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -146,7 +146,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void update_lines() override; virtual void dskreg_w(UINT8 data) override; protected: @@ -170,7 +170,7 @@ public: sdtandy_fdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; diff --git a/src/devices/bus/coco/coco_pak.cpp b/src/devices/bus/coco/coco_pak.cpp index c091606027d..84b03657ec8 100644 --- a/src/devices/bus/coco/coco_pak.cpp +++ b/src/devices/bus/coco/coco_pak.cpp @@ -77,7 +77,7 @@ machine_config_constructor coco_pak_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *coco_pak_device::device_rom_region() const +const tiny_rom_entry *coco_pak_device::device_rom_region() const { return ROM_NAME( coco_pak ); } diff --git a/src/devices/bus/coco/coco_pak.h b/src/devices/bus/coco/coco_pak.h index ed531943242..f75b48721ec 100644 --- a/src/devices/bus/coco/coco_pak.h +++ b/src/devices/bus/coco/coco_pak.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual UINT8* get_cart_base() override; protected: diff --git a/src/devices/bus/comx35/clm.cpp b/src/devices/bus/comx35/clm.cpp index 6929a01d6eb..513a123086a 100644 --- a/src/devices/bus/comx35/clm.cpp +++ b/src/devices/bus/comx35/clm.cpp @@ -87,7 +87,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *comx_clm_device::device_rom_region() const +const tiny_rom_entry *comx_clm_device::device_rom_region() const { return ROM_NAME( comx_clm ); } diff --git a/src/devices/bus/comx35/clm.h b/src/devices/bus/comx35/clm.h index 5b2da54d905..0a71c1afb21 100644 --- a/src/devices/bus/comx35/clm.h +++ b/src/devices/bus/comx35/clm.h @@ -32,7 +32,7 @@ public: comx_clm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // not really public diff --git a/src/devices/bus/comx35/eprom.cpp b/src/devices/bus/comx35/eprom.cpp index 56be84b4902..505b81ebb29 100644 --- a/src/devices/bus/comx35/eprom.cpp +++ b/src/devices/bus/comx35/eprom.cpp @@ -42,7 +42,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *comx_epr_device::device_rom_region() const +const tiny_rom_entry *comx_epr_device::device_rom_region() const { return ROM_NAME( comx_epr ); } diff --git a/src/devices/bus/comx35/eprom.h b/src/devices/bus/comx35/eprom.h index 3d30b7e312a..db6823f7ac3 100644 --- a/src/devices/bus/comx35/eprom.h +++ b/src/devices/bus/comx35/eprom.h @@ -30,7 +30,7 @@ public: comx_epr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/comx35/expbox.cpp b/src/devices/bus/comx35/expbox.cpp index ce0dec61006..dac3ffc95c3 100644 --- a/src/devices/bus/comx35/expbox.cpp +++ b/src/devices/bus/comx35/expbox.cpp @@ -87,7 +87,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *comx_eb_device::device_rom_region() const +const tiny_rom_entry *comx_eb_device::device_rom_region() const { return ROM_NAME( comx_eb ); } diff --git a/src/devices/bus/comx35/expbox.h b/src/devices/bus/comx35/expbox.h index 0b479c79326..72bc7fc5a59 100644 --- a/src/devices/bus/comx35/expbox.h +++ b/src/devices/bus/comx35/expbox.h @@ -47,7 +47,7 @@ protected: virtual void device_reset() override; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // device_comx_expansion_card_interface overrides diff --git a/src/devices/bus/comx35/fdc.cpp b/src/devices/bus/comx35/fdc.cpp index e2c5066873a..30693eb3738 100644 --- a/src/devices/bus/comx35/fdc.cpp +++ b/src/devices/bus/comx35/fdc.cpp @@ -74,7 +74,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *comx_fd_device::device_rom_region() const +const tiny_rom_entry *comx_fd_device::device_rom_region() const { return ROM_NAME( comx_fd ); } diff --git a/src/devices/bus/comx35/fdc.h b/src/devices/bus/comx35/fdc.h index cdcb23a363e..0d8cddd7e60 100644 --- a/src/devices/bus/comx35/fdc.h +++ b/src/devices/bus/comx35/fdc.h @@ -32,7 +32,7 @@ public: comx_fd_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); diff --git a/src/devices/bus/comx35/printer.cpp b/src/devices/bus/comx35/printer.cpp index 2f36fffd9bd..5d0cb050f70 100644 --- a/src/devices/bus/comx35/printer.cpp +++ b/src/devices/bus/comx35/printer.cpp @@ -44,7 +44,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *comx_prn_device::device_rom_region() const +const tiny_rom_entry *comx_prn_device::device_rom_region() const { return ROM_NAME( comx_prn ); } diff --git a/src/devices/bus/comx35/printer.h b/src/devices/bus/comx35/printer.h index 8f0a2d2fcaf..f5b4d86b5a0 100644 --- a/src/devices/bus/comx35/printer.h +++ b/src/devices/bus/comx35/printer.h @@ -32,7 +32,7 @@ public: comx_prn_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/comx35/thermal.cpp b/src/devices/bus/comx35/thermal.cpp index e74b62978d6..87945343580 100644 --- a/src/devices/bus/comx35/thermal.cpp +++ b/src/devices/bus/comx35/thermal.cpp @@ -37,7 +37,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *comx_thm_device::device_rom_region() const +const tiny_rom_entry *comx_thm_device::device_rom_region() const { return ROM_NAME( comx_thm ); } diff --git a/src/devices/bus/comx35/thermal.h b/src/devices/bus/comx35/thermal.h index 7d16f2a3d06..e2cadb511a8 100644 --- a/src/devices/bus/comx35/thermal.h +++ b/src/devices/bus/comx35/thermal.h @@ -30,7 +30,7 @@ public: comx_thm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/cpc/brunword4.cpp b/src/devices/bus/cpc/brunword4.cpp index 278ef4ed183..a6ee0d9540c 100644 --- a/src/devices/bus/cpc/brunword4.cpp +++ b/src/devices/bus/cpc/brunword4.cpp @@ -57,7 +57,7 @@ ROM_START( cpc_brunword4 ) ROM_LOAD( "brunw-fb.rom", 0x7c000, 0x4000, CRC(88383953) SHA1(50c6417b26134b68a80912bdb91c8578eb00c8a2) ) ROM_END -const rom_entry *cpc_brunword4_device::device_rom_region() const +const tiny_rom_entry *cpc_brunword4_device::device_rom_region() const { return ROM_NAME( cpc_brunword4 ); } diff --git a/src/devices/bus/cpc/brunword4.h b/src/devices/bus/cpc/brunword4.h index 4a65bf3402d..009de694767 100644 --- a/src/devices/bus/cpc/brunword4.h +++ b/src/devices/bus/cpc/brunword4.h @@ -17,7 +17,7 @@ public: cpc_brunword4_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE8_MEMBER(rombank_w); virtual void set_mapping(UINT8 type) override; diff --git a/src/devices/bus/cpc/cpc_rs232.cpp b/src/devices/bus/cpc/cpc_rs232.cpp index 42e4b83221f..225c83c79d1 100644 --- a/src/devices/bus/cpc/cpc_rs232.cpp +++ b/src/devices/bus/cpc/cpc_rs232.cpp @@ -65,12 +65,12 @@ machine_config_constructor cpc_rs232_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( cpc_rs232 ); } -const rom_entry *cpc_rs232_device::device_rom_region() const +const tiny_rom_entry *cpc_rs232_device::device_rom_region() const { return ROM_NAME( cpc_rs232 ); } -const rom_entry *cpc_ams_rs232_device::device_rom_region() const +const tiny_rom_entry *cpc_ams_rs232_device::device_rom_region() const { return ROM_NAME( cpc_rs232_ams ); } diff --git a/src/devices/bus/cpc/cpc_rs232.h b/src/devices/bus/cpc/cpc_rs232.h index 0124a685ea8..e21d6357d88 100644 --- a/src/devices/bus/cpc/cpc_rs232.h +++ b/src/devices/bus/cpc/cpc_rs232.h @@ -42,7 +42,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; private: cpc_expansion_slot_device *m_slot; @@ -55,7 +55,7 @@ public: cpc_ams_rs232_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/cpc/cpc_ssa1.cpp b/src/devices/bus/cpc/cpc_ssa1.cpp index a4a0836dfc4..f2f0f61cb56 100644 --- a/src/devices/bus/cpc/cpc_ssa1.cpp +++ b/src/devices/bus/cpc/cpc_ssa1.cpp @@ -101,12 +101,12 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cpc_ssa1_device::device_rom_region() const +const tiny_rom_entry *cpc_ssa1_device::device_rom_region() const { return ROM_NAME( cpc_ssa1 ); } -const rom_entry *cpc_dkspeech_device::device_rom_region() const +const tiny_rom_entry *cpc_dkspeech_device::device_rom_region() const { return ROM_NAME( cpc_dkspeech ); } diff --git a/src/devices/bus/cpc/cpc_ssa1.h b/src/devices/bus/cpc/cpc_ssa1.h index e47112511f5..813d304a9e4 100644 --- a/src/devices/bus/cpc/cpc_ssa1.h +++ b/src/devices/bus/cpc/cpc_ssa1.h @@ -56,7 +56,7 @@ public: cpc_ssa1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; void set_lrq(UINT8 state) { m_lrq = state; } @@ -92,7 +92,7 @@ public: cpc_dkspeech_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; void set_lrq(UINT8 state) { m_lrq = state; } diff --git a/src/devices/bus/cpc/ddi1.cpp b/src/devices/bus/cpc/ddi1.cpp index de747473f7b..f0bf519a2e5 100644 --- a/src/devices/bus/cpc/ddi1.cpp +++ b/src/devices/bus/cpc/ddi1.cpp @@ -32,7 +32,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cpc_ddi1_device::device_rom_region() const +const tiny_rom_entry *cpc_ddi1_device::device_rom_region() const { return ROM_NAME( cpc_ddi1 ); } diff --git a/src/devices/bus/cpc/ddi1.h b/src/devices/bus/cpc/ddi1.h index 600098a3e53..776bb833b7f 100644 --- a/src/devices/bus/cpc/ddi1.h +++ b/src/devices/bus/cpc/ddi1.h @@ -23,7 +23,7 @@ public: cpc_ddi1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void set_mapping(UINT8 type) override; virtual WRITE_LINE_MEMBER( romen_w ) override { m_romen = state; } diff --git a/src/devices/bus/cpc/hd20.cpp b/src/devices/bus/cpc/hd20.cpp index d10bf0cd828..58ce8a8658b 100644 --- a/src/devices/bus/cpc/hd20.cpp +++ b/src/devices/bus/cpc/hd20.cpp @@ -39,7 +39,7 @@ ROM_START( cpc_hd20 ) ROMX_LOAD( "x-ddos20.rom", 0x0000, 0x4000, CRC(c2d9cc03) SHA1(8a20788be5f957e84e849c226aa97b55b2a3aab9), ROM_BIOS(2) ) ROM_END -const rom_entry *cpc_hd20_device::device_rom_region() const +const tiny_rom_entry *cpc_hd20_device::device_rom_region() const { return ROM_NAME( cpc_hd20 ); } diff --git a/src/devices/bus/cpc/hd20.h b/src/devices/bus/cpc/hd20.h index 3d4f48837fd..69a3afdb5ff 100644 --- a/src/devices/bus/cpc/hd20.h +++ b/src/devices/bus/cpc/hd20.h @@ -27,7 +27,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(hdc_r); DECLARE_WRITE8_MEMBER(hdc_w); diff --git a/src/devices/bus/cpc/mface2.cpp b/src/devices/bus/cpc/mface2.cpp index bb4354041bc..6d9f9e6324f 100644 --- a/src/devices/bus/cpc/mface2.cpp +++ b/src/devices/bus/cpc/mface2.cpp @@ -294,7 +294,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cpc_multiface2_device::device_rom_region() const +const tiny_rom_entry *cpc_multiface2_device::device_rom_region() const { return ROM_NAME( cpc_mface2 ); } diff --git a/src/devices/bus/cpc/mface2.h b/src/devices/bus/cpc/mface2.h index c64872af18b..8ed2724034d 100644 --- a/src/devices/bus/cpc/mface2.h +++ b/src/devices/bus/cpc/mface2.h @@ -39,7 +39,7 @@ public: cpc_multiface2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual machine_config_constructor device_mconfig_additions() const override; diff --git a/src/devices/bus/cpc/smartwatch.cpp b/src/devices/bus/cpc/smartwatch.cpp index 4b5c1850fe2..dfd0ad2a3cf 100644 --- a/src/devices/bus/cpc/smartwatch.cpp +++ b/src/devices/bus/cpc/smartwatch.cpp @@ -36,7 +36,7 @@ ROM_START( cpc_smartwatch ) ROM_LOAD( "timerom+.rom", 0x0000, 0x4000, CRC(ed42a147) SHA1(61750d0535a1fbf2a4addad9def332cbcf8917c3) ) ROM_END -const rom_entry *cpc_smartwatch_device::device_rom_region() const +const tiny_rom_entry *cpc_smartwatch_device::device_rom_region() const { return ROM_NAME( cpc_smartwatch ); } diff --git a/src/devices/bus/cpc/smartwatch.h b/src/devices/bus/cpc/smartwatch.h index b4741bed193..3842819cb94 100644 --- a/src/devices/bus/cpc/smartwatch.h +++ b/src/devices/bus/cpc/smartwatch.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(rtc_w); DECLARE_READ8_MEMBER(rtc_r); diff --git a/src/devices/bus/cpc/transtape.cpp b/src/devices/bus/cpc/transtape.cpp index b1892f3a31e..2735536f95f 100644 --- a/src/devices/bus/cpc/transtape.cpp +++ b/src/devices/bus/cpc/transtape.cpp @@ -22,7 +22,7 @@ ROM_START( cpc_transtape ) ROM_LOAD( "tta.rom", 0x0000, 0x4000, CRC(c568da76) SHA1(cc509d21216bf11d40f9a3e0791ef7f4ada03790) ) ROM_END -const rom_entry *cpc_transtape_device::device_rom_region() const +const tiny_rom_entry *cpc_transtape_device::device_rom_region() const { return ROM_NAME( cpc_transtape ); } diff --git a/src/devices/bus/cpc/transtape.h b/src/devices/bus/cpc/transtape.h index bb1a70e6ecc..75fb06b03ca 100644 --- a/src/devices/bus/cpc/transtape.h +++ b/src/devices/bus/cpc/transtape.h @@ -21,7 +21,7 @@ public: cpc_transtape_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual void set_mapping(UINT8 type) override; diff --git a/src/devices/bus/dmv/k220.cpp b/src/devices/bus/dmv/k220.cpp index b753e7aa20c..b48a118f01c 100644 --- a/src/devices/bus/dmv/k220.cpp +++ b/src/devices/bus/dmv/k220.cpp @@ -186,7 +186,7 @@ ioport_constructor dmv_k220_device::device_input_ports() const // device_rom_region //------------------------------------------------- -const rom_entry *dmv_k220_device::device_rom_region() const +const tiny_rom_entry *dmv_k220_device::device_rom_region() const { return ROM_NAME( dmv_k220 ); } diff --git a/src/devices/bus/dmv/k220.h b/src/devices/bus/dmv/k220.h index 0f405946ec6..78efdf085d7 100644 --- a/src/devices/bus/dmv/k220.h +++ b/src/devices/bus/dmv/k220.h @@ -25,7 +25,7 @@ public: dmv_k220_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/dmv/k230.cpp b/src/devices/bus/dmv/k230.cpp index 7ac9b984216..8e859827304 100644 --- a/src/devices/bus/dmv/k230.cpp +++ b/src/devices/bus/dmv/k230.cpp @@ -208,22 +208,22 @@ machine_config_constructor dmv_k235_device::device_mconfig_additions() const // device_rom_region //------------------------------------------------- -const rom_entry *dmv_k230_device::device_rom_region() const +const tiny_rom_entry *dmv_k230_device::device_rom_region() const { return ROM_NAME( dmv_k230 ); } -const rom_entry *dmv_k231_device::device_rom_region() const +const tiny_rom_entry *dmv_k231_device::device_rom_region() const { return ROM_NAME( dmv_k231 ); } -const rom_entry *dmv_k234_device::device_rom_region() const +const tiny_rom_entry *dmv_k234_device::device_rom_region() const { return nullptr; } -const rom_entry *dmv_k235_device::device_rom_region() const +const tiny_rom_entry *dmv_k235_device::device_rom_region() const { return ROM_NAME( dmv_k235 ); } diff --git a/src/devices/bus/dmv/k230.h b/src/devices/bus/dmv/k230.h index d05d6ef8317..d6565f461ab 100644 --- a/src/devices/bus/dmv/k230.h +++ b/src/devices/bus/dmv/k230.h @@ -33,7 +33,7 @@ public: dmv_k230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ8_MEMBER(io_r); @@ -72,7 +72,7 @@ public: dmv_k231_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -90,7 +90,7 @@ public: protected: // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // device-level overrides @@ -117,7 +117,7 @@ public: protected: // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/dmv/k806.cpp b/src/devices/bus/dmv/k806.cpp index 9e79c9d90d6..8cd13beb467 100644 --- a/src/devices/bus/dmv/k806.cpp +++ b/src/devices/bus/dmv/k806.cpp @@ -131,7 +131,7 @@ ioport_constructor dmv_k806_device::device_input_ports() const // device_rom_region //------------------------------------------------- -const rom_entry *dmv_k806_device::device_rom_region() const +const tiny_rom_entry *dmv_k806_device::device_rom_region() const { return ROM_NAME( dmv_k806 ); } diff --git a/src/devices/bus/dmv/k806.h b/src/devices/bus/dmv/k806.h index 1c25f9b6102..6ad48448e15 100644 --- a/src/devices/bus/dmv/k806.h +++ b/src/devices/bus/dmv/k806.h @@ -25,7 +25,7 @@ public: dmv_k806_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual machine_config_constructor device_mconfig_additions() const override; diff --git a/src/devices/bus/ecbbus/grip.cpp b/src/devices/bus/ecbbus/grip.cpp index 3a47b5692fc..225214043cd 100644 --- a/src/devices/bus/ecbbus/grip.cpp +++ b/src/devices/bus/ecbbus/grip.cpp @@ -105,7 +105,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *grip_device::device_rom_region() const +const tiny_rom_entry *grip_device::device_rom_region() const { return ROM_NAME( grip21 ); } diff --git a/src/devices/bus/ecbbus/grip.h b/src/devices/bus/ecbbus/grip.h index 7f7abe6d0a1..da4e83ed46a 100644 --- a/src/devices/bus/ecbbus/grip.h +++ b/src/devices/bus/ecbbus/grip.h @@ -38,7 +38,7 @@ public: grip_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/econet/e01.cpp b/src/devices/bus/econet/e01.cpp index ab6e95fd6a7..3d7eb0e5a9b 100644 --- a/src/devices/bus/econet/e01.cpp +++ b/src/devices/bus/econet/e01.cpp @@ -112,7 +112,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *e01_device::device_rom_region() const +const tiny_rom_entry *e01_device::device_rom_region() const { switch (m_variant) { diff --git a/src/devices/bus/econet/e01.h b/src/devices/bus/econet/e01.h index 02a432c936d..6e123a7a84c 100644 --- a/src/devices/bus/econet/e01.h +++ b/src/devices/bus/econet/e01.h @@ -73,7 +73,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/electron/m2105.cpp b/src/devices/bus/electron/m2105.cpp index 6b6a701f7b5..4c7669faa3c 100644 --- a/src/devices/bus/electron/m2105.cpp +++ b/src/devices/bus/electron/m2105.cpp @@ -113,7 +113,7 @@ machine_config_constructor electron_m2105_device::device_mconfig_additions() con return MACHINE_CONFIG_NAME( m2105 ); } -const rom_entry *electron_m2105_device::device_rom_region() const +const tiny_rom_entry *electron_m2105_device::device_rom_region() const { return ROM_NAME( m2105 ); } diff --git a/src/devices/bus/electron/m2105.h b/src/devices/bus/electron/m2105.h index fb462d08ab7..f2efa191941 100644 --- a/src/devices/bus/electron/m2105.h +++ b/src/devices/bus/electron/m2105.h @@ -33,7 +33,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: virtual void device_start() override; diff --git a/src/devices/bus/ep64/exdos.cpp b/src/devices/bus/ep64/exdos.cpp index 093499c401d..67c6df6646c 100644 --- a/src/devices/bus/ep64/exdos.cpp +++ b/src/devices/bus/ep64/exdos.cpp @@ -78,7 +78,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *ep64_exdos_device::device_rom_region() const +const tiny_rom_entry *ep64_exdos_device::device_rom_region() const { return ROM_NAME( ep64_exdos ); } diff --git a/src/devices/bus/ep64/exdos.h b/src/devices/bus/ep64/exdos.h index dac02daa1b4..6259440b751 100644 --- a/src/devices/bus/ep64/exdos.h +++ b/src/devices/bus/ep64/exdos.h @@ -32,7 +32,7 @@ public: ep64_exdos_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/bus/epson_sio/pf10.cpp b/src/devices/bus/epson_sio/pf10.cpp index 7096aee3fce..4f93c542340 100644 --- a/src/devices/bus/epson_sio/pf10.cpp +++ b/src/devices/bus/epson_sio/pf10.cpp @@ -48,7 +48,7 @@ ROM_START( pf10 ) ROM_LOAD("k3pf1.bin", 0x0000, 0x2000, CRC(eef4593a) SHA1(bb176e4baf938fe58c2d32f7c46d7bb7b0627755)) ROM_END -const rom_entry *epson_pf10_device::device_rom_region() const +const tiny_rom_entry *epson_pf10_device::device_rom_region() const { return ROM_NAME( pf10 ); } diff --git a/src/devices/bus/epson_sio/pf10.h b/src/devices/bus/epson_sio/pf10.h index 4a648bbd997..3d1d3d60131 100644 --- a/src/devices/bus/epson_sio/pf10.h +++ b/src/devices/bus/epson_sio/pf10.h @@ -31,7 +31,7 @@ public: epson_pf10_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // floppy disk controller diff --git a/src/devices/bus/epson_sio/tf20.cpp b/src/devices/bus/epson_sio/tf20.cpp index 3acb7ba28a8..83c65755501 100644 --- a/src/devices/bus/epson_sio/tf20.cpp +++ b/src/devices/bus/epson_sio/tf20.cpp @@ -52,7 +52,7 @@ ROM_START( tf20 ) ROM_LOAD("tfx.15e", 0x0000, 0x0800, CRC(af34f084) SHA1(c9bdf393f757ba5d8f838108ceb2b079be1d616e)) ROM_END -const rom_entry *epson_tf20_device::device_rom_region() const +const tiny_rom_entry *epson_tf20_device::device_rom_region() const { return ROM_NAME( tf20 ); } diff --git a/src/devices/bus/epson_sio/tf20.h b/src/devices/bus/epson_sio/tf20.h index 3e76b3dab27..252e99ed4c8 100644 --- a/src/devices/bus/epson_sio/tf20.h +++ b/src/devices/bus/epson_sio/tf20.h @@ -33,7 +33,7 @@ public: epson_tf20_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ieee488/c2031.cpp b/src/devices/bus/ieee488/c2031.cpp index 0e455c35b67..3fbd46e520f 100644 --- a/src/devices/bus/ieee488/c2031.cpp +++ b/src/devices/bus/ieee488/c2031.cpp @@ -50,7 +50,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c2031_device::device_rom_region() const +const tiny_rom_entry *c2031_device::device_rom_region() const { return ROM_NAME( c2031 ); } diff --git a/src/devices/bus/ieee488/c2031.h b/src/devices/bus/ieee488/c2031.h index ccc2c31621a..3a23feee2b7 100644 --- a/src/devices/bus/ieee488/c2031.h +++ b/src/devices/bus/ieee488/c2031.h @@ -33,7 +33,7 @@ public: c2031_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ieee488/c2040.cpp b/src/devices/bus/ieee488/c2040.cpp index 55dd8f9a072..2c6e82b1ce3 100644 --- a/src/devices/bus/ieee488/c2040.cpp +++ b/src/devices/bus/ieee488/c2040.cpp @@ -96,7 +96,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c2040_t::device_rom_region() const +const tiny_rom_entry *c2040_t::device_rom_region() const { return ROM_NAME( c2040 ); } @@ -123,7 +123,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c3040_t::device_rom_region() const +const tiny_rom_entry *c3040_t::device_rom_region() const { return ROM_NAME( c3040 ); } @@ -158,7 +158,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c4040_t::device_rom_region() const +const tiny_rom_entry *c4040_t::device_rom_region() const { return ROM_NAME( c4040 ); } diff --git a/src/devices/bus/ieee488/c2040.h b/src/devices/bus/ieee488/c2040.h index 74539e6524d..bac0a52ec07 100644 --- a/src/devices/bus/ieee488/c2040.h +++ b/src/devices/bus/ieee488/c2040.h @@ -36,7 +36,7 @@ public: c2040_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; @@ -98,7 +98,7 @@ public: c3040_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); @@ -114,7 +114,7 @@ public: c4040_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); diff --git a/src/devices/bus/ieee488/c2040fdc.cpp b/src/devices/bus/ieee488/c2040fdc.cpp index b39ab1d23a3..5cc70c7f571 100644 --- a/src/devices/bus/ieee488/c2040fdc.cpp +++ b/src/devices/bus/ieee488/c2040fdc.cpp @@ -54,7 +54,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c2040_fdc_t::device_rom_region() const +const tiny_rom_entry *c2040_fdc_t::device_rom_region() const { return ROM_NAME( c2040_fdc ); } diff --git a/src/devices/bus/ieee488/c2040fdc.h b/src/devices/bus/ieee488/c2040fdc.h index a056a8f0b60..3ff0856181b 100644 --- a/src/devices/bus/ieee488/c2040fdc.h +++ b/src/devices/bus/ieee488/c2040fdc.h @@ -78,7 +78,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; void stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int stp); diff --git a/src/devices/bus/ieee488/c8050.cpp b/src/devices/bus/ieee488/c8050.cpp index ead9fad37a5..bdc1b848e3f 100644 --- a/src/devices/bus/ieee488/c8050.cpp +++ b/src/devices/bus/ieee488/c8050.cpp @@ -109,7 +109,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c8050_t::device_rom_region() const +const tiny_rom_entry *c8050_t::device_rom_region() const { return ROM_NAME( c8050 ); } @@ -143,7 +143,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c8250lp_t::device_rom_region() const +const tiny_rom_entry *c8250lp_t::device_rom_region() const { return ROM_NAME( c8250lp ); } @@ -173,7 +173,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *sfd1001_t::device_rom_region() const +const tiny_rom_entry *sfd1001_t::device_rom_region() const { return ROM_NAME( sfd1001 ); } diff --git a/src/devices/bus/ieee488/c8050.h b/src/devices/bus/ieee488/c8050.h index 71bd9ae42cf..e983ad06353 100644 --- a/src/devices/bus/ieee488/c8050.h +++ b/src/devices/bus/ieee488/c8050.h @@ -36,7 +36,7 @@ public: c8050_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; @@ -104,7 +104,7 @@ public: c8250lp_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); @@ -120,7 +120,7 @@ public: sfd1001_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); diff --git a/src/devices/bus/ieee488/c8050fdc.cpp b/src/devices/bus/ieee488/c8050fdc.cpp index 5e2e91676c0..ce16035f6e1 100644 --- a/src/devices/bus/ieee488/c8050fdc.cpp +++ b/src/devices/bus/ieee488/c8050fdc.cpp @@ -56,7 +56,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c8050_fdc_t::device_rom_region() const +const tiny_rom_entry *c8050_fdc_t::device_rom_region() const { return ROM_NAME( c8050_fdc ); } diff --git a/src/devices/bus/ieee488/c8050fdc.h b/src/devices/bus/ieee488/c8050fdc.h index 4f82962f524..83cb6dde238 100644 --- a/src/devices/bus/ieee488/c8050fdc.h +++ b/src/devices/bus/ieee488/c8050fdc.h @@ -82,7 +82,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; void stp_w(floppy_image_device *floppy, int mtr, int &old_stp, int stp); diff --git a/src/devices/bus/ieee488/c8280.cpp b/src/devices/bus/ieee488/c8280.cpp index 05c39c7ffdd..da51423e394 100644 --- a/src/devices/bus/ieee488/c8280.cpp +++ b/src/devices/bus/ieee488/c8280.cpp @@ -62,7 +62,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c8280_t::device_rom_region() const +const tiny_rom_entry *c8280_t::device_rom_region() const { return ROM_NAME( c8280 ); } diff --git a/src/devices/bus/ieee488/c8280.h b/src/devices/bus/ieee488/c8280.h index a7f17aaf55c..a6c36b88489 100644 --- a/src/devices/bus/ieee488/c8280.h +++ b/src/devices/bus/ieee488/c8280.h @@ -34,7 +34,7 @@ public: c8280_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ieee488/d9060.cpp b/src/devices/bus/ieee488/d9060.cpp index 97847aa9028..dbd7aba6fd7 100644 --- a/src/devices/bus/ieee488/d9060.cpp +++ b/src/devices/bus/ieee488/d9060.cpp @@ -98,7 +98,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *d9060_base_t::device_rom_region() const +const tiny_rom_entry *d9060_base_t::device_rom_region() const { return ROM_NAME( d9060 ); } diff --git a/src/devices/bus/ieee488/d9060.h b/src/devices/bus/ieee488/d9060.h index 104daec4a11..4dd5c6cb5b4 100644 --- a/src/devices/bus/ieee488/d9060.h +++ b/src/devices/bus/ieee488/d9060.h @@ -41,7 +41,7 @@ public: d9060_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ieee488/hardbox.cpp b/src/devices/bus/ieee488/hardbox.cpp index c03f147250d..355f5dba2b8 100644 --- a/src/devices/bus/ieee488/hardbox.cpp +++ b/src/devices/bus/ieee488/hardbox.cpp @@ -94,7 +94,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *hardbox_device::device_rom_region() const +const tiny_rom_entry *hardbox_device::device_rom_region() const { return ROM_NAME( hardbox ); } diff --git a/src/devices/bus/ieee488/hardbox.h b/src/devices/bus/ieee488/hardbox.h index cbaa26d335c..2d5c382f4b6 100644 --- a/src/devices/bus/ieee488/hardbox.h +++ b/src/devices/bus/ieee488/hardbox.h @@ -34,7 +34,7 @@ public: hardbox_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ieee488/shark.cpp b/src/devices/bus/ieee488/shark.cpp index bdb11f6d261..83a270f8894 100644 --- a/src/devices/bus/ieee488/shark.cpp +++ b/src/devices/bus/ieee488/shark.cpp @@ -50,7 +50,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *mshark_device::device_rom_region() const +const tiny_rom_entry *mshark_device::device_rom_region() const { return ROM_NAME( mshark ); } diff --git a/src/devices/bus/ieee488/shark.h b/src/devices/bus/ieee488/shark.h index 50a9c967244..2be61a610c8 100644 --- a/src/devices/bus/ieee488/shark.h +++ b/src/devices/bus/ieee488/shark.h @@ -31,7 +31,7 @@ public: mshark_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ieee488/softbox.cpp b/src/devices/bus/ieee488/softbox.cpp index d4e4617a332..7d6dbce4651 100644 --- a/src/devices/bus/ieee488/softbox.cpp +++ b/src/devices/bus/ieee488/softbox.cpp @@ -61,7 +61,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *softbox_device::device_rom_region() const +const tiny_rom_entry *softbox_device::device_rom_region() const { return ROM_NAME( softbox ); } diff --git a/src/devices/bus/ieee488/softbox.h b/src/devices/bus/ieee488/softbox.h index d8de28d031c..0b812e0a0c1 100644 --- a/src/devices/bus/ieee488/softbox.h +++ b/src/devices/bus/ieee488/softbox.h @@ -36,7 +36,7 @@ public: softbox_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/imi7000/imi5000h.cpp b/src/devices/bus/imi7000/imi5000h.cpp index ab4af469ee9..6268e7875c6 100644 --- a/src/devices/bus/imi7000/imi5000h.cpp +++ b/src/devices/bus/imi7000/imi5000h.cpp @@ -51,7 +51,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *imi5000h_device::device_rom_region() const +const tiny_rom_entry *imi5000h_device::device_rom_region() const { return ROM_NAME( imi5000h ); } diff --git a/src/devices/bus/imi7000/imi5000h.h b/src/devices/bus/imi7000/imi5000h.h index cb37319f6c1..201142fb413 100644 --- a/src/devices/bus/imi7000/imi5000h.h +++ b/src/devices/bus/imi7000/imi5000h.h @@ -36,7 +36,7 @@ public: imi5000h_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/intv/ecs.cpp b/src/devices/bus/intv/ecs.cpp index 69582c2280e..5585aa93650 100644 --- a/src/devices/bus/intv/ecs.cpp +++ b/src/devices/bus/intv/ecs.cpp @@ -120,7 +120,7 @@ ROM_START( ecs ) ROM_LOAD16_WORD_SWAP( "ecs_rom.e0", 0x1c000, 0x2000, CRC(c2ebcd90) SHA1(b3c14955f56c57e6f0d8fbb695771946cfcf6582)) ROM_END -const rom_entry *intv_ecs_device::device_rom_region() const +const tiny_rom_entry *intv_ecs_device::device_rom_region() const { return ROM_NAME( ecs ); } diff --git a/src/devices/bus/intv/ecs.h b/src/devices/bus/intv/ecs.h index ce22d4f7481..97d0c1e380c 100644 --- a/src/devices/bus/intv/ecs.h +++ b/src/devices/bus/intv/ecs.h @@ -21,7 +21,7 @@ public: virtual void device_start() override; virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // reading and writing diff --git a/src/devices/bus/intv/voice.cpp b/src/devices/bus/intv/voice.cpp index ea2c7db82f4..08d0f7c8b10 100644 --- a/src/devices/bus/intv/voice.cpp +++ b/src/devices/bus/intv/voice.cpp @@ -96,7 +96,7 @@ ROM_START( intellivoice ) ROM_LOAD( "sp0256-012.bin", 0x1000, 0x0800, CRC(0de7579d) SHA1(618563e512ff5665183664f52270fa9606c9d289) ) ROM_END -const rom_entry *intv_voice_device::device_rom_region() const +const tiny_rom_entry *intv_voice_device::device_rom_region() const { return ROM_NAME( intellivoice ); } diff --git a/src/devices/bus/intv/voice.h b/src/devices/bus/intv/voice.h index 0301c6d67b0..379a286ad12 100644 --- a/src/devices/bus/intv/voice.h +++ b/src/devices/bus/intv/voice.h @@ -19,7 +19,7 @@ public: // device-level overrides virtual void device_start() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // reading and writing // actual IntelliVoice access diff --git a/src/devices/bus/iq151/disc2.cpp b/src/devices/bus/iq151/disc2.cpp index ba2cbf36137..73690188954 100644 --- a/src/devices/bus/iq151/disc2.cpp +++ b/src/devices/bus/iq151/disc2.cpp @@ -87,7 +87,7 @@ machine_config_constructor iq151_disc2_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *iq151_disc2_device::device_rom_region() const +const tiny_rom_entry *iq151_disc2_device::device_rom_region() const { return ROM_NAME( iq151_disc2 ); } diff --git a/src/devices/bus/iq151/disc2.h b/src/devices/bus/iq151/disc2.h index 37bb1c7c26d..c4bffaa4333 100644 --- a/src/devices/bus/iq151/disc2.h +++ b/src/devices/bus/iq151/disc2.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); diff --git a/src/devices/bus/iq151/minigraf.cpp b/src/devices/bus/iq151/minigraf.cpp index d95c5a564ce..82fc74ad523 100644 --- a/src/devices/bus/iq151/minigraf.cpp +++ b/src/devices/bus/iq151/minigraf.cpp @@ -94,7 +94,7 @@ void iq151_minigraf_device::device_stop() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *iq151_minigraf_device::device_rom_region() const +const tiny_rom_entry *iq151_minigraf_device::device_rom_region() const { return ROM_NAME( iq151_minigraf ); } diff --git a/src/devices/bus/iq151/minigraf.h b/src/devices/bus/iq151/minigraf.h index 6632fa31aa4..a4e382b8b43 100644 --- a/src/devices/bus/iq151/minigraf.h +++ b/src/devices/bus/iq151/minigraf.h @@ -23,7 +23,7 @@ public: iq151_minigraf_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/iq151/ms151a.cpp b/src/devices/bus/iq151/ms151a.cpp index 2d0d732f1ad..4961fd61335 100644 --- a/src/devices/bus/iq151/ms151a.cpp +++ b/src/devices/bus/iq151/ms151a.cpp @@ -93,7 +93,7 @@ void iq151_ms151a_device::device_stop() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *iq151_ms151a_device::device_rom_region() const +const tiny_rom_entry *iq151_ms151a_device::device_rom_region() const { return ROM_NAME( iq151_ms151a ); } diff --git a/src/devices/bus/iq151/ms151a.h b/src/devices/bus/iq151/ms151a.h index 1d794e1081d..56a6f39f0ef 100644 --- a/src/devices/bus/iq151/ms151a.h +++ b/src/devices/bus/iq151/ms151a.h @@ -23,7 +23,7 @@ public: iq151_ms151a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/iq151/rom.cpp b/src/devices/bus/iq151/rom.cpp index 3229e2ac2f8..3079b731820 100644 --- a/src/devices/bus/iq151/rom.cpp +++ b/src/devices/bus/iq151/rom.cpp @@ -60,7 +60,7 @@ void iq151_rom_device::device_start() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *iq151_rom_device::device_rom_region() const +const tiny_rom_entry *iq151_rom_device::device_rom_region() const { return ROM_NAME( iq151_rom ); } diff --git a/src/devices/bus/iq151/rom.h b/src/devices/bus/iq151/rom.h index b1c5a42cc22..0c8b52fc136 100644 --- a/src/devices/bus/iq151/rom.h +++ b/src/devices/bus/iq151/rom.h @@ -24,7 +24,7 @@ public: iq151_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/iq151/video32.cpp b/src/devices/bus/iq151/video32.cpp index 91724700a03..f3d2657c520 100644 --- a/src/devices/bus/iq151/video32.cpp +++ b/src/devices/bus/iq151/video32.cpp @@ -87,7 +87,7 @@ void iq151_video32_device::device_reset() // device_rom_region //------------------------------------------------- -const rom_entry *iq151_video32_device::device_rom_region() const +const tiny_rom_entry *iq151_video32_device::device_rom_region() const { return ROM_NAME( iq151_video32 ); } diff --git a/src/devices/bus/iq151/video32.h b/src/devices/bus/iq151/video32.h index 10937728696..08833e21e9b 100644 --- a/src/devices/bus/iq151/video32.h +++ b/src/devices/bus/iq151/video32.h @@ -24,7 +24,7 @@ public: iq151_video32_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/iq151/video64.cpp b/src/devices/bus/iq151/video64.cpp index afb7462804d..b46d7b4257e 100644 --- a/src/devices/bus/iq151/video64.cpp +++ b/src/devices/bus/iq151/video64.cpp @@ -86,7 +86,7 @@ void iq151_video64_device::device_reset() // device_rom_region //------------------------------------------------- -const rom_entry *iq151_video64_device::device_rom_region() const +const tiny_rom_entry *iq151_video64_device::device_rom_region() const { return ROM_NAME( iq151_video64 ); } diff --git a/src/devices/bus/iq151/video64.h b/src/devices/bus/iq151/video64.h index f8d6d675f45..c1cc0f8f343 100644 --- a/src/devices/bus/iq151/video64.h +++ b/src/devices/bus/iq151/video64.h @@ -24,7 +24,7 @@ public: iq151_video64_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/isa/3c505.cpp b/src/devices/bus/isa/3c505.cpp index 0e22d52fe65..c878a540315 100644 --- a/src/devices/bus/isa/3c505.cpp +++ b/src/devices/bus/isa/3c505.cpp @@ -326,7 +326,7 @@ ioport_constructor threecom3c505_device::device_input_ports() const return INPUT_PORTS_NAME( tc3c505_port ); } -const rom_entry *threecom3c505_device::device_rom_region() const +const tiny_rom_entry *threecom3c505_device::device_rom_region() const { return ROM_NAME( threecom3c505 ); } diff --git a/src/devices/bus/isa/3c505.h b/src/devices/bus/isa/3c505.h index f892d07a7f0..3b2ede78aa2 100644 --- a/src/devices/bus/isa/3c505.h +++ b/src/devices/bus/isa/3c505.h @@ -147,7 +147,7 @@ protected: // device-level overrides virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; private: // device-level overrides diff --git a/src/devices/bus/isa/aga.cpp b/src/devices/bus/isa/aga.cpp index 6d065194978..0499fa40022 100644 --- a/src/devices/bus/isa/aga.cpp +++ b/src/devices/bus/isa/aga.cpp @@ -146,7 +146,7 @@ ROM_START( aga ) ROM_LOAD("50146 char d1.0 euro.u16", 0x00000, 0x02000, CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //D1.0 ROM_END -const rom_entry *isa8_aga_device::device_rom_region() const +const tiny_rom_entry *isa8_aga_device::device_rom_region() const { return ROM_NAME( aga ); } @@ -177,7 +177,7 @@ ROM_START( aga_pc200 ) ROM_LOAD("40109.ic159", 0x00000, 0x08000, CRC(a8b67639) SHA1(99663bfb61798526e092205575370c2ad34249a1)) ROM_END -const rom_entry *isa8_aga_pc200_device::device_rom_region() const +const tiny_rom_entry *isa8_aga_pc200_device::device_rom_region() const { return ROM_NAME( aga_pc200 ); } diff --git a/src/devices/bus/isa/aga.h b/src/devices/bus/isa/aga.h index c0c80ac29bb..f9ec0d19afe 100644 --- a/src/devices/bus/isa/aga.h +++ b/src/devices/bus/isa/aga.h @@ -43,7 +43,7 @@ public: virtual void device_start() override; // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; DECLARE_WRITE_LINE_MEMBER( hsync_changed ); @@ -110,7 +110,7 @@ public: // device-level overrides virtual void device_start() override; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT8 m_port8; UINT8 m_portd; diff --git a/src/devices/bus/isa/aha1542.cpp b/src/devices/bus/isa/aha1542.cpp index 96f28120224..51a296e2e62 100644 --- a/src/devices/bus/isa/aha1542.cpp +++ b/src/devices/bus/isa/aha1542.cpp @@ -173,7 +173,7 @@ static MACHINE_CONFIG_FRAGMENT( aha1542 ) MCFG_CPU_PROGRAM_MAP( z84c0010_mem ) MACHINE_CONFIG_END -const rom_entry *aha1542_device::device_rom_region() const +const tiny_rom_entry *aha1542_device::device_rom_region() const { return ROM_NAME( aha1542 ); } diff --git a/src/devices/bus/isa/aha1542.h b/src/devices/bus/isa/aha1542.h index ecbe2f158d2..57229a99d04 100644 --- a/src/devices/bus/isa/aha1542.h +++ b/src/devices/bus/isa/aha1542.h @@ -33,7 +33,7 @@ public: aha1542_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ8_MEMBER( aha1542_r ); diff --git a/src/devices/bus/isa/cga.cpp b/src/devices/bus/isa/cga.cpp index b894060b182..6a379459336 100644 --- a/src/devices/bus/isa/cga.cpp +++ b/src/devices/bus/isa/cga.cpp @@ -294,7 +294,7 @@ ioport_constructor isa8_cga_device::device_input_ports() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_cga_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_device::device_rom_region() const { return ROM_NAME( cga ); } @@ -461,7 +461,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_cga_poisk2_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_poisk2_device::device_rom_region() const { return ROM_NAME( cga_poisk2 ); } @@ -1561,7 +1561,7 @@ isa8_cga_pc1512_device::isa8_cga_pc1512_device(const machine_config &mconfig, co } -const rom_entry *isa8_cga_pc1512_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_pc1512_device::device_rom_region() const { return nullptr; } @@ -1706,7 +1706,7 @@ ROM_START( wyse700 ) ROM_LOAD( "250212-03.f5", 0x2000, 0x2000, CRC(6930d741) SHA1(1beeb133c5e39eee9914bdc5924039d70b5edcad)) ROM_END -const rom_entry *isa8_wyse700_device::device_rom_region() const +const tiny_rom_entry *isa8_wyse700_device::device_rom_region() const { return ROM_NAME( wyse700 ); } @@ -1872,7 +1872,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_cga_iskr1031_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_iskr1031_device::device_rom_region() const { return ROM_NAME( cga_iskr1031 ); } @@ -1897,7 +1897,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_cga_iskr1030m_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_iskr1030m_device::device_rom_region() const { return ROM_NAME( cga_iskr1030m ); } @@ -1921,7 +1921,7 @@ ROM_START( mc1502 ) ROM_LOAD( "symgen.rom", 0x0000, 0x2000, CRC(b2747a52) SHA1(6766d275467672436e91ac2997ac6b77700eba1e)) ROM_END -const rom_entry *isa8_cga_mc1502_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_mc1502_device::device_rom_region() const { return ROM_NAME( mc1502 ); } diff --git a/src/devices/bus/isa/cga.h b/src/devices/bus/isa/cga.h index 09212df65fc..de6c6841e9f 100644 --- a/src/devices/bus/isa/cga.h +++ b/src/devices/bus/isa/cga.h @@ -44,7 +44,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: required_ioport m_cga_config; @@ -114,7 +114,7 @@ public: // construction/destruction isa8_cga_poisk2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition @@ -131,7 +131,7 @@ public: isa8_cga_pc1512_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual MC6845_UPDATE_ROW( crtc_update_row ) override; MC6845_UPDATE_ROW( pc1512_gfx_4bpp_update_row ); @@ -172,7 +172,7 @@ public: // construction/destruction isa8_wyse700_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides @@ -227,7 +227,7 @@ class isa8_cga_iskr1030m_device : public: // construction/destruction isa8_cga_iskr1030m_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition @@ -241,7 +241,7 @@ class isa8_cga_iskr1031_device : public: // construction/destruction isa8_cga_iskr1031_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition @@ -256,7 +256,7 @@ public: // construction/destruction isa8_cga_mc1502_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/isa/dectalk.cpp b/src/devices/bus/isa/dectalk.cpp index 08641ec392c..a59d0b07b1d 100644 --- a/src/devices/bus/isa/dectalk.cpp +++ b/src/devices/bus/isa/dectalk.cpp @@ -159,7 +159,7 @@ ROM_START( dectalk_isa ) ROM_LOAD("spc_034c__2-1-92.tms320p15nl.d3.bin", 0x0000, 0x2000, CRC(d8b1201e) SHA1(4b873a5e882205fcac79a27562054b5c4d1a117c)) ROM_END -const rom_entry* dectalk_isa_device::device_rom_region() const +const tiny_rom_entry* dectalk_isa_device::device_rom_region() const { return ROM_NAME( dectalk_isa ); } diff --git a/src/devices/bus/isa/dectalk.h b/src/devices/bus/isa/dectalk.h index 2f65fc88c67..204fdffb487 100644 --- a/src/devices/bus/isa/dectalk.h +++ b/src/devices/bus/isa/dectalk.h @@ -16,7 +16,7 @@ public: dectalk_isa_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/bus/isa/ega.cpp b/src/devices/bus/isa/ega.cpp index bc57b61eb8f..1c0a4e78be9 100644 --- a/src/devices/bus/isa/ega.cpp +++ b/src/devices/bus/isa/ega.cpp @@ -552,7 +552,7 @@ machine_config_constructor isa8_ega_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_ega_device::device_rom_region() const +const tiny_rom_entry *isa8_ega_device::device_rom_region() const { return ROM_NAME( ega ); } diff --git a/src/devices/bus/isa/ega.h b/src/devices/bus/isa/ega.h index 99dac11e1aa..6c09f34214c 100644 --- a/src/devices/bus/isa/ega.h +++ b/src/devices/bus/isa/ega.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; DECLARE_READ8_MEMBER(read); diff --git a/src/devices/bus/isa/finalchs.cpp b/src/devices/bus/isa/finalchs.cpp index 222381d6435..6a41348ad78 100644 --- a/src/devices/bus/isa/finalchs.cpp +++ b/src/devices/bus/isa/finalchs.cpp @@ -121,7 +121,7 @@ void isa8_finalchs_device::device_reset() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_finalchs_device::device_rom_region() const +const tiny_rom_entry *isa8_finalchs_device::device_rom_region() const { return ROM_NAME( finalchs ); } diff --git a/src/devices/bus/isa/finalchs.h b/src/devices/bus/isa/finalchs.h index b964310b6ba..b21af6000f0 100644 --- a/src/devices/bus/isa/finalchs.h +++ b/src/devices/bus/isa/finalchs.h @@ -32,7 +32,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides virtual void device_start() override; diff --git a/src/devices/bus/isa/hdc.cpp b/src/devices/bus/isa/hdc.cpp index 8c7f65c0c0d..eb1f55eb682 100644 --- a/src/devices/bus/isa/hdc.cpp +++ b/src/devices/bus/isa/hdc.cpp @@ -896,7 +896,7 @@ machine_config_constructor isa8_hdc_ec1841_device::device_mconfig_additions() co // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_hdc_device::device_rom_region() const +const tiny_rom_entry *isa8_hdc_device::device_rom_region() const { return ROM_NAME( hdc ); } diff --git a/src/devices/bus/isa/hdc.h b/src/devices/bus/isa/hdc.h index 994af2ea3ba..e2f3a081624 100644 --- a/src/devices/bus/isa/hdc.h +++ b/src/devices/bus/isa/hdc.h @@ -153,7 +153,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; protected: // device-level overrides diff --git a/src/devices/bus/isa/ibm_mfc.cpp b/src/devices/bus/isa/ibm_mfc.cpp index 4a715ec797a..1163023a219 100644 --- a/src/devices/bus/isa/ibm_mfc.cpp +++ b/src/devices/bus/isa/ibm_mfc.cpp @@ -433,7 +433,7 @@ ioport_constructor isa8_ibm_mfc_device::device_input_ports() const // internal ROM region //------------------------------------------------- -const rom_entry *isa8_ibm_mfc_device::device_rom_region() const +const tiny_rom_entry *isa8_ibm_mfc_device::device_rom_region() const { return ROM_NAME( ibm_mfc ); } diff --git a/src/devices/bus/isa/ibm_mfc.h b/src/devices/bus/isa/ibm_mfc.h index 3c90a0917a7..d3942365db1 100644 --- a/src/devices/bus/isa/ibm_mfc.h +++ b/src/devices/bus/isa/ibm_mfc.h @@ -60,7 +60,7 @@ protected: virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry* device_rom_region() const override; + virtual const tiny_rom_entry* device_rom_region() const override; private: void set_z80_interrupt(int src, int state); diff --git a/src/devices/bus/isa/mc1502_fdc.cpp b/src/devices/bus/isa/mc1502_fdc.cpp index 3df26b862fe..73f8d5bd568 100644 --- a/src/devices/bus/isa/mc1502_fdc.cpp +++ b/src/devices/bus/isa/mc1502_fdc.cpp @@ -68,7 +68,7 @@ machine_config_constructor mc1502_fdc_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *mc1502_fdc_device::device_rom_region() const +const tiny_rom_entry *mc1502_fdc_device::device_rom_region() const { return ROM_NAME( mc1502_fdc ); } diff --git a/src/devices/bus/isa/mc1502_fdc.h b/src/devices/bus/isa/mc1502_fdc.h index c254aa3b791..c01316ec1ef 100644 --- a/src/devices/bus/isa/mc1502_fdc.h +++ b/src/devices/bus/isa/mc1502_fdc.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); TIMER_CALLBACK_MEMBER( motor_callback ); diff --git a/src/devices/bus/isa/mc1502_rom.cpp b/src/devices/bus/isa/mc1502_rom.cpp index bdf9dbc3d43..e61e2410a7e 100644 --- a/src/devices/bus/isa/mc1502_rom.cpp +++ b/src/devices/bus/isa/mc1502_rom.cpp @@ -30,7 +30,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *mc1502_rom_device::device_rom_region() const +const tiny_rom_entry *mc1502_rom_device::device_rom_region() const { return ROM_NAME( mc1502_rom ); } diff --git a/src/devices/bus/isa/mc1502_rom.h b/src/devices/bus/isa/mc1502_rom.h index d4423247991..f55911d485f 100644 --- a/src/devices/bus/isa/mc1502_rom.h +++ b/src/devices/bus/isa/mc1502_rom.h @@ -26,7 +26,7 @@ public: mc1502_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/isa/mda.cpp b/src/devices/bus/isa/mda.cpp index 739f6b677d7..aece6b1f740 100644 --- a/src/devices/bus/isa/mda.cpp +++ b/src/devices/bus/isa/mda.cpp @@ -137,7 +137,7 @@ machine_config_constructor isa8_mda_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_mda_device::device_rom_region() const +const tiny_rom_entry *isa8_mda_device::device_rom_region() const { return ROM_NAME( mda ); } @@ -574,7 +574,7 @@ machine_config_constructor isa8_hercules_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_hercules_device::device_rom_region() const +const tiny_rom_entry *isa8_hercules_device::device_rom_region() const { return ROM_NAME( hercules ); } diff --git a/src/devices/bus/isa/mda.h b/src/devices/bus/isa/mda.h index c6cf72b29ad..1d987789b2b 100644 --- a/src/devices/bus/isa/mda.h +++ b/src/devices/bus/isa/mda.h @@ -27,7 +27,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE_LINE_MEMBER(hsync_changed); DECLARE_WRITE_LINE_MEMBER(vsync_changed); @@ -74,7 +74,7 @@ public: isa8_hercules_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual DECLARE_READ8_MEMBER(io_read) override; virtual DECLARE_WRITE8_MEMBER(io_write) override; diff --git a/src/devices/bus/isa/mufdc.cpp b/src/devices/bus/isa/mufdc.cpp index 24c8c3d142b..49425585e62 100644 --- a/src/devices/bus/isa/mufdc.cpp +++ b/src/devices/bus/isa/mufdc.cpp @@ -105,7 +105,7 @@ ROM_START( fdc344 ) ROM_LOAD("fdc344_42.u2", 0x0000, 0x4000, CRC(3e02567c) SHA1(b639d92435ecf2a6d4aefd3576a6955028f6bde7)) ROM_END -const rom_entry *fdc344_device::device_rom_region() const +const tiny_rom_entry *fdc344_device::device_rom_region() const { return ROM_NAME( fdc344 ); } @@ -115,7 +115,7 @@ ROM_START( fdcmag ) ROM_LOAD("magitronic_40.u2", 0x0000, 0x2000, CRC(41a5371b) SHA1(9c4443169a0b104395404274470e62b8b65efcf4)) ROM_END -const rom_entry *fdcmag_device::device_rom_region() const +const tiny_rom_entry *fdcmag_device::device_rom_region() const { return ROM_NAME( fdcmag ); } diff --git a/src/devices/bus/isa/mufdc.h b/src/devices/bus/isa/mufdc.h index 976558e90cd..abfd8965c94 100644 --- a/src/devices/bus/isa/mufdc.h +++ b/src/devices/bus/isa/mufdc.h @@ -69,7 +69,7 @@ public: // construction/destruction fdc344_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: virtual void device_config_complete() override { m_shortname = "fdc344"; } @@ -81,7 +81,7 @@ public: // construction/destruction fdcmag_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: virtual void device_config_complete() override { m_shortname = "fdcmag"; } diff --git a/src/devices/bus/isa/omti8621.cpp b/src/devices/bus/isa/omti8621.cpp index 1e019e69ddc..cdf86b0034a 100644 --- a/src/devices/bus/isa/omti8621.cpp +++ b/src/devices/bus/isa/omti8621.cpp @@ -266,12 +266,12 @@ machine_config_constructor omti8621_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( omti_disk ); } -const rom_entry *omti8621_device::device_rom_region() const +const tiny_rom_entry *omti8621_device::device_rom_region() const { return ROM_NAME( omti8621 ); } -const rom_entry *omti8621_apollo_device::device_rom_region() const +const tiny_rom_entry *omti8621_apollo_device::device_rom_region() const { // OMTI 8621 boards for Apollo workstations never use a BIOS ROM // They don't even have a socket for the BIOS ROM diff --git a/src/devices/bus/isa/omti8621.h b/src/devices/bus/isa/omti8621.h index 1084906c385..dbcd9f00103 100644 --- a/src/devices/bus/isa/omti8621.h +++ b/src/devices/bus/isa/omti8621.h @@ -54,7 +54,7 @@ protected: virtual void device_config_complete() override; virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; @@ -148,7 +148,7 @@ public: // get sector diskaddr of logical unit lun into data_buffer UINT32 get_sector(INT32 diskaddr, UINT8 *data_buffer, UINT32 length, UINT8 lun); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; extern const device_type ISA16_OMTI8621_APOLLO; diff --git a/src/devices/bus/isa/p1_fdc.cpp b/src/devices/bus/isa/p1_fdc.cpp index 27fe8657e26..6f6ed6b3cc0 100644 --- a/src/devices/bus/isa/p1_fdc.cpp +++ b/src/devices/bus/isa/p1_fdc.cpp @@ -78,7 +78,7 @@ machine_config_constructor p1_fdc_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *p1_fdc_device::device_rom_region() const +const tiny_rom_entry *p1_fdc_device::device_rom_region() const { return ROM_NAME( p1_fdc ); } diff --git a/src/devices/bus/isa/p1_fdc.h b/src/devices/bus/isa/p1_fdc.h index f40748085d8..495f9f559d7 100644 --- a/src/devices/bus/isa/p1_fdc.h +++ b/src/devices/bus/isa/p1_fdc.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); DECLARE_READ8_MEMBER(p1_fdc_r); diff --git a/src/devices/bus/isa/p1_hdc.cpp b/src/devices/bus/isa/p1_hdc.cpp index bb3192f287a..a8bd565479a 100644 --- a/src/devices/bus/isa/p1_hdc.cpp +++ b/src/devices/bus/isa/p1_hdc.cpp @@ -80,7 +80,7 @@ machine_config_constructor p1_hdc_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *p1_hdc_device::device_rom_region() const +const tiny_rom_entry *p1_hdc_device::device_rom_region() const { return ROM_NAME( p1_hdc ); } diff --git a/src/devices/bus/isa/p1_hdc.h b/src/devices/bus/isa/p1_hdc.h index 7d4e0af3486..a009fdcebaf 100644 --- a/src/devices/bus/isa/p1_hdc.h +++ b/src/devices/bus/isa/p1_hdc.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/isa/p1_rom.cpp b/src/devices/bus/isa/p1_rom.cpp index 96b860bc60e..4ace5c48e41 100644 --- a/src/devices/bus/isa/p1_rom.cpp +++ b/src/devices/bus/isa/p1_rom.cpp @@ -35,7 +35,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *p1_rom_device::device_rom_region() const +const tiny_rom_entry *p1_rom_device::device_rom_region() const { return ROM_NAME( p1_rom ); } diff --git a/src/devices/bus/isa/p1_rom.h b/src/devices/bus/isa/p1_rom.h index 4d0cffcbaea..6ee2a63e755 100644 --- a/src/devices/bus/isa/p1_rom.h +++ b/src/devices/bus/isa/p1_rom.h @@ -26,7 +26,7 @@ public: p1_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/isa/pc1640_iga.cpp b/src/devices/bus/isa/pc1640_iga.cpp index 7304e96c26f..e38ed4d09d0 100644 --- a/src/devices/bus/isa/pc1640_iga.cpp +++ b/src/devices/bus/isa/pc1640_iga.cpp @@ -52,7 +52,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_pc1640_iga_device::device_rom_region() const +const tiny_rom_entry *isa8_pc1640_iga_device::device_rom_region() const { return ROM_NAME( pc1640_iga ); } diff --git a/src/devices/bus/isa/pc1640_iga.h b/src/devices/bus/isa/pc1640_iga.h index c0e055b7424..225b31cfdae 100644 --- a/src/devices/bus/isa/pc1640_iga.h +++ b/src/devices/bus/isa/pc1640_iga.h @@ -30,7 +30,7 @@ public: isa8_pc1640_iga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/isa/pgc.cpp b/src/devices/bus/isa/pgc.cpp index bc5563cb19c..b211765ba95 100644 --- a/src/devices/bus/isa/pgc.cpp +++ b/src/devices/bus/isa/pgc.cpp @@ -181,7 +181,7 @@ machine_config_constructor isa8_pgc_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_pgc_device::device_rom_region() const +const tiny_rom_entry *isa8_pgc_device::device_rom_region() const { return ROM_NAME( pgc ); } diff --git a/src/devices/bus/isa/pgc.h b/src/devices/bus/isa/pgc.h index cf83eb8ae1d..b06e87478f8 100644 --- a/src/devices/bus/isa/pgc.h +++ b/src/devices/bus/isa/pgc.h @@ -28,7 +28,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/devices/bus/isa/sb16.cpp b/src/devices/bus/isa/sb16.cpp index 2bc2d43c517..9378da64858 100644 --- a/src/devices/bus/isa/sb16.cpp +++ b/src/devices/bus/isa/sb16.cpp @@ -420,7 +420,7 @@ static MACHINE_CONFIG_FRAGMENT( sb16 ) MCFG_PC_JOY_ADD("pc_joy") MACHINE_CONFIG_END -const rom_entry *sb16_lle_device::device_rom_region() const +const tiny_rom_entry *sb16_lle_device::device_rom_region() const { return ROM_NAME( sb16 ); } diff --git a/src/devices/bus/isa/sb16.h b/src/devices/bus/isa/sb16.h index ff4c8a4a8f0..2d6811a5f78 100644 --- a/src/devices/bus/isa/sb16.h +++ b/src/devices/bus/isa/sb16.h @@ -25,7 +25,7 @@ public: sb16_lle_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; required_device m_dacl; diff --git a/src/devices/bus/isa/side116.cpp b/src/devices/bus/isa/side116.cpp index 6aeda746d5f..2212ac3844d 100644 --- a/src/devices/bus/isa/side116.cpp +++ b/src/devices/bus/isa/side116.cpp @@ -72,7 +72,7 @@ ROM_START( side116 ) ROM_LOAD("bios12.u2", 0x0000, 0x2000, CRC(c202a0e6) SHA1(a5b130a6d17c972d6c378cb2cd8113a4039631fe)) ROM_END -const rom_entry *side116_device::device_rom_region() const +const tiny_rom_entry *side116_device::device_rom_region() const { return ROM_NAME( side116 ); } diff --git a/src/devices/bus/isa/side116.h b/src/devices/bus/isa/side116.h index 1c9592de531..2d7d2e19a1a 100644 --- a/src/devices/bus/isa/side116.h +++ b/src/devices/bus/isa/side116.h @@ -34,7 +34,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/bus/isa/stereo_fx.cpp b/src/devices/bus/isa/stereo_fx.cpp index fc17f2acfea..6b76e6c730f 100644 --- a/src/devices/bus/isa/stereo_fx.cpp +++ b/src/devices/bus/isa/stereo_fx.cpp @@ -122,7 +122,7 @@ static MACHINE_CONFIG_FRAGMENT( stereo_fx ) MCFG_PC_JOY_ADD("pc_joy") MACHINE_CONFIG_END -const rom_entry *stereo_fx_device::device_rom_region() const +const tiny_rom_entry *stereo_fx_device::device_rom_region() const { return ROM_NAME( stereo_fx ); } diff --git a/src/devices/bus/isa/stereo_fx.h b/src/devices/bus/isa/stereo_fx.h index 9ec059a2640..68c0888440f 100644 --- a/src/devices/bus/isa/stereo_fx.h +++ b/src/devices/bus/isa/stereo_fx.h @@ -24,7 +24,7 @@ public: stereo_fx_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; required_device m_dacl; diff --git a/src/devices/bus/isa/svga_cirrus.cpp b/src/devices/bus/isa/svga_cirrus.cpp index ebe18325c26..de3ecaa8bd9 100644 --- a/src/devices/bus/isa/svga_cirrus.cpp +++ b/src/devices/bus/isa/svga_cirrus.cpp @@ -46,7 +46,7 @@ machine_config_constructor isa16_svga_cirrus_device::device_mconfig_additions() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa16_svga_cirrus_device::device_rom_region() const +const tiny_rom_entry *isa16_svga_cirrus_device::device_rom_region() const { return ROM_NAME( dm_clgd5430 ); } @@ -132,7 +132,7 @@ machine_config_constructor isa16_svga_cirrus_gd542x_device::device_mconfig_addit // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa16_svga_cirrus_gd542x_device::device_rom_region() const +const tiny_rom_entry *isa16_svga_cirrus_gd542x_device::device_rom_region() const { return ROM_NAME( clgd542x ); } diff --git a/src/devices/bus/isa/svga_cirrus.h b/src/devices/bus/isa/svga_cirrus.h index a26e9503e1b..c46d7630285 100644 --- a/src/devices/bus/isa/svga_cirrus.h +++ b/src/devices/bus/isa/svga_cirrus.h @@ -23,7 +23,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: @@ -44,7 +44,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: diff --git a/src/devices/bus/isa/svga_s3.cpp b/src/devices/bus/isa/svga_s3.cpp index 98668979d61..9e37a29f55c 100644 --- a/src/devices/bus/isa/svga_s3.cpp +++ b/src/devices/bus/isa/svga_s3.cpp @@ -57,7 +57,7 @@ machine_config_constructor isa16_svga_s3_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa16_svga_s3_device::device_rom_region() const +const tiny_rom_entry *isa16_svga_s3_device::device_rom_region() const { return ROM_NAME( s3_764 ); } @@ -169,7 +169,7 @@ machine_config_constructor isa16_s3virge_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa16_s3virge_device::device_rom_region() const +const tiny_rom_entry *isa16_s3virge_device::device_rom_region() const { return ROM_NAME( s3virge ); } @@ -256,7 +256,7 @@ machine_config_constructor isa16_s3virgedx_device::device_mconfig_additions() co // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa16_s3virgedx_device::device_rom_region() const +const tiny_rom_entry *isa16_s3virgedx_device::device_rom_region() const { return ROM_NAME( s3virgedx ); } @@ -344,7 +344,7 @@ machine_config_constructor isa16_stealth3d2kpro_device::device_mconfig_additions // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa16_stealth3d2kpro_device::device_rom_region() const +const tiny_rom_entry *isa16_stealth3d2kpro_device::device_rom_region() const { return ROM_NAME( stealth3d2kpro ); } diff --git a/src/devices/bus/isa/svga_s3.h b/src/devices/bus/isa/svga_s3.h index fba9bfd6769..92c824e0339 100644 --- a/src/devices/bus/isa/svga_s3.h +++ b/src/devices/bus/isa/svga_s3.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: @@ -48,7 +48,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: @@ -69,7 +69,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: @@ -90,7 +90,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: diff --git a/src/devices/bus/isa/svga_trident.cpp b/src/devices/bus/isa/svga_trident.cpp index 6cf4d3d407a..e4dd7005d37 100644 --- a/src/devices/bus/isa/svga_trident.cpp +++ b/src/devices/bus/isa/svga_trident.cpp @@ -48,7 +48,7 @@ machine_config_constructor isa16_svga_tgui9680_device::device_mconfig_additions( // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa16_svga_tgui9680_device::device_rom_region() const +const tiny_rom_entry *isa16_svga_tgui9680_device::device_rom_region() const { return ROM_NAME( tgui9680 ); } diff --git a/src/devices/bus/isa/svga_trident.h b/src/devices/bus/isa/svga_trident.h index 7ce5479735b..3ee4a192d27 100644 --- a/src/devices/bus/isa/svga_trident.h +++ b/src/devices/bus/isa/svga_trident.h @@ -30,7 +30,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: diff --git a/src/devices/bus/isa/svga_tseng.cpp b/src/devices/bus/isa/svga_tseng.cpp index ab0a4e9b5f7..ad5acfe9243 100644 --- a/src/devices/bus/isa/svga_tseng.cpp +++ b/src/devices/bus/isa/svga_tseng.cpp @@ -46,7 +46,7 @@ machine_config_constructor isa8_svga_et4k_device::device_mconfig_additions() con // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_svga_et4k_device::device_rom_region() const +const tiny_rom_entry *isa8_svga_et4k_device::device_rom_region() const { return ROM_NAME( et4000 ); } diff --git a/src/devices/bus/isa/svga_tseng.h b/src/devices/bus/isa/svga_tseng.h index 4762fed3ec0..32093785de6 100644 --- a/src/devices/bus/isa/svga_tseng.h +++ b/src/devices/bus/isa/svga_tseng.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: diff --git a/src/devices/bus/isa/vga.cpp b/src/devices/bus/isa/vga.cpp index 306f1254eeb..c47b7c516fd 100644 --- a/src/devices/bus/isa/vga.cpp +++ b/src/devices/bus/isa/vga.cpp @@ -36,7 +36,7 @@ machine_config_constructor isa8_vga_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_vga_device::device_rom_region() const +const tiny_rom_entry *isa8_vga_device::device_rom_region() const { return ROM_NAME( ibm_vga ); } diff --git a/src/devices/bus/isa/vga.h b/src/devices/bus/isa/vga.h index 4707b3c0d61..e850e0e4929 100644 --- a/src/devices/bus/isa/vga.h +++ b/src/devices/bus/isa/vga.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: diff --git a/src/devices/bus/isa/vga_ati.cpp b/src/devices/bus/isa/vga_ati.cpp index a0f1a7f2f72..0a9867964c5 100644 --- a/src/devices/bus/isa/vga_ati.cpp +++ b/src/devices/bus/isa/vga_ati.cpp @@ -123,17 +123,17 @@ machine_config_constructor isa16_vga_mach64_device::device_mconfig_additions() c // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa16_vga_gfxultra_device::device_rom_region() const +const tiny_rom_entry *isa16_vga_gfxultra_device::device_rom_region() const { return ROM_NAME( gfxultra ); } -const rom_entry *isa16_vga_gfxultrapro_device::device_rom_region() const +const tiny_rom_entry *isa16_vga_gfxultrapro_device::device_rom_region() const { return ROM_NAME( gfxultrp ); } -const rom_entry *isa16_vga_mach64_device::device_rom_region() const +const tiny_rom_entry *isa16_vga_mach64_device::device_rom_region() const { return ROM_NAME( mach64 ); } diff --git a/src/devices/bus/isa/vga_ati.h b/src/devices/bus/isa/vga_ati.h index 616667ef17b..5a400e11c24 100644 --- a/src/devices/bus/isa/vga_ati.h +++ b/src/devices/bus/isa/vga_ati.h @@ -33,7 +33,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: @@ -55,7 +55,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: @@ -76,7 +76,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(input_port_0_r); protected: diff --git a/src/devices/bus/isa/wd1002a_wx1.cpp b/src/devices/bus/isa/wd1002a_wx1.cpp index 29df9cec729..151418882db 100644 --- a/src/devices/bus/isa/wd1002a_wx1.cpp +++ b/src/devices/bus/isa/wd1002a_wx1.cpp @@ -31,7 +31,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *isa8_wd1002a_wx1_device::device_rom_region() const +const tiny_rom_entry *isa8_wd1002a_wx1_device::device_rom_region() const { return ROM_NAME( wd1002a_wx1 ); } diff --git a/src/devices/bus/isa/wd1002a_wx1.h b/src/devices/bus/isa/wd1002a_wx1.h index 86715ed367e..3bb361849d3 100644 --- a/src/devices/bus/isa/wd1002a_wx1.h +++ b/src/devices/bus/isa/wd1002a_wx1.h @@ -30,7 +30,7 @@ public: isa8_wd1002a_wx1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/isa/wdxt_gen.cpp b/src/devices/bus/isa/wdxt_gen.cpp index dd2e28202ce..f7d0523a036 100644 --- a/src/devices/bus/isa/wdxt_gen.cpp +++ b/src/devices/bus/isa/wdxt_gen.cpp @@ -81,7 +81,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *wdxt_gen_device::device_rom_region() const +const tiny_rom_entry *wdxt_gen_device::device_rom_region() const { return ROM_NAME( wdxt_gen ); } diff --git a/src/devices/bus/isa/wdxt_gen.h b/src/devices/bus/isa/wdxt_gen.h index 5185b2d8def..e1beb34267a 100644 --- a/src/devices/bus/isa/wdxt_gen.h +++ b/src/devices/bus/isa/wdxt_gen.h @@ -43,7 +43,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // not really public DECLARE_WRITE_LINE_MEMBER( irq5_w ); diff --git a/src/devices/bus/isa/xtide.cpp b/src/devices/bus/isa/xtide.cpp index ef5fd332f47..2861484d8a1 100644 --- a/src/devices/bus/isa/xtide.cpp +++ b/src/devices/bus/isa/xtide.cpp @@ -286,7 +286,7 @@ ioport_constructor xtide_device::device_input_ports() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *xtide_device::device_rom_region() const +const tiny_rom_entry *xtide_device::device_rom_region() const { return ROM_NAME( xtide ); } diff --git a/src/devices/bus/isa/xtide.h b/src/devices/bus/isa/xtide.h index a8113ebe9db..9b5775a26c3 100644 --- a/src/devices/bus/isa/xtide.h +++ b/src/devices/bus/isa/xtide.h @@ -24,7 +24,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/bus/kc/d004.cpp b/src/devices/bus/kc/d004.cpp index c22b5c16f9c..cab28b21297 100644 --- a/src/devices/bus/kc/d004.cpp +++ b/src/devices/bus/kc/d004.cpp @@ -192,7 +192,7 @@ machine_config_constructor kc_d004_device::device_mconfig_additions() const // device_rom_region //------------------------------------------------- -const rom_entry *kc_d004_device::device_rom_region() const +const tiny_rom_entry *kc_d004_device::device_rom_region() const { return ROM_NAME( kc_d004 ); } @@ -402,7 +402,7 @@ machine_config_constructor kc_d004_gide_device::device_mconfig_additions() const // device_rom_region //------------------------------------------------- -const rom_entry *kc_d004_gide_device::device_rom_region() const +const tiny_rom_entry *kc_d004_gide_device::device_rom_region() const { return ROM_NAME( kc_d004_gide ); } diff --git a/src/devices/bus/kc/d004.h b/src/devices/bus/kc/d004.h index ceb0a848876..d8eb1d4fad0 100644 --- a/src/devices/bus/kc/d004.h +++ b/src/devices/bus/kc/d004.h @@ -31,7 +31,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); @@ -90,7 +90,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/kc/rom.cpp b/src/devices/bus/kc/rom.cpp index 883b36eb739..8906f1cbe18 100644 --- a/src/devices/bus/kc/rom.cpp +++ b/src/devices/bus/kc/rom.cpp @@ -80,7 +80,7 @@ void kc_8k_device::device_reset() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *kc_8k_device::device_rom_region() const +const tiny_rom_entry *kc_8k_device::device_rom_region() const { return ROM_NAME( kc_rom ); } diff --git a/src/devices/bus/kc/rom.h b/src/devices/bus/kc/rom.h index 4310b98ea3b..e5e1673058c 100644 --- a/src/devices/bus/kc/rom.h +++ b/src/devices/bus/kc/rom.h @@ -29,7 +29,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // kcexp_interface overrides virtual UINT8 module_id_r() override { return 0xfb; } diff --git a/src/devices/bus/macpds/pds_tpdfpd.cpp b/src/devices/bus/macpds/pds_tpdfpd.cpp index a28577bfc99..6ba0b413722 100644 --- a/src/devices/bus/macpds/pds_tpdfpd.cpp +++ b/src/devices/bus/macpds/pds_tpdfpd.cpp @@ -73,7 +73,7 @@ machine_config_constructor macpds_sedisplay_device::device_mconfig_additions() c // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *macpds_sedisplay_device::device_rom_region() const +const tiny_rom_entry *macpds_sedisplay_device::device_rom_region() const { return ROM_NAME( sedisplay ); } diff --git a/src/devices/bus/macpds/pds_tpdfpd.h b/src/devices/bus/macpds/pds_tpdfpd.h index 218c30f959b..44878aa8e82 100644 --- a/src/devices/bus/macpds/pds_tpdfpd.h +++ b/src/devices/bus/macpds/pds_tpdfpd.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/msx_cart/bm_012.cpp b/src/devices/bus/msx_cart/bm_012.cpp index 89430da93f2..4939d15e902 100644 --- a/src/devices/bus/msx_cart/bm_012.cpp +++ b/src/devices/bus/msx_cart/bm_012.cpp @@ -90,7 +90,7 @@ ROM_START( msx_cart_bm_012 ) ROM_END -const rom_entry *msx_cart_bm_012::device_rom_region() const +const tiny_rom_entry *msx_cart_bm_012::device_rom_region() const { return ROM_NAME( msx_cart_bm_012 ); } diff --git a/src/devices/bus/msx_cart/bm_012.h b/src/devices/bus/msx_cart/bm_012.h index 20c6c1970be..8cab8e268e9 100644 --- a/src/devices/bus/msx_cart/bm_012.h +++ b/src/devices/bus/msx_cart/bm_012.h @@ -19,7 +19,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; DECLARE_WRITE_LINE_MEMBER(midi_in); diff --git a/src/devices/bus/msx_cart/moonsound.cpp b/src/devices/bus/msx_cart/moonsound.cpp index cdae9385815..1d7371f1a9a 100644 --- a/src/devices/bus/msx_cart/moonsound.cpp +++ b/src/devices/bus/msx_cart/moonsound.cpp @@ -60,7 +60,7 @@ ROM_START( msx_cart_moonsound ) ROM_END -const rom_entry *msx_cart_moonsound::device_rom_region() const +const tiny_rom_entry *msx_cart_moonsound::device_rom_region() const { return ROM_NAME( msx_cart_moonsound ); } diff --git a/src/devices/bus/msx_cart/moonsound.h b/src/devices/bus/msx_cart/moonsound.h index d826d446ec1..0428534cda0 100644 --- a/src/devices/bus/msx_cart/moonsound.h +++ b/src/devices/bus/msx_cart/moonsound.h @@ -20,7 +20,7 @@ public: virtual void device_start() override; virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE8_MEMBER(write_ymf278b_fm); DECLARE_READ8_MEMBER(read_ymf278b_fm); diff --git a/src/devices/bus/msx_cart/msx_audio.cpp b/src/devices/bus/msx_cart/msx_audio.cpp index 01ad0cd1f45..200194e31e4 100644 --- a/src/devices/bus/msx_cart/msx_audio.cpp +++ b/src/devices/bus/msx_cart/msx_audio.cpp @@ -174,7 +174,7 @@ ROM_START( msx_nms1205 ) ROM_END -const rom_entry *msx_cart_msx_audio_nms1205::device_rom_region() const +const tiny_rom_entry *msx_cart_msx_audio_nms1205::device_rom_region() const { return ROM_NAME( msx_nms1205 ); } @@ -287,7 +287,7 @@ ROM_START( msx_fsca1 ) ROM_END -const rom_entry *msx_cart_msx_audio_fsca1::device_rom_region() const +const tiny_rom_entry *msx_cart_msx_audio_fsca1::device_rom_region() const { return ROM_NAME( msx_fsca1 ); } diff --git a/src/devices/bus/msx_cart/msx_audio.h b/src/devices/bus/msx_cart/msx_audio.h index 9787d1b163b..7759a1b6908 100644 --- a/src/devices/bus/msx_cart/msx_audio.h +++ b/src/devices/bus/msx_cart/msx_audio.h @@ -42,7 +42,7 @@ public: // device-level overrides virtual void device_start() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void initialize_cartridge() override; @@ -69,7 +69,7 @@ public: virtual void device_start() override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void initialize_cartridge() override; diff --git a/src/devices/bus/msx_cart/yamaha.cpp b/src/devices/bus/msx_cart/yamaha.cpp index 7abf066c3af..cec5bdd673b 100644 --- a/src/devices/bus/msx_cart/yamaha.cpp +++ b/src/devices/bus/msx_cart/yamaha.cpp @@ -82,7 +82,7 @@ ROM_START( msx_sfg01 ) ROM_END -const rom_entry *msx_cart_sfg01::device_rom_region() const +const tiny_rom_entry *msx_cart_sfg01::device_rom_region() const { return ROM_NAME( msx_sfg01 ); } @@ -94,7 +94,7 @@ ROM_START( msx_sfg05 ) ROM_END -const rom_entry *msx_cart_sfg05::device_rom_region() const +const tiny_rom_entry *msx_cart_sfg05::device_rom_region() const { return ROM_NAME( msx_sfg05 ); } diff --git a/src/devices/bus/msx_cart/yamaha.h b/src/devices/bus/msx_cart/yamaha.h index 431b55da5b5..f8897cc45be 100644 --- a/src/devices/bus/msx_cart/yamaha.h +++ b/src/devices/bus/msx_cart/yamaha.h @@ -49,7 +49,7 @@ class msx_cart_sfg01 : public msx_cart_sfg public: msx_cart_sfg01(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -58,7 +58,7 @@ class msx_cart_sfg05 : public msx_cart_sfg public: msx_cart_sfg05(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; #endif diff --git a/src/devices/bus/nes/aladdin.cpp b/src/devices/bus/nes/aladdin.cpp index d4ff5fbdfff..6ed293dccfd 100644 --- a/src/devices/bus/nes/aladdin.cpp +++ b/src/devices/bus/nes/aladdin.cpp @@ -221,7 +221,7 @@ void nes_algq_rom_device::device_reset() m_bank_base = 0; } -const rom_entry *nes_algn_rom_device::device_rom_region() const +const tiny_rom_entry *nes_algn_rom_device::device_rom_region() const { return ROM_NAME( ade_rom ); } diff --git a/src/devices/bus/nes/aladdin.h b/src/devices/bus/nes/aladdin.h index b49ecbf964e..13c11d9ae3f 100644 --- a/src/devices/bus/nes/aladdin.h +++ b/src/devices/bus/nes/aladdin.h @@ -98,7 +98,7 @@ public: nes_algn_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual UINT8* get_cart_base(); virtual void write_prg(UINT32 offset, UINT8 data) override; diff --git a/src/devices/bus/nes/datach.cpp b/src/devices/bus/nes/datach.cpp index 2e5d42d4bbb..6e4e619c286 100644 --- a/src/devices/bus/nes/datach.cpp +++ b/src/devices/bus/nes/datach.cpp @@ -191,7 +191,7 @@ void nes_datach_rom_device::device_reset() m_bank = 0; } -const rom_entry *nes_datach_rom_device::device_rom_region() const +const tiny_rom_entry *nes_datach_rom_device::device_rom_region() const { return ROM_NAME( datach_rom ); } diff --git a/src/devices/bus/nes/datach.h b/src/devices/bus/nes/datach.h index 80157a83a5c..1b1fa57fde5 100644 --- a/src/devices/bus/nes/datach.h +++ b/src/devices/bus/nes/datach.h @@ -100,7 +100,7 @@ public: nes_datach_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual UINT8* get_cart_base(); protected: diff --git a/src/devices/bus/nes/disksys.cpp b/src/devices/bus/nes/disksys.cpp index bdc4862da56..d272232387d 100644 --- a/src/devices/bus/nes/disksys.cpp +++ b/src/devices/bus/nes/disksys.cpp @@ -75,7 +75,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nes_disksys_device::device_rom_region() const +const tiny_rom_entry *nes_disksys_device::device_rom_region() const { return ROM_NAME( disksys ); } diff --git a/src/devices/bus/nes/disksys.h b/src/devices/bus/nes/disksys.h index 8fabb0a80db..35cda095114 100644 --- a/src/devices/bus/nes/disksys.h +++ b/src/devices/bus/nes/disksys.h @@ -19,7 +19,7 @@ public: virtual void device_start() override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual DECLARE_READ8_MEMBER(read_ex) override; virtual DECLARE_READ8_MEMBER(read_m) override; diff --git a/src/devices/bus/nes/karastudio.cpp b/src/devices/bus/nes/karastudio.cpp index 6bf2d109613..13366022114 100644 --- a/src/devices/bus/nes/karastudio.cpp +++ b/src/devices/bus/nes/karastudio.cpp @@ -161,7 +161,7 @@ void nes_kstudio_rom_device::device_reset() m_bank = 0; } -const rom_entry *nes_kstudio_rom_device::device_rom_region() const +const tiny_rom_entry *nes_kstudio_rom_device::device_rom_region() const { return ROM_NAME( ks_exp_rom ); } diff --git a/src/devices/bus/nes/karastudio.h b/src/devices/bus/nes/karastudio.h index e2b5ef874b5..d0924db0ffb 100644 --- a/src/devices/bus/nes/karastudio.h +++ b/src/devices/bus/nes/karastudio.h @@ -96,7 +96,7 @@ public: nes_kstudio_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual UINT8* get_cart_base(); protected: diff --git a/src/devices/bus/nes/sunsoft_dcs.cpp b/src/devices/bus/nes/sunsoft_dcs.cpp index 9c7635a58e5..40c9c69bff0 100644 --- a/src/devices/bus/nes/sunsoft_dcs.cpp +++ b/src/devices/bus/nes/sunsoft_dcs.cpp @@ -133,7 +133,7 @@ void nes_ntb_rom_device::device_start() m_rom = (UINT8*)memregion("ntbrom")->base(); } -const rom_entry *nes_ntb_rom_device::device_rom_region() const +const tiny_rom_entry *nes_ntb_rom_device::device_rom_region() const { return ROM_NAME( ntb_rom ); } diff --git a/src/devices/bus/nes/sunsoft_dcs.h b/src/devices/bus/nes/sunsoft_dcs.h index 04f8011d29a..b50ad5cf940 100644 --- a/src/devices/bus/nes/sunsoft_dcs.h +++ b/src/devices/bus/nes/sunsoft_dcs.h @@ -92,7 +92,7 @@ public: nes_ntb_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual UINT8* get_cart_base(); protected: diff --git a/src/devices/bus/newbrain/eim.cpp b/src/devices/bus/newbrain/eim.cpp index 6600d04efb1..599267b3ffb 100644 --- a/src/devices/bus/newbrain/eim.cpp +++ b/src/devices/bus/newbrain/eim.cpp @@ -56,7 +56,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *newbrain_eim_t::device_rom_region() const +const tiny_rom_entry *newbrain_eim_t::device_rom_region() const { return ROM_NAME( newbrain_eim ); } diff --git a/src/devices/bus/newbrain/eim.h b/src/devices/bus/newbrain/eim.h index d3f6c3d8a9b..2512321783a 100644 --- a/src/devices/bus/newbrain/eim.h +++ b/src/devices/bus/newbrain/eim.h @@ -35,7 +35,7 @@ public: newbrain_eim_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ8_MEMBER( anout_r ); diff --git a/src/devices/bus/newbrain/fdc.cpp b/src/devices/bus/newbrain/fdc.cpp index ff7bdb0b128..92499b19028 100644 --- a/src/devices/bus/newbrain/fdc.cpp +++ b/src/devices/bus/newbrain/fdc.cpp @@ -58,7 +58,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *newbrain_fdc_t::device_rom_region() const +const tiny_rom_entry *newbrain_fdc_t::device_rom_region() const { return ROM_NAME( newbrain_fdc ); } diff --git a/src/devices/bus/newbrain/fdc.h b/src/devices/bus/newbrain/fdc.h index 2e4e21abbc0..fdb0e5f4fca 100644 --- a/src/devices/bus/newbrain/fdc.h +++ b/src/devices/bus/newbrain/fdc.h @@ -32,7 +32,7 @@ public: newbrain_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_WRITE_LINE_MEMBER( fdc_int_w ); diff --git a/src/devices/bus/nubus/nubus_48gc.cpp b/src/devices/bus/nubus/nubus_48gc.cpp index 74110534d93..2a60b1e5bfb 100644 --- a/src/devices/bus/nubus/nubus_48gc.cpp +++ b/src/devices/bus/nubus/nubus_48gc.cpp @@ -58,12 +58,12 @@ machine_config_constructor jmfb_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *jmfb_device::device_rom_region() const +const tiny_rom_entry *jmfb_device::device_rom_region() const { return ROM_NAME( gc48 ); } -const rom_entry *nubus_824gc_device::device_rom_region() const +const tiny_rom_entry *nubus_824gc_device::device_rom_region() const { return ROM_NAME( gc824 ); } diff --git a/src/devices/bus/nubus/nubus_48gc.h b/src/devices/bus/nubus/nubus_48gc.h index b32b057cfda..7764321ddb7 100644 --- a/src/devices/bus/nubus/nubus_48gc.h +++ b/src/devices/bus/nubus/nubus_48gc.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -60,7 +60,7 @@ class nubus_824gc_device : public jmfb_device { public: nubus_824gc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/nubus/nubus_asntmc3b.cpp b/src/devices/bus/nubus/nubus_asntmc3b.cpp index 1d911055e11..da9b4e9f803 100644 --- a/src/devices/bus/nubus/nubus_asntmc3b.cpp +++ b/src/devices/bus/nubus/nubus_asntmc3b.cpp @@ -58,12 +58,12 @@ machine_config_constructor nubus_mac8390_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_mac8390_device::device_rom_region() const +const tiny_rom_entry *nubus_mac8390_device::device_rom_region() const { return ROM_NAME( asntm3nb ); } -const rom_entry *nubus_appleenet_device::device_rom_region() const +const tiny_rom_entry *nubus_appleenet_device::device_rom_region() const { return ROM_NAME( appleenet ); } diff --git a/src/devices/bus/nubus/nubus_asntmc3b.h b/src/devices/bus/nubus/nubus_asntmc3b.h index 7933cc11623..0f88175df5b 100644 --- a/src/devices/bus/nubus/nubus_asntmc3b.h +++ b/src/devices/bus/nubus/nubus_asntmc3b.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; void dp_irq_w(int state); DECLARE_READ8_MEMBER(dp_mem_read); @@ -58,7 +58,7 @@ class nubus_appleenet_device : public nubus_mac8390_device { public: nubus_appleenet_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition diff --git a/src/devices/bus/nubus/nubus_cb264.cpp b/src/devices/bus/nubus/nubus_cb264.cpp index bdc7cba85c7..04808f1520a 100644 --- a/src/devices/bus/nubus/nubus_cb264.cpp +++ b/src/devices/bus/nubus/nubus_cb264.cpp @@ -56,7 +56,7 @@ machine_config_constructor nubus_cb264_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_cb264_device::device_rom_region() const +const tiny_rom_entry *nubus_cb264_device::device_rom_region() const { return ROM_NAME( cb264 ); } diff --git a/src/devices/bus/nubus/nubus_cb264.h b/src/devices/bus/nubus/nubus_cb264.h index fe0a934d7c8..54466bb66f2 100644 --- a/src/devices/bus/nubus/nubus_cb264.h +++ b/src/devices/bus/nubus/nubus_cb264.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/nubus_image.cpp b/src/devices/bus/nubus/nubus_image.cpp index e3e3a29f2fa..4b7901891ff 100644 --- a/src/devices/bus/nubus/nubus_image.cpp +++ b/src/devices/bus/nubus/nubus_image.cpp @@ -158,7 +158,7 @@ machine_config_constructor nubus_image_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_image_device::device_rom_region() const +const tiny_rom_entry *nubus_image_device::device_rom_region() const { return ROM_NAME( image ); } diff --git a/src/devices/bus/nubus/nubus_image.h b/src/devices/bus/nubus/nubus_image.h index 54fe5dbb39b..1b86eed9636 100644 --- a/src/devices/bus/nubus/nubus_image.h +++ b/src/devices/bus/nubus/nubus_image.h @@ -37,7 +37,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/nubus/nubus_m2hires.cpp b/src/devices/bus/nubus/nubus_m2hires.cpp index 3cf9e5abead..98217981055 100644 --- a/src/devices/bus/nubus/nubus_m2hires.cpp +++ b/src/devices/bus/nubus/nubus_m2hires.cpp @@ -52,7 +52,7 @@ machine_config_constructor nubus_m2hires_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_m2hires_device::device_rom_region() const +const tiny_rom_entry *nubus_m2hires_device::device_rom_region() const { return ROM_NAME( m2hires ); } diff --git a/src/devices/bus/nubus/nubus_m2hires.h b/src/devices/bus/nubus/nubus_m2hires.h index e11e6e1a3ff..43c805f03fa 100644 --- a/src/devices/bus/nubus/nubus_m2hires.h +++ b/src/devices/bus/nubus/nubus_m2hires.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/nubus_m2video.cpp b/src/devices/bus/nubus/nubus_m2video.cpp index ec4b7fb6d4c..1d8134887f8 100644 --- a/src/devices/bus/nubus/nubus_m2video.cpp +++ b/src/devices/bus/nubus/nubus_m2video.cpp @@ -53,7 +53,7 @@ machine_config_constructor nubus_m2video_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_m2video_device::device_rom_region() const +const tiny_rom_entry *nubus_m2video_device::device_rom_region() const { return ROM_NAME( m2video ); } diff --git a/src/devices/bus/nubus/nubus_m2video.h b/src/devices/bus/nubus/nubus_m2video.h index 9dd7bc4a80b..f30066a408a 100644 --- a/src/devices/bus/nubus/nubus_m2video.h +++ b/src/devices/bus/nubus/nubus_m2video.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/nubus_radiustpd.cpp b/src/devices/bus/nubus/nubus_radiustpd.cpp index 84188fd215e..42053976689 100644 --- a/src/devices/bus/nubus/nubus_radiustpd.cpp +++ b/src/devices/bus/nubus/nubus_radiustpd.cpp @@ -52,7 +52,7 @@ machine_config_constructor nubus_radiustpd_device::device_mconfig_additions() co // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_radiustpd_device::device_rom_region() const +const tiny_rom_entry *nubus_radiustpd_device::device_rom_region() const { return ROM_NAME( radiustpd ); } diff --git a/src/devices/bus/nubus/nubus_radiustpd.h b/src/devices/bus/nubus/nubus_radiustpd.h index c8968ca30eb..a1c3bd4ac6a 100644 --- a/src/devices/bus/nubus/nubus_radiustpd.h +++ b/src/devices/bus/nubus/nubus_radiustpd.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/nubus_spec8.cpp b/src/devices/bus/nubus/nubus_spec8.cpp index 8b2651bcff8..fbe55114daf 100644 --- a/src/devices/bus/nubus/nubus_spec8.cpp +++ b/src/devices/bus/nubus/nubus_spec8.cpp @@ -54,7 +54,7 @@ machine_config_constructor nubus_spec8s3_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_spec8s3_device::device_rom_region() const +const tiny_rom_entry *nubus_spec8s3_device::device_rom_region() const { return ROM_NAME( spec8s3 ); } diff --git a/src/devices/bus/nubus/nubus_spec8.h b/src/devices/bus/nubus/nubus_spec8.h index 57c721afde5..dfbc23324f8 100644 --- a/src/devices/bus/nubus/nubus_spec8.h +++ b/src/devices/bus/nubus/nubus_spec8.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); diff --git a/src/devices/bus/nubus/nubus_specpdq.cpp b/src/devices/bus/nubus/nubus_specpdq.cpp index d67ac04ef31..a7995cc1ff0 100644 --- a/src/devices/bus/nubus/nubus_specpdq.cpp +++ b/src/devices/bus/nubus/nubus_specpdq.cpp @@ -69,7 +69,7 @@ machine_config_constructor nubus_specpdq_device::device_mconfig_additions() cons // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_specpdq_device::device_rom_region() const +const tiny_rom_entry *nubus_specpdq_device::device_rom_region() const { return ROM_NAME( specpdq ); } diff --git a/src/devices/bus/nubus/nubus_specpdq.h b/src/devices/bus/nubus/nubus_specpdq.h index ef260f7512a..0638114dde1 100644 --- a/src/devices/bus/nubus/nubus_specpdq.h +++ b/src/devices/bus/nubus/nubus_specpdq.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); diff --git a/src/devices/bus/nubus/nubus_vikbw.cpp b/src/devices/bus/nubus/nubus_vikbw.cpp index 63b81446251..fffdd5f7c36 100644 --- a/src/devices/bus/nubus/nubus_vikbw.cpp +++ b/src/devices/bus/nubus/nubus_vikbw.cpp @@ -52,7 +52,7 @@ machine_config_constructor nubus_vikbw_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_vikbw_device::device_rom_region() const +const tiny_rom_entry *nubus_vikbw_device::device_rom_region() const { return ROM_NAME( vikbw ); } diff --git a/src/devices/bus/nubus/nubus_vikbw.h b/src/devices/bus/nubus/nubus_vikbw.h index e7a7b090eb1..c299f637878 100644 --- a/src/devices/bus/nubus/nubus_vikbw.h +++ b/src/devices/bus/nubus/nubus_vikbw.h @@ -25,7 +25,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/nubus_wsportrait.cpp b/src/devices/bus/nubus/nubus_wsportrait.cpp index 3fe0e4c3ec0..7a666f4ceda 100644 --- a/src/devices/bus/nubus/nubus_wsportrait.cpp +++ b/src/devices/bus/nubus/nubus_wsportrait.cpp @@ -55,7 +55,7 @@ machine_config_constructor nubus_wsportrait_device::device_mconfig_additions() c // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_wsportrait_device::device_rom_region() const +const tiny_rom_entry *nubus_wsportrait_device::device_rom_region() const { return ROM_NAME( wsportrait ); } diff --git a/src/devices/bus/nubus/nubus_wsportrait.h b/src/devices/bus/nubus/nubus_wsportrait.h index 9afdf36d8c7..1c39b5a5ec1 100644 --- a/src/devices/bus/nubus/nubus_wsportrait.h +++ b/src/devices/bus/nubus/nubus_wsportrait.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/pds30_30hr.cpp b/src/devices/bus/nubus/pds30_30hr.cpp index eb5550cb64e..042726dbd80 100644 --- a/src/devices/bus/nubus/pds30_30hr.cpp +++ b/src/devices/bus/nubus/pds30_30hr.cpp @@ -55,7 +55,7 @@ machine_config_constructor nubus_xceed30hr_device::device_mconfig_additions() co // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_xceed30hr_device::device_rom_region() const +const tiny_rom_entry *nubus_xceed30hr_device::device_rom_region() const { return ROM_NAME( xceed30hr ); } diff --git a/src/devices/bus/nubus/pds30_30hr.h b/src/devices/bus/nubus/pds30_30hr.h index 7cb832d4af3..569401a8070 100644 --- a/src/devices/bus/nubus/pds30_30hr.h +++ b/src/devices/bus/nubus/pds30_30hr.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/pds30_cb264.cpp b/src/devices/bus/nubus/pds30_cb264.cpp index b5c10671aea..8926db4e28a 100644 --- a/src/devices/bus/nubus/pds30_cb264.cpp +++ b/src/devices/bus/nubus/pds30_cb264.cpp @@ -48,7 +48,7 @@ machine_config_constructor nubus_cb264se30_device::device_mconfig_additions() co // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_cb264se30_device::device_rom_region() const +const tiny_rom_entry *nubus_cb264se30_device::device_rom_region() const { return ROM_NAME( cb264se30 ); } diff --git a/src/devices/bus/nubus/pds30_cb264.h b/src/devices/bus/nubus/pds30_cb264.h index 4932468e573..f68e7085d5f 100644 --- a/src/devices/bus/nubus/pds30_cb264.h +++ b/src/devices/bus/nubus/pds30_cb264.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/pds30_mc30.cpp b/src/devices/bus/nubus/pds30_mc30.cpp index 4c0e6999541..56719c0ffb0 100644 --- a/src/devices/bus/nubus/pds30_mc30.cpp +++ b/src/devices/bus/nubus/pds30_mc30.cpp @@ -51,7 +51,7 @@ machine_config_constructor nubus_xceedmc30_device::device_mconfig_additions() co // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_xceedmc30_device::device_rom_region() const +const tiny_rom_entry *nubus_xceedmc30_device::device_rom_region() const { return ROM_NAME( xceedmc30 ); } diff --git a/src/devices/bus/nubus/pds30_mc30.h b/src/devices/bus/nubus/pds30_mc30.h index b9bcc01a42a..71327a0d0d8 100644 --- a/src/devices/bus/nubus/pds30_mc30.h +++ b/src/devices/bus/nubus/pds30_mc30.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/pds30_procolor816.cpp b/src/devices/bus/nubus/pds30_procolor816.cpp index bb995682381..f56520fda8b 100644 --- a/src/devices/bus/nubus/pds30_procolor816.cpp +++ b/src/devices/bus/nubus/pds30_procolor816.cpp @@ -54,7 +54,7 @@ machine_config_constructor nubus_procolor816_device::device_mconfig_additions() // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_procolor816_device::device_rom_region() const +const tiny_rom_entry *nubus_procolor816_device::device_rom_region() const { return ROM_NAME( procolor816 ); } diff --git a/src/devices/bus/nubus/pds30_procolor816.h b/src/devices/bus/nubus/pds30_procolor816.h index 5dfabef5be4..a5922e4a1ed 100644 --- a/src/devices/bus/nubus/pds30_procolor816.h +++ b/src/devices/bus/nubus/pds30_procolor816.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/nubus/pds30_sigmalview.cpp b/src/devices/bus/nubus/pds30_sigmalview.cpp index 88eab2ffdcb..19ff5ef869f 100644 --- a/src/devices/bus/nubus/pds30_sigmalview.cpp +++ b/src/devices/bus/nubus/pds30_sigmalview.cpp @@ -48,7 +48,7 @@ machine_config_constructor nubus_lview_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *nubus_lview_device::device_rom_region() const +const tiny_rom_entry *nubus_lview_device::device_rom_region() const { return ROM_NAME( lview ); } diff --git a/src/devices/bus/nubus/pds30_sigmalview.h b/src/devices/bus/nubus/pds30_sigmalview.h index 3fe9d94f952..c5cff0f68b8 100644 --- a/src/devices/bus/nubus/pds30_sigmalview.h +++ b/src/devices/bus/nubus/pds30_sigmalview.h @@ -26,7 +26,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); protected: diff --git a/src/devices/bus/odyssey2/voice.cpp b/src/devices/bus/odyssey2/voice.cpp index 338b8053f64..0f1f702a541 100644 --- a/src/devices/bus/odyssey2/voice.cpp +++ b/src/devices/bus/odyssey2/voice.cpp @@ -84,7 +84,7 @@ ROM_START( o2voice ) ROM_LOAD( "spr128-004.bin", 0x8000, 0x4000, CRC(e79dfb75) SHA1(37f33d79ffd1739d7c2f226b010a1eac28d74ca0) ) ROM_END -const rom_entry *o2_voice_device::device_rom_region() const +const tiny_rom_entry *o2_voice_device::device_rom_region() const { return ROM_NAME( o2voice ); } diff --git a/src/devices/bus/odyssey2/voice.h b/src/devices/bus/odyssey2/voice.h index 6616753238d..b841189f149 100644 --- a/src/devices/bus/odyssey2/voice.h +++ b/src/devices/bus/odyssey2/voice.h @@ -21,7 +21,7 @@ public: virtual void device_reset() override {} virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // reading and writing virtual DECLARE_READ8_MEMBER(read_rom04) override { if (m_subslot->exists()) return m_subslot->read_rom04(space, offset); else return 0xff; } diff --git a/src/devices/bus/oricext/jasmin.cpp b/src/devices/bus/oricext/jasmin.cpp index 49034d22d16..8383fc5ddcd 100644 --- a/src/devices/bus/oricext/jasmin.cpp +++ b/src/devices/bus/oricext/jasmin.cpp @@ -74,7 +74,7 @@ void jasmin_device::device_reset() fdc->set_floppy(nullptr); } -const rom_entry *jasmin_device::device_rom_region() const +const tiny_rom_entry *jasmin_device::device_rom_region() const { return ROM_NAME( jasmin ); } diff --git a/src/devices/bus/oricext/microdisc.cpp b/src/devices/bus/oricext/microdisc.cpp index abb2ea138fd..f4b1e6f1678 100644 --- a/src/devices/bus/oricext/microdisc.cpp +++ b/src/devices/bus/oricext/microdisc.cpp @@ -73,7 +73,7 @@ void microdisc_device::device_reset() ram[0xe000] = 0x42; } -const rom_entry *microdisc_device::device_rom_region() const +const tiny_rom_entry *microdisc_device::device_rom_region() const { return ROM_NAME( microdisc ); } diff --git a/src/devices/bus/pc_kbd/ec1841.cpp b/src/devices/bus/pc_kbd/ec1841.cpp index 54c4d6b3a97..5e4bdcc69bd 100644 --- a/src/devices/bus/pc_kbd/ec1841.cpp +++ b/src/devices/bus/pc_kbd/ec1841.cpp @@ -55,7 +55,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *ec_1841_keyboard_device::device_rom_region() const +const tiny_rom_entry *ec_1841_keyboard_device::device_rom_region() const { return ROM_NAME( ec_1841_keyboard ); } diff --git a/src/devices/bus/pc_kbd/ec1841.h b/src/devices/bus/pc_kbd/ec1841.h index b91564cbe62..ce04dc17cd1 100644 --- a/src/devices/bus/pc_kbd/ec1841.h +++ b/src/devices/bus/pc_kbd/ec1841.h @@ -31,7 +31,7 @@ public: ec_1841_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/pc_kbd/iskr1030.cpp b/src/devices/bus/pc_kbd/iskr1030.cpp index b90fd1cef14..0b752793785 100644 --- a/src/devices/bus/pc_kbd/iskr1030.cpp +++ b/src/devices/bus/pc_kbd/iskr1030.cpp @@ -50,7 +50,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *iskr_1030_keyboard_device::device_rom_region() const +const tiny_rom_entry *iskr_1030_keyboard_device::device_rom_region() const { return ROM_NAME( iskr_1030_keyboard ); } diff --git a/src/devices/bus/pc_kbd/iskr1030.h b/src/devices/bus/pc_kbd/iskr1030.h index 8ea16a802eb..81178bbc854 100644 --- a/src/devices/bus/pc_kbd/iskr1030.h +++ b/src/devices/bus/pc_kbd/iskr1030.h @@ -32,7 +32,7 @@ public: iskr_1030_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/pc_kbd/keytro.cpp b/src/devices/bus/pc_kbd/keytro.cpp index 8dd5a4e3d5c..331ed871d09 100644 --- a/src/devices/bus/pc_kbd/keytro.cpp +++ b/src/devices/bus/pc_kbd/keytro.cpp @@ -439,7 +439,7 @@ ioport_constructor pc_kbd_keytronic_pc3270_at_device::device_input_ports() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *pc_kbd_keytronic_pc3270_device::device_rom_region() const +const tiny_rom_entry *pc_kbd_keytronic_pc3270_device::device_rom_region() const { return ROM_NAME( keytronic_pc3270 ); } diff --git a/src/devices/bus/pc_kbd/keytro.h b/src/devices/bus/pc_kbd/keytro.h index 5fdcbf72f87..98f8097fda7 100644 --- a/src/devices/bus/pc_kbd/keytro.h +++ b/src/devices/bus/pc_kbd/keytro.h @@ -29,7 +29,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual DECLARE_WRITE_LINE_MEMBER(clock_write) override; virtual DECLARE_WRITE_LINE_MEMBER(data_write) override; diff --git a/src/devices/bus/pc_kbd/msnat.cpp b/src/devices/bus/pc_kbd/msnat.cpp index 2d300841d26..c1bb29f6a7e 100644 --- a/src/devices/bus/pc_kbd/msnat.cpp +++ b/src/devices/bus/pc_kbd/msnat.cpp @@ -297,7 +297,7 @@ ioport_constructor pc_kbd_microsoft_natural_device::device_input_ports() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *pc_kbd_microsoft_natural_device::device_rom_region() const +const tiny_rom_entry *pc_kbd_microsoft_natural_device::device_rom_region() const { return ROM_NAME( microsoft_natural ); } diff --git a/src/devices/bus/pc_kbd/msnat.h b/src/devices/bus/pc_kbd/msnat.h index 600138f9479..bbcc9e26516 100644 --- a/src/devices/bus/pc_kbd/msnat.h +++ b/src/devices/bus/pc_kbd/msnat.h @@ -27,7 +27,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual DECLARE_WRITE_LINE_MEMBER(clock_write) override; virtual DECLARE_WRITE_LINE_MEMBER(data_write) override; diff --git a/src/devices/bus/pc_kbd/pc83.cpp b/src/devices/bus/pc_kbd/pc83.cpp index e79c4126c47..e65d688b1f5 100644 --- a/src/devices/bus/pc_kbd/pc83.cpp +++ b/src/devices/bus/pc_kbd/pc83.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *ibm_pc_83_keyboard_device::device_rom_region() const +const tiny_rom_entry *ibm_pc_83_keyboard_device::device_rom_region() const { return ROM_NAME( ibm_pc_83_keyboard ); } diff --git a/src/devices/bus/pc_kbd/pc83.h b/src/devices/bus/pc_kbd/pc83.h index b445c5b1f45..6cc8baef052 100644 --- a/src/devices/bus/pc_kbd/pc83.h +++ b/src/devices/bus/pc_kbd/pc83.h @@ -32,7 +32,7 @@ public: ibm_pc_83_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/pc_kbd/pcat84.cpp b/src/devices/bus/pc_kbd/pcat84.cpp index eeaf9494fd3..781984f77c4 100644 --- a/src/devices/bus/pc_kbd/pcat84.cpp +++ b/src/devices/bus/pc_kbd/pcat84.cpp @@ -65,7 +65,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *ibm_pc_at_84_keyboard_device::device_rom_region() const +const tiny_rom_entry *ibm_pc_at_84_keyboard_device::device_rom_region() const { return ROM_NAME( ibm_pc_at_84_keyboard ); } @@ -92,7 +92,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *ibm_3270pc_122_keyboard_device::device_rom_region() const +const tiny_rom_entry *ibm_3270pc_122_keyboard_device::device_rom_region() const { return ROM_NAME( ibm_3270pc_122_keyboard ); } diff --git a/src/devices/bus/pc_kbd/pcat84.h b/src/devices/bus/pc_kbd/pcat84.h index e099dd31760..5fe1b85316a 100644 --- a/src/devices/bus/pc_kbd/pcat84.h +++ b/src/devices/bus/pc_kbd/pcat84.h @@ -33,7 +33,7 @@ public: ibm_pc_at_84_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; @@ -100,7 +100,7 @@ public: ibm_3270pc_122_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; }; diff --git a/src/devices/bus/pc_kbd/pcxt83.cpp b/src/devices/bus/pc_kbd/pcxt83.cpp index dfbc5616b73..3838fadbb3a 100644 --- a/src/devices/bus/pc_kbd/pcxt83.cpp +++ b/src/devices/bus/pc_kbd/pcxt83.cpp @@ -61,7 +61,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *ibm_pc_xt_83_keyboard_device::device_rom_region() const +const tiny_rom_entry *ibm_pc_xt_83_keyboard_device::device_rom_region() const { return ROM_NAME( ibm_pc_xt_83_keyboard ); } diff --git a/src/devices/bus/pc_kbd/pcxt83.h b/src/devices/bus/pc_kbd/pcxt83.h index af53d6244b4..f43e33d0b28 100644 --- a/src/devices/bus/pc_kbd/pcxt83.h +++ b/src/devices/bus/pc_kbd/pcxt83.h @@ -32,7 +32,7 @@ public: ibm_pc_xt_83_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/pet/hsg.cpp b/src/devices/bus/pet/hsg.cpp index e22f4041a73..3fa297e7a0d 100644 --- a/src/devices/bus/pet/hsg.cpp +++ b/src/devices/bus/pet/hsg.cpp @@ -56,7 +56,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cbm8000_hsg_t::device_rom_region() const +const tiny_rom_entry *cbm8000_hsg_t::device_rom_region() const { return ROM_NAME( cbm8000_hsg ); } diff --git a/src/devices/bus/pet/hsg.h b/src/devices/bus/pet/hsg.h index 22e328bafc1..b706124a5f1 100644 --- a/src/devices/bus/pet/hsg.h +++ b/src/devices/bus/pet/hsg.h @@ -31,7 +31,7 @@ public: cbm8000_hsg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // device_pet_expansion_card_interface overrides virtual int pet_norom_r(address_space &space, offs_t offset, int sel) override; diff --git a/src/devices/bus/pet/superpet.cpp b/src/devices/bus/pet/superpet.cpp index 592e50b8327..174ade45079 100644 --- a/src/devices/bus/pet/superpet.cpp +++ b/src/devices/bus/pet/superpet.cpp @@ -49,7 +49,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *superpet_device::device_rom_region() const +const tiny_rom_entry *superpet_device::device_rom_region() const { return ROM_NAME( superpet ); } diff --git a/src/devices/bus/pet/superpet.h b/src/devices/bus/pet/superpet.h index d26fbf059dd..4ec50f0d906 100644 --- a/src/devices/bus/pet/superpet.h +++ b/src/devices/bus/pet/superpet.h @@ -31,7 +31,7 @@ public: superpet_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/plus4/c1551.cpp b/src/devices/bus/plus4/c1551.cpp index 4e24bb153e9..d456580f67a 100644 --- a/src/devices/bus/plus4/c1551.cpp +++ b/src/devices/bus/plus4/c1551.cpp @@ -46,7 +46,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *c1551_t::device_rom_region() const +const tiny_rom_entry *c1551_t::device_rom_region() const { return ROM_NAME( c1551 ); } diff --git a/src/devices/bus/plus4/c1551.h b/src/devices/bus/plus4/c1551.h index af10e75daed..39fdd69b0df 100644 --- a/src/devices/bus/plus4/c1551.h +++ b/src/devices/bus/plus4/c1551.h @@ -34,7 +34,7 @@ public: c1551_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/plus4/sid.cpp b/src/devices/bus/plus4/sid.cpp index 5e4ffb172b1..4c100861cd6 100644 --- a/src/devices/bus/plus4/sid.cpp +++ b/src/devices/bus/plus4/sid.cpp @@ -51,7 +51,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *plus4_sid_cartridge_device::device_rom_region() const +const tiny_rom_entry *plus4_sid_cartridge_device::device_rom_region() const { return ROM_NAME( plus4_sid ); } diff --git a/src/devices/bus/plus4/sid.h b/src/devices/bus/plus4/sid.h index 0351381f478..b5980849425 100644 --- a/src/devices/bus/plus4/sid.h +++ b/src/devices/bus/plus4/sid.h @@ -33,7 +33,7 @@ public: plus4_sid_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/ql/cst_q_plus4.cpp b/src/devices/bus/ql/cst_q_plus4.cpp index 5b6d94f2a9d..27273687d65 100644 --- a/src/devices/bus/ql/cst_q_plus4.cpp +++ b/src/devices/bus/ql/cst_q_plus4.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cst_q_plus4_t::device_rom_region() const +const tiny_rom_entry *cst_q_plus4_t::device_rom_region() const { return ROM_NAME( cst_q_plus4 ); } diff --git a/src/devices/bus/ql/cst_q_plus4.h b/src/devices/bus/ql/cst_q_plus4.h index eba0f3ac712..691e1b24281 100644 --- a/src/devices/bus/ql/cst_q_plus4.h +++ b/src/devices/bus/ql/cst_q_plus4.h @@ -30,7 +30,7 @@ public: cst_q_plus4_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_WRITE_LINE_MEMBER( exp1_extintl_w ) { m_exp1_extinl = state; update_extintl(); } diff --git a/src/devices/bus/ql/cst_qdisc.cpp b/src/devices/bus/ql/cst_qdisc.cpp index f9fdcf26e04..8ba128b3d9b 100644 --- a/src/devices/bus/ql/cst_qdisc.cpp +++ b/src/devices/bus/ql/cst_qdisc.cpp @@ -35,7 +35,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cst_ql_disc_interface_t::device_rom_region() const +const tiny_rom_entry *cst_ql_disc_interface_t::device_rom_region() const { return ROM_NAME( cst_ql_disc_interface ); } diff --git a/src/devices/bus/ql/cst_qdisc.h b/src/devices/bus/ql/cst_qdisc.h index d2ddae10b2e..c272f345b6b 100644 --- a/src/devices/bus/ql/cst_qdisc.h +++ b/src/devices/bus/ql/cst_qdisc.h @@ -29,7 +29,7 @@ public: cst_ql_disc_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/ql/cumana_fdi.cpp b/src/devices/bus/ql/cumana_fdi.cpp index 91259f0db43..ed868f985e2 100644 --- a/src/devices/bus/ql/cumana_fdi.cpp +++ b/src/devices/bus/ql/cumana_fdi.cpp @@ -35,7 +35,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *cumana_floppy_disk_interface_t::device_rom_region() const +const tiny_rom_entry *cumana_floppy_disk_interface_t::device_rom_region() const { return ROM_NAME( cumana_floppy_disk_interface ); } diff --git a/src/devices/bus/ql/cumana_fdi.h b/src/devices/bus/ql/cumana_fdi.h index 9ac1b9ba01e..4425560d604 100644 --- a/src/devices/bus/ql/cumana_fdi.h +++ b/src/devices/bus/ql/cumana_fdi.h @@ -29,7 +29,7 @@ public: cumana_floppy_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/ql/kempston_di.cpp b/src/devices/bus/ql/kempston_di.cpp index c69c129e2e9..de6c30ac2e8 100644 --- a/src/devices/bus/ql/kempston_di.cpp +++ b/src/devices/bus/ql/kempston_di.cpp @@ -33,7 +33,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *kempston_disk_interface_t::device_rom_region() const +const tiny_rom_entry *kempston_disk_interface_t::device_rom_region() const { return ROM_NAME( kempston_disk_system ); } diff --git a/src/devices/bus/ql/kempston_di.h b/src/devices/bus/ql/kempston_di.h index 041bdc65544..19e68ce864d 100644 --- a/src/devices/bus/ql/kempston_di.h +++ b/src/devices/bus/ql/kempston_di.h @@ -29,7 +29,7 @@ public: kempston_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/ql/miracle_gold_card.cpp b/src/devices/bus/ql/miracle_gold_card.cpp index 3e25f43e0a6..31a566b3944 100644 --- a/src/devices/bus/ql/miracle_gold_card.cpp +++ b/src/devices/bus/ql/miracle_gold_card.cpp @@ -35,7 +35,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *miracle_gold_card_t::device_rom_region() const +const tiny_rom_entry *miracle_gold_card_t::device_rom_region() const { return ROM_NAME( miracle_gold_card ); } diff --git a/src/devices/bus/ql/miracle_gold_card.h b/src/devices/bus/ql/miracle_gold_card.h index 176f7556fdf..a92abc790e2 100644 --- a/src/devices/bus/ql/miracle_gold_card.h +++ b/src/devices/bus/ql/miracle_gold_card.h @@ -29,7 +29,7 @@ public: miracle_gold_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/ql/miracle_hd.cpp b/src/devices/bus/ql/miracle_hd.cpp index b181fc48918..3de4d0360d0 100644 --- a/src/devices/bus/ql/miracle_hd.cpp +++ b/src/devices/bus/ql/miracle_hd.cpp @@ -33,7 +33,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *miracle_hard_disk_t::device_rom_region() const +const tiny_rom_entry *miracle_hard_disk_t::device_rom_region() const { return ROM_NAME( miracle_hard_disk ); } diff --git a/src/devices/bus/ql/miracle_hd.h b/src/devices/bus/ql/miracle_hd.h index c4aeaa6d74b..9881f6769f3 100644 --- a/src/devices/bus/ql/miracle_hd.h +++ b/src/devices/bus/ql/miracle_hd.h @@ -29,7 +29,7 @@ public: miracle_hard_disk_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/ql/mp_fdi.cpp b/src/devices/bus/ql/mp_fdi.cpp index d23542ab8f4..72543005cb3 100644 --- a/src/devices/bus/ql/mp_fdi.cpp +++ b/src/devices/bus/ql/mp_fdi.cpp @@ -33,7 +33,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *micro_peripherals_floppy_disk_interface_t::device_rom_region() const +const tiny_rom_entry *micro_peripherals_floppy_disk_interface_t::device_rom_region() const { return ROM_NAME( micro_peripherals_floppy_disk_interface ); } diff --git a/src/devices/bus/ql/mp_fdi.h b/src/devices/bus/ql/mp_fdi.h index 57681f30d28..14dc4087d6d 100644 --- a/src/devices/bus/ql/mp_fdi.h +++ b/src/devices/bus/ql/mp_fdi.h @@ -29,7 +29,7 @@ public: micro_peripherals_floppy_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/ql/opd_basic_master.cpp b/src/devices/bus/ql/opd_basic_master.cpp index fa20bf4f5eb..58bc110f433 100644 --- a/src/devices/bus/ql/opd_basic_master.cpp +++ b/src/devices/bus/ql/opd_basic_master.cpp @@ -31,7 +31,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *opd_basic_master_t::device_rom_region() const +const tiny_rom_entry *opd_basic_master_t::device_rom_region() const { return ROM_NAME( opd_basic_master ); } diff --git a/src/devices/bus/ql/opd_basic_master.h b/src/devices/bus/ql/opd_basic_master.h index 16608210cf2..ec0a92869ca 100644 --- a/src/devices/bus/ql/opd_basic_master.h +++ b/src/devices/bus/ql/opd_basic_master.h @@ -29,7 +29,7 @@ public: opd_basic_master_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/ql/pcml_qdisk.cpp b/src/devices/bus/ql/pcml_qdisk.cpp index b5d534f68d7..0dd88363660 100644 --- a/src/devices/bus/ql/pcml_qdisk.cpp +++ b/src/devices/bus/ql/pcml_qdisk.cpp @@ -33,7 +33,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *pcml_q_disk_interface_t::device_rom_region() const +const tiny_rom_entry *pcml_q_disk_interface_t::device_rom_region() const { return ROM_NAME( pcml_q_disk_interface ); } diff --git a/src/devices/bus/ql/pcml_qdisk.h b/src/devices/bus/ql/pcml_qdisk.h index 29a011b7455..6348a7d5fd6 100644 --- a/src/devices/bus/ql/pcml_qdisk.h +++ b/src/devices/bus/ql/pcml_qdisk.h @@ -29,7 +29,7 @@ public: pcml_q_disk_interface_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/ql/qubide.cpp b/src/devices/bus/ql/qubide.cpp index 9241321bcac..418eea3ea81 100644 --- a/src/devices/bus/ql/qubide.cpp +++ b/src/devices/bus/ql/qubide.cpp @@ -81,7 +81,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *qubide_t::device_rom_region() const +const tiny_rom_entry *qubide_t::device_rom_region() const { return ROM_NAME( qubide ); } diff --git a/src/devices/bus/ql/qubide.h b/src/devices/bus/ql/qubide.h index f8a363b55a2..4ccb043847c 100644 --- a/src/devices/bus/ql/qubide.h +++ b/src/devices/bus/ql/qubide.h @@ -30,7 +30,7 @@ public: qubide_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ql/sandy_superdisk.cpp b/src/devices/bus/ql/sandy_superdisk.cpp index c4bdb1bfdf4..48d269fa68e 100644 --- a/src/devices/bus/ql/sandy_superdisk.cpp +++ b/src/devices/bus/ql/sandy_superdisk.cpp @@ -41,7 +41,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *sandy_super_disk_t::device_rom_region() const +const tiny_rom_entry *sandy_super_disk_t::device_rom_region() const { return ROM_NAME( sandy_super_disk ); } diff --git a/src/devices/bus/ql/sandy_superdisk.h b/src/devices/bus/ql/sandy_superdisk.h index 408c3430695..56efeafab6a 100644 --- a/src/devices/bus/ql/sandy_superdisk.h +++ b/src/devices/bus/ql/sandy_superdisk.h @@ -32,7 +32,7 @@ public: sandy_super_disk_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; WRITE_LINE_MEMBER( busy_w ); diff --git a/src/devices/bus/ql/sandy_superqboard.cpp b/src/devices/bus/ql/sandy_superqboard.cpp index 0508b835982..03b9a09c92c 100644 --- a/src/devices/bus/ql/sandy_superqboard.cpp +++ b/src/devices/bus/ql/sandy_superqboard.cpp @@ -53,7 +53,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *sandy_superqboard_t::device_rom_region() const +const tiny_rom_entry *sandy_superqboard_t::device_rom_region() const { return ROM_NAME( sandy_superqboard ); } diff --git a/src/devices/bus/ql/sandy_superqboard.h b/src/devices/bus/ql/sandy_superqboard.h index 286e224f962..5aefdc250ed 100644 --- a/src/devices/bus/ql/sandy_superqboard.h +++ b/src/devices/bus/ql/sandy_superqboard.h @@ -33,7 +33,7 @@ public: sandy_superqboard_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int ram_size); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; WRITE_LINE_MEMBER( busy_w ); diff --git a/src/devices/bus/ql/trumpcard.cpp b/src/devices/bus/ql/trumpcard.cpp index cd2a829c3b8..c4c334efed0 100644 --- a/src/devices/bus/ql/trumpcard.cpp +++ b/src/devices/bus/ql/trumpcard.cpp @@ -56,7 +56,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *ql_trump_card_t::device_rom_region() const +const tiny_rom_entry *ql_trump_card_t::device_rom_region() const { return ROM_NAME( ql_trump_card ); } diff --git a/src/devices/bus/ql/trumpcard.h b/src/devices/bus/ql/trumpcard.h index d8675a8459c..21ec7109712 100644 --- a/src/devices/bus/ql/trumpcard.h +++ b/src/devices/bus/ql/trumpcard.h @@ -32,7 +32,7 @@ public: ql_trump_card_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int ram_size); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); diff --git a/src/devices/bus/s100/dj2db.cpp b/src/devices/bus/s100/dj2db.cpp index ca144a8f82a..2d068245c47 100644 --- a/src/devices/bus/s100/dj2db.cpp +++ b/src/devices/bus/s100/dj2db.cpp @@ -53,7 +53,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *s100_dj2db_device::device_rom_region() const +const tiny_rom_entry *s100_dj2db_device::device_rom_region() const { return ROM_NAME( dj2db ); } diff --git a/src/devices/bus/s100/dj2db.h b/src/devices/bus/s100/dj2db.h index a8504cee1cf..725b2f3144a 100644 --- a/src/devices/bus/s100/dj2db.h +++ b/src/devices/bus/s100/dj2db.h @@ -32,7 +32,7 @@ public: s100_dj2db_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/s100/djdma.cpp b/src/devices/bus/s100/djdma.cpp index c0d93aed2f5..0d75e497040 100644 --- a/src/devices/bus/s100/djdma.cpp +++ b/src/devices/bus/s100/djdma.cpp @@ -48,7 +48,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *s100_djdma_device::device_rom_region() const +const tiny_rom_entry *s100_djdma_device::device_rom_region() const { return ROM_NAME( djdma ); } diff --git a/src/devices/bus/s100/djdma.h b/src/devices/bus/s100/djdma.h index e1ac5d2d95d..a21e717493c 100644 --- a/src/devices/bus/s100/djdma.h +++ b/src/devices/bus/s100/djdma.h @@ -32,7 +32,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/s100/mm65k16s.cpp b/src/devices/bus/s100/mm65k16s.cpp index 22240dd789a..1a6af3c4c89 100644 --- a/src/devices/bus/s100/mm65k16s.cpp +++ b/src/devices/bus/s100/mm65k16s.cpp @@ -42,7 +42,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *s100_mm65k16s_device::device_rom_region() const +const tiny_rom_entry *s100_mm65k16s_device::device_rom_region() const { return ROM_NAME( mm65k16s ); } diff --git a/src/devices/bus/s100/mm65k16s.h b/src/devices/bus/s100/mm65k16s.h index 7a9c50ad1aa..c8ec89af58c 100644 --- a/src/devices/bus/s100/mm65k16s.h +++ b/src/devices/bus/s100/mm65k16s.h @@ -30,7 +30,7 @@ public: s100_mm65k16s_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; protected: diff --git a/src/devices/bus/s100/nsmdsa.cpp b/src/devices/bus/s100/nsmdsa.cpp index 91fb4f46135..d892c1931e7 100644 --- a/src/devices/bus/s100/nsmdsa.cpp +++ b/src/devices/bus/s100/nsmdsa.cpp @@ -36,7 +36,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *s100_mds_a_device::device_rom_region() const +const tiny_rom_entry *s100_mds_a_device::device_rom_region() const { return ROM_NAME( mds_a ); } diff --git a/src/devices/bus/s100/nsmdsa.h b/src/devices/bus/s100/nsmdsa.h index bdf170fb869..3eb7f4049e4 100644 --- a/src/devices/bus/s100/nsmdsa.h +++ b/src/devices/bus/s100/nsmdsa.h @@ -31,7 +31,7 @@ public: s100_mds_a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/s100/nsmdsad.cpp b/src/devices/bus/s100/nsmdsad.cpp index d1a06407c6d..191c265cf59 100644 --- a/src/devices/bus/s100/nsmdsad.cpp +++ b/src/devices/bus/s100/nsmdsad.cpp @@ -37,7 +37,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *s100_mds_ad_device::device_rom_region() const +const tiny_rom_entry *s100_mds_ad_device::device_rom_region() const { return ROM_NAME( mds_ad ); } diff --git a/src/devices/bus/s100/nsmdsad.h b/src/devices/bus/s100/nsmdsad.h index 0f524af48bd..105a526b0a6 100644 --- a/src/devices/bus/s100/nsmdsad.h +++ b/src/devices/bus/s100/nsmdsad.h @@ -31,7 +31,7 @@ public: s100_mds_ad_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/scsi/omti5100.cpp b/src/devices/bus/scsi/omti5100.cpp index 9dd436f4acb..c2c56ff5175 100644 --- a/src/devices/bus/scsi/omti5100.cpp +++ b/src/devices/bus/scsi/omti5100.cpp @@ -17,7 +17,7 @@ ROM_START( omti5100 ) ROM_LOAD("100240-N.7a", 0x0000, 0x1000, CRC(d227d6cb) SHA1(3d6140764d3d043428c941826370ebf1597c63bd)) ROM_END -const rom_entry *omti5100_device::device_rom_region() const +const tiny_rom_entry *omti5100_device::device_rom_region() const { return ROM_NAME( omti5100 ); } diff --git a/src/devices/bus/scsi/s1410.cpp b/src/devices/bus/scsi/s1410.cpp index dba1e0bb7fd..eaeaf51d461 100644 --- a/src/devices/bus/scsi/s1410.cpp +++ b/src/devices/bus/scsi/s1410.cpp @@ -122,7 +122,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *s1410_device::device_rom_region() const +const tiny_rom_entry *s1410_device::device_rom_region() const { return ROM_NAME( s1410 ); } diff --git a/src/devices/bus/scsi/s1410.h b/src/devices/bus/scsi/s1410.h index 519c013b066..c17d6e349ed 100644 --- a/src/devices/bus/scsi/s1410.h +++ b/src/devices/bus/scsi/s1410.h @@ -20,7 +20,7 @@ public: s1410_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void ExecCommand() override; diff --git a/src/devices/bus/scsi/sa1403d.cpp b/src/devices/bus/scsi/sa1403d.cpp index 1abe47e0805..1e8e3a512cf 100644 --- a/src/devices/bus/scsi/sa1403d.cpp +++ b/src/devices/bus/scsi/sa1403d.cpp @@ -46,7 +46,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *sa1403d_device::device_rom_region() const +const tiny_rom_entry *sa1403d_device::device_rom_region() const { return ROM_NAME( sa1403d ); } diff --git a/src/devices/bus/scsi/sa1403d.h b/src/devices/bus/scsi/sa1403d.h index 308be3b5b48..3241b0aa782 100644 --- a/src/devices/bus/scsi/sa1403d.h +++ b/src/devices/bus/scsi/sa1403d.h @@ -21,7 +21,7 @@ public: sa1403d_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/snes/upd.cpp b/src/devices/bus/snes/upd.cpp index 056f462e2fa..611b84f6610 100644 --- a/src/devices/bus/snes/upd.cpp +++ b/src/devices/bus/snes/upd.cpp @@ -525,42 +525,42 @@ ROM_START( snes_st011 ) ROM_LOAD( "st011.bin", 0, 0x11000, CRC(34d2952c) SHA1(1375b8c1efc8cae4962b57dfe22f6b78e1ddacc8) ) ROM_END -const rom_entry *sns_rom20_necdsp1_legacy_device::device_rom_region() const +const tiny_rom_entry *sns_rom20_necdsp1_legacy_device::device_rom_region() const { return ROM_NAME( snes_dsp1 ); } -const rom_entry *sns_rom20_necdsp1b_legacy_device::device_rom_region() const +const tiny_rom_entry *sns_rom20_necdsp1b_legacy_device::device_rom_region() const { return ROM_NAME( snes_dsp1b ); } -const rom_entry *sns_rom20_necdsp2_legacy_device::device_rom_region() const +const tiny_rom_entry *sns_rom20_necdsp2_legacy_device::device_rom_region() const { return ROM_NAME( snes_dsp2 ); } -const rom_entry *sns_rom20_necdsp3_legacy_device::device_rom_region() const +const tiny_rom_entry *sns_rom20_necdsp3_legacy_device::device_rom_region() const { return ROM_NAME( snes_dsp3 ); } -const rom_entry *sns_rom20_necdsp4_legacy_device::device_rom_region() const +const tiny_rom_entry *sns_rom20_necdsp4_legacy_device::device_rom_region() const { return ROM_NAME( snes_dsp4 ); } -const rom_entry *sns_rom21_necdsp1_legacy_device::device_rom_region() const +const tiny_rom_entry *sns_rom21_necdsp1_legacy_device::device_rom_region() const { return ROM_NAME( snes_dsp1 ); } -const rom_entry *sns_rom_seta10dsp_legacy_device::device_rom_region() const +const tiny_rom_entry *sns_rom_seta10dsp_legacy_device::device_rom_region() const { return ROM_NAME( snes_st010 ); } -const rom_entry *sns_rom_seta11dsp_legacy_device::device_rom_region() const +const tiny_rom_entry *sns_rom_seta11dsp_legacy_device::device_rom_region() const { return ROM_NAME( snes_st011 ); } diff --git a/src/devices/bus/snes/upd.h b/src/devices/bus/snes/upd.h index 815b5b2a42c..653ee71d9e4 100644 --- a/src/devices/bus/snes/upd.h +++ b/src/devices/bus/snes/upd.h @@ -131,7 +131,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sns_rom20_necdsp1b_legacy_device : public sns_rom20_necdsp_device @@ -142,7 +142,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sns_rom20_necdsp2_legacy_device : public sns_rom20_necdsp_device @@ -153,7 +153,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sns_rom20_necdsp3_legacy_device : public sns_rom20_necdsp_device @@ -164,7 +164,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sns_rom20_necdsp4_legacy_device : public sns_rom20_necdsp_device @@ -175,7 +175,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sns_rom21_necdsp1_legacy_device : public sns_rom21_necdsp_device @@ -186,7 +186,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sns_rom_seta10dsp_legacy_device : public sns_rom_setadsp_device @@ -197,7 +197,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sns_rom_seta11dsp_legacy_device : public sns_rom_setadsp_device @@ -208,7 +208,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; extern const device_type SNS_LOROM_NECDSP1_LEG; diff --git a/src/devices/bus/spc1000/fdd.cpp b/src/devices/bus/spc1000/fdd.cpp index 40c5496b873..5e624862e23 100644 --- a/src/devices/bus/spc1000/fdd.cpp +++ b/src/devices/bus/spc1000/fdd.cpp @@ -114,7 +114,7 @@ ROM_END // device_rom_region //------------------------------------------------- -const rom_entry *spc1000_fdd_exp_device::device_rom_region() const +const tiny_rom_entry *spc1000_fdd_exp_device::device_rom_region() const { return ROM_NAME( spc1000_fdd ); } diff --git a/src/devices/bus/spc1000/fdd.h b/src/devices/bus/spc1000/fdd.h index ea8366770b0..51c53d74f1f 100644 --- a/src/devices/bus/spc1000/fdd.h +++ b/src/devices/bus/spc1000/fdd.h @@ -23,7 +23,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; public: // device-level overrides diff --git a/src/devices/bus/svi3x8/expander/sv603.cpp b/src/devices/bus/svi3x8/expander/sv603.cpp index ccfa2efc2c7..f6baca7d2ac 100644 --- a/src/devices/bus/svi3x8/expander/sv603.cpp +++ b/src/devices/bus/svi3x8/expander/sv603.cpp @@ -25,7 +25,7 @@ ROM_START( sv603 ) ROM_LOAD("sv603.ic10", 0x0000, 0x2000, CRC(19e91b82) SHA1(8a30abe5ffef810b0f99b86db38b1b3c9d259b78)) ROM_END -const rom_entry *sv603_device::device_rom_region() const +const tiny_rom_entry *sv603_device::device_rom_region() const { return ROM_NAME( sv603 ); } diff --git a/src/devices/bus/svi3x8/expander/sv603.h b/src/devices/bus/svi3x8/expander/sv603.h index 1045d6e3567..eb58a51b003 100644 --- a/src/devices/bus/svi3x8/expander/sv603.h +++ b/src/devices/bus/svi3x8/expander/sv603.h @@ -39,7 +39,7 @@ public: DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cartridge); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/bus/svi3x8/slot/sv806.cpp b/src/devices/bus/svi3x8/slot/sv806.cpp index 4cce2deaec4..87f35b268f7 100644 --- a/src/devices/bus/svi3x8/slot/sv806.cpp +++ b/src/devices/bus/svi3x8/slot/sv806.cpp @@ -27,7 +27,7 @@ ROM_START( sv806 ) ROMX_LOAD("sv806se.ic27", 0x0000, 0x1000, CRC(daea8956) SHA1(3f16d5513ad35692488ae7d864f660e76c6e8ed3), ROM_BIOS(2)) ROM_END -const rom_entry *sv806_device::device_rom_region() const +const tiny_rom_entry *sv806_device::device_rom_region() const { return ROM_NAME( sv806 ); } diff --git a/src/devices/bus/svi3x8/slot/sv806.h b/src/devices/bus/svi3x8/slot/sv806.h index 4782faa4812..2a3071ed8ec 100644 --- a/src/devices/bus/svi3x8/slot/sv806.h +++ b/src/devices/bus/svi3x8/slot/sv806.h @@ -36,7 +36,7 @@ public: MC6845_UPDATE_ROW(crtc_update_row); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; diff --git a/src/devices/bus/ti99_peb/bwg.cpp b/src/devices/bus/ti99_peb/bwg.cpp index 18d295c21de..c5c9796a084 100644 --- a/src/devices/bus/ti99_peb/bwg.cpp +++ b/src/devices/bus/ti99_peb/bwg.cpp @@ -697,7 +697,7 @@ ioport_constructor snug_bwg_device::device_input_ports() const return INPUT_PORTS_NAME( bwg_fdc ); } -const rom_entry *snug_bwg_device::device_rom_region() const +const tiny_rom_entry *snug_bwg_device::device_rom_region() const { return ROM_NAME( bwg_fdc ); } diff --git a/src/devices/bus/ti99_peb/evpc.cpp b/src/devices/bus/ti99_peb/evpc.cpp index 96f7f2baa9e..1f3b00c0e19 100644 --- a/src/devices/bus/ti99_peb/evpc.cpp +++ b/src/devices/bus/ti99_peb/evpc.cpp @@ -453,7 +453,7 @@ INPUT_PORTS_START( ti99_evpc ) PORT_DIPSETTING( 0x01, "NOVRAM" ) INPUT_PORTS_END -const rom_entry *snug_enhanced_video_device::device_rom_region() const +const tiny_rom_entry *snug_enhanced_video_device::device_rom_region() const { return ROM_NAME( ti99_evpc ); } diff --git a/src/devices/bus/ti99_peb/evpc.h b/src/devices/bus/ti99_peb/evpc.h index f7423f6011d..0556c17bf64 100644 --- a/src/devices/bus/ti99_peb/evpc.h +++ b/src/devices/bus/ti99_peb/evpc.h @@ -51,7 +51,7 @@ protected: void device_reset(void) override; void device_stop(void) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; machine_config_constructor device_mconfig_additions() const override; diff --git a/src/devices/bus/ti99_peb/hfdc.cpp b/src/devices/bus/ti99_peb/hfdc.cpp index 54cf7b06310..0a84e0ec54f 100644 --- a/src/devices/bus/ti99_peb/hfdc.cpp +++ b/src/devices/bus/ti99_peb/hfdc.cpp @@ -1068,7 +1068,7 @@ machine_config_constructor myarc_hfdc_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( ti99_hfdc ); } -const rom_entry *myarc_hfdc_device::device_rom_region() const +const tiny_rom_entry *myarc_hfdc_device::device_rom_region() const { return ROM_NAME( ti99_hfdc ); } diff --git a/src/devices/bus/ti99_peb/myarcmem.cpp b/src/devices/bus/ti99_peb/myarcmem.cpp index b2bc44d5815..d6a8b0fa0a1 100644 --- a/src/devices/bus/ti99_peb/myarcmem.cpp +++ b/src/devices/bus/ti99_peb/myarcmem.cpp @@ -200,7 +200,7 @@ machine_config_constructor myarc_memory_expansion_device::device_mconfig_additio return MACHINE_CONFIG_NAME( myarc_exp ); } -const rom_entry *myarc_memory_expansion_device::device_rom_region() const +const tiny_rom_entry *myarc_memory_expansion_device::device_rom_region() const { return ROM_NAME( myarc_exp ); } diff --git a/src/devices/bus/ti99_peb/pcode.cpp b/src/devices/bus/ti99_peb/pcode.cpp index 1a396729e5d..0d4153f5616 100644 --- a/src/devices/bus/ti99_peb/pcode.cpp +++ b/src/devices/bus/ti99_peb/pcode.cpp @@ -352,7 +352,7 @@ machine_config_constructor ti_pcode_card_device::device_mconfig_additions() cons return MACHINE_CONFIG_NAME( ti99_pcode ); } -const rom_entry *ti_pcode_card_device::device_rom_region() const +const tiny_rom_entry *ti_pcode_card_device::device_rom_region() const { return ROM_NAME( ti99_pcode ); } diff --git a/src/devices/bus/ti99_peb/pcode.h b/src/devices/bus/ti99_peb/pcode.h index c08f5b201b5..dfb2fb1a371 100644 --- a/src/devices/bus/ti99_peb/pcode.h +++ b/src/devices/bus/ti99_peb/pcode.h @@ -40,7 +40,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_config_complete() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ti99_peb/spchsyn.cpp b/src/devices/bus/ti99_peb/spchsyn.cpp index 1dd617cb5e9..798d552a564 100644 --- a/src/devices/bus/ti99_peb/spchsyn.cpp +++ b/src/devices/bus/ti99_peb/spchsyn.cpp @@ -161,7 +161,7 @@ machine_config_constructor ti_speech_synthesizer_device::device_mconfig_addition return MACHINE_CONFIG_NAME( ti99_speech ); } -const rom_entry *ti_speech_synthesizer_device::device_rom_region() const +const tiny_rom_entry *ti_speech_synthesizer_device::device_rom_region() const { return ROM_NAME( ti99_speech ); } diff --git a/src/devices/bus/ti99_peb/spchsyn.h b/src/devices/bus/ti99_peb/spchsyn.h index 28113ebbfea..6841e397793 100644 --- a/src/devices/bus/ti99_peb/spchsyn.h +++ b/src/devices/bus/ti99_peb/spchsyn.h @@ -35,7 +35,7 @@ public: protected: virtual void device_start() override; virtual void device_reset(void) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; private: diff --git a/src/devices/bus/ti99_peb/ti_fdc.cpp b/src/devices/bus/ti99_peb/ti_fdc.cpp index 2b028459eb8..df24aea6580 100644 --- a/src/devices/bus/ti99_peb/ti_fdc.cpp +++ b/src/devices/bus/ti99_peb/ti_fdc.cpp @@ -427,7 +427,7 @@ machine_config_constructor ti_fdc_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( ti_fdc ); } -const rom_entry *ti_fdc_device::device_rom_region() const +const tiny_rom_entry *ti_fdc_device::device_rom_region() const { return ROM_NAME( ti_fdc ); } diff --git a/src/devices/bus/ti99_peb/ti_rs232.cpp b/src/devices/bus/ti99_peb/ti_rs232.cpp index 3a54f023870..8678d34df33 100644 --- a/src/devices/bus/ti99_peb/ti_rs232.cpp +++ b/src/devices/bus/ti99_peb/ti_rs232.cpp @@ -1126,7 +1126,7 @@ machine_config_constructor ti_rs232_pio_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( ti_rs232 ); } -const rom_entry *ti_rs232_pio_device::device_rom_region() const +const tiny_rom_entry *ti_rs232_pio_device::device_rom_region() const { return ROM_NAME( ti_rs232 ); } diff --git a/src/devices/bus/ti99_peb/tn_ide.cpp b/src/devices/bus/ti99_peb/tn_ide.cpp index 3b9e9b1f6ce..a1698f11b02 100644 --- a/src/devices/bus/ti99_peb/tn_ide.cpp +++ b/src/devices/bus/ti99_peb/tn_ide.cpp @@ -371,7 +371,7 @@ machine_config_constructor nouspikel_ide_interface_device::device_mconfig_additi return MACHINE_CONFIG_NAME( tn_ide ); } -const rom_entry *nouspikel_ide_interface_device::device_rom_region() const +const tiny_rom_entry *nouspikel_ide_interface_device::device_rom_region() const { return ROM_NAME( tn_ide ); } diff --git a/src/devices/bus/ti99_peb/tn_ide.h b/src/devices/bus/ti99_peb/tn_ide.h index 52694555b3b..e4c213763b6 100644 --- a/src/devices/bus/ti99_peb/tn_ide.h +++ b/src/devices/bus/ti99_peb/tn_ide.h @@ -40,7 +40,7 @@ public: protected: virtual void device_start(void) override; virtual void device_reset(void) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ti99x/gromport.cpp b/src/devices/bus/ti99x/gromport.cpp index a41a5285a7f..b0539a7ad8f 100644 --- a/src/devices/bus/ti99x/gromport.cpp +++ b/src/devices/bus/ti99x/gromport.cpp @@ -1071,7 +1071,7 @@ ROM_START( gkracker_rom ) ROM_LOAD("gkracker.bin", 0x0000, 0x2000, CRC(86eaaf9f) SHA1(a3bd5257c63e190800921b52dbe3ffa91ad91113)) ROM_END -const rom_entry *gkracker_device::device_rom_region() const +const tiny_rom_entry *gkracker_device::device_rom_region() const { return ROM_NAME( gkracker_rom ); } @@ -1498,7 +1498,7 @@ ROM_START( cartridge_memory ) ROM_REGION(0x200000, CARTROM_TAG, ROMREGION_ERASE00) ROM_END -const rom_entry *ti99_cartridge_device::device_rom_region() const +const tiny_rom_entry *ti99_cartridge_device::device_rom_region() const { return ROM_NAME( cartridge_memory ); } diff --git a/src/devices/bus/ti99x/gromport.h b/src/devices/bus/ti99x/gromport.h index 81fa024f995..5ab93e0f673 100644 --- a/src/devices/bus/ti99x/gromport.h +++ b/src/devices/bus/ti99x/gromport.h @@ -103,7 +103,7 @@ protected: virtual void device_start() override { }; virtual void device_config_complete() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry* device_rom_region() const override; + virtual const tiny_rom_entry* device_rom_region() const override; // Image handling: implementation of methods which are abstract in the parent image_init_result call_load() override; @@ -261,7 +261,7 @@ protected: virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry* device_rom_region() const override; + virtual const tiny_rom_entry* device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; // device_nvram_interface diff --git a/src/devices/bus/tiki100/8088.cpp b/src/devices/bus/tiki100/8088.cpp index d8c9fe201b5..e3bc01908fb 100644 --- a/src/devices/bus/tiki100/8088.cpp +++ b/src/devices/bus/tiki100/8088.cpp @@ -42,7 +42,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *tiki100_8088_t::device_rom_region() const +const tiny_rom_entry *tiki100_8088_t::device_rom_region() const { return ROM_NAME( tiki100_8088 ); } diff --git a/src/devices/bus/tiki100/8088.h b/src/devices/bus/tiki100/8088.h index 7ce0fe64776..3b019131472 100644 --- a/src/devices/bus/tiki100/8088.h +++ b/src/devices/bus/tiki100/8088.h @@ -31,7 +31,7 @@ public: tiki100_8088_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ8_MEMBER( read ); diff --git a/src/devices/bus/tvc/hbf.cpp b/src/devices/bus/tvc/hbf.cpp index 8fd354a18c4..e8de66ebc07 100644 --- a/src/devices/bus/tvc/hbf.cpp +++ b/src/devices/bus/tvc/hbf.cpp @@ -98,7 +98,7 @@ machine_config_constructor tvc_hbf_device::device_mconfig_additions() const // device_rom_region //------------------------------------------------- -const rom_entry *tvc_hbf_device::device_rom_region() const +const tiny_rom_entry *tvc_hbf_device::device_rom_region() const { return ROM_NAME( tvc_hbf ); } diff --git a/src/devices/bus/tvc/hbf.h b/src/devices/bus/tvc/hbf.h index da677aa617e..83d98d8a0cb 100644 --- a/src/devices/bus/tvc/hbf.h +++ b/src/devices/bus/tvc/hbf.h @@ -27,7 +27,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_FLOPPY_FORMATS( floppy_formats ); diff --git a/src/devices/bus/vic20/fe3.cpp b/src/devices/bus/vic20/fe3.cpp index 9c24b0de19e..1c07b296f98 100644 --- a/src/devices/bus/vic20/fe3.cpp +++ b/src/devices/bus/vic20/fe3.cpp @@ -75,7 +75,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *vic20_final_expansion_3_t::device_rom_region() const +const tiny_rom_entry *vic20_final_expansion_3_t::device_rom_region() const { return ROM_NAME( vic20_fe3 ); } diff --git a/src/devices/bus/vic20/fe3.h b/src/devices/bus/vic20/fe3.h index 93669f5ace3..01a4a743c63 100644 --- a/src/devices/bus/vic20/fe3.h +++ b/src/devices/bus/vic20/fe3.h @@ -31,7 +31,7 @@ public: vic20_final_expansion_3_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/vip/vp700.cpp b/src/devices/bus/vip/vp700.cpp index 7d9b32536a7..bfdfd488067 100644 --- a/src/devices/bus/vip/vp700.cpp +++ b/src/devices/bus/vip/vp700.cpp @@ -30,7 +30,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *vp700_device::device_rom_region() const +const tiny_rom_entry *vp700_device::device_rom_region() const { return ROM_NAME( vp700 ); } diff --git a/src/devices/bus/vip/vp700.h b/src/devices/bus/vip/vp700.h index 2631dc01c62..f3e515928a9 100644 --- a/src/devices/bus/vip/vp700.h +++ b/src/devices/bus/vip/vp700.h @@ -31,7 +31,7 @@ public: vp700_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/bus/vtech/memexp/floppy.cpp b/src/devices/bus/vtech/memexp/floppy.cpp index afe88fce06a..6f3196f64e0 100644 --- a/src/devices/bus/vtech/memexp/floppy.cpp +++ b/src/devices/bus/vtech/memexp/floppy.cpp @@ -34,7 +34,7 @@ ROM_START( floppy ) ROM_LOAD("vzdos.rom", 0x0000, 0x2000, CRC(b6ed6084) SHA1(59d1cbcfa6c5e1906a32704fbf0d9670f0d1fd8b)) ROM_END -const rom_entry *floppy_controller_device::device_rom_region() const +const tiny_rom_entry *floppy_controller_device::device_rom_region() const { return ROM_NAME( floppy ); } diff --git a/src/devices/bus/vtech/memexp/floppy.h b/src/devices/bus/vtech/memexp/floppy.h index 7b01c742d07..e12dea6ffb2 100644 --- a/src/devices/bus/vtech/memexp/floppy.h +++ b/src/devices/bus/vtech/memexp/floppy.h @@ -39,7 +39,7 @@ public: DECLARE_READ8_MEMBER(wpt_r); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/bus/vtech/memexp/rs232.cpp b/src/devices/bus/vtech/memexp/rs232.cpp index 188f473514b..254664acbf7 100644 --- a/src/devices/bus/vtech/memexp/rs232.cpp +++ b/src/devices/bus/vtech/memexp/rs232.cpp @@ -24,7 +24,7 @@ ROM_START( rs232 ) ROM_LOAD("rs232_v15.ic2", 0x000, 0x800, CRC(6545260d) SHA1(4042f6f1e09e383f3c92f628c6187dc5f072fdb2)) ROM_END -const rom_entry *rs232_interface_device::device_rom_region() const +const tiny_rom_entry *rs232_interface_device::device_rom_region() const { return ROM_NAME( rs232 ); } diff --git a/src/devices/bus/vtech/memexp/rs232.h b/src/devices/bus/vtech/memexp/rs232.h index 23c91004533..eef273da255 100644 --- a/src/devices/bus/vtech/memexp/rs232.h +++ b/src/devices/bus/vtech/memexp/rs232.h @@ -33,7 +33,7 @@ public: DECLARE_WRITE8_MEMBER( transmit_data_w ); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/bus/vtech/memexp/rtty.cpp b/src/devices/bus/vtech/memexp/rtty.cpp index fa1438461f3..b44a81c370a 100644 --- a/src/devices/bus/vtech/memexp/rtty.cpp +++ b/src/devices/bus/vtech/memexp/rtty.cpp @@ -24,7 +24,7 @@ ROM_START( rtty ) ROM_LOAD("vzrtty.ic3", 0x0000, 0x1000, CRC(ccf4289b) SHA1(de737ef0e0b582b3102da473836af1fa159a2e78)) ROM_END -const rom_entry *rtty_interface_device::device_rom_region() const +const tiny_rom_entry *rtty_interface_device::device_rom_region() const { return ROM_NAME( rtty ); } diff --git a/src/devices/bus/vtech/memexp/rtty.h b/src/devices/bus/vtech/memexp/rtty.h index 1bc25eca77a..1b96c611ece 100644 --- a/src/devices/bus/vtech/memexp/rtty.h +++ b/src/devices/bus/vtech/memexp/rtty.h @@ -32,7 +32,7 @@ public: DECLARE_WRITE8_MEMBER( relay_w ); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/bus/vtech/memexp/wordpro.cpp b/src/devices/bus/vtech/memexp/wordpro.cpp index 1a038bcf0ac..1eb51c23d82 100644 --- a/src/devices/bus/vtech/memexp/wordpro.cpp +++ b/src/devices/bus/vtech/memexp/wordpro.cpp @@ -26,7 +26,7 @@ ROM_START( wordpro ) ROM_LOAD("wordpro.u5", 0x2000, 0x1000, CRC(2a336802) SHA1(b4de50f943243f18a2bfabef354b76d77178c189)) ROM_END -const rom_entry *wordpro_device::device_rom_region() const +const tiny_rom_entry *wordpro_device::device_rom_region() const { return ROM_NAME( wordpro ); } diff --git a/src/devices/bus/vtech/memexp/wordpro.h b/src/devices/bus/vtech/memexp/wordpro.h index 79e78735cd4..288a7fb565d 100644 --- a/src/devices/bus/vtech/memexp/wordpro.h +++ b/src/devices/bus/vtech/memexp/wordpro.h @@ -28,7 +28,7 @@ public: wordpro_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; virtual void device_reset() override; }; diff --git a/src/devices/bus/wangpc/lic.cpp b/src/devices/bus/wangpc/lic.cpp index cebc359a942..c14dce7a5d3 100644 --- a/src/devices/bus/wangpc/lic.cpp +++ b/src/devices/bus/wangpc/lic.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *wangpc_lic_device::device_rom_region() const +const tiny_rom_entry *wangpc_lic_device::device_rom_region() const { return ROM_NAME( wangpc_lic ); } diff --git a/src/devices/bus/wangpc/lic.h b/src/devices/bus/wangpc/lic.h index 98f9f83fd3a..071b26dde58 100644 --- a/src/devices/bus/wangpc/lic.h +++ b/src/devices/bus/wangpc/lic.h @@ -30,7 +30,7 @@ public: wangpc_lic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; protected: diff --git a/src/devices/bus/wangpc/rtc.cpp b/src/devices/bus/wangpc/rtc.cpp index 34279514870..6f9ffb171c7 100644 --- a/src/devices/bus/wangpc/rtc.cpp +++ b/src/devices/bus/wangpc/rtc.cpp @@ -45,7 +45,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *wangpc_rtc_device::device_rom_region() const +const tiny_rom_entry *wangpc_rtc_device::device_rom_region() const { return ROM_NAME( wangpc_rtc ); } diff --git a/src/devices/bus/wangpc/rtc.h b/src/devices/bus/wangpc/rtc.h index f59de8c8139..3265e895f72 100644 --- a/src/devices/bus/wangpc/rtc.h +++ b/src/devices/bus/wangpc/rtc.h @@ -34,7 +34,7 @@ public: wangpc_rtc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/wangpc/tig.cpp b/src/devices/bus/wangpc/tig.cpp index 519758ba12a..c808ac69622 100644 --- a/src/devices/bus/wangpc/tig.cpp +++ b/src/devices/bus/wangpc/tig.cpp @@ -70,7 +70,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *wangpc_tig_device::device_rom_region() const +const tiny_rom_entry *wangpc_tig_device::device_rom_region() const { return ROM_NAME( wangpc_tig ); } diff --git a/src/devices/bus/wangpc/tig.h b/src/devices/bus/wangpc/tig.h index 8f9f8f9a5eb..fd9d3fc12a0 100644 --- a/src/devices/bus/wangpc/tig.h +++ b/src/devices/bus/wangpc/tig.h @@ -31,7 +31,7 @@ public: wangpc_tig_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); diff --git a/src/devices/bus/wangpc/wdc.cpp b/src/devices/bus/wangpc/wdc.cpp index b4326319cf3..740a16e5c8c 100644 --- a/src/devices/bus/wangpc/wdc.cpp +++ b/src/devices/bus/wangpc/wdc.cpp @@ -53,7 +53,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *wangpc_wdc_device::device_rom_region() const +const tiny_rom_entry *wangpc_wdc_device::device_rom_region() const { return ROM_NAME( wangpc_wdc ); } diff --git a/src/devices/bus/wangpc/wdc.h b/src/devices/bus/wangpc/wdc.h index fd8edbcbfdf..7657c77dfe2 100644 --- a/src/devices/bus/wangpc/wdc.h +++ b/src/devices/bus/wangpc/wdc.h @@ -33,7 +33,7 @@ public: wangpc_wdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // not really public diff --git a/src/devices/bus/x68k/x68k_scsiext.cpp b/src/devices/bus/x68k/x68k_scsiext.cpp index 960721458f0..e6414a4a9b5 100644 --- a/src/devices/bus/x68k/x68k_scsiext.cpp +++ b/src/devices/bus/x68k/x68k_scsiext.cpp @@ -29,7 +29,7 @@ ROM_START( x68k_cz6bs1 ) ROM_LOAD16_WORD_SWAP( "scsiexrom.bin", 0x0000, 0x2000, CRC(7be488de) SHA1(49616c09a8986ffe6a12ad600febe512f7ba8ae4) ) ROM_END -const rom_entry *x68k_scsiext_device::device_rom_region() const +const tiny_rom_entry *x68k_scsiext_device::device_rom_region() const { return ROM_NAME( x68k_cz6bs1 ); } diff --git a/src/devices/bus/x68k/x68k_scsiext.h b/src/devices/bus/x68k/x68k_scsiext.h index 7cd45c2c6da..3477daa7ad3 100644 --- a/src/devices/bus/x68k/x68k_scsiext.h +++ b/src/devices/bus/x68k/x68k_scsiext.h @@ -22,7 +22,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; void irq_w(int state); void drq_w(int state); diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp index dc82e9721c1..1b9c4e42f40 100644 --- a/src/devices/cpu/alto2/alto2cpu.cpp +++ b/src/devices/cpu/alto2/alto2cpu.cpp @@ -347,7 +347,7 @@ ROM_START( alto2_cpu ) ROM_LOAD( "enet.a49", 00000, 00400, CRC(4d2dcdb2) SHA1(583327a7d70cd02702c941c0e43c1e9408ff7fd0) ) ROM_END -const rom_entry *alto2_cpu_device::device_rom_region() const +const tiny_rom_entry *alto2_cpu_device::device_rom_region() const { return ROM_NAME( alto2_cpu ); } diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h index 821286ae2fa..63d1e634aae 100644 --- a/src/devices/cpu/alto2/alto2cpu.h +++ b/src/devices/cpu/alto2/alto2cpu.h @@ -233,7 +233,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; //! device (P)ROMs - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; //! device_state_interface overrides void state_string_export(const device_state_entry &entry, std::string &str) const override; diff --git a/src/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp index f826df04246..6a90630b5a1 100644 --- a/src/devices/cpu/tms32031/tms32031.cpp +++ b/src/devices/cpu/tms32031/tms32031.cpp @@ -323,7 +323,7 @@ tms3203x_device::~tms3203x_device() // internal ROM region //------------------------------------------------- -const rom_entry *tms3203x_device::device_rom_region() const +const tiny_rom_entry *tms3203x_device::device_rom_region() const { switch (m_chip_type) { diff --git a/src/devices/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h index 4ce0decf010..d8fa5125c3d 100644 --- a/src/devices/cpu/tms32031/tms32031.h +++ b/src/devices/cpu/tms32031/tms32031.h @@ -164,7 +164,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // device_execute_interface overrides virtual UINT32 execute_min_cycles() const override; diff --git a/src/devices/machine/at_keybc.cpp b/src/devices/machine/at_keybc.cpp index c77e6c8eed2..f6e5b76283c 100644 --- a/src/devices/machine/at_keybc.cpp +++ b/src/devices/machine/at_keybc.cpp @@ -75,7 +75,7 @@ at_keyboard_controller_device::at_keyboard_controller_device(const machine_confi // internal ROM region //------------------------------------------------- -const rom_entry *at_keyboard_controller_device::device_rom_region() const +const tiny_rom_entry *at_keyboard_controller_device::device_rom_region() const { return ROM_NAME(at_keybc); } diff --git a/src/devices/machine/at_keybc.h b/src/devices/machine/at_keybc.h index d6ff52d6975..5854f0f4f5d 100644 --- a/src/devices/machine/at_keybc.h +++ b/src/devices/machine/at_keybc.h @@ -78,7 +78,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual machine_config_constructor device_mconfig_additions() const override; diff --git a/src/devices/machine/i80130.cpp b/src/devices/machine/i80130.cpp index fee62312f7e..83c840fa30d 100644 --- a/src/devices/machine/i80130.cpp +++ b/src/devices/machine/i80130.cpp @@ -87,7 +87,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *i80130_device::device_rom_region() const +const tiny_rom_entry *i80130_device::device_rom_region() const { return ROM_NAME( i80130 ); } diff --git a/src/devices/machine/i80130.h b/src/devices/machine/i80130.h index 1625fd8fc45..d5ef5800011 100644 --- a/src/devices/machine/i80130.h +++ b/src/devices/machine/i80130.h @@ -64,7 +64,7 @@ public: virtual DECLARE_ADDRESS_MAP(io_map, 16); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; UINT8 inta_r() { return m_pic->acknowledge(); } diff --git a/src/devices/machine/ldp1000.cpp b/src/devices/machine/ldp1000.cpp index df211f56d5a..5e04009b1fa 100644 --- a/src/devices/machine/ldp1000.cpp +++ b/src/devices/machine/ldp1000.cpp @@ -82,7 +82,7 @@ void sony_ldp1000_device::device_reset() // ROM region definitions //------------------------------------------------- -const rom_entry *sony_ldp1000_device::device_rom_region() const +const tiny_rom_entry *sony_ldp1000_device::device_rom_region() const { return ROM_NAME(ldp1000); } diff --git a/src/devices/machine/ldp1000.h b/src/devices/machine/ldp1000.h index e759442fa57..6d6f94a62c3 100644 --- a/src/devices/machine/ldp1000.h +++ b/src/devices/machine/ldp1000.h @@ -45,7 +45,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override; virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override; diff --git a/src/devices/machine/ldp1450.cpp b/src/devices/machine/ldp1450.cpp index c94da138188..477d3e3421b 100644 --- a/src/devices/machine/ldp1450.cpp +++ b/src/devices/machine/ldp1450.cpp @@ -93,7 +93,7 @@ void sony_ldp1450_device::device_reset() // ROM region definitions //------------------------------------------------- -const rom_entry *sony_ldp1450_device::device_rom_region() const +const tiny_rom_entry *sony_ldp1450_device::device_rom_region() const { return ROM_NAME(ldp1450); } diff --git a/src/devices/machine/ldp1450.h b/src/devices/machine/ldp1450.h index 225eff0eee9..0cc7291c5ec 100644 --- a/src/devices/machine/ldp1450.h +++ b/src/devices/machine/ldp1450.h @@ -44,7 +44,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const override; virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void player_vsync(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override; virtual INT32 player_update(const vbi_metadata &vbi, int fieldnum, const attotime &curtime) override; diff --git a/src/devices/machine/ldpr8210.cpp b/src/devices/machine/ldpr8210.cpp index 17b02edf276..12518a3ded9 100644 --- a/src/devices/machine/ldpr8210.cpp +++ b/src/devices/machine/ldpr8210.cpp @@ -385,7 +385,7 @@ void pioneer_pr8210_device::device_timer(emu_timer &timer, device_timer_id id, i // ROM region definitions //------------------------------------------------- -const rom_entry *pioneer_pr8210_device::device_rom_region() const +const tiny_rom_entry *pioneer_pr8210_device::device_rom_region() const { return ROM_NAME(pr8210); } @@ -1018,7 +1018,7 @@ void simutrek_special_device::device_timer(emu_timer &timer, device_timer_id id, // ROM region definitions //------------------------------------------------- -const rom_entry *simutrek_special_device::device_rom_region() const +const tiny_rom_entry *simutrek_special_device::device_rom_region() const { return ROM_NAME(simutrek); } diff --git a/src/devices/machine/ldpr8210.h b/src/devices/machine/ldpr8210.h index 7418df3336d..3cca97ce7b7 100644 --- a/src/devices/machine/ldpr8210.h +++ b/src/devices/machine/ldpr8210.h @@ -83,7 +83,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // subclass overrides @@ -164,7 +164,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // internal helpers diff --git a/src/devices/machine/ldv1000.cpp b/src/devices/machine/ldv1000.cpp index fb4cec974dd..81947c2b73f 100644 --- a/src/devices/machine/ldv1000.cpp +++ b/src/devices/machine/ldv1000.cpp @@ -282,7 +282,7 @@ void pioneer_ldv1000_device::device_timer(emu_timer &timer, device_timer_id id, // ROM region definitions //------------------------------------------------- -const rom_entry *pioneer_ldv1000_device::device_rom_region() const +const tiny_rom_entry *pioneer_ldv1000_device::device_rom_region() const { return ROM_NAME(ldv1000); } diff --git a/src/devices/machine/ldv1000.h b/src/devices/machine/ldv1000.h index 36f84f096a1..0ea017d4214 100644 --- a/src/devices/machine/ldv1000.h +++ b/src/devices/machine/ldv1000.h @@ -75,7 +75,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // subclass overrides diff --git a/src/devices/machine/ldvp931.cpp b/src/devices/machine/ldvp931.cpp index 716728b638b..712f70c2b2e 100644 --- a/src/devices/machine/ldvp931.cpp +++ b/src/devices/machine/ldvp931.cpp @@ -285,7 +285,7 @@ void phillips_22vp931_device::device_timer(emu_timer &timer, device_timer_id id, // ROM region definitions //------------------------------------------------- -const rom_entry *phillips_22vp931_device::device_rom_region() const +const tiny_rom_entry *phillips_22vp931_device::device_rom_region() const { return ROM_NAME(vp931); } diff --git a/src/devices/machine/ldvp931.h b/src/devices/machine/ldvp931.h index 8acd7ebf6bd..b35fa988039 100644 --- a/src/devices/machine/ldvp931.h +++ b/src/devices/machine/ldvp931.h @@ -76,7 +76,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; // subclass overrides diff --git a/src/devices/machine/mpu401.cpp b/src/devices/machine/mpu401.cpp index 98e4bb90b76..1dcbf1233f3 100644 --- a/src/devices/machine/mpu401.cpp +++ b/src/devices/machine/mpu401.cpp @@ -106,7 +106,7 @@ machine_config_constructor mpu401_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *mpu401_device::device_rom_region() const +const tiny_rom_entry *mpu401_device::device_rom_region() const { return ROM_NAME( mpu401 ); } diff --git a/src/devices/machine/mpu401.h b/src/devices/machine/mpu401.h index 4d3b8347eda..899ba727822 100644 --- a/src/devices/machine/mpu401.h +++ b/src/devices/machine/mpu401.h @@ -55,7 +55,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; private: diff --git a/src/devices/machine/pdc.cpp b/src/devices/machine/pdc.cpp index f5a75d87f72..445aeae094b 100644 --- a/src/devices/machine/pdc.cpp +++ b/src/devices/machine/pdc.cpp @@ -127,7 +127,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *pdc_device::device_rom_region() const +const tiny_rom_entry *pdc_device::device_rom_region() const { return ROM_NAME( pdc ); } diff --git a/src/devices/machine/pdc.h b/src/devices/machine/pdc.h index 1b3533af393..23cee250dcc 100644 --- a/src/devices/machine/pdc.h +++ b/src/devices/machine/pdc.h @@ -40,7 +40,7 @@ public: /* Optional information overrides */ virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; /* Callbacks */ template static devcb_base &m68k_r_callback(device_t &device, _Object object) { return downcast(device).m_m68k_r_cb.set_callback(object); } diff --git a/src/devices/machine/wozfdc.cpp b/src/devices/machine/wozfdc.cpp index 6428aae26c6..d85b8110e82 100644 --- a/src/devices/machine/wozfdc.cpp +++ b/src/devices/machine/wozfdc.cpp @@ -35,7 +35,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *wozfdc_device::device_rom_region() const +const tiny_rom_entry *wozfdc_device::device_rom_region() const { return ROM_NAME( diskiing ); } diff --git a/src/devices/machine/wozfdc.h b/src/devices/machine/wozfdc.h index 75247f62c8b..99e4177c7fb 100644 --- a/src/devices/machine/wozfdc.h +++ b/src/devices/machine/wozfdc.h @@ -33,7 +33,7 @@ public: wozfdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/sound/2608intf.cpp b/src/devices/sound/2608intf.cpp index 7c4a9d0739c..618a8aea4a8 100644 --- a/src/devices/sound/2608intf.cpp +++ b/src/devices/sound/2608intf.cpp @@ -226,7 +226,7 @@ ROM_START( ym2608 ) ROM_END -const rom_entry *ym2608_device::device_rom_region() const +const tiny_rom_entry *ym2608_device::device_rom_region() const { return ROM_NAME( ym2608 ); } diff --git a/src/devices/sound/2608intf.h b/src/devices/sound/2608intf.h index 0ec973b69ff..ea9f8a1cd4a 100644 --- a/src/devices/sound/2608intf.h +++ b/src/devices/sound/2608intf.h @@ -30,7 +30,7 @@ public: protected: // device-level overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; virtual void device_post_load() override; virtual void device_stop() override; diff --git a/src/devices/sound/bsmt2000.cpp b/src/devices/sound/bsmt2000.cpp index 00850252503..26df9eb080f 100644 --- a/src/devices/sound/bsmt2000.cpp +++ b/src/devices/sound/bsmt2000.cpp @@ -114,7 +114,7 @@ void bsmt2000_device::static_set_ready_callback(device_t &device, ready_callback // internal ROM region //------------------------------------------------- -const rom_entry *bsmt2000_device::device_rom_region() const +const tiny_rom_entry *bsmt2000_device::device_rom_region() const { return ROM_NAME( bsmt2000 ); } diff --git a/src/devices/sound/bsmt2000.h b/src/devices/sound/bsmt2000.h index befd8619d2d..41490230566 100644 --- a/src/devices/sound/bsmt2000.h +++ b/src/devices/sound/bsmt2000.h @@ -55,7 +55,7 @@ public: protected: // device-level overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/sound/qs1000.cpp b/src/devices/sound/qs1000.cpp index edb717b0c6c..07a8fc1223e 100644 --- a/src/devices/sound/qs1000.cpp +++ b/src/devices/sound/qs1000.cpp @@ -205,7 +205,7 @@ qs1000_device::qs1000_device(const machine_config &mconfig, const char *tag, dev // rom_region - return a pointer to the device's // internal ROM region //------------------------------------------------- -const rom_entry *qs1000_device::device_rom_region() const +const tiny_rom_entry *qs1000_device::device_rom_region() const { return m_external_rom ? nullptr : ROM_NAME( qs1000 ); } diff --git a/src/devices/sound/qs1000.h b/src/devices/sound/qs1000.h index d94d964ed19..48545485169 100644 --- a/src/devices/sound/qs1000.h +++ b/src/devices/sound/qs1000.h @@ -76,7 +76,7 @@ public: protected: // device-level overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/devices/sound/qsound.cpp b/src/devices/sound/qsound.cpp index cc5fc28560a..43bad4aa960 100644 --- a/src/devices/sound/qsound.cpp +++ b/src/devices/sound/qsound.cpp @@ -83,7 +83,7 @@ qsound_device::qsound_device(const machine_config &mconfig, const char *tag, dev // internal ROM region //------------------------------------------------- -const rom_entry *qsound_device::device_rom_region() const +const tiny_rom_entry *qsound_device::device_rom_region() const { return ROM_NAME( qsound ); } diff --git a/src/devices/sound/votrax.cpp b/src/devices/sound/votrax.cpp index cfd512782c7..3ce91bf6de8 100644 --- a/src/devices/sound/votrax.cpp +++ b/src/devices/sound/votrax.cpp @@ -1124,7 +1124,7 @@ osd_printf_debug("[PH=%02X]\n", m_latch_80); // internal ROM region //------------------------------------------------- -const rom_entry *votrax_sc01_device::device_rom_region() const +const tiny_rom_entry *votrax_sc01_device::device_rom_region() const { return ROM_NAME( votrax_sc01 ); } diff --git a/src/devices/sound/votrax.h b/src/devices/sound/votrax.h index 471a42873f9..6c8a75763ca 100644 --- a/src/devices/sound/votrax.h +++ b/src/devices/sound/votrax.h @@ -46,7 +46,7 @@ public: protected: // device-level overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; virtual void device_reset() override; virtual void device_clock_changed() override; diff --git a/src/devices/video/ef9365.cpp b/src/devices/video/ef9365.cpp index d7277e82604..ae32d6a59c3 100644 --- a/src/devices/video/ef9365.cpp +++ b/src/devices/video/ef9365.cpp @@ -134,7 +134,7 @@ ROM_END // internal ROM region //------------------------------------------------- -const rom_entry *ef9365_device::device_rom_region() const +const tiny_rom_entry *ef9365_device::device_rom_region() const { return ROM_NAME( ef9365 ); } diff --git a/src/devices/video/ef9365.h b/src/devices/video/ef9365.h index 4e28f672b1f..2a75636ca0a 100644 --- a/src/devices/video/ef9365.h +++ b/src/devices/video/ef9365.h @@ -65,7 +65,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // device_config_memory_interface overrides virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; diff --git a/src/devices/video/hd44780.cpp b/src/devices/video/hd44780.cpp index ea6a63ca415..b793bb51089 100644 --- a/src/devices/video/hd44780.cpp +++ b/src/devices/video/hd44780.cpp @@ -69,7 +69,7 @@ ks0066_f05_device::ks0066_f05_device(const machine_config &mconfig, const char * // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *hd44780_device::device_rom_region() const +const tiny_rom_entry *hd44780_device::device_rom_region() const { switch (m_charset_type) { diff --git a/src/devices/video/hd44780.h b/src/devices/video/hd44780.h index 9e7ff763eac..2c6eec873b6 100644 --- a/src/devices/video/hd44780.h +++ b/src/devices/video/hd44780.h @@ -63,7 +63,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // charset enum diff --git a/src/devices/video/hd61830.cpp b/src/devices/video/hd61830.cpp index d60354ef8a8..82b19051def 100644 --- a/src/devices/video/hd61830.cpp +++ b/src/devices/video/hd61830.cpp @@ -35,7 +35,7 @@ ROM_END // device_rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *hd61830_device::device_rom_region() const +const tiny_rom_entry *hd61830_device::device_rom_region() const { return ROM_NAME(hd61830); } diff --git a/src/devices/video/hd61830.h b/src/devices/video/hd61830.h index 5e060fe9539..18a2b2e5cc2 100644 --- a/src/devices/video/hd61830.h +++ b/src/devices/video/hd61830.h @@ -50,7 +50,7 @@ public: protected: // device-level overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_start() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/devices/video/hd63484.cpp b/src/devices/video/hd63484.cpp index 74f06cc734d..1c42ab62266 100644 --- a/src/devices/video/hd63484.cpp +++ b/src/devices/video/hd63484.cpp @@ -351,7 +351,7 @@ const address_space_config *hd63484_device::memory_space_config(address_spacenum // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *hd63484_device::device_rom_region() const +const tiny_rom_entry *hd63484_device::device_rom_region() const { return ROM_NAME( hd63484 ); } diff --git a/src/devices/video/hd63484.h b/src/devices/video/hd63484.h index 226a21f12d9..c2d927f96a7 100644 --- a/src/devices/video/hd63484.h +++ b/src/devices/video/hd63484.h @@ -63,7 +63,7 @@ public: DECLARE_READ8_MEMBER( data_r ); UINT32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; protected: diff --git a/src/devices/video/m50458.cpp b/src/devices/video/m50458.cpp index 38e5eeb6e9a..25d3d04fba8 100644 --- a/src/devices/video/m50458.cpp +++ b/src/devices/video/m50458.cpp @@ -126,7 +126,7 @@ WRITE16_MEMBER( m50458_device::vreg_127_w) // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *m50458_device::device_rom_region() const +const tiny_rom_entry *m50458_device::device_rom_region() const { return ROM_NAME( m50458 ); } diff --git a/src/devices/video/m50458.h b/src/devices/video/m50458.h index 9744ff6d361..d11f39cedec 100644 --- a/src/devices/video/m50458.h +++ b/src/devices/video/m50458.h @@ -56,7 +56,7 @@ public: DECLARE_WRITE16_MEMBER(vreg_127_w); UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/video/mb90082.cpp b/src/devices/video/mb90082.cpp index b65590b6db8..8fe8749e422 100644 --- a/src/devices/video/mb90082.cpp +++ b/src/devices/video/mb90082.cpp @@ -40,7 +40,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *mb90082_device::device_rom_region() const +const tiny_rom_entry *mb90082_device::device_rom_region() const { return ROM_NAME( mb90082 ); } diff --git a/src/devices/video/mb90082.h b/src/devices/video/mb90082.h index 61d6cc17a7a..905d906055f 100644 --- a/src/devices/video/mb90082.h +++ b/src/devices/video/mb90082.h @@ -45,7 +45,7 @@ public: DECLARE_WRITE_LINE_MEMBER( set_cs_line ); UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides diff --git a/src/devices/video/msm6222b.cpp b/src/devices/video/msm6222b.cpp index 17ee6897400..422f6cb50c3 100644 --- a/src/devices/video/msm6222b.cpp +++ b/src/devices/video/msm6222b.cpp @@ -40,7 +40,7 @@ msm6222b_01_device::msm6222b_01_device(const machine_config &mconfig, const char m_cgrom.set_tag("cgrom"); } -const rom_entry *msm6222b_01_device::device_rom_region() const +const tiny_rom_entry *msm6222b_01_device::device_rom_region() const { return ROM_NAME(msm6222b_01); } diff --git a/src/devices/video/msm6222b.h b/src/devices/video/msm6222b.h index 3324dda3b06..aecd70f3931 100644 --- a/src/devices/video/msm6222b.h +++ b/src/devices/video/msm6222b.h @@ -54,7 +54,7 @@ public: msm6222b_01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; extern const device_type MSM6222B; diff --git a/src/devices/video/saa5050.cpp b/src/devices/video/saa5050.cpp index 071fbf52ec9..17bed03ffca 100644 --- a/src/devices/video/saa5050.cpp +++ b/src/devices/video/saa5050.cpp @@ -119,42 +119,42 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *saa5050_device::device_rom_region() const +const tiny_rom_entry *saa5050_device::device_rom_region() const { return ROM_NAME( saa5050 ); } -const rom_entry *saa5051_device::device_rom_region() const +const tiny_rom_entry *saa5051_device::device_rom_region() const { return ROM_NAME( saa5051 ); } -const rom_entry *saa5052_device::device_rom_region() const +const tiny_rom_entry *saa5052_device::device_rom_region() const { return ROM_NAME( saa5052 ); } -const rom_entry *saa5053_device::device_rom_region() const +const tiny_rom_entry *saa5053_device::device_rom_region() const { return ROM_NAME( saa5053 ); } -const rom_entry *saa5054_device::device_rom_region() const +const tiny_rom_entry *saa5054_device::device_rom_region() const { return ROM_NAME( saa5054 ); } -const rom_entry *saa5055_device::device_rom_region() const +const tiny_rom_entry *saa5055_device::device_rom_region() const { return ROM_NAME( saa5055 ); } -const rom_entry *saa5056_device::device_rom_region() const +const tiny_rom_entry *saa5056_device::device_rom_region() const { return ROM_NAME( saa5056 ); } -const rom_entry *saa5057_device::device_rom_region() const +const tiny_rom_entry *saa5057_device::device_rom_region() const { return ROM_NAME( saa5057 ); } diff --git a/src/devices/video/saa5050.h b/src/devices/video/saa5050.h index 30b1e8b0e4a..9c53ba896c6 100644 --- a/src/devices/video/saa5050.h +++ b/src/devices/video/saa5050.h @@ -63,7 +63,7 @@ public: template static devcb_base &set_d_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_d.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE_LINE_MEMBER( crs_w ); DECLARE_WRITE_LINE_MEMBER( dew_w ); @@ -172,7 +172,7 @@ public: saa5051_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -185,7 +185,7 @@ public: saa5052_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -198,7 +198,7 @@ public: saa5053_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -211,7 +211,7 @@ public: saa5054_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -224,7 +224,7 @@ public: saa5055_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -237,7 +237,7 @@ public: saa5056_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -250,7 +250,7 @@ public: saa5057_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; diff --git a/src/devices/video/sed1200.cpp b/src/devices/video/sed1200.cpp index 06cd7ba7e83..6d88b288714 100644 --- a/src/devices/video/sed1200.cpp +++ b/src/devices/video/sed1200.cpp @@ -56,22 +56,22 @@ sed1200f0b_device::sed1200f0b_device(const machine_config &mconfig, const char * { } -const rom_entry *sed1200d0a_device::device_rom_region() const +const tiny_rom_entry *sed1200d0a_device::device_rom_region() const { return ROM_NAME(sed1200x0a); } -const rom_entry *sed1200f0a_device::device_rom_region() const +const tiny_rom_entry *sed1200f0a_device::device_rom_region() const { return ROM_NAME(sed1200x0a); } -const rom_entry *sed1200d0b_device::device_rom_region() const +const tiny_rom_entry *sed1200d0b_device::device_rom_region() const { return ROM_NAME(sed1200x0b); } -const rom_entry *sed1200f0b_device::device_rom_region() const +const tiny_rom_entry *sed1200f0b_device::device_rom_region() const { return ROM_NAME(sed1200x0b); } diff --git a/src/devices/video/sed1200.h b/src/devices/video/sed1200.h index c39f223e331..d82461fe6da 100644 --- a/src/devices/video/sed1200.h +++ b/src/devices/video/sed1200.h @@ -57,7 +57,7 @@ public: sed1200d0a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sed1200f0a_device : public sed1200_device { @@ -65,7 +65,7 @@ public: sed1200f0a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sed1200d0b_device : public sed1200_device { @@ -73,7 +73,7 @@ public: sed1200d0b_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; class sed1200f0b_device : public sed1200_device { @@ -81,7 +81,7 @@ public: sed1200f0b_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; extern const device_type SED1200D0A; diff --git a/src/devices/video/sed1330.cpp b/src/devices/video/sed1330.cpp index d368c38b1f2..71c4a9fd069 100644 --- a/src/devices/video/sed1330.cpp +++ b/src/devices/video/sed1330.cpp @@ -152,7 +152,7 @@ sed1330_device::sed1330_device(const machine_config &mconfig, const char *tag, d // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *sed1330_device::device_rom_region() const +const tiny_rom_entry *sed1330_device::device_rom_region() const { return ROM_NAME( sed1330 ); } diff --git a/src/devices/video/sed1330.h b/src/devices/video/sed1330.h index 5b6cbc19521..135caeca01b 100644 --- a/src/devices/video/sed1330.h +++ b/src/devices/video/sed1330.h @@ -41,7 +41,7 @@ public: sed1330_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER( status_r ); DECLARE_WRITE8_MEMBER( command_w ); diff --git a/src/devices/video/upd7220.cpp b/src/devices/video/upd7220.cpp index f9ee91a7140..3fae2079570 100644 --- a/src/devices/video/upd7220.cpp +++ b/src/devices/video/upd7220.cpp @@ -175,7 +175,7 @@ const address_space_config *upd7220_device::memory_space_config(address_spacenum // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *upd7220_device::device_rom_region() const +const tiny_rom_entry *upd7220_device::device_rom_region() const { return ROM_NAME( upd7220 ); } diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h index dbde33a93f8..efad745aa4b 100644 --- a/src/devices/video/upd7220.h +++ b/src/devices/video/upd7220.h @@ -102,7 +102,7 @@ public: DECLARE_WRITE_LINE_MEMBER( lpen_w ); UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const override; protected: diff --git a/src/emu/device.cpp b/src/emu/device.cpp index 2ca2db31e36..07787934863 100644 --- a/src/emu/device.cpp +++ b/src/emu/device.cpp @@ -530,7 +530,7 @@ void device_t::device_validity_check(validity_checker &valid) const // rom region description for this device //------------------------------------------------- -const rom_entry *device_t::device_rom_region() const +const tiny_rom_entry *device_t::device_rom_region() const { // none by default return nullptr; @@ -921,3 +921,17 @@ void device_interface::interface_debug_setup() { // do nothing by default } + + +//------------------------------------------------- +// rom_region +//------------------------------------------------- + +const rom_entry *device_t::rom_region() const +{ + if (m_rom_entries.empty()) + { + m_rom_entries = rom_build_entries(device_rom_region()); + } + return m_rom_entries.data(); +} \ No newline at end of file diff --git a/src/emu/device.h b/src/emu/device.h index b3134d0b36f..cdc7a8dd5a3 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -203,7 +203,7 @@ public: UINT32 configured_clock() const { return m_configured_clock; } const machine_config &mconfig() const { return m_machine_config; } const input_device_default *input_ports_defaults() const { return m_input_defaults; } - const rom_entry *rom_region() const { return device_rom_region(); } + const rom_entry *rom_region() const; machine_config_constructor machine_config_additions() const { return device_mconfig_additions(); } ioport_constructor input_ports() const { return device_input_ports(); } UINT8 default_bios() const { return m_default_bios; } @@ -304,7 +304,7 @@ protected: //------------------- begin derived class overrides // device-level overrides - virtual const rom_entry *device_rom_region() const; + virtual const tiny_rom_entry *device_rom_region() const; virtual machine_config_constructor device_mconfig_additions() const; virtual ioport_constructor device_input_ports() const; virtual void device_config_complete(); @@ -361,6 +361,7 @@ private: bool m_config_complete; // have we completed our configuration? bool m_started; // true if the start function has succeeded finder_base * m_auto_finder_list; // list of objects to auto-find + mutable std::vector m_rom_entries; // string formatting buffer for logerror mutable util::ovectorstream m_string_buffer; diff --git a/src/emu/driver.cpp b/src/emu/driver.cpp index 510cf8d9199..ba48683eb91 100644 --- a/src/emu/driver.cpp +++ b/src/emu/driver.cpp @@ -173,7 +173,7 @@ void driver_device::video_reset() // game's ROMs //------------------------------------------------- -const rom_entry *driver_device::device_rom_region() const +const tiny_rom_entry *driver_device::device_rom_region() const { return m_system->rom; } diff --git a/src/emu/driver.h b/src/emu/driver.h index 9d1bd42727e..27cd8bb9518 100644 --- a/src/emu/driver.h +++ b/src/emu/driver.h @@ -210,7 +210,7 @@ protected: virtual void video_reset(); // device-level overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; virtual void device_reset_after_children() override; diff --git a/src/emu/gamedrv.h b/src/emu/gamedrv.h index d5b7f15f32c..30b0cdd91a1 100644 --- a/src/emu/gamedrv.h +++ b/src/emu/gamedrv.h @@ -71,7 +71,7 @@ struct game_driver machine_config_constructor machine_config; // machine driver tokens ioport_constructor ipt; // pointer to constructor for input ports void (*driver_init)(running_machine &machine); // DRIVER_INIT callback - const rom_entry * rom; // pointer to list of ROMs for the game + const tiny_rom_entry * rom; // pointer to list of ROMs for the game const char * compatible_with; UINT32 flags; // orientation and other flags; see defines below const internal_layout * default_layout; // default internally defined layout diff --git a/src/emu/romentry.h b/src/emu/romentry.h index b4d8fce33a5..fb364fe0a9e 100644 --- a/src/emu/romentry.h +++ b/src/emu/romentry.h @@ -115,17 +115,29 @@ enum // TYPE DEFINITIONS //************************************************************************** +// ======================> tiny_rom_entry + +struct tiny_rom_entry +{ + const char *name; + const char *hashdata; + UINT32 offset; + UINT32 length; + UINT32 flags; +}; + + // ======================> rom_entry class rom_entry { public: - rom_entry(const char *name, const char *hashdata, UINT32 offset, UINT32 length, UINT32 flags) - : m_name(name != nullptr ? name : "") - , m_hashdata(hashdata != nullptr ? hashdata : "") - , m_offset(offset) - , m_length(length) - , m_flags(flags) {} + rom_entry(const tiny_rom_entry &ent) + : m_name(ent.name != nullptr ? ent.name : "") + , m_hashdata(ent.hashdata != nullptr ? ent.hashdata : "") + , m_offset(ent.offset) + , m_length(ent.length) + , m_flags(ent.flags) {} rom_entry(std::string &&name, std::string &&hashdata, UINT32 offset, UINT32 length, UINT32 flags) : m_name(std::move(name)) , m_hashdata(std::move(hashdata)) diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index 2ee675f70cc..db54d3d4633 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -1488,3 +1488,30 @@ rom_load_manager::rom_load_manager(running_machine &machine) /* display the results and exit */ display_rom_load_results(false); } + + +// ------------------------------------------------- +// rom_build_entries - builds a rom_entry vector +// from a tiny_rom_entry array +// ------------------------------------------------- + +std::vector rom_build_entries(const tiny_rom_entry *tinyentries) +{ + std::vector result; + + if (tinyentries != nullptr) + { + int i = 0; + do + { + result.emplace_back(tinyentries[i]); + } while ((tinyentries[i++].flags & ROMENTRY_TYPEMASK) != ROMENTRYTYPE_END); + } + else + { + const tiny_rom_entry end_entry = { nullptr, nullptr, 0, 0, ROMENTRYTYPE_END }; + result.emplace_back(end_entry); + } + return result; +} + diff --git a/src/emu/romload.h b/src/emu/romload.h index 9364477d6aa..8fb736cc527 100644 --- a/src/emu/romload.h +++ b/src/emu/romload.h @@ -90,7 +90,7 @@ class software_list_device; /* ----- start/stop macros ----- */ #define ROM_NAME(name) rom_##name -#define ROM_START(name) static const rom_entry ROM_NAME(name)[] = { +#define ROM_START(name) static const tiny_rom_entry ROM_NAME(name)[] = { #define ROM_END { nullptr, nullptr, 0, 0, ROMENTRYTYPE_END } }; @@ -280,6 +280,9 @@ std::string rom_parameter_name(const device_t &device, const rom_entry *romp); /* return the value for a per-game parameter */ std::string rom_parameter_value(const rom_entry *romp); +// builds a rom_entry vector from a tiny_rom_entry array +std::vector rom_build_entries(const tiny_rom_entry *tinyentries); + /* open a disk image, searching up the parent and loading by checksum */ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_entry *romp, chd_file &image_chd, const char *locationtag); diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index 918cd07f673..829bf687d40 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -515,14 +515,16 @@ void info_xml_creator::output_bios() if (m_drivlist.driver().rom == nullptr) return; + auto rom_entries = rom_build_entries(m_drivlist.driver().rom); + // first determine the default BIOS name std::string defaultname; - for (const rom_entry *rom = m_drivlist.driver().rom; !ROMENTRY_ISEND(rom); rom++) + for (const rom_entry *rom = rom_entries.data(); !ROMENTRY_ISEND(rom); rom++) if (ROMENTRY_ISDEFAULT_BIOS(rom)) defaultname = ROM_GETNAME(rom); // iterate over ROM entries and look for BIOSes - for (const rom_entry *rom = m_drivlist.driver().rom; !ROMENTRY_ISEND(rom); rom++) + for (const rom_entry *rom = rom_entries.data(); !ROMENTRY_ISEND(rom); rom++) if (ROMENTRY_ISSYSTEM_BIOS(rom)) { // output extracted name and descriptions @@ -577,7 +579,8 @@ void info_xml_creator::output_rom(device_t &device) if (!is_disk && is_bios) { // scan backwards through the ROM entries - for (const rom_entry *brom = rom - 1; brom != m_drivlist.driver().rom; brom--) + auto entries = rom_build_entries(m_drivlist.driver().rom); + for (const rom_entry *brom = entries.data(); !ROMENTRY_ISEND(rom); rom++) if (ROMENTRY_ISSYSTEM_BIOS(brom)) { strcpy(bios_name, ROM_GETNAME(brom)); diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index d90a5502250..514ab779a1a 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -838,14 +838,16 @@ void menu_machine_configure::setup_bios() if (m_drv->rom == nullptr) return; + auto entries = rom_build_entries(m_drv->rom); + std::string specbios(m_opts.bios()); std::string default_name; - for (const rom_entry *rom = m_drv->rom; !ROMENTRY_ISEND(rom); ++rom) + for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) if (ROMENTRY_ISDEFAULT_BIOS(rom)) default_name = ROM_GETNAME(rom); std::size_t bios_count = 0; - for (const rom_entry *rom = m_drv->rom; !ROMENTRY_ISEND(rom); ++rom) + for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) { if (ROMENTRY_ISSYSTEM_BIOS(rom)) { diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index 3019bff9d0f..2f39f90be0f 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -680,7 +680,8 @@ void menu_select_game::build_available_list() auto driver = &driver_list::driver(x); if (!m_included[x] && driver != &GAME_NAME(___empty)) { - const rom_entry *rom = driver->rom; + auto entries = rom_build_entries(driver->rom); + const rom_entry *rom = entries.data(); bool noroms = true; // check NO-DUMP @@ -699,8 +700,7 @@ void menu_select_game::build_available_list() if (cx != -1 && m_included[cx]) { auto drv = &driver_list::driver(cx); - auto parentrom = drv->rom; - if ((rom = driver->rom) == parentrom) + if (driver->rom == drv->rom) noroms = true; // check if clone < parent @@ -717,7 +717,8 @@ void menu_select_game::build_available_list() UINT64 lenght = ROM_GETLENGTH(rom); auto found = false; - for (parentrom = drv->rom; !ROMENTRY_ISEND(parentrom) && found == false; ++parentrom) + auto parent_entries = rom_build_entries(drv->rom); + for (auto parentrom = parent_entries.data(); !ROMENTRY_ISEND(parentrom) && found == false; ++parentrom) { if (ROMENTRY_ISFILE(parentrom) && ROM_GETLENGTH(parentrom) == lenght) { @@ -1026,6 +1027,7 @@ void menu_select_game::build_list(const char *filter_text, int filter, bool bios for (auto & s_driver : s_drivers) { + auto entries = rom_build_entries(s_driver->rom); if (!bioscheck && filter != FILTER_BIOS && (s_driver->flags & MACHINE_IS_BIOS_ROOT) != 0) continue; @@ -1111,7 +1113,7 @@ void menu_select_game::build_list(const char *filter_text, int filter, bool bios } break; case FILTER_CHD: - for (const rom_entry *rom = s_driver->rom; !ROMENTRY_ISEND(rom); ++rom) + for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom)) { m_displaylist.push_back(s_driver); @@ -1121,7 +1123,7 @@ void menu_select_game::build_list(const char *filter_text, int filter, bool bios case FILTER_NOCHD: { bool found = false; - for (const rom_entry *rom = s_driver->rom; !ROMENTRY_ISEND(rom); ++rom) + for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom)) { found = true; @@ -1301,7 +1303,8 @@ void menu_select_game::general_info(const game_driver *driver, std::string &buff util::stream_format(str, _("Support Save: %1$s\n"), ((driver->flags & MACHINE_SUPPORTS_SAVE) ? _("Yes") : _("No"))); util::stream_format(str, _("Screen Orientation: %1$s\n"), ((driver->flags & ORIENTATION_SWAP_XY) ? _("Vertical") : _("Horizontal"))); bool found = false; - for (const rom_entry *rom = driver->rom; !ROMENTRY_ISEND(rom); ++rom) + auto entries = rom_build_entries(driver->rom); + for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom)) { found = true; diff --git a/src/frontend/mame/ui/selsoft.cpp b/src/frontend/mame/ui/selsoft.cpp index 1a6b6842df5..98ec8e5b826 100644 --- a/src/frontend/mame/ui/selsoft.cpp +++ b/src/frontend/mame/ui/selsoft.cpp @@ -96,12 +96,14 @@ bool has_multiple_bios(const game_driver *driver, s_bios &biosname) if (driver->rom == nullptr) return false; + auto entries = rom_build_entries(driver->rom); + std::string default_name; - for (const rom_entry *rom = driver->rom; !ROMENTRY_ISEND(rom); ++rom) + for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) if (ROMENTRY_ISDEFAULT_BIOS(rom)) default_name = ROM_GETNAME(rom); - for (const rom_entry *rom = driver->rom; !ROMENTRY_ISEND(rom); ++rom) + for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) { if (ROMENTRY_ISSYSTEM_BIOS(rom)) { diff --git a/src/mame/audio/midway.h b/src/mame/audio/midway.h index 31acd14c785..60cc5571cf0 100644 --- a/src/mame/audio/midway.h +++ b/src/mame/audio/midway.h @@ -87,7 +87,7 @@ public: protected: // device-level overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; diff --git a/src/mame/audio/namco52.h b/src/mame/audio/namco52.h index 5ca62330947..b9cd4d240cc 100644 --- a/src/mame/audio/namco52.h +++ b/src/mame/audio/namco52.h @@ -50,7 +50,7 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; TIMER_CALLBACK_MEMBER( latch_callback ); diff --git a/src/mame/audio/namco54.h b/src/mame/audio/namco54.h index e05f5c6446b..d72547452d9 100644 --- a/src/mame/audio/namco54.h +++ b/src/mame/audio/namco54.h @@ -34,7 +34,7 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; TIMER_CALLBACK_MEMBER( latch_callback ); diff --git a/src/mame/audio/t5182.h b/src/mame/audio/t5182.h index 4fd09da6d2c..fba3a22b55a 100644 --- a/src/mame/audio/t5182.h +++ b/src/mame/audio/t5182.h @@ -42,7 +42,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual machine_config_constructor device_mconfig_additions() const override; diff --git a/src/mame/drivers/4enlinea.cpp b/src/mame/drivers/4enlinea.cpp index eb1072550bb..616cfdbcae8 100644 --- a/src/mame/drivers/4enlinea.cpp +++ b/src/mame/drivers/4enlinea.cpp @@ -249,7 +249,7 @@ public: DECLARE_READ8_MEMBER( _4enlinea_io_read ); DECLARE_WRITE8_MEMBER( _4enlinea_mode_control_w ); virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; const rom_entry *isa8_cga_4enlinea_device::device_rom_region() const diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp index 9805d1c7179..2a31db2684c 100644 --- a/src/mame/drivers/pcxt.cpp +++ b/src/mame/drivers/pcxt.cpp @@ -101,7 +101,7 @@ public: // construction/destruction isa8_cga_filetto_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; const device_type ISA8_CGA_FILETTO = &device_creator; @@ -135,7 +135,7 @@ public: virtual UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) override; virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_READ8_MEMBER(bg_bank_r); DECLARE_WRITE8_MEMBER(bg_bank_w); diff --git a/src/mame/machine/abc1600mac.h b/src/mame/machine/abc1600mac.h index f0cdab229ee..207e3d9e5f2 100644 --- a/src/mame/machine/abc1600mac.h +++ b/src/mame/machine/abc1600mac.h @@ -50,7 +50,7 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; void set_cpu_tag(const char *cpu_tag) { m_cpu_tag = cpu_tag; } diff --git a/src/mame/machine/abc80kb.h b/src/mame/machine/abc80kb.h index 7de08733a35..134d3f59e91 100644 --- a/src/mame/machine/abc80kb.h +++ b/src/mame/machine/abc80kb.h @@ -48,7 +48,7 @@ public: template static devcb_base &set_keydown_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_keydown.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/amigakbd.h b/src/mame/machine/amigakbd.h index ae7f7f633cb..1ae08514d97 100644 --- a/src/mame/machine/amigakbd.h +++ b/src/mame/machine/amigakbd.h @@ -71,7 +71,7 @@ public: protected: // device-level overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; diff --git a/src/mame/machine/apricotkb.h b/src/mame/machine/apricotkb.h index 01f5a7f451f..ddc3d6cdde1 100644 --- a/src/mame/machine/apricotkb.h +++ b/src/mame/machine/apricotkb.h @@ -47,7 +47,7 @@ public: template static devcb_base &set_txd_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_txd.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/beta.h b/src/mame/machine/beta.h index af5b2132e14..8aa23e21c35 100644 --- a/src/mame/machine/beta.h +++ b/src/mame/machine/beta.h @@ -46,7 +46,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; private: diff --git a/src/mame/machine/compiskb.h b/src/mame/machine/compiskb.h index 64a71c1b405..caf649c585b 100644 --- a/src/mame/machine/compiskb.h +++ b/src/mame/machine/compiskb.h @@ -42,7 +42,7 @@ public: template static devcb_base &set_out_tx_handler(device_t &device, _Object object) { return downcast(device).m_out_tx_handler.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/cuda.h b/src/mame/machine/cuda.h index 3623200e7ab..a236acffc94 100644 --- a/src/mame/machine/cuda.h +++ b/src/mame/machine/cuda.h @@ -109,7 +109,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; required_device m_maincpu; diff --git a/src/mame/machine/dec_lk201.h b/src/mame/machine/dec_lk201.h index 3185a0a139f..87b61ad3af6 100644 --- a/src/mame/machine/dec_lk201.h +++ b/src/mame/machine/dec_lk201.h @@ -66,7 +66,7 @@ public: protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/mame/machine/dmv_keyb.h b/src/mame/machine/dmv_keyb.h index 0f42fef728a..e83e6957641 100644 --- a/src/mame/machine/dmv_keyb.h +++ b/src/mame/machine/dmv_keyb.h @@ -37,7 +37,7 @@ public: dmv_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/egret.h b/src/mame/machine/egret.h index f9b881cd540..75f8e1888ed 100644 --- a/src/mame/machine/egret.h +++ b/src/mame/machine/egret.h @@ -108,7 +108,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; required_device m_maincpu; diff --git a/src/mame/machine/ie15_kbd.h b/src/mame/machine/ie15_kbd.h index 42eca22403d..adf2a32f5af 100644 --- a/src/mame/machine/ie15_kbd.h +++ b/src/mame/machine/ie15_kbd.h @@ -49,7 +49,7 @@ public: virtual ioport_constructor device_input_ports() const override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: required_ioport m_io_kbd0; diff --git a/src/mame/machine/jvs13551.h b/src/mame/machine/jvs13551.h index 2a84e9b9d24..566ecfa2a63 100644 --- a/src/mame/machine/jvs13551.h +++ b/src/mame/machine/jvs13551.h @@ -29,7 +29,7 @@ public: sega_837_13551(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); static void static_set_port_tag(device_t &device, int port, const char *tag); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE_LINE_MEMBER(jvs13551_coin_1_w); DECLARE_WRITE_LINE_MEMBER(jvs13551_coin_2_w); diff --git a/src/mame/machine/k573dio.h b/src/mame/machine/k573dio.h index 9762536b072..8815b1fccfd 100644 --- a/src/mame/machine/k573dio.h +++ b/src/mame/machine/k573dio.h @@ -66,7 +66,7 @@ public: protected: virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/mame/machine/k573mcr.h b/src/mame/machine/k573mcr.h index 4241bc33f96..23517200cfc 100644 --- a/src/mame/machine/k573mcr.h +++ b/src/mame/machine/k573mcr.h @@ -22,7 +22,7 @@ public: protected: virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; #endif diff --git a/src/mame/machine/k573msu.h b/src/mame/machine/k573msu.h index 3d4940039a9..6e584100ece 100644 --- a/src/mame/machine/k573msu.h +++ b/src/mame/machine/k573msu.h @@ -22,7 +22,7 @@ public: protected: virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; #endif diff --git a/src/mame/machine/k573npu.h b/src/mame/machine/k573npu.h index 13c4d598216..7c28760821b 100644 --- a/src/mame/machine/k573npu.h +++ b/src/mame/machine/k573npu.h @@ -22,7 +22,7 @@ public: protected: virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; #endif diff --git a/src/mame/machine/k7659kb.h b/src/mame/machine/k7659kb.h index c18031b61bf..ecb54acdd22 100644 --- a/src/mame/machine/k7659kb.h +++ b/src/mame/machine/k7659kb.h @@ -46,7 +46,7 @@ public: k7659_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/km035.h b/src/mame/machine/km035.h index d7ec021926b..c165730936e 100644 --- a/src/mame/machine/km035.h +++ b/src/mame/machine/km035.h @@ -53,7 +53,7 @@ public: protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/mame/machine/m1comm.h b/src/mame/machine/m1comm.h index 366ad62a455..915e7ee671d 100644 --- a/src/mame/machine/m1comm.h +++ b/src/mame/machine/m1comm.h @@ -63,7 +63,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; private: UINT8 m_shared[0x1000]; // 2x 2k = 4k; model1 accesses this with 16bit data and 11bit address (A0 to A10) diff --git a/src/mame/machine/m20_8086.h b/src/mame/machine/m20_8086.h index 1f2cc041d69..125d5fe7ed9 100644 --- a/src/mame/machine/m20_8086.h +++ b/src/mame/machine/m20_8086.h @@ -12,7 +12,7 @@ class m20_8086_device : public device_t public: m20_8086_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ16_MEMBER(z8000_io_r); diff --git a/src/mame/machine/m24_kbd.h b/src/mame/machine/m24_kbd.h index 489d094929e..d9e18434af3 100644 --- a/src/mame/machine/m24_kbd.h +++ b/src/mame/machine/m24_kbd.h @@ -16,7 +16,7 @@ public: template static devcb_base &set_out_data_handler(device_t &device, _Object object) { return downcast(device).m_out_data.set_callback(object); } - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/m24_z8000.h b/src/mame/machine/m24_z8000.h index 283bd301ac9..4b265f84f14 100644 --- a/src/mame/machine/m24_z8000.h +++ b/src/mame/machine/m24_z8000.h @@ -17,7 +17,7 @@ class m24_z8000_device : public device_t public: m24_z8000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; template static devcb_base &set_halt_callback(device_t &device, _Object object) { return downcast(device).m_halt_out.set_callback(object); } diff --git a/src/mame/machine/mackbd.h b/src/mame/machine/mackbd.h index 946d549c0cb..338dabff258 100644 --- a/src/mame/machine/mackbd.h +++ b/src/mame/machine/mackbd.h @@ -59,7 +59,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; required_device m_maincpu; diff --git a/src/mame/machine/mie.h b/src/mame/machine/mie.h index fa50c4d5756..f03e20be65d 100644 --- a/src/mame/machine/mie.h +++ b/src/mame/machine/mie.h @@ -34,7 +34,7 @@ public: static void static_set_jvs_name(device_t &device, const char *name); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; DECLARE_READ8_MEMBER(control_r); diff --git a/src/mame/machine/mm1kb.h b/src/mame/machine/mm1kb.h index 594608696b3..cd9acc98d11 100644 --- a/src/mame/machine/mm1kb.h +++ b/src/mame/machine/mm1kb.h @@ -40,7 +40,7 @@ public: template static devcb_base &set_kbst_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_kbst.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/ms7004.h b/src/mame/machine/ms7004.h index 1ceca1b46b6..cbf36f3f311 100644 --- a/src/mame/machine/ms7004.h +++ b/src/mame/machine/ms7004.h @@ -45,7 +45,7 @@ public: protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; virtual void device_reset() override; diff --git a/src/mame/machine/namco50.h b/src/mame/machine/namco50.h index 320e785fafa..dcf41eab22b 100644 --- a/src/mame/machine/namco50.h +++ b/src/mame/machine/namco50.h @@ -27,7 +27,7 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; TIMER_CALLBACK_MEMBER( latch_callback ); diff --git a/src/mame/machine/namco51.h b/src/mame/machine/namco51.h index 22c7e4e2cdc..2b46b3b8392 100644 --- a/src/mame/machine/namco51.h +++ b/src/mame/machine/namco51.h @@ -47,7 +47,7 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; private: // internal state diff --git a/src/mame/machine/namco53.h b/src/mame/machine/namco53.h index 66b60c8c80f..d74d335a6ed 100644 --- a/src/mame/machine/namco53.h +++ b/src/mame/machine/namco53.h @@ -51,7 +51,7 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; TIMER_CALLBACK_MEMBER( irq_clear ); diff --git a/src/mame/machine/namco62.h b/src/mame/machine/namco62.h index 323c751c789..196866683c2 100644 --- a/src/mame/machine/namco62.h +++ b/src/mame/machine/namco62.h @@ -42,7 +42,7 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; private: diff --git a/src/mame/machine/namcomcu.h b/src/mame/machine/namcomcu.h index e4daf70a020..be4c4ab088e 100644 --- a/src/mame/machine/namcomcu.h +++ b/src/mame/machine/namcomcu.h @@ -13,7 +13,7 @@ class namco_c69_device : public m37702m2_device public: namco_c69_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -22,7 +22,7 @@ class namco_c70_device : public m37702m2_device public: namco_c70_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -31,7 +31,7 @@ class namco_c74_device : public m37702m2_device public: namco_c74_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -40,7 +40,7 @@ class namco_c75_device : public m37702m2_device public: namco_c75_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; @@ -49,7 +49,7 @@ class namco_c76_device : public m37702m2_device public: namco_c76_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; }; diff --git a/src/mame/machine/nmk004.h b/src/mame/machine/nmk004.h index e10866db2fd..d0cbc0e7319 100644 --- a/src/mame/machine/nmk004.h +++ b/src/mame/machine/nmk004.h @@ -37,7 +37,7 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; diff --git a/src/mame/machine/pc1512kb.h b/src/mame/machine/pc1512kb.h index d27d4b200e0..69243e87953 100644 --- a/src/mame/machine/pc1512kb.h +++ b/src/mame/machine/pc1512kb.h @@ -53,7 +53,7 @@ public: template static devcb_base &set_data_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_data.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/pc9801_118.h b/src/mame/machine/pc9801_118.h index fb009163cf0..40575a839f7 100644 --- a/src/mame/machine/pc9801_118.h +++ b/src/mame/machine/pc9801_118.h @@ -42,7 +42,7 @@ public: // required_device m_maincpu; required_device m_opn3; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides virtual void device_validity_check(validity_checker &valid) const override; diff --git a/src/mame/machine/pc9801_86.h b/src/mame/machine/pc9801_86.h index 36e109e2eee..9597760b85e 100644 --- a/src/mame/machine/pc9801_86.h +++ b/src/mame/machine/pc9801_86.h @@ -41,7 +41,7 @@ public: DECLARE_READ8_MEMBER(pcm_r); DECLARE_WRITE8_MEMBER(pcm_w); DECLARE_WRITE_LINE_MEMBER(sound_irq); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; protected: // device-level overrides virtual void device_validity_check(validity_checker &valid) const override; diff --git a/src/mame/machine/pcd_kbd.h b/src/mame/machine/pcd_kbd.h index 921abdb2454..833f83fec64 100644 --- a/src/mame/machine/pcd_kbd.h +++ b/src/mame/machine/pcd_kbd.h @@ -17,7 +17,7 @@ public: template static devcb_base &set_out_tx_handler(device_t &device, _Object object) { return downcast(device).m_out_tx_handler.set_callback(object); } - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/psxcd.h b/src/mame/machine/psxcd.h index 1c6c57d0295..4049cdf1d3a 100644 --- a/src/mame/machine/psxcd.h +++ b/src/mame/machine/psxcd.h @@ -37,7 +37,7 @@ protected: virtual void device_stop() override; virtual void device_reset() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; private: void write_command(UINT8 byte); diff --git a/src/mame/machine/tandy2kb.h b/src/mame/machine/tandy2kb.h index aa27aa3b782..ed9c354cba5 100644 --- a/src/mame/machine/tandy2kb.h +++ b/src/mame/machine/tandy2kb.h @@ -52,7 +52,7 @@ public: template static devcb_base &set_data_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_data.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/trs80m2kb.h b/src/mame/machine/trs80m2kb.h index 72a815bcbf4..d5bb62c337f 100644 --- a/src/mame/machine/trs80m2kb.h +++ b/src/mame/machine/trs80m2kb.h @@ -49,7 +49,7 @@ public: template static devcb_base &set_clock_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_clock.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/v1050kb.h b/src/mame/machine/v1050kb.h index dd646c40b04..50c02cc630e 100644 --- a/src/mame/machine/v1050kb.h +++ b/src/mame/machine/v1050kb.h @@ -41,7 +41,7 @@ public: template static devcb_base &set_out_tx_handler(device_t &device, _Object object) { return downcast(device).m_out_tx_handler.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/victor9k_fdc.h b/src/mame/machine/victor9k_fdc.h index b3613af3bb8..d40d3a7a877 100644 --- a/src/mame/machine/victor9k_fdc.h +++ b/src/mame/machine/victor9k_fdc.h @@ -94,7 +94,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; private: diff --git a/src/mame/machine/victor9kb.h b/src/mame/machine/victor9kb.h index 47511113fe7..8d1570fb776 100644 --- a/src/mame/machine/victor9kb.h +++ b/src/mame/machine/victor9kb.h @@ -44,7 +44,7 @@ public: template static devcb_base &set_kbdata_cb(device_t &device, _Object object) { return downcast(device).m_kbdata_cb.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/wangpckb.h b/src/mame/machine/wangpckb.h index e253685966a..3344c6217ea 100644 --- a/src/mame/machine/wangpckb.h +++ b/src/mame/machine/wangpckb.h @@ -53,7 +53,7 @@ public: template static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast(device).m_txd_handler.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/x820kb.h b/src/mame/machine/x820kb.h index ca678203545..effc7819726 100644 --- a/src/mame/machine/x820kb.h +++ b/src/mame/machine/x820kb.h @@ -40,7 +40,7 @@ public: template static devcb_base &set_kbstb_wr_callback(device_t &device, _Object object) { return downcast(device).m_kbstb_cb.set_callback(object); } // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/video/abc1600.h b/src/mame/video/abc1600.h index a3f356dd2e5..253f2733f5b 100644 --- a/src/mame/video/abc1600.h +++ b/src/mame/video/abc1600.h @@ -42,7 +42,7 @@ public: abc1600_mover_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual DECLARE_ADDRESS_MAP(vram_map, 8); diff --git a/src/mame/video/gic.h b/src/mame/video/gic.h index 3babca9fec8..cd8d945e3fd 100644 --- a/src/mame/video/gic.h +++ b/src/mame/video/gic.h @@ -85,7 +85,7 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // optional information overrides - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; // device_sound_interface overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; diff --git a/src/mame/video/pcd.h b/src/mame/video/pcd.h index 32637fac992..8976776d4d1 100644 --- a/src/mame/video/pcd.h +++ b/src/mame/video/pcd.h @@ -42,7 +42,7 @@ public: DECLARE_WRITE8_MEMBER(p2_w); TIMER_DEVICE_CALLBACK_MEMBER(mouse_timer); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; SCN2674_DRAW_CHARACTER_MEMBER(display_pixels); @@ -93,7 +93,7 @@ public: DECLARE_READ8_MEMBER(unk_r); DECLARE_WRITE8_MEMBER(p1_w); - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; SCN2674_DRAW_CHARACTER_MEMBER(display_pixels); protected: diff --git a/src/mame/video/stic.h b/src/mame/video/stic.h index 41d39a3790d..2569e09c3c7 100644 --- a/src/mame/video/stic.h +++ b/src/mame/video/stic.h @@ -493,7 +493,7 @@ public: // device-level overrides virtual void device_start() override; - virtual const rom_entry *device_rom_region() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_reset() override; void screenrefresh(); From ecf09072346b6228403d697e592fe6272a7298e5 Mon Sep 17 00:00:00 2001 From: cracyc Date: Sat, 6 Aug 2016 08:28:12 -0500 Subject: [PATCH 046/116] isbc: fix boot (nw) --- src/mame/drivers/isbc.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp index 21836db109c..299d117ed72 100644 --- a/src/mame/drivers/isbc.cpp +++ b/src/mame/drivers/isbc.cpp @@ -55,8 +55,19 @@ public: DECLARE_WRITE_LINE_MEMBER(isbc_uart8274_irq); DECLARE_READ8_MEMBER(get_slave_ack); DECLARE_WRITE8_MEMBER(ppi_c_w); +protected: + void machine_reset() override; }; +void isbc_state::machine_reset() +{ + if(m_centronics) + { + m_centronics->write_busy(0); // centronics_device sets busy to 1 at reset causing spurious irqs + m_pic_1->ir7_w(0); + } +} + static ADDRESS_MAP_START(rpc86_mem, AS_PROGRAM, 16, isbc_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000, 0x3ffff) AM_RAM From 4cf6ac6cfd6b07f6768bca42d188609961e5524f Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sun, 7 Aug 2016 01:40:01 +1000 Subject: [PATCH 047/116] Play_1, Play_2, Play_5: added some meat to the bones. (nw) --- src/mame/drivers/play_1.cpp | 180 ++++++++++++++++++-- src/mame/drivers/play_2.cpp | 330 +++++++++++++++++++++--------------- src/mame/drivers/play_3.cpp | 10 +- src/mame/drivers/play_5.cpp | 327 ++++++++++++++++++++--------------- 4 files changed, 547 insertions(+), 300 deletions(-) diff --git a/src/mame/drivers/play_1.cpp b/src/mame/drivers/play_1.cpp index 1f4b934c249..1095d67e464 100644 --- a/src/mame/drivers/play_1.cpp +++ b/src/mame/drivers/play_1.cpp @@ -1,44 +1,173 @@ // license:BSD-3-Clause -// copyright-holders:Miodrag Milanovic +// copyright-holders:Miodrag Milanovic, Robbbert /********************************************************************************* - Pinball - Playmatic MPU 1 +PINBALL +Playmatic MPU 1 + +Status: +- Main board is emulated and appears to be working (currently in attract mode) +- Displays to add +- Switches, lamps, solenoids to add +- Sound board to emulate +- Mechanical sounds to add **********************************************************************************/ -#include "emu.h" +#include "machine/genpin.h" #include "cpu/cosmac/cosmac.h" +#include "machine/clock.h" class play_1_state : public driver_device { public: play_1_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") { } -protected: - - // devices - required_device m_maincpu; - - // driver_device overrides - virtual void machine_reset() override; -public: DECLARE_DRIVER_INIT(play_1); + DECLARE_READ8_MEMBER(port00_r); + DECLARE_READ8_MEMBER(port01_r); + DECLARE_READ8_MEMBER(port06_r); + DECLARE_READ8_MEMBER(port07_r); + DECLARE_WRITE8_MEMBER(port01_w); + DECLARE_WRITE8_MEMBER(port02_w); + DECLARE_WRITE8_MEMBER(port03_w); + DECLARE_WRITE8_MEMBER(port04_w); + DECLARE_WRITE8_MEMBER(port05_w); + DECLARE_WRITE8_MEMBER(port06_w); + DECLARE_WRITE8_MEMBER(port07_w); + DECLARE_READ_LINE_MEMBER(clear_r); + DECLARE_READ_LINE_MEMBER(ef2_r); + DECLARE_READ_LINE_MEMBER(ef3_r); + DECLARE_READ_LINE_MEMBER(ef4_r); + DECLARE_WRITE_LINE_MEMBER(clock_w); + +private: + UINT16 m_resetcnt; + virtual void machine_reset() override; + required_device m_maincpu; }; static ADDRESS_MAP_START( play_1_map, AS_PROGRAM, 8, play_1_state ) - AM_RANGE(0x0000, 0xffff) AM_NOP + ADDRESS_MAP_GLOBAL_MASK(0xfff) + AM_RANGE(0x0000, 0x07ff) AM_ROM + AM_RANGE(0x0800, 0x081f) AM_RAM + AM_RANGE(0x0c00, 0x0c1f) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( chance_map, AS_PROGRAM, 8, play_1_state ) + ADDRESS_MAP_GLOBAL_MASK(0xfff) + AM_RANGE(0x0000, 0x0bff) AM_ROM + AM_RANGE(0x0c00, 0x0c1f) AM_RAM + AM_RANGE(0x0e00, 0x0e1f) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( play_1_io, AS_IO, 8, play_1_state ) + AM_RANGE(0x00, 0x00) AM_READ(port00_r) + AM_RANGE(0x01, 0x01) AM_READWRITE(port01_r,port01_w) //segments + AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) // N1-8 + AM_RANGE(0x03, 0x03) AM_WRITE(port03_w) // D1-4 + AM_RANGE(0x04, 0x04) AM_WRITE(port04_w) // U1-8 + AM_RANGE(0x05, 0x05) AM_WRITE(port05_w) // V1-8 + AM_RANGE(0x06, 0x06) AM_READWRITE(port06_r,port06_w) // W1-8, input selector + AM_RANGE(0x07, 0x07) AM_READ(port07_r) // another input selector ADDRESS_MAP_END static INPUT_PORTS_START( play_1 ) + PORT_START("DSW0") + PORT_DIPNAME(0x01, 0x01, DEF_STR( Coinage ) ) // this is something else, don't know what yet + PORT_DIPSETTING ( 0x00, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING ( 0x01, DEF_STR( 1C_1C ) ) + PORT_DIPNAME(0x02, 0x00, "Balls") + PORT_DIPSETTING ( 0x00, "3" ) + PORT_DIPSETTING ( 0x02, "5" ) + PORT_DIPNAME(0x04, 0x00, "Special award") + PORT_DIPSETTING ( 0x00, "Free game" ) + PORT_DIPSETTING ( 0x04, "Extra ball" ) + // rotary switches for credits per coin INPUT_PORTS_END void play_1_state::machine_reset() { + m_resetcnt = 0; +} + +READ8_MEMBER( play_1_state::port00_r ) +{ + return 0; +} + +READ8_MEMBER( play_1_state::port01_r ) +{ + return 0; +} + +READ8_MEMBER( play_1_state::port06_r ) +{ + return 0xff; // Big Town etc check this at boot +} + +READ8_MEMBER( play_1_state::port07_r ) +{ + return 0; +} + +WRITE8_MEMBER( play_1_state::port01_w ) +{ +} + +WRITE8_MEMBER( play_1_state::port02_w ) +{ +} + +WRITE8_MEMBER( play_1_state::port03_w ) +{ +} + +WRITE8_MEMBER( play_1_state::port04_w ) +{ +} + +WRITE8_MEMBER( play_1_state::port05_w ) +{ +} + +WRITE8_MEMBER( play_1_state::port06_w ) +{ +} + +READ_LINE_MEMBER( play_1_state::clear_r ) +{ + // A hack to make the machine reset itself on boot + if (m_resetcnt < 0xffff) + m_resetcnt++; + return (m_resetcnt == 0xff00) ? 0 : 1; +} + +READ_LINE_MEMBER( play_1_state::ef2_r ) +{ + return BIT(ioport("DSW0")->read(), 0); // 1 or 3 games dip (1=1 game) +} + +READ_LINE_MEMBER( play_1_state::ef3_r ) +{ + return BIT(ioport("DSW0")->read(), 1); // 3 or 5 balls dip (1=5 balls) +} + +READ_LINE_MEMBER( play_1_state::ef4_r ) +{ + return BIT(ioport("DSW0")->read(), 2); // extra ball or game dip (1=extra ball) +} + +WRITE_LINE_MEMBER( play_1_state::clock_w ) +{ + m_maincpu->int_w(1); + m_maincpu->int_w(0); // INT is a pulse-line + m_maincpu->ef1_w(state); + // also, state and !state go to display panel } DRIVER_INIT_MEMBER(play_1_state,play_1) @@ -49,6 +178,23 @@ static MACHINE_CONFIG_START( play_1, play_1_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CDP1802, 400000) MCFG_CPU_PROGRAM_MAP(play_1_map) + MCFG_CPU_IO_MAP(play_1_io) + MCFG_COSMAC_WAIT_CALLBACK(VCC) + MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_1_state, clear_r)) + MCFG_COSMAC_EF2_CALLBACK(READLINE(play_1_state, ef2_r)) + MCFG_COSMAC_EF3_CALLBACK(READLINE(play_1_state, ef3_r)) + MCFG_COSMAC_EF4_CALLBACK(READLINE(play_1_state, ef4_r)) + + MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_1_state, clock_w)) + + /* Sound */ + MCFG_FRAGMENT_ADD( genpin_audio ) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( chance, play_1 ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(chance_map) MACHINE_CONFIG_END /*------------------------------------------------------------------- @@ -100,7 +246,7 @@ ROM_END /* Big Town, Last Lap and Party all reportedly share the same roms with different playfield/machine artworks */ GAME(1978, bigtown, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Big Town", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1978, chance, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Chance", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, chance, 0, chance, play_1, play_1_state, play_1, ROT0, "Playmatic", "Chance", MACHINE_IS_SKELETON_MECHANICAL) GAME(1978, lastlap, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Last Lap", MACHINE_IS_SKELETON_MECHANICAL) -GAME(1978, spcgambl, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Space Gambler", MACHINE_IS_SKELETON_MECHANICAL) +GAME(1978, spcgambl, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Space Gambler", MACHINE_IS_SKELETON_MECHANICAL) GAME(1979, party, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Party", MACHINE_IS_SKELETON_MECHANICAL) diff --git a/src/mame/drivers/play_2.cpp b/src/mame/drivers/play_2.cpp index d9130b783ac..4a386b6cc6f 100644 --- a/src/mame/drivers/play_2.cpp +++ b/src/mame/drivers/play_2.cpp @@ -1,51 +1,194 @@ // license:BSD-3-Clause -// copyright-holders:Miodrag Milanovic -/* - Playmatic MPU 2 -*/ +// copyright-holders:Miodrag Milanovic, Robbbert +/********************************************************************************** + +PINBALL +Playmatic MPU 2 + +Status: +- Main board is emulated and working (currently runs the initial test mode) +- Displays to add +- Switches, lamps, solenoids to add +- Sound board to emulate +- Mechanical sounds to add + +***********************************************************************************/ -#include "emu.h" +#include "machine/genpin.h" #include "cpu/cosmac/cosmac.h" +#include "machine/clock.h" +#include "machine/7474.h" class play_2_state : public driver_device { public: play_2_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_4013a(*this, "4013a") + , m_4013b(*this, "4013b") { } -protected: - - // devices - required_device m_maincpu; - - // driver_device overrides - virtual void machine_reset() override; -public: DECLARE_DRIVER_INIT(play_2); + DECLARE_WRITE8_MEMBER(port01_w); + DECLARE_WRITE8_MEMBER(port02_w); + DECLARE_WRITE8_MEMBER(port03_w); + DECLARE_READ8_MEMBER(port04_r); + DECLARE_READ8_MEMBER(port05_r); + DECLARE_WRITE8_MEMBER(port06_w); + DECLARE_WRITE8_MEMBER(port07_w); + DECLARE_READ_LINE_MEMBER(clear_r); + DECLARE_READ_LINE_MEMBER(ef1_r); + DECLARE_READ_LINE_MEMBER(ef4_r); + DECLARE_WRITE_LINE_MEMBER(q4013a_w); + DECLARE_WRITE_LINE_MEMBER(clock_w); + DECLARE_WRITE_LINE_MEMBER(clock2_w); + +private: + UINT16 m_clockcnt; + UINT16 m_resetcnt; + virtual void machine_reset() override; + required_device m_maincpu; + required_device m_4013a; + required_device m_4013b; }; + static ADDRESS_MAP_START( play_2_map, AS_PROGRAM, 8, play_2_state ) - AM_RANGE(0x0000, 0xffff) AM_NOP + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed ADDRESS_MAP_END +static ADDRESS_MAP_START( play_2_io, AS_IO, 8, play_2_state ) + AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits + AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) + AM_RANGE(0x03, 0x03) AM_WRITE(port03_w) + AM_RANGE(0x04, 0x04) AM_READ(port04_r) + AM_RANGE(0x05, 0x05) AM_READ(port05_r) + AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments + AM_RANGE(0x07, 0x07) AM_WRITE(port07_w) +ADDRESS_MAP_END + + static INPUT_PORTS_START( play_2 ) INPUT_PORTS_END void play_2_state::machine_reset() { + m_clockcnt = 0; + m_resetcnt = 0; + m_4013b->d_w(1); } -DRIVER_INIT_MEMBER(play_2_state,play_2) +WRITE8_MEMBER( play_2_state::port01_w ) { } +WRITE8_MEMBER( play_2_state::port02_w ) +{ +} + +WRITE8_MEMBER( play_2_state::port03_w ) +{ +} + +READ8_MEMBER( play_2_state::port04_r ) +{ + return 0xff; +} + +READ8_MEMBER( play_2_state::port05_r ) +{ + return 0xff; +} + +WRITE8_MEMBER( play_2_state::port06_w ) +{ +} + +WRITE8_MEMBER( play_2_state::port07_w ) +{ + m_4013b->clear_w(0); + m_4013b->clear_w(1); +} + +READ_LINE_MEMBER( play_2_state::clear_r ) +{ + // A hack to make the machine reset itself on boot + if (m_resetcnt < 0xffff) + m_resetcnt++; + return (m_resetcnt == 0xff00) ? 0 : 1; +} + +READ_LINE_MEMBER( play_2_state::ef1_r ) +{ + return BIT(m_clockcnt, 10); +} + +READ_LINE_MEMBER( play_2_state::ef4_r ) +{ + return 1; // test button +} + +DRIVER_INIT_MEMBER( play_2_state, play_2 ) +{ +} + +WRITE_LINE_MEMBER( play_2_state::clock_w ) +{ + m_4013a->clock_w(state); + + if (!state) + { + m_clockcnt++; + // simulate 4020 chip + if ((m_clockcnt & 0x3ff) == 0) + m_4013b->preset_w(BIT(m_clockcnt, 10)); // Q10 output + } +} + +WRITE_LINE_MEMBER( play_2_state::clock2_w ) +{ + m_4013b->clock_w(state); + m_maincpu->ef3_w(!state); +} + +WRITE_LINE_MEMBER( play_2_state::q4013a_w ) +{ + m_clockcnt = 0; +} + static MACHINE_CONFIG_START( play_2, play_2_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", CDP1802, 2950000) MCFG_CPU_PROGRAM_MAP(play_2_map) + MCFG_CPU_IO_MAP(play_2_io) + MCFG_COSMAC_WAIT_CALLBACK(VCC) + MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_2_state, clear_r)) + MCFG_COSMAC_EF1_CALLBACK(READLINE(play_2_state, ef1_r)) + MCFG_COSMAC_EF4_CALLBACK(READLINE(play_2_state, ef4_r)) + MCFG_COSMAC_Q_CALLBACK(DEVWRITELINE("4013a", ttl7474_device, clear_w)) + + MCFG_NVRAM_ADD_0FILL("nvram") + + MCFG_DEVICE_ADD("tpb_clock", CLOCK, 2950000 / 8) // TPB line from CPU + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_2_state, clock_w)) + + MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_2_state, clock2_w)) + + // This is actually a 4013 chip (has 2 RS flipflops) + MCFG_DEVICE_ADD("4013a", TTL7474, 0) + MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("4013a", ttl7474_device, d_w)) + MCFG_7474_OUTPUT_CB(WRITELINE(play_2_state, q4013a_w)) + + MCFG_DEVICE_ADD("4013b", TTL7474, 0) + MCFG_7474_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, ef2_w)) + MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, int_w)) MCFG_DEVCB_INVERT // int is reversed in mame + + /* Sound */ + MCFG_FRAGMENT_ADD( genpin_audio ) MACHINE_CONFIG_END /*------------------------------------------------------------------- @@ -53,42 +196,18 @@ MACHINE_CONFIG_END /-------------------------------------------------------------------*/ ROM_START(antar) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763)) - ROM_RELOAD(0x4000, 0x0400) - ROM_RELOAD(0x8000, 0x0400) - ROM_RELOAD(0xc000, 0x0400) - ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47)) - ROM_RELOAD(0x4400, 0x0400) - ROM_RELOAD(0x8400, 0x0400) - ROM_RELOAD(0xc400, 0x0400) - ROM_LOAD("antar10.bin", 0x0800, 0x0400, CRC(a6ce5667) SHA1(85ecd4fce94dc419e4c210262f867310b0889cd3)) - ROM_RELOAD(0x4800, 0x0400) - ROM_RELOAD(0x8800, 0x0400) - ROM_RELOAD(0xc800, 0x0400) - ROM_LOAD("antar11.bin", 0x0c00, 0x0400, CRC(6474b17f) SHA1(e4325ceff820393b06eb2e8e4a85412b0d01a385)) - ROM_RELOAD(0x4c00, 0x0400) - ROM_RELOAD(0x8c00, 0x0400) - ROM_RELOAD(0xcc00, 0x0400) + ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763)) + ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47)) + ROM_LOAD("antar10.bin", 0x0800, 0x0400, CRC(a6ce5667) SHA1(85ecd4fce94dc419e4c210262f867310b0889cd3)) + ROM_LOAD("antar11.bin", 0x0c00, 0x0400, CRC(6474b17f) SHA1(e4325ceff820393b06eb2e8e4a85412b0d01a385)) ROM_END ROM_START(antar2) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763)) - ROM_RELOAD(0x4000, 0x0400) - ROM_RELOAD(0x8000, 0x0400) - ROM_RELOAD(0xc000, 0x0400) - ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47)) - ROM_RELOAD(0x4400, 0x0400) - ROM_RELOAD(0x8400, 0x0400) - ROM_RELOAD(0xc400, 0x0400) + ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763)) + ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47)) ROM_LOAD("antar10a.bin", 0x0800, 0x0400, CRC(520eb401) SHA1(1d5e3f829a7e7f38c7c519c488e6b7e1a4d34321)) - ROM_RELOAD(0x4800, 0x0400) - ROM_RELOAD(0x8800, 0x0400) - ROM_RELOAD(0xc800, 0x0400) ROM_LOAD("antar11a.bin", 0x0c00, 0x0400, CRC(17ad38bf) SHA1(e2c9472ed8fbe9d5965a5c79515a1b7ea9edaa79)) - ROM_RELOAD(0x4c00, 0x0400) - ROM_RELOAD(0x8c00, 0x0400) - ROM_RELOAD(0xcc00, 0x0400) ROM_END @@ -97,22 +216,10 @@ ROM_END /-------------------------------------------------------------------*/ ROM_START(evlfight) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("evfg08.bin", 0x0000, 0x0400, CRC(2cc2e79a) SHA1(17440512c419b3bb2012539666a5f052f3cd8c1d)) - ROM_RELOAD(0x4000, 0x0400) - ROM_RELOAD(0x8000, 0x0400) - ROM_RELOAD(0xc000, 0x0400) - ROM_LOAD("evfg09.bin", 0x0400, 0x0400, CRC(5232dc4c) SHA1(6f95a578e9f09688e6ce8b0a622bcee887936c82)) - ROM_RELOAD(0x4400, 0x0400) - ROM_RELOAD(0x8400, 0x0400) - ROM_RELOAD(0xc400, 0x0400) - ROM_LOAD("evfg10.bin", 0x0800, 0x0400, CRC(de2f754d) SHA1(0287a9975095bcbf03ddb2b374ff25c080c8020f)) - ROM_RELOAD(0x4800, 0x0400) - ROM_RELOAD(0x8800, 0x0400) - ROM_RELOAD(0xc800, 0x0400) - ROM_LOAD("evfg11.bin", 0x0c00, 0x0400, CRC(5eb8ac02) SHA1(31c80e74a4272becf7014aa96eaf7de555e26cd6)) - ROM_RELOAD(0x4c00, 0x0400) - ROM_RELOAD(0x8c00, 0x0400) - ROM_RELOAD(0xcc00, 0x0400) + ROM_LOAD("evfg08.bin", 0x0000, 0x0400, CRC(2cc2e79a) SHA1(17440512c419b3bb2012539666a5f052f3cd8c1d)) + ROM_LOAD("evfg09.bin", 0x0400, 0x0400, CRC(5232dc4c) SHA1(6f95a578e9f09688e6ce8b0a622bcee887936c82)) + ROM_LOAD("evfg10.bin", 0x0800, 0x0400, CRC(de2f754d) SHA1(0287a9975095bcbf03ddb2b374ff25c080c8020f)) + ROM_LOAD("evfg11.bin", 0x0c00, 0x0400, CRC(5eb8ac02) SHA1(31c80e74a4272becf7014aa96eaf7de555e26cd6)) ROM_END /*------------------------------------------------------------------- @@ -120,27 +227,13 @@ ROM_END /-------------------------------------------------------------------*/ ROM_START(madrace) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("madrace.2a0", 0x0000, 0x0800, CRC(ab487c79) SHA1(a5df29b2af4c9d94d8bf54c5c91d1e9b5ca4d065)) - ROM_RELOAD(0x4000, 0x0800) - ROM_RELOAD(0x8000, 0x0800) - ROM_RELOAD(0xc000, 0x0800) - ROM_LOAD("madrace.2b0", 0x0800, 0x0800, CRC(dcb54b39) SHA1(8e2ca7180f5ea3a28feb34b01f3387b523dbfa3b)) - ROM_RELOAD(0x4800, 0x0800) - ROM_RELOAD(0x8800, 0x0800) - ROM_RELOAD(0xc800, 0x0800) - ROM_LOAD("madrace.2c0", 0x1000, 0x0800, CRC(b24ea245) SHA1(3f868ccbc4bfb77c40c4cc05dcd8eeca85ecd76f)) - ROM_RELOAD(0x5000, 0x0800) - ROM_RELOAD(0x9000, 0x0800) - ROM_RELOAD(0xd000, 0x0800) - ROM_REGION(0x10000, "cpu2", 0) + ROM_LOAD("madrace.2a0", 0x0000, 0x0800, CRC(ab487c79) SHA1(a5df29b2af4c9d94d8bf54c5c91d1e9b5ca4d065)) + ROM_LOAD("madrace.2b0", 0x0800, 0x0800, CRC(dcb54b39) SHA1(8e2ca7180f5ea3a28feb34b01f3387b523dbfa3b)) + ROM_LOAD("madrace.2c0", 0x1000, 0x0800, CRC(b24ea245) SHA1(3f868ccbc4bfb77c40c4cc05dcd8eeca85ecd76f)) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("madrace1.snd", 0x0000, 0x2000, CRC(49e956a5) SHA1(8790cc27a0fda7b8e07bee65109874140b4018a2)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("madrace2.snd", 0x2000, 0x0800, CRC(c19283d3) SHA1(42f9770c46030ef20a80cc94fdbe6548772aa525)) - ROM_RELOAD(0x6000, 0x0800) - ROM_RELOAD(0xa000, 0x0800) - ROM_RELOAD(0xe000, 0x0800) ROM_END @@ -149,22 +242,10 @@ ROM_END /-------------------------------------------------------------------*/ ROM_START(attack) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("attack8.bin", 0x0000, 0x0400, CRC(a5204b58) SHA1(afb4b81720f8d56e88f47fc842b23313824a1085)) - ROM_RELOAD(0x4000, 0x0400) - ROM_RELOAD(0x8000, 0x0400) - ROM_RELOAD(0xc000, 0x0400) - ROM_LOAD("attack9.bin", 0x0400, 0x0400, CRC(bbd086b4) SHA1(6fc94b94beea482d8c8f5b3c69d3f218e2b2dfc4)) - ROM_RELOAD(0x4400, 0x0400) - ROM_RELOAD(0x8400, 0x0400) - ROM_RELOAD(0xc400, 0x0400) + ROM_LOAD("attack8.bin", 0x0000, 0x0400, CRC(a5204b58) SHA1(afb4b81720f8d56e88f47fc842b23313824a1085)) + ROM_LOAD("attack9.bin", 0x0400, 0x0400, CRC(bbd086b4) SHA1(6fc94b94beea482d8c8f5b3c69d3f218e2b2dfc4)) ROM_LOAD("attack10.bin", 0x0800, 0x0400, CRC(764925e4) SHA1(2f207ef87786d27d0d856c5816a570a59d89b718)) - ROM_RELOAD(0x4800, 0x0400) - ROM_RELOAD(0x8800, 0x0400) - ROM_RELOAD(0xc800, 0x0400) ROM_LOAD("attack11.bin", 0x0c00, 0x0400, CRC(972157b4) SHA1(23c90f23a34b34acfe445496a133b6022a749ccc)) - ROM_RELOAD(0x4c00, 0x0400) - ROM_RELOAD(0x8c00, 0x0400) - ROM_RELOAD(0xcc00, 0x0400) ROM_END /*------------------------------------------------------------------- @@ -172,22 +253,10 @@ ROM_END /-------------------------------------------------------------------*/ ROM_START(blkfever) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("blackf8.bin", 0x0000, 0x0400, CRC(916b8ed8) SHA1(ddc7e09b68e3e1a033af5dc5ec32ab5b0922a833)) - ROM_RELOAD(0x4000, 0x0400) - ROM_RELOAD(0x8000, 0x0400) - ROM_RELOAD(0xc000, 0x0400) - ROM_LOAD("blackf9.bin", 0x0400, 0x0400, CRC(ecb72fdc) SHA1(d3598031b7170fab39727b3402b7053d4f9e1ca7)) - ROM_RELOAD(0x4400, 0x0400) - ROM_RELOAD(0x8400, 0x0400) - ROM_RELOAD(0xc400, 0x0400) + ROM_LOAD("blackf8.bin", 0x0000, 0x0400, CRC(916b8ed8) SHA1(ddc7e09b68e3e1a033af5dc5ec32ab5b0922a833)) + ROM_LOAD("blackf9.bin", 0x0400, 0x0400, CRC(ecb72fdc) SHA1(d3598031b7170fab39727b3402b7053d4f9e1ca7)) ROM_LOAD("blackf10.bin", 0x0800, 0x0400, CRC(b3fae788) SHA1(e14e09cc7da1098abf2f60f26a8ec507e123ff7c)) - ROM_RELOAD(0x4800, 0x0400) - ROM_RELOAD(0x8800, 0x0400) - ROM_RELOAD(0xc800, 0x0400) ROM_LOAD("blackf11.bin", 0x0c00, 0x0400, CRC(5a97c1b4) SHA1(b9d7eb0dd55ef6d959c0fab48f710e4b1c8d8003)) - ROM_RELOAD(0x4c00, 0x0400) - ROM_RELOAD(0x8c00, 0x0400) - ROM_RELOAD(0xcc00, 0x0400) ROM_END /*------------------------------------------------------------------- @@ -195,16 +264,11 @@ ROM_END /-------------------------------------------------------------------*/ ROM_START(zira) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("zira_u8.bin", 0x0000, 0x0800, CRC(53f8bf17) SHA1(5eb74f27bc65374a85dd44bbc8f6142488c226a2)) - ROM_RELOAD(0x4000, 0x0800) - ROM_RELOAD(0x8000, 0x0800) - ROM_RELOAD(0xc000, 0x0800) - ROM_LOAD("zira_u9.bin", 0x0800, 0x0800, CRC(d50a2419) SHA1(81b157f579a433389506817b1b6e02afaa2cf0d5)) - ROM_RELOAD(0x4800, 0x0800) - ROM_RELOAD(0x8800, 0x0800) - ROM_RELOAD(0xc800, 0x0800) - ROM_REGION(0x10000, "cpu2", 0) - ROM_LOAD("zira.snd", 0x0000, 0x0400, NO_DUMP) + ROM_LOAD("zira_u8.bin", 0x0000, 0x0800, CRC(53f8bf17) SHA1(5eb74f27bc65374a85dd44bbc8f6142488c226a2)) + ROM_LOAD("zira_u9.bin", 0x0800, 0x0800, CRC(d50a2419) SHA1(81b157f579a433389506817b1b6e02afaa2cf0d5)) + + ROM_REGION(0x10000, "audiocpu", 0) + ROM_LOAD("zira.snd", 0x0000, 0x0400, NO_DUMP) ROM_END /*------------------------------------------------------------------- @@ -212,26 +276,12 @@ ROM_END /-------------------------------------------------------------------*/ ROM_START(cerberup) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("cerb8.cpu", 0x0000, 0x0800, CRC(021d0452) SHA1(496010e6892311b1cabcdac62296cd6aa0782c5d)) - ROM_RELOAD(0x4000, 0x0800) - ROM_RELOAD(0x8000, 0x0800) - ROM_RELOAD(0xc000, 0x0800) - ROM_LOAD("cerb9.cpu", 0x0800, 0x0800, CRC(0fd41156) SHA1(95d1bf42c82f480825e3d907ae3c87b5f994fd2a)) - ROM_RELOAD(0x4800, 0x0800) - ROM_RELOAD(0x8800, 0x0800) - ROM_RELOAD(0xc800, 0x0800) - ROM_LOAD("cerb10.cpu", 0x1000, 0x0800, CRC(785602e0) SHA1(f38df3156cd14ab21752dbc849c654802079eb33)) - ROM_RELOAD(0x5000, 0x0800) - ROM_RELOAD(0x9000, 0x0800) - ROM_RELOAD(0xd000, 0x0800) - ROM_REGION(0x10000, "cpu2", 0) - ROM_LOAD("cerb.snd", 0x0000, 0x2000, CRC(8af53a23) SHA1(a80b57576a1eb1b4544b718b9abba100531e3942)) - ROM_RELOAD(0x2000, 0x2000) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x6000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xa000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) + ROM_LOAD("cerb8.cpu", 0x0000, 0x0800, CRC(021d0452) SHA1(496010e6892311b1cabcdac62296cd6aa0782c5d)) + ROM_LOAD("cerb9.cpu", 0x0800, 0x0800, CRC(0fd41156) SHA1(95d1bf42c82f480825e3d907ae3c87b5f994fd2a)) + ROM_LOAD("cerb10.cpu", 0x1000, 0x0800, CRC(785602e0) SHA1(f38df3156cd14ab21752dbc849c654802079eb33)) + + ROM_REGION(0x10000, "audiocpu", 0) + ROM_LOAD("cerb.snd", 0x0000, 0x2000, CRC(8af53a23) SHA1(a80b57576a1eb1b4544b718b9abba100531e3942)) ROM_END // ??/84 Nautilus diff --git a/src/mame/drivers/play_3.cpp b/src/mame/drivers/play_3.cpp index a2cbdb9f5d7..83c4b7c82ac 100644 --- a/src/mame/drivers/play_3.cpp +++ b/src/mame/drivers/play_3.cpp @@ -15,9 +15,8 @@ Status: ***********************************************************************************/ -#include "emu.h" +#include "machine/genpin.h" #include "cpu/cosmac/cosmac.h" -#include "machine/nvram.h" #include "machine/clock.h" #include "machine/7474.h" @@ -188,6 +187,9 @@ static MACHINE_CONFIG_START( play_3, play_3_state ) MCFG_DEVICE_ADD("4013b", TTL7474, 0) MCFG_7474_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, ef2_w)) MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, int_w)) MCFG_DEVCB_INVERT // int is reversed in mame + + /* Sound */ + MCFG_FRAGMENT_ADD( genpin_audio ) MACHINE_CONFIG_END /*------------------------------------------------------------------- @@ -198,7 +200,7 @@ ROM_START(megaaton) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("cpumegat.bin", 0x0000, 0x2000, CRC(7e7a4ede) SHA1(3194b367cbbf6e0cb2629cd5d82ddee6fe36985a)) - ROM_REGION(0x10000, "cpu2", 0) + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436)) ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761)) ROM_END @@ -208,7 +210,7 @@ ROM_START(megaatona) ROM_LOAD("mega_u12.bin", 0x0000, 0x1000, CRC(65761b02) SHA1(dd9586eaf70698ef7a80ce1be293322f64829aea)) ROM_LOAD("mega_u11.bin", 0x1000, 0x1000, CRC(513f3683) SHA1(0f080a33426df1ffdb14e9b2e6382304e201e335)) - ROM_REGION(0x10000, "cpu2", 0) + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436)) ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761)) ROM_END diff --git a/src/mame/drivers/play_5.cpp b/src/mame/drivers/play_5.cpp index 09edd089fe3..cef4e7dd4c7 100644 --- a/src/mame/drivers/play_5.cpp +++ b/src/mame/drivers/play_5.cpp @@ -1,52 +1,198 @@ // license:BSD-3-Clause -// copyright-holders:Miodrag Milanovic -/* - Playmatic MPU 5 -*/ +// copyright-holders:Miodrag Milanovic, Robbbert +/********************************************************************************** + +PINBALL +Playmatic MPU 5 + +Status: +- Main board is emulated and working (currently runs the initial test mode) +- Displays to add +- Switches, lamps, solenoids to add +- Sound board to emulate +- Mechanical sounds to add + +(note to self: MPU3 and MPU5 appear at first glance to be identical apart from +cpu clock. MPU2 also appears to be identical to MPU3 apart from the RAM address. +If the sound cards are sufficiently similar, we should be able to merge all 3.) + +***********************************************************************************/ -#include "emu.h" +#include "machine/genpin.h" #include "cpu/cosmac/cosmac.h" +#include "machine/clock.h" +#include "machine/7474.h" class play_5_state : public driver_device { public: play_5_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_4013a(*this, "4013a") + , m_4013b(*this, "4013b") { } -protected: - - // devices - required_device m_maincpu; - - // driver_device overrides - virtual void machine_reset() override; -public: DECLARE_DRIVER_INIT(play_5); + DECLARE_WRITE8_MEMBER(port01_w); + DECLARE_WRITE8_MEMBER(port02_w); + DECLARE_WRITE8_MEMBER(port03_w); + DECLARE_READ8_MEMBER(port04_r); + DECLARE_READ8_MEMBER(port05_r); + DECLARE_WRITE8_MEMBER(port06_w); + DECLARE_WRITE8_MEMBER(port07_w); + DECLARE_READ_LINE_MEMBER(clear_r); + DECLARE_READ_LINE_MEMBER(ef1_r); + DECLARE_READ_LINE_MEMBER(ef4_r); + DECLARE_WRITE_LINE_MEMBER(q4013a_w); + DECLARE_WRITE_LINE_MEMBER(clock_w); + DECLARE_WRITE_LINE_MEMBER(clock2_w); + +private: + UINT16 m_clockcnt; + UINT16 m_resetcnt; + virtual void machine_reset() override; + required_device m_maincpu; + required_device m_4013a; + required_device m_4013b; }; static ADDRESS_MAP_START( play_5_map, AS_PROGRAM, 8, play_5_state ) - AM_RANGE(0x0000, 0xffff) AM_NOP + AM_RANGE(0x0000, 0x3fff) AM_ROM + AM_RANGE(0x8000, 0x80ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed ADDRESS_MAP_END +static ADDRESS_MAP_START( play_5_io, AS_IO, 8, play_5_state ) + AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits + AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) + AM_RANGE(0x03, 0x03) AM_WRITE(port03_w) + AM_RANGE(0x04, 0x04) AM_READ(port04_r) + AM_RANGE(0x05, 0x05) AM_READ(port05_r) + AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments + AM_RANGE(0x07, 0x07) AM_WRITE(port07_w) +ADDRESS_MAP_END + + static INPUT_PORTS_START( play_5 ) INPUT_PORTS_END void play_5_state::machine_reset() { + m_clockcnt = 0; + m_resetcnt = 0; + m_4013b->d_w(1); } -DRIVER_INIT_MEMBER(play_5_state,play_5) +WRITE8_MEMBER( play_5_state::port01_w ) { } +WRITE8_MEMBER( play_5_state::port02_w ) +{ +} + +WRITE8_MEMBER( play_5_state::port03_w ) +{ +} + +READ8_MEMBER( play_5_state::port04_r ) +{ + return 0xff; +} + +READ8_MEMBER( play_5_state::port05_r ) +{ + return 0xff; +} + +WRITE8_MEMBER( play_5_state::port06_w ) +{ +} + +WRITE8_MEMBER( play_5_state::port07_w ) +{ + m_4013b->clear_w(0); + m_4013b->clear_w(1); +} + +READ_LINE_MEMBER( play_5_state::clear_r ) +{ + // A hack to make the machine reset itself on boot + if (m_resetcnt < 0xffff) + m_resetcnt++; + return (m_resetcnt == 0xff00) ? 0 : 1; +} + +READ_LINE_MEMBER( play_5_state::ef1_r ) +{ + return BIT(m_clockcnt, 10); +} + +READ_LINE_MEMBER( play_5_state::ef4_r ) +{ + return 1; // reset button +} + +DRIVER_INIT_MEMBER( play_5_state, play_5 ) +{ +} + +WRITE_LINE_MEMBER( play_5_state::clock_w ) +{ + m_4013a->clock_w(state); + + if (!state) + { + m_clockcnt++; + // simulate 4020 chip + if ((m_clockcnt & 0x3ff) == 0) + m_4013b->preset_w(BIT(m_clockcnt, 10)); // Q10 output + } +} + +WRITE_LINE_MEMBER( play_5_state::clock2_w ) +{ + m_4013b->clock_w(state); + m_maincpu->ef3_w(!state); +} + +WRITE_LINE_MEMBER( play_5_state::q4013a_w ) +{ + m_clockcnt = 0; +} + static MACHINE_CONFIG_START( play_5, play_5_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", CDP1802, 2950000) + MCFG_CPU_ADD("maincpu", CDP1802, XTAL_3_579545MHz) MCFG_CPU_PROGRAM_MAP(play_5_map) + MCFG_CPU_IO_MAP(play_5_io) + MCFG_COSMAC_WAIT_CALLBACK(VCC) + MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_5_state, clear_r)) + MCFG_COSMAC_EF1_CALLBACK(READLINE(play_5_state, ef1_r)) + MCFG_COSMAC_EF4_CALLBACK(READLINE(play_5_state, ef4_r)) + MCFG_COSMAC_Q_CALLBACK(DEVWRITELINE("4013a", ttl7474_device, clear_w)) + + MCFG_NVRAM_ADD_0FILL("nvram") + + MCFG_DEVICE_ADD("tpb_clock", CLOCK, XTAL_3_579545MHz / 8) // TPB line from CPU + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_5_state, clock_w)) + + MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_5_state, clock2_w)) + + // This is actually a 4013 chip (has 2 RS flipflops) + MCFG_DEVICE_ADD("4013a", TTL7474, 0) + MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("4013a", ttl7474_device, d_w)) + MCFG_7474_OUTPUT_CB(WRITELINE(play_5_state, q4013a_w)) + + MCFG_DEVICE_ADD("4013b", TTL7474, 0) + MCFG_7474_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, ef2_w)) + MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, int_w)) MCFG_DEVCB_INVERT // int is reversed in mame + + /* Sound */ + MCFG_FRAGMENT_ADD( genpin_audio ) MACHINE_CONFIG_END /*------------------------------------------------------------------- @@ -55,18 +201,10 @@ MACHINE_CONFIG_END ROM_START(kz26) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("kz26.cpu", 0x0000, 0x2000, CRC(8030a699) SHA1(4f86b325801d8ce16011f7b6ba2f3633e2f2af35)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("sound1.su3", 0x0000, 0x2000, CRC(8ad1a804) SHA1(6177619f09af4302ffddd8c0c1b374dab7f47e91)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("sound2.su4", 0x2000, 0x0800, CRC(355dc9ad) SHA1(eac8bc27157afd908f9bc5b5a7c40be5b9427269)) - ROM_RELOAD(0x6000, 0x0800) - ROM_RELOAD(0xa000, 0x0800) - ROM_RELOAD(0xe000, 0x0800) ROM_END /*------------------------------------------------------------------- @@ -75,21 +213,10 @@ ROM_END ROM_START(spain82) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("spaic12.bin", 0x0000, 0x1000, CRC(cd37ecdc) SHA1(ff2d406b6ac150daef868121e5857a956aabf005)) - ROM_RELOAD(0x4000, 0x1000) - ROM_RELOAD(0x8000, 0x1000) - ROM_RELOAD(0xc000, 0x1000) ROM_LOAD("spaic11.bin", 0x1000, 0x0800, CRC(c86c0801) SHA1(1b52539538dae883f9c8fe5bc6454f9224780d11)) - ROM_RELOAD(0x5000, 0x0800) - ROM_RELOAD(0x9000, 0x0800) - ROM_RELOAD(0xd000, 0x0800) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("spasnd.bin", 0x0000, 0x2000, CRC(62412e2e) SHA1(9e48dc3295e78e1024f726906be6e8c3fe3e61b1)) - ROM_RELOAD(0x2000, 0x2000) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x6000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xa000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_END /*------------------------------------------------------------------- @@ -98,17 +225,9 @@ ROM_END ROM_START(nautilus) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("nautilus.rom", 0x0000, 0x2000, CRC(197e5492) SHA1(0f83fc2e742fd0cca0bd162add4bef68c6620067)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("nautilus.snd", 0x0000, 0x2000, CRC(413d110f) SHA1(8360f652296c46339a70861efb34c41e92b25d0e)) - ROM_RELOAD(0x2000, 0x2000) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x6000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xa000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_END /*------------------------------------------------------------------- @@ -117,17 +236,9 @@ ROM_END ROM_START(theraid) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("theraid.rom", 0x0000, 0x2000, CRC(97aa1489) SHA1(6b691b287138cc78cfc1010f380ff8c66342c39b)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("theraid.snd", 0x0000, 0x2000, CRC(e33f8363) SHA1(e7f251c334b15e12b1eb7e079c2e9a5f64338052)) - ROM_RELOAD(0x2000, 0x2000) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x6000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xa000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_END /*------------------------------------------------------------------- @@ -136,18 +247,10 @@ ROM_END ROM_START(ufo_x) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("ufoxcpu.rom", 0x0000, 0x2000, CRC(cf0f7c52) SHA1(ce52da05b310ac84bdd57609e21b0401ee3a2564)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("ufoxu3.rom", 0x0000, 0x2000, CRC(6ebd8ee1) SHA1(83522b76a755556fd38d7b292273b4c68bfc0ddf)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("ufoxu4.rom", 0x2000, 0x0800, CRC(aa54ede6) SHA1(7dd7e2852d42aa0f971936dbb84c7708727ce0e7)) - ROM_RELOAD(0x6000, 0x0800) - ROM_RELOAD(0xa000, 0x0800) - ROM_RELOAD(0xe000, 0x0800) ROM_END /*------------------------------------------------------------------- @@ -156,17 +259,9 @@ ROM_END ROM_START(rock2500) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("r2500cpu.rom", 0x0000, 0x2000, CRC(9c07e373) SHA1(5bd4e69d11e69fdb911a6e65b3d0a7192075abc8)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("r2500snd.rom", 0x0000, 0x2000, CRC(24fbaeae) SHA1(20ff35ed689291f321e483287a977c02e84d4524)) - ROM_RELOAD(0x2000, 0x2000) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x6000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xa000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_END /*------------------------------------------------------------------- @@ -175,35 +270,19 @@ ROM_END ROM_START(starfirp) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("starfcpu.rom", 0x0000, 0x2000, CRC(450ddf20) SHA1(c63c4e3833ffc1f69fcec39bafecae9c80befb2a)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("starfu3.rom", 0x0000, 0x2000, CRC(5d602d80) SHA1(19d21adbcbd0067c051f3033468eda8c5af57be1)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("starfu4.rom", 0x2000, 0x0800, CRC(9af8be9a) SHA1(da6db3716db73baf8e1493aba91d4d85c5d613b4)) - ROM_RELOAD(0x6000, 0x0800) - ROM_RELOAD(0xa000, 0x0800) - ROM_RELOAD(0xe000, 0x0800) ROM_END ROM_START(starfirpa) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("starcpua.rom", 0x0000, 0x2000, CRC(29bac350) SHA1(ab3e3ea4881be954f7fa7278800ffd791c4581da)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("starfu3.rom", 0x0000, 0x2000, CRC(5d602d80) SHA1(19d21adbcbd0067c051f3033468eda8c5af57be1)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("starfu4.rom", 0x2000, 0x0800, CRC(9af8be9a) SHA1(da6db3716db73baf8e1493aba91d4d85c5d613b4)) - ROM_RELOAD(0x6000, 0x0800) - ROM_RELOAD(0xa000, 0x0800) - ROM_RELOAD(0xe000, 0x0800) ROM_END /*------------------------------------------------------------------- @@ -212,22 +291,11 @@ ROM_END ROM_START(fldragon) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("fldrcpu1.rom", 0x0000, 0x2000, CRC(e513ded0) SHA1(64ed3dcff53311fb93bd50d105a4c1186043fdd7)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_LOAD("fldrcpu2.rom", 0x2000, 0x2000, CRC(6ff2b276) SHA1(040b614f0b0587521ef5550b5587b94a7f3f178b)) - ROM_RELOAD(0x6000, 0x2000) - ROM_RELOAD(0xa000, 0x2000) - ROM_RELOAD(0xe000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + ROM_LOAD("fldraudiocpu.rom", 0x2000, 0x2000, CRC(6ff2b276) SHA1(040b614f0b0587521ef5550b5587b94a7f3f178b)) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("fdsndu3.rom", 0x0000, 0x2000, NO_DUMP) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("fdsndu4.rom", 0x2000, 0x0800, NO_DUMP) - ROM_RELOAD(0x6000, 0x0800) - ROM_RELOAD(0xa000, 0x0800) - ROM_RELOAD(0xe000, 0x0800) ROM_END /*------------------------------------------------------------------- @@ -240,22 +308,11 @@ ROM_END ROM_START(sklflite) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("skflcpu1.rom", 0x0000, 0x2000, CRC(8f833b55) SHA1(1729203582c22b51d1cc401aa8f270aa5cdadabe)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_LOAD("skflcpu2.rom", 0x2000, 0x2000, CRC(ffc497aa) SHA1(3e88539ae1688322b9268f502d8ca41cffb28df3)) - ROM_RELOAD(0x6000, 0x2000) - ROM_RELOAD(0xa000, 0x2000) - ROM_RELOAD(0xe000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + ROM_LOAD("skflaudiocpu.rom", 0x2000, 0x2000, CRC(ffc497aa) SHA1(3e88539ae1688322b9268f502d8ca41cffb28df3)) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("sfsndu3.rom", 0x0000, 0x2000, NO_DUMP) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("sfsndu4.rom", 0x2000, 0x0800, NO_DUMP) - ROM_RELOAD(0x6000, 0x0800) - ROM_RELOAD(0xa000, 0x0800) - ROM_RELOAD(0xe000, 0x0800) ROM_END /*------------------------------------------------------------------- @@ -268,18 +325,10 @@ ROM_END ROM_START(trailer) ROM_REGION(0x10000, "maincpu", 0) ROM_LOAD("trcpu.rom", 0x0000, 0x2000, CRC(cc81f84d) SHA1(7a3282a47de271fde84cfddbaceb118add0df116)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) - ROM_REGION(0x10000, "cpu2", 0) + + ROM_REGION(0x10000, "audiocpu", 0) ROM_LOAD("trsndu3.rom", 0x0000, 0x2000, CRC(05975c29) SHA1(e54d3a5613c3e39fc0338a53dbadc2e91c09ffe3)) - ROM_RELOAD(0x4000, 0x2000) - ROM_RELOAD(0x8000, 0x2000) - ROM_RELOAD(0xc000, 0x2000) ROM_LOAD("trsndu4.rom", 0x2000, 0x0800, CRC(bda2a735) SHA1(134b5abb813ed8bf2eeac0861b4c88c7176582d8)) - ROM_RELOAD(0x6000, 0x0800) - ROM_RELOAD(0xa000, 0x0800) - ROM_RELOAD(0xe000, 0x0800) ROM_END GAME(1982, spain82, 0, play_5, play_5, play_5_state, play_5, ROT0, "Playmatic", "Spain '82", MACHINE_IS_SKELETON_MECHANICAL) From 20a584b348c0e54a80f6fc6d3041788396e930ff Mon Sep 17 00:00:00 2001 From: couriersud Date: Sat, 6 Aug 2016 04:36:13 +0200 Subject: [PATCH 048/116] Various netlist fixes: - minor include cleanup - fix a memory hole (caused by assign operators) - more C++. --- src/lib/netlist/nl_base.cpp | 31 ----------- src/lib/netlist/nl_base.h | 12 ++-- src/lib/netlist/nl_factory.h | 1 + src/lib/netlist/nl_setup.cpp | 28 +++++----- src/lib/netlist/nl_setup.h | 1 - src/lib/netlist/plib/palloc.cpp | 8 ++- src/lib/netlist/plib/palloc.h | 24 ++++---- src/lib/netlist/plib/plists.h | 1 - src/lib/netlist/plib/pparser.cpp | 1 + src/lib/netlist/plib/pstate.cpp | 1 + src/lib/netlist/plib/pstream.h | 1 - src/lib/netlist/solver/nld_solver.cpp | 80 ++++++++++++++++++++------- src/lib/netlist/tools/nl_convert.cpp | 1 + 13 files changed, 98 insertions(+), 92 deletions(-) diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index c4d402ff3ee..cc500693dd2 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -803,37 +803,6 @@ analog_net_t::analog_net_t(netlist_t &nl, const pstring &aname, detail::core_ter { } -bool analog_net_t::already_processed(std::vector &groups) -{ - if (isRailNet()) - return true; - for (auto & grp : groups) - { - if (plib::container::contains(grp, this)) - return true; - } - return false; -} - -void analog_net_t::process_net(std::vector &groups) -{ - if (num_cons() == 0) - return; - /* add the net */ - groups.back().push_back(this); - for (auto &p : m_core_terms) - { - if (p->is_type(terminal_t::TERMINAL)) - { - terminal_t *pt = static_cast(p); - analog_net_t *other_net = &pt->m_otherterm->net(); - if (!other_net->already_processed(groups)) - other_net->process_net(groups); - } - } -} - - // ---------------------------------------------------------------------------------------- // core_terminal_t // ---------------------------------------------------------------------------------------- diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index fbd67862dd7..d10c11839a3 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -17,6 +17,7 @@ #include "nl_lists.h" #include "nl_time.h" +#include "plib/palloc.h" #include "plib/pdynlib.h" #include "plib/pstate.h" #include "plib/pfmtlog.h" @@ -694,8 +695,6 @@ namespace netlist void rebuild_list(); /* rebuild m_list after a load */ - void move_connections(net_t *new_net); - std::vector m_core_terms; // save post-start m_list ... protected: @@ -707,6 +706,8 @@ namespace netlist state_var_u8 m_in_queue; /* 0: not in queue, 1: in queue, 2: last was taken */ private: + void move_connections(net_t *new_net); + plib::linkedlist_t m_list_active; core_terminal_t * m_railterminal; @@ -750,7 +751,7 @@ namespace netlist /* internal state support * FIXME: get rid of this and implement export/import in MAME */ - netlist_sig_t &Q_state_ptr() { return m_cur_Q; } + netlist_sig_t &Q_state_ptr() { return m_cur_Q; } protected: private: @@ -772,12 +773,9 @@ namespace netlist nl_double &Q_Analog_state_ptr() { return m_cur_Analog; } //FIXME: needed by current solver code - devices::matrix_solver_t *solver() { return m_solver; } + devices::matrix_solver_t *solver() const { return m_solver; } void set_solver(devices::matrix_solver_t *solver) { m_solver = solver; } - bool already_processed(std::vector &groups); - void process_net(std::vector &groups); - private: devices::matrix_solver_t *m_solver; }; diff --git a/src/lib/netlist/nl_factory.h b/src/lib/netlist/nl_factory.h index d1dac190f30..6a53797d0d8 100644 --- a/src/lib/netlist/nl_factory.h +++ b/src/lib/netlist/nl_factory.h @@ -12,6 +12,7 @@ #include #include "nl_config.h" +#include "plib/palloc.h" #include "plib/plists.h" #include "plib/putil.h" #include "nl_base.h" diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 8048b7db46a..f02d7d7871a 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -678,8 +678,8 @@ void setup_t::resolve_inputs() int tries = 100; while (m_links.size() > 0 && tries > 0) // FIXME: convert into constant { - auto li = m_links.begin(); - while (li != m_links.end()) + + for (auto li = m_links.begin(); li != m_links.end(); ) { const pstring t1s = li->first; const pstring t2s = li->second; @@ -703,18 +703,20 @@ void setup_t::resolve_inputs() log().verbose("deleting empty nets ..."); - // delete empty nets ... and save m_list ... + // delete empty nets - for (auto net = netlist().m_nets.begin(); net != netlist().m_nets.end();) - { - if (net->get()->num_cons() == 0) - { - log().verbose("Deleting net {1} ...", net->get()->name()); - net = netlist().m_nets.erase(net); - } - else - ++net; - } + netlist().m_nets.erase( + std::remove_if(netlist().m_nets.begin(), netlist().m_nets.end(), + [](plib::owned_ptr &x) + { + if (x->num_cons() == 0) + { + x->netlist().log().verbose("Deleting net {1} ...", x->name()); + return true; + } + else + return false; + }), netlist().m_nets.end()); pstring errstr(""); diff --git a/src/lib/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h index 86de48e81ce..155ccc259c6 100644 --- a/src/lib/netlist/nl_setup.h +++ b/src/lib/netlist/nl_setup.h @@ -14,7 +14,6 @@ #include #include "plib/pstring.h" -#include "plib/palloc.h" #include "plib/pfmtlog.h" #include "plib/pstream.h" #include "plib/putil.h" diff --git a/src/lib/netlist/plib/palloc.cpp b/src/lib/netlist/plib/palloc.cpp index c89c2ed7e63..be987b5014b 100644 --- a/src/lib/netlist/plib/palloc.cpp +++ b/src/lib/netlist/plib/palloc.cpp @@ -64,7 +64,9 @@ mempool::~mempool() for (auto & b : m_blocks) { if (b.m_num_alloc != 0) - fprintf(stderr, "Found block with dangling allocations\n"); + { + fprintf(stderr, "Found block with %d dangling allocations\n", (int) b.m_num_alloc); + } delete b.data; } m_blocks.clear(); @@ -122,8 +124,8 @@ void mempool::free(void *ptr) fprintf(stderr, "Argh .. double free\n"); else { - b->m_free = m_min_alloc; - b->cur_ptr = b->data; + //b->m_free = m_min_alloc; + //b->cur_ptr = b->data; } b->m_num_alloc--; } diff --git a/src/lib/netlist/plib/palloc.h b/src/lib/netlist/plib/palloc.h index fb467fbe173..088320fa7e3 100644 --- a/src/lib/netlist/plib/palloc.h +++ b/src/lib/netlist/plib/palloc.h @@ -117,14 +117,19 @@ public: { } owned_ptr(const owned_ptr &r) = delete; owned_ptr & operator =(owned_ptr &r) = delete; - owned_ptr & operator =(owned_ptr &&r) + + template + owned_ptr & operator =(owned_ptr &&r) { + if (m_is_owned && (m_ptr != nullptr)) + delete m_ptr; m_is_owned = r.m_is_owned; m_ptr = r.m_ptr; r.m_is_owned = false; r.m_ptr = nullptr; return *this; } + owned_ptr(owned_ptr &&r) { m_is_owned = r.m_is_owned; @@ -143,7 +148,7 @@ public: ~owned_ptr() { - if (m_is_owned && m_ptr != nullptr) + if (m_is_owned && (m_ptr != nullptr)) delete m_ptr; m_is_owned = false; m_ptr = nullptr; @@ -164,25 +169,16 @@ public: a.m_ptr = new SC(std::forward(args)...); return std::move(a); } - void release() + SC * release() { + SC *tmp = m_ptr; m_is_owned = false; m_ptr = nullptr; + return tmp; } bool is_owned() const { return m_is_owned; } -#if 1 - template - owned_ptr & operator =(owned_ptr &&r) - { - m_is_owned = r.m_is_owned; - m_ptr = r.m_ptr; - r.m_is_owned = false; - r.m_ptr = nullptr; - return *this; - } -#endif SC * operator ->() const { return m_ptr; } SC & operator *() const { return *m_ptr; } SC * get() const { return m_ptr; } diff --git a/src/lib/netlist/plib/plists.h b/src/lib/netlist/plib/plists.h index 16cb2f9e686..0bb83750874 100644 --- a/src/lib/netlist/plib/plists.h +++ b/src/lib/netlist/plib/plists.h @@ -15,7 +15,6 @@ #include #include -#include "palloc.h" #include "pstring.h" namespace plib { diff --git a/src/lib/netlist/plib/pparser.cpp b/src/lib/netlist/plib/pparser.cpp index be52b27dc30..4f41c73d6f8 100644 --- a/src/lib/netlist/plib/pparser.cpp +++ b/src/lib/netlist/plib/pparser.cpp @@ -8,6 +8,7 @@ #include #include "pparser.h" +#include "plib/palloc.h" namespace plib { // ---------------------------------------------------------------------------------------- diff --git a/src/lib/netlist/plib/pstate.cpp b/src/lib/netlist/plib/pstate.cpp index 61535acac09..ddfe0a37bc8 100644 --- a/src/lib/netlist/plib/pstate.cpp +++ b/src/lib/netlist/plib/pstate.cpp @@ -6,6 +6,7 @@ */ #include "pstate.h" +#include "palloc.h" namespace plib { state_manager_t::state_manager_t() diff --git a/src/lib/netlist/plib/pstream.h b/src/lib/netlist/plib/pstream.h index 68ab55ca58b..20aaab83a3a 100644 --- a/src/lib/netlist/plib/pstream.h +++ b/src/lib/netlist/plib/pstream.h @@ -12,7 +12,6 @@ #include "pconfig.h" #include "pstring.h" -#include "palloc.h" #include "pfmtlog.h" namespace plib { diff --git a/src/lib/netlist/solver/nld_solver.cpp b/src/lib/netlist/solver/nld_solver.cpp index b26b7525b40..bc63cbf434a 100644 --- a/src/lib/netlist/solver/nld_solver.cpp +++ b/src/lib/netlist/solver/nld_solver.cpp @@ -157,9 +157,6 @@ void matrix_solver_t::setup_base(analog_net_t::list_t &nets) if (net_proxy_output == nullptr) { - //net_proxy_output = palloc(analog_output_t(*this, - // this->name() + "." + plib::pfmt("m{1}")(m_inps.size()))); - auto net_proxy_output_u = plib::make_unique(*this, this->name() + "." + plib::pfmt("m{1}")(m_inps.size())); net_proxy_output = net_proxy_output_u.get(); m_inps.push_back(std::move(net_proxy_output_u)); @@ -691,9 +688,61 @@ std::unique_ptr NETLIB_NAME(solver)::create_solver(unsigned siz } } +struct net_splitter +{ + + bool already_processed(analog_net_t *n) + { + if (n->isRailNet()) + return true; + for (auto & grp : groups) + if (plib::container::contains(grp, n)) + return true; + return false; + } + + void process_net(analog_net_t *n) + { + if (n->num_cons() == 0) + return; + /* add the net */ + groups.back().push_back(n); + for (auto &p : n->m_core_terms) + { + if (p->is_type(terminal_t::TERMINAL)) + { + terminal_t *pt = static_cast(p); + analog_net_t *other_net = &pt->m_otherterm->net(); + if (!already_processed(other_net)) + process_net(other_net); + } + } + } + + void run(netlist_t &netlist) + { + for (auto & net : netlist.m_nets) + { + netlist.log().debug("processing {1}\n", net->name()); + if (!net->isRailNet() && net->num_cons() > 0) + { + netlist.log().debug(" ==> not a rail net\n"); + /* Must be an analog net */ + analog_net_t *n = static_cast(net.get()); + if (!already_processed(n)) + { + groups.push_back(analog_net_t::list_t()); + process_net(n); + } + } + } + } + + std::vector groups; +}; + void NETLIB_NAME(solver)::post_start() { - std::vector groups; const bool use_specific = true; m_params.m_pivot = m_pivot(); @@ -729,25 +778,14 @@ void NETLIB_NAME(solver)::post_start() netlist().log().verbose("Scanning net groups ..."); // determine net groups - for (auto & net : netlist().m_nets) - { - netlist().log().debug("processing {1}\n", net->name()); - if (!net->isRailNet()) - { - netlist().log().debug(" ==> not a rail net\n"); - /* Must be an analog net */ - analog_net_t *n = static_cast(net.get()); - if (!n->already_processed(groups)) - { - groups.push_back(analog_net_t::list_t()); - n->process_net(groups); - } - } - } + + net_splitter splitter; + + splitter.run(netlist()); // setup the solvers - netlist().log().verbose("Found {1} net groups in {2} nets\n", groups.size(), netlist().m_nets.size()); - for (auto & grp : groups) + netlist().log().verbose("Found {1} net groups in {2} nets\n", splitter.groups.size(), netlist().m_nets.size()); + for (auto & grp : splitter.groups) { std::unique_ptr ms; unsigned net_count = static_cast(grp.size()); diff --git a/src/lib/netlist/tools/nl_convert.cpp b/src/lib/netlist/tools/nl_convert.cpp index 5a238bfe9ba..b0ca5fe3c0d 100644 --- a/src/lib/netlist/tools/nl_convert.cpp +++ b/src/lib/netlist/tools/nl_convert.cpp @@ -9,6 +9,7 @@ #include #include #include "nl_convert.h" +#include "plib/palloc.h" /*------------------------------------------------- From 7a7c123d1e47bd5f6df8d60c89ca46f40bdb351f Mon Sep 17 00:00:00 2001 From: couriersud Date: Sat, 6 Aug 2016 19:22:17 +0200 Subject: [PATCH 049/116] Added doc target to netlist makefile. Removed old style cast. (nw) --- src/lib/netlist/build/makefile | 6 +++++- src/lib/netlist/plib/palloc.cpp | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile index e017e8ef35d..8f11a68b6bd 100644 --- a/src/lib/netlist/build/makefile +++ b/src/lib/netlist/build/makefile @@ -28,6 +28,7 @@ CC = g++-5 LD = @g++-5 MD = @mkdir RM = @rm +DOXYGEN = @doxygen TARGETS = nltool nlwav @@ -160,7 +161,7 @@ depend: .depend # Special targets #------------------------------------------------- -.PHONY: clang +.PHONY: clang doc clang: $(MAKE) CC=clang++ LD=clang++ CEXTRAFLAGS="-Weverything -Werror -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-cast-align -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-exit-time-destructors -Wno-format-nonliteral -Wno-weak-template-vtables" @@ -168,6 +169,9 @@ clang: # FIX: -Wno-weak-vtables -Wno-missing-variable-declarations -Wno-conversion -Wno-exit-time-destructors # +doc: + $(DOXYGEN) doxygen.conf + #------------------------------------------------- # generic rules #------------------------------------------------- diff --git a/src/lib/netlist/plib/palloc.cpp b/src/lib/netlist/plib/palloc.cpp index be987b5014b..b90960f953e 100644 --- a/src/lib/netlist/plib/palloc.cpp +++ b/src/lib/netlist/plib/palloc.cpp @@ -65,7 +65,7 @@ mempool::~mempool() { if (b.m_num_alloc != 0) { - fprintf(stderr, "Found block with %d dangling allocations\n", (int) b.m_num_alloc); + fprintf(stderr, "Found block with %d dangling allocations\n", static_cast(b.m_num_alloc)); } delete b.data; } From 902712f34536236e31e705fa58e2ed8f533f05c6 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sat, 6 Aug 2016 20:54:40 +0100 Subject: [PATCH 050/116] Street Fight and Cross Shooter (Street Fight type hw) use a common motherboard but different Video Boards. This makes the video boards into devices to faciliate this. --- scripts/target/mame/arcade.lua | 5 +- src/mame/drivers/airraid.cpp | 395 +++++-------------------------- src/mame/drivers/stfight.cpp | 421 ++++++++++++--------------------- src/mame/includes/stfight.h | 45 +--- src/mame/machine/stfight.cpp | 2 +- src/mame/mame.lst | 2 +- src/mame/video/airraid_dev.cpp | 261 ++++++++++++++++++++ src/mame/video/airraid_dev.h | 75 ++++++ src/mame/video/stfight.cpp | 365 ---------------------------- src/mame/video/stfight_dev.cpp | 387 ++++++++++++++++++++++++++++++ src/mame/video/stfight_dev.h | 76 ++++++ 11 files changed, 1036 insertions(+), 998 deletions(-) create mode 100644 src/mame/video/airraid_dev.cpp create mode 100644 src/mame/video/airraid_dev.h delete mode 100644 src/mame/video/stfight.cpp create mode 100644 src/mame/video/stfight_dev.cpp create mode 100644 src/mame/video/stfight_dev.h diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 7c09ed322ce..97c2944b3eb 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -3284,9 +3284,12 @@ files { MAME_DIR .. "src/mame/video/seibuspi.cpp", MAME_DIR .. "src/mame/drivers/sengokmj.cpp", MAME_DIR .. "src/mame/drivers/stfight.cpp", + MAME_DIR .. "src/mame/video/stfight_dev.cpp", + MAME_DIR .. "src/mame/video/stfight_dev.h", + MAME_DIR .. "src/mame/video/airraid_dev.cpp", + MAME_DIR .. "src/mame/video/airraid_dev.h", MAME_DIR .. "src/mame/includes/stfight.h", MAME_DIR .. "src/mame/machine/stfight.cpp", - MAME_DIR .. "src/mame/video/stfight.cpp", MAME_DIR .. "src/mame/drivers/toki.cpp", MAME_DIR .. "src/mame/includes/toki.h", MAME_DIR .. "src/mame/video/toki.cpp", diff --git a/src/mame/drivers/airraid.cpp b/src/mame/drivers/airraid.cpp index 89de21f7275..177b967274f 100644 --- a/src/mame/drivers/airraid.cpp +++ b/src/mame/drivers/airraid.cpp @@ -1,6 +1,9 @@ // license:LGPL-2.1+ // copyright-holders:Tomasz Slanina, Angelo Salese, hap -/* Cross Shooter (c) 1987 Seibu +/* Air Raid (aka Cross Shooter) (c) 1987 Seibu + + this driver is for the single board version on the S-0087-011A-0 PCB + for the version using a S-0086-002-B0 base PCB and separate video board see stfight.cpp Custom Modules note: @@ -54,13 +57,6 @@ Stephh's notes (based on the game Z80 code and some tests) : the error.log file. - - Interrupts notes : - - * I think that they aren't handled correctly : after a few frames, - the number of lives are reset to 0, causing a "GAME OVER" 8( - * - or is this protection from the 68705, haze - - - Inputs notes : * COINx don't work correcly : see "cshooter_coin_r" read handler. @@ -155,256 +151,47 @@ Stephh's notes (based on the game Z80 code and some tests) : #include "emu.h" #include "cpu/z80/z80.h" #include "audio/seibu.h" +#include "video/airraid_dev.h" - -class cshooter_state : public driver_device +class airraid_state : public driver_device { public: - cshooter_state(const machine_config &mconfig, device_type type, const char *tag) + airraid_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_seibu_sound(*this, "seibu_sound"), - m_txram(*this, "txram"), - m_vregs(*this, "vregs"), m_mainram(*this, "mainram"), - m_spriteram(*this, "spriteram"), - m_gfxdecode(*this, "gfxdecode"), - m_screen(*this, "screen"), m_palette(*this, "palette"), m_decrypted_opcodes(*this, "decrypted_opcodes"), - m_tx_clut(*this, "tx_clut"), - m_fg_clut(*this, "fg_clut"), - m_bg_clut(*this, "bg_clut"), - m_spr_clut(*this, "spr_clut") + m_airraid_video(*this,"airraid_vid") { } + required_device m_maincpu; optional_device m_seibu_sound; - required_shared_ptr m_txram; - required_shared_ptr m_vregs; optional_shared_ptr m_mainram; - optional_shared_ptr m_spriteram; - required_device m_gfxdecode; - required_device m_screen; required_device m_palette; optional_shared_ptr m_decrypted_opcodes; - required_region_ptr m_tx_clut; - required_region_ptr m_fg_clut; - required_region_ptr m_bg_clut; - required_region_ptr m_spr_clut; + required_device m_airraid_video; - TILEMAP_MAPPER_MEMBER(bg_scan); - TILEMAP_MAPPER_MEMBER(fg_scan); - - TILE_GET_INFO_MEMBER(get_bg_tile_info); - tilemap_t *m_bg_tilemap; - TILE_GET_INFO_MEMBER(get_fg_tile_info); - tilemap_t *m_fg_tilemap; - TILE_GET_INFO_MEMBER(get_cstx_tile_info); - tilemap_t *m_tx_tilemap; - UINT16 m_hw; - - bitmap_ind16 m_temp_bitmap; - - - - DECLARE_WRITE8_MEMBER(cshooter_txram_w); DECLARE_READ8_MEMBER(cshooter_coin_r); DECLARE_WRITE8_MEMBER(cshooter_c500_w); DECLARE_WRITE8_MEMBER(cshooter_c700_w); DECLARE_WRITE8_MEMBER(bank_w); - DECLARE_WRITE8_MEMBER(vregs_w); DECLARE_READ8_MEMBER(seibu_sound_comms_r); DECLARE_WRITE8_MEMBER(seibu_sound_comms_w); DECLARE_DRIVER_INIT(cshootere); DECLARE_DRIVER_INIT(cshooter); - virtual void video_start() override; - DECLARE_PALETTE_INIT(cshooter); DECLARE_MACHINE_RESET(cshooter); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - void mix_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* clut, int base); - UINT32 screen_update_airraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(cshooter_scanline); }; -PALETTE_INIT_MEMBER(cshooter_state, cshooter) -{ - // we use the PROMs in the video drawing code instead because - // it controls transparency as well as the colour lookup. - // (bit 0x40 set in a CLUT PROM means 'transparent pen') -} - - -TILEMAP_MAPPER_MEMBER(cshooter_state::bg_scan) -{ - return ((row&0xf) * 0x10) + (col&0xf) + (((col&0x7f0) >> 4)*0x100) + ((row & 0x30)>>4) * 0x8000; -} - -TILEMAP_MAPPER_MEMBER(cshooter_state::fg_scan) -{ - return ((row&0xf) * 0x10) + (col&0xf) + (((col&0x0f0) >> 4)*0x100) + ((row & 0x1f0)>>4) * 0x1000; -} - - -TILE_GET_INFO_MEMBER(cshooter_state::get_bg_tile_info) -{ - UINT8 *bgMap = memregion("bg_map")->base(); - int tile = bgMap[(tile_index*2)+1] & 0xff; - int attr = bgMap[(tile_index*2)+0] & 0xff; - - tile |= (attr & 0x70) << 4; - - SET_TILE_INFO_MEMBER(2, - tile, - attr&0xf, - 0); -} - -TILE_GET_INFO_MEMBER(cshooter_state::get_fg_tile_info) -{ - UINT8 *bgMap = memregion("fg_map")->base(); - int tile = bgMap[(tile_index*2)+1] & 0xff; - int attr = bgMap[(tile_index*2)+0] & 0xff; - - tile |= (attr & 0x70) << 4; - - SET_TILE_INFO_MEMBER(3, - tile, - attr&0xf, - 0); -} - - - -TILE_GET_INFO_MEMBER(cshooter_state::get_cstx_tile_info) -{ - int code = (m_txram[tile_index*2]); - int attr = (m_txram[tile_index*2+1]); - int color = attr & 0xf; - - SET_TILE_INFO_MEMBER(0, (code << 1) | ((attr & 0x20) >> 5), color, 0); -} - -WRITE8_MEMBER(cshooter_state::cshooter_txram_w) -{ - m_txram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset/2); -} - -void cshooter_state::video_start() -{ - // there might actually be 4 banks of 2048 x 16 tilemaps in here as the upper scroll bits are with the rom banking. - m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cshooter_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(cshooter_state::bg_scan),this),16,16,2048, 64); - - // which could in turn mean this is actually 256 x 128, not 256 x 512 -// m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cshooter_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(cshooter_state::fg_scan),this),16,16,256, 512); - m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cshooter_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(cshooter_state::fg_scan),this),16,16,256, 128); - - m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(cshooter_state::get_cstx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); - -// m_fg_tilemap->set_transparent_pen(0); -// m_tx_tilemap->set_transparent_pen(0); - - // we do manual mixing using a temp bitmap - m_screen->register_screen_bitmap(m_temp_bitmap); -} - -void cshooter_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - for (int i = m_spriteram.bytes() - 4; i >= 0 ; i -= 4) - { - if (m_spriteram[i+1]&0x80) - continue; - - UINT16 tile = (m_spriteram[i]); - tile |= (m_spriteram[i + 1] & 0x70) << 4; - - UINT16 col = (m_spriteram[i+1] & 0x0f); - //col |= (m_spriteram[i+1] & 0x80)<<3; - - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, tile,col, 0, 0, m_spriteram[i+3],m_spriteram[i+2],0); - } -} - - -#define DISPLAY_SPR 1 -#define DISPLAY_FG 2 -#define DISPLAY_BG 4 -#define DISPLAY_TXT 8 -#define DM_GETSCROLL(n) (((m_vregs[(n)]<<1)&0xff) + ((m_vregs[(n)]&0x80)?1:0) +( ((m_vregs[(n)-1]<<4) | (m_vregs[(n)-1]<<12) )&0xff00)) - -void cshooter_state::mix_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* clut, int base) -{ - for (int y = cliprect.min_y; y <= cliprect.max_y; y++) - { - UINT16 *dest = &bitmap.pix16(y); - UINT16 *src = &m_temp_bitmap.pix16(y); - for (int x = cliprect.min_x; x <= cliprect.max_x; x++) - { - UINT8 pix = src[x] & 0xff; - UINT8 real = clut[pix]; - - if (!(real & 0x40)) - { - dest[x] = (real & 0x3f) + base; - } - } - } -} - - -UINT32 cshooter_state::screen_update_airraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - UINT16 bgscrolly = DM_GETSCROLL(0x6); - // this is more likely to be 'bank' than scroll, like NMK16 - bgscrolly += ((m_hw & 0xc0) >> 6) * 256; - - m_bg_tilemap->set_scrollx(0, DM_GETSCROLL(0x2)); - m_bg_tilemap->set_scrolly(0, bgscrolly); - m_fg_tilemap->set_scrollx(0, DM_GETSCROLL(0xa)); - m_fg_tilemap->set_scrolly(0, DM_GETSCROLL(0xe)); - - // draw screen - bitmap.fill(0x80, cliprect); // temp - -// m_temp_bitmap.fill(0x00, cliprect); - - if ((m_hw & DISPLAY_BG) == 0x00) - { - m_bg_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); - mix_layer(screen, bitmap, cliprect, m_bg_clut, 0x80); - } - - if ((m_hw & DISPLAY_FG) == 0x00) - { - m_fg_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); - mix_layer(screen, bitmap, cliprect, m_fg_clut, 0x00); - } - - if (m_hw & DISPLAY_SPR) - { - m_temp_bitmap.fill(0x00, cliprect); - draw_sprites(m_temp_bitmap, cliprect); // technically this should draw manually because 0x40 in the prom is transparency and our code just assumes it to be 0. - mix_layer(screen, bitmap, cliprect, m_spr_clut, 0x40); - } - - if (m_hw & DISPLAY_TXT) - { - m_tx_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); - mix_layer(screen, bitmap, cliprect, m_tx_clut, 0xc0); - } - - - return 0; -} - - /* main cpu */ -TIMER_DEVICE_CALLBACK_MEMBER(cshooter_state::cshooter_scanline) +TIMER_DEVICE_CALLBACK_MEMBER(airraid_state::cshooter_scanline) { int scanline = param; @@ -416,19 +203,19 @@ TIMER_DEVICE_CALLBACK_MEMBER(cshooter_state::cshooter_scanline) } -MACHINE_RESET_MEMBER(cshooter_state,cshooter) +MACHINE_RESET_MEMBER(airraid_state,cshooter) { } -WRITE8_MEMBER(cshooter_state::cshooter_c500_w) +WRITE8_MEMBER(airraid_state::cshooter_c500_w) { } -WRITE8_MEMBER(cshooter_state::cshooter_c700_w) +WRITE8_MEMBER(airraid_state::cshooter_c700_w) { } -WRITE8_MEMBER(cshooter_state::bank_w) +WRITE8_MEMBER(airraid_state::bank_w) { // format of this address is TTBB tbfs @@ -439,35 +226,27 @@ WRITE8_MEMBER(cshooter_state::bank_w) // f = fg layer disable // s = sprite layer enable -// printf("bankw %02x\n", data & 0xc0); - - m_hw = data; - membank("bank1")->set_entry((data>>4)&3); + + m_airraid_video->layer_enable_w(data & 0xcf); + } -READ8_MEMBER(cshooter_state::seibu_sound_comms_r) +READ8_MEMBER(airraid_state::seibu_sound_comms_r) { return m_seibu_sound->main_word_r(space,offset,0x00ff); } -WRITE8_MEMBER(cshooter_state::seibu_sound_comms_w) +WRITE8_MEMBER(airraid_state::seibu_sound_comms_w) { m_seibu_sound->main_word_w(space,offset,data,0x00ff); } -WRITE8_MEMBER(cshooter_state::vregs_w) -{ - m_vregs[offset] = data; - - if ((offset != 0x2) && (offset != 0x01) && (offset != 0xa) && (offset != 0x09) && (offset != 0xe) && (offset != 0x0d) ) - printf("vregs_w %02x: %02x\n", offset, data); -} -static ADDRESS_MAP_START( airraid_map, AS_PROGRAM, 8, cshooter_state ) +static ADDRESS_MAP_START( airraid_map, AS_PROGRAM, 8, airraid_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_WRITENOP // rld result write-back AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") @@ -479,22 +258,22 @@ static ADDRESS_MAP_START( airraid_map, AS_PROGRAM, 8, cshooter_state ) // AM_RANGE(0xc600, 0xc600) AM_WRITE(cshooter_c600_w) // see notes AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w) // AM_RANGE(0xc801, 0xc801) AM_WRITE(cshooter_c801_w) // see notes - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(cshooter_txram_w) AM_SHARE("txram") + AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, txram_w) AM_SHARE("txram") AM_RANGE(0xd800, 0xd8ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0xda00, 0xdaff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext") - AM_RANGE(0xdc11, 0xdc11) AM_WRITE(bank_w) - AM_RANGE(0xdc00, 0xdc0f) AM_RAM_WRITE(vregs_w) AM_SHARE("vregs") + AM_RANGE(0xdc00, 0xdc0f) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, vregs_w) AM_SHARE("vregs") // AM_RANGE(0xdc10, 0xdc10) AM_RAM + AM_RANGE(0xdc11, 0xdc11) AM_WRITE(bank_w) // AM_RANGE(0xdc19, 0xdc19) AM_RAM // AM_RANGE(0xdc1e, 0xdc1e) AM_RAM // AM_RANGE(0xdc1f, 0xdc1f) AM_RAM AM_RANGE(0xde00, 0xde0f) AM_READWRITE(seibu_sound_comms_r,seibu_sound_comms_w) AM_RANGE(0xe000, 0xfdff) AM_RAM AM_SHARE("mainram") - AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("spriteram") + AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("sprite_ram") ADDRESS_MAP_END -static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cshooter_state ) +static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, airraid_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END @@ -582,68 +361,22 @@ INPUT_PORTS_END -static const gfx_layout cshooter_charlayout = -{ - 8,8, /* 8*8 characters */ - RGN_FRAC(1,1), /* 512 characters */ - 2, /* 4 bits per pixel */ - { 0,4 }, - { 8,9,10,11,0,1,2,3 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, - 128*1 -}; - -static const gfx_layout cshooter_char16layout = -{ - 16,16, /* 8*8 characters */ - RGN_FRAC(1,1), /* 512 characters */ - 4, /* 4 bits per pixel */ -// { 0,8,4,12 }, - { 0,4,8,12 }, - -// { 12,4,8,0 }, - { 0,1,2,3, 16,17,18,19, 512+0,512+1,512+2,512+3, 512+16,512+17,512+18,512+19}, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 }, - 32*32 -}; - - - -static GFXDECODE_START( cshooter ) - GFXDECODE_ENTRY( "tx_gfx", 0, cshooter_charlayout, 0, 16 ) - GFXDECODE_ENTRY( "spr_gfx", 0, cshooter_char16layout, 0, 16 ) - GFXDECODE_ENTRY( "bg_gfx", 0, cshooter_char16layout, 0, 16 ) - GFXDECODE_ENTRY( "fg_gfx", 0, cshooter_char16layout, 0, 16 ) -GFXDECODE_END - - - -static MACHINE_CONFIG_START( airraid, cshooter_state ) +static MACHINE_CONFIG_START( airraid, airraid_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL_12MHz/2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(airraid_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cshooter_state, cshooter_scanline, "screen", 0, 1) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", airraid_state, cshooter_scanline, "airraid_vid:screen", 0, 1) SEIBU2_AIRRAID_SOUND_SYSTEM_CPU(XTAL_14_31818MHz/4) /* verified on pcb */ SEIBU_SOUND_SYSTEM_ENCRYPTED_LOW() - MCFG_QUANTUM_PERFECT_CPU("maincpu") - - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16) - MCFG_SCREEN_UPDATE_DRIVER(cshooter_state, screen_update_airraid) - - MCFG_SCREEN_PALETTE("palette") + MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) - MCFG_GFXDECODE_ADD("gfxdecode", "palette", cshooter) + MCFG_AIRRAID_VIDEO_ADD("airraid_vid") /* sound hardware */ SEIBU_AIRRAID_SOUND_SYSTEM_YM2151_INTERFACE(XTAL_14_31818MHz/4) @@ -692,41 +425,41 @@ ROM_START( airraid ) ROM_LOAD( "5.6f", 0x00000, 0x02000, CRC(30be398c) SHA1(6c61200ee8888d6270c8cec50423b3b5602c2027) ) ROM_LOAD( "4.7f", 0x10000, 0x08000, CRC(3cd715b4) SHA1(da735fb5d262908ddf7ed7dacdea68899f1723ff) ) - ROM_REGION( 0x02000, "tx_gfx", 0 ) // TX Layer - ROM_LOAD( "3.13e", 0x00000, 0x02000, CRC(672ec0e8) SHA1(a11cd90d6494251ceee3bc7c72f4e7b1580b77e2) ) - - ROM_REGION( 0x100, "tx_clut", 0 ) // taken from cshootert, not verified for this PCB - ROM_LOAD( "63s281.d16", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut - ROM_REGION( 0x0200, "proms", 0 ) // this PCB type has different proms when compared to the cshootert hardware PCB where they were dumped ROM_LOAD( "pr.c19", 0x0000, 0x0200, NO_DUMP ) ROM_LOAD( "6308.a13", 0x0000, 0x0100, NO_DUMP ) + ROM_REGION( 0x02000, "airraid_vid:tx_gfx", 0 ) // TX Layer + ROM_LOAD( "3.13e", 0x00000, 0x02000, CRC(672ec0e8) SHA1(a11cd90d6494251ceee3bc7c72f4e7b1580b77e2) ) + + ROM_REGION( 0x100, "airraid_vid:tx_clut", 0 ) // taken from cshootert, not verified for this PCB + ROM_LOAD( "63s281.d16", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut + /* ### MODULE 1 ### Background generation / graphics */ - ROM_REGION( 0x40000, "bg_map", 0 ) + ROM_REGION( 0x40000, "airraid_vid:bg_map", 0 ) ROM_LOAD16_BYTE( "bg_layouts_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "bg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x40000, "bg_gfx", 0 ) + ROM_REGION( 0x40000, "airraid_vid:bg_gfx", 0 ) ROM_LOAD16_BYTE( "bg_tiles_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "bg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "bg_clut", 0 ) + ROM_REGION( 0x100, "airraid_vid:bg_clut", 0 ) ROM_LOAD( "bg_clut", 0x000, 0x100, NO_DUMP ) /* ### MODULE 2 ### Foreground generation / graphics */ - ROM_REGION( 0x40000, "fg_map", 0 ) + ROM_REGION( 0x40000, "airraid_vid:fg_map", 0 ) ROM_LOAD16_BYTE( "fg_layouts_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "fg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x40000, "fg_gfx", 0 ) + ROM_REGION( 0x40000, "airraid_vid:fg_gfx", 0 ) ROM_LOAD16_BYTE( "fg_tiles_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "fg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "fg_clut", 0 ) + ROM_REGION( 0x100, "airraid_vid:fg_clut", 0 ) ROM_LOAD( "fg_clut", 0x000, 0x100, NO_DUMP ) /* ### MODULE 3 ### Sprite graphics */ - ROM_REGION( 0x40000, "spr_gfx", 0 ) + ROM_REGION( 0x40000, "airraid_vid:spr_gfx", 0 ) ROM_LOAD16_BYTE( "sprite_tiles_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "sprite_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "spr_clut", 0 ) + ROM_REGION( 0x100, "airraid_vid:spr_clut", 0 ) ROM_LOAD( "spr_clut", 0x000, 0x100, NO_DUMP ) ROM_END @@ -775,52 +508,53 @@ ROM_START( cshooter ) ROM_LOAD( "5.6f", 0x00000, 0x02000, CRC(30be398c) SHA1(6c61200ee8888d6270c8cec50423b3b5602c2027) ) // 5.g6 ROM_LOAD( "4.7f", 0x10000, 0x08000, CRC(3cd715b4) SHA1(da735fb5d262908ddf7ed7dacdea68899f1723ff) ) // 4.g8 - ROM_REGION( 0x02000, "tx_gfx", 0 ) // TX Layer - ROM_LOAD( "3.f11", 0x00000, 0x02000, CRC(67b50a47) SHA1(b1f4aefc9437edbeefba5371149cc08c0b55c741) ) - - ROM_REGION( 0x100, "tx_clut", 0 ) // taken from cshootert, not verified for this PCB - ROM_LOAD( "63s281.d16", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut - ROM_REGION( 0x0200, "proms", 0 ) // this PCB type has different proms when compared to the cshootert hardware PCB where they were dumped ROM_LOAD( "pr.c19", 0x0000, 0x0200, NO_DUMP ) ROM_LOAD( "6308.a13", 0x0000, 0x0100, NO_DUMP ) + + ROM_REGION( 0x02000, "airraid_vid:tx_gfx", 0 ) // TX Layer + ROM_LOAD( "3.f11", 0x00000, 0x02000, CRC(67b50a47) SHA1(b1f4aefc9437edbeefba5371149cc08c0b55c741) ) + + ROM_REGION( 0x100, "airraid_vid:tx_clut", 0 ) // taken from cshootert, not verified for this PCB + ROM_LOAD( "63s281.d16", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut + /* ### MODULE 1 ### Background generation / graphics */ - ROM_REGION( 0x40000, "bg_map", 0 ) + ROM_REGION( 0x40000, "airraid_vid:bg_map", 0 ) ROM_LOAD16_BYTE( "bg_layouts_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "bg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x40000, "bg_gfx", 0 ) + ROM_REGION( 0x40000, "airraid_vid:bg_gfx", 0 ) ROM_LOAD16_BYTE( "bg_tiles_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "bg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "bg_clut", 0 ) + ROM_REGION( 0x100, "airraid_vid:bg_clut", 0 ) ROM_LOAD( "bg_clut", 0x000, 0x100, NO_DUMP ) /* ### MODULE 2 ### Foreground generation / graphics */ - ROM_REGION( 0x40000, "fg_map", 0 ) + ROM_REGION( 0x40000, "airraid_vid:fg_map", 0 ) ROM_LOAD16_BYTE( "fg_layouts_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "fg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x40000, "fg_gfx", 0 ) + ROM_REGION( 0x40000, "airraid_vid:fg_gfx", 0 ) ROM_LOAD16_BYTE( "fg_tiles_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "fg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "fg_clut", 0 ) + ROM_REGION( 0x100, "airraid_vid:fg_clut", 0 ) ROM_LOAD( "fg_clut", 0x000, 0x100, NO_DUMP ) /* ### MODULE 3 ### Sprite graphics */ - ROM_REGION( 0x40000, "spr_gfx", 0 ) + ROM_REGION( 0x40000, "airraid_vid:spr_gfx", 0 ) ROM_LOAD16_BYTE( "sprite_tiles_even", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "sprite_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "spr_clut", 0 ) + ROM_REGION( 0x100, "airraid_vid:spr_clut", 0 ) ROM_LOAD( "spr_clut", 0x000, 0x100, NO_DUMP ) ROM_END -DRIVER_INIT_MEMBER(cshooter_state, cshooter) +DRIVER_INIT_MEMBER(airraid_state, cshooter) { membank("bank1")->configure_entries(0, 4, memregion("maindata")->base(), 0x4000); } -DRIVER_INIT_MEMBER(cshooter_state,cshootere) +DRIVER_INIT_MEMBER(airraid_state,cshootere) { UINT8 *rom = memregion("maincpu")->base(); @@ -853,8 +587,7 @@ DRIVER_INIT_MEMBER(cshooter_state,cshootere) } - - -GAME( 1987, cshooter, airraid, airraid_crypt, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAME( 1987, airraid, 0, airraid_crypt, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // There's also an undumped International Games version +GAME( 1987, cshooter, airraid, airraid_crypt, airraid, airraid_state, cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (Single PCB)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1987, airraid, 0, airraid_crypt, airraid, airraid_state, cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (Single PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) + diff --git a/src/mame/drivers/stfight.cpp b/src/mame/drivers/stfight.cpp index 6d321579039..a8f71fab77f 100644 --- a/src/mame/drivers/stfight.cpp +++ b/src/mame/drivers/stfight.cpp @@ -4,6 +4,17 @@ *** STREET FIGHT hardware *** This has been adapted from the excellent ***************************** Psychic 5 description (by Roberto Ventura) + + Notes: Lower Board - CPU board S-0086-002-B0 (both games) + Top Board - GFX board S-0086-002A-A0 (Street Fight) + Top Board - GFX board S-0087-807 (Cross Shooter) + + for the single PCB version of Air Raid / Cross Shooter on the S-0087-011A-0 PCB, + see airraid.cpp + + +--- + Street Fight (c) Seibu Kaihatsu (1986) @@ -180,8 +191,6 @@ colors on screen. Each color component (RGB) depth is 4 bits, two bytes $100 apart are used for each color code (12 bits). -format: unknown - probably RRRRGGGG - 0000BBBB - I suspect that the colors are organized in sub-palettes, since the graphics layers are all 4 bits (16 colors) each. Each of the text/graphics layers have 'attribute' bytes associated with them that would define the palette @@ -190,14 +199,16 @@ usage for each character/tile. The 16 colours at offset $C0 appear to be the text palette. This group of colours does not appear to change throughout the game, and the lower 192 colours fade in/out independently of these 16 - consistent with observations -of the real game. You'd think then that the palette would be reaonably -easy to deduce from the text video ram attribute byte - go ahead and try! :P - -The mapping of graphics pixels to palette similarly escapes me, though I -must admit I haven't exhausted all avenues of investigation just yet! +of the real game. There is a related mystery with the transparency colour. For the most part colour 15 corresponds to the transparent colour, except in a few cases. +(for some Seibu PCB types transparency is handled by bit 0x40 in the CLUT + PROMs, but not here, unless they've been dumped incorrectly) + +----- + +Notes below are for Street Fight video board only 6) TILE-BASED LAYERS @@ -232,7 +243,6 @@ conventional RAM. See the memory map for sprite data format. **************************************************************************** TODO: -- palette is incorporated - fix!!! - handle transparency in text layer properly (how?) - second bank of sf02 is this used? (probably NOT) - stfight/empcity YM2203s should be clocked at 1.5MHz but this results in @@ -254,8 +264,8 @@ TODO: static ADDRESS_MAP_START( cpu1_map, AS_PROGRAM, 8, stfight_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* sf02.bin */ - AM_RANGE(0xc000, 0xc0ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette") - AM_RANGE(0xc100, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect_ext) AM_SHARE("palette_ext") + AM_RANGE(0xc000, 0xc0ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0xc100, 0xc1ff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext") AM_RANGE(0xc200, 0xc200) AM_READ_PORT("P1") AM_RANGE(0xc201, 0xc201) AM_READ_PORT("P2") AM_RANGE(0xc202, 0xc202) AM_READ_PORT("START") @@ -267,26 +277,34 @@ static ADDRESS_MAP_START( cpu1_map, AS_PROGRAM, 8, stfight_state ) AM_RANGE(0xc700, 0xc700) AM_WRITE(stfight_coin_w) AM_RANGE(0xc804, 0xc804) AM_WRITE(stfight_io_w) AM_RANGE(0xc806, 0xc806) AM_WRITENOP /* TBD */ - AM_RANGE(0xc807, 0xc807) AM_WRITE(stfight_sprite_bank_w) - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(stfight_text_char_w) AM_SHARE("text_char_ram") - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(stfight_text_attr_w) AM_SHARE("text_attr_ram") - AM_RANGE(0xd800, 0xd808) AM_WRITE(stfight_vh_latch_w) AM_SHARE("vh_latch_ram") AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sprite_ram") ADDRESS_MAP_END +static ADDRESS_MAP_START( stfight_cpu1_map, AS_PROGRAM, 8, stfight_state ) + AM_RANGE(0xc807, 0xc807) AM_DEVWRITE("stfight_vid", stfight_video_device, stfight_sprite_bank_w) + AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("stfight_vid", stfight_video_device, stfight_text_char_w) AM_SHARE("txram") + AM_RANGE(0xd800, 0xd808) AM_RAM_DEVWRITE("stfight_vid", stfight_video_device, stfight_vh_latch_w) AM_SHARE("vregs") + AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sprite_ram") + AM_IMPORT_FROM(cpu1_map) +ADDRESS_MAP_END + + static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, stfight_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") ADDRESS_MAP_END + static ADDRESS_MAP_START( cshooter_cpu1_map, AS_PROGRAM, 8, stfight_state ) AM_RANGE(0xc801, 0xc801) AM_WRITE(stfight_bank_w) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(cshooter_text_w) AM_SHARE("tx_vram") + AM_RANGE(0xd000, 0xd7ff) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, txram_w) AM_SHARE("txram") + AM_RANGE(0xd800, 0xd80f) AM_RAM_DEVWRITE("airraid_vid", airraid_video_device, vregs_w) AM_SHARE("vregs") // wrong? AM_RANGE(0xe000, 0xfdff) AM_RAM AM_RANGE(0xfe00, 0xffff) AM_RAM AM_SHARE("sprite_ram") AM_IMPORT_FROM(cpu1_map) ADDRESS_MAP_END + + static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8, stfight_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) @@ -433,115 +451,15 @@ static INPUT_PORTS_START( cshooter ) PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW1:8" ) INPUT_PORTS_END -/* text-layer characters */ -static const gfx_layout charlayout = -{ - 8,8, /* 8*8 pixels */ - 512, /* 512 characters */ - 2, /* 2 bits per pixel */ - { 4, 0 }, - { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, - 8*16 /* every char takes 16 consecutive bytes */ -}; - -static const gfx_layout cshooter_charlayout = -{ - 8,8, /* 8*8 characters */ - RGN_FRAC(1,1), /* 512 characters */ - 2, /* 4 bits per pixel */ - { 0,4 }, - { 8,9,10,11,0,1,2,3 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, - 128*1 -}; -/* foreground tiles */ -static const gfx_layout fglayout = -{ - 16,16, /* 16*16 pixels */ - 1024, /* 1024 tiles */ - 4, /* 4 bits per pixel */ - { 64*1024*8+0, 64*1024*8+4, 0, 4 }, - { 0, 1, 2, 3, - 8, 9, 10, 11, - 32*8+0, 32*8+1, 32*8+ 2, 32*8+ 3, - 32*8+8, 32*8+9, 32*8+10, 32*8+11 }, - { 0*8, 2*8, 4*8, 6*8, - 8*8, 10*8, 12*8, 14*8, - 16*8, 18*8, 20*8, 22*8, - 24*8, 26*8, 28*8, 30*8 }, - 64*8 /* every char takes 64 consecutive bytes */ -}; -/* - * The background tiles are interleaved in banks of 2 - * - so we need to create two separate layout structs - * to handle them properly with tilemaps - */ - -/* background tiles */ -static const gfx_layout bglayout = -{ - 16,16, /* 16*16 pixels */ - 512, /* 512 tiles */ - 4, /* 4 bits per pixel */ - { 64*1024*8+4, 64*1024*8+0, 4, 0 }, - { 0, 1, 2, 3, - 8, 9, 10, 11, - 64*8+0, 64*8+1, 64*8+ 2, 64*8+ 3, - 64*8+8, 64*8+9, 64*8+10, 64*8+11 }, - { 0*8, 2*8, 4*8, 6*8, - 8*8, 10*8, 12*8, 14*8, - 16*8, 18*8, 20*8, 22*8, - 24*8, 26*8, 28*8, 30*8 }, - 128*8 /* every tile takes 64/128 consecutive bytes */ -}; - -/* sprites */ -static const gfx_layout spritelayout = -{ - 16,16, /* 16*16 pixels */ - 1024, /* 1024 sprites */ - 4, /* 4 bits per pixel */ - { 64*1024*8+0, 64*1024*8+4, 0, 4 }, - { 0, 1, 2, 3, - 8, 9, 10, 11, - 32*8+0, 32*8+1, 32*8+ 2, 32*8+ 3, - 32*8+8, 32*8+9, 32*8+10, 32*8+11 }, - { 0*8, 2*8, 4*8, 6*8, - 8*8, 10*8, 12*8, 14*8, - 16*8, 18*8, 20*8, 22*8, - 24*8, 26*8, 28*8, 30*8 }, - 64*8 /* every sprite takes 64 consecutive bytes */ -}; - - -static GFXDECODE_START( stfight ) - GFXDECODE_ENTRY( "tx_gfx", 0x0000, charlayout, 0, 16 ) - GFXDECODE_ENTRY( "fg_gfx", 0x0000, fglayout, 16*16, 16 ) - GFXDECODE_ENTRY( "bg_gfx", 0x0000, bglayout, 16*16+16*16, 16 ) - GFXDECODE_ENTRY( "bg_gfx", 0x0020, bglayout, 16*16+16*16, 16 ) - GFXDECODE_ENTRY( "spr_gfx", 0x0000, spritelayout, 16*16+16*16+16*16, 16 ) -GFXDECODE_END - -static GFXDECODE_START( cshooter ) - GFXDECODE_ENTRY( "tx_gfx", 0x0000, cshooter_charlayout,0, 16 ) - GFXDECODE_ENTRY( "fg_gfx", 0x0000, fglayout, 16*16, 16 ) - GFXDECODE_ENTRY( "bg_gfx", 0x0000, bglayout, 16*16+16*16, 16 ) - GFXDECODE_ENTRY( "bg_gfx", 0x0020, bglayout, 16*16+16*16, 16 ) - GFXDECODE_ENTRY( "spr_gfx", 0x0000, spritelayout, 16*16+16*16+16*16, 16 ) -GFXDECODE_END - - -static MACHINE_CONFIG_START( stfight, stfight_state ) +static MACHINE_CONFIG_START( stfight_base, stfight_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 4) MCFG_CPU_PROGRAM_MAP(cpu1_map) - MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", stfight_state, stfight_vb_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("stfight_vid:screen", stfight_state, stfight_vb_interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL_12MHz / 4) MCFG_CPU_PROGRAM_MAP(cpu2_map) @@ -552,21 +470,8 @@ static MACHINE_CONFIG_START( stfight, stfight_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(stfight_state, screen_update_stfight) - MCFG_SCREEN_PALETTE("palette") - MCFG_VIDEO_START_OVERRIDE(stfight_state,stfight) - - MCFG_GFXDECODE_ADD("gfxdecode", "palette", stfight) - MCFG_PALETTE_ADD("palette", 16*16+16*16+16*16+16*16) - MCFG_PALETTE_INDIRECT_ENTRIES(256) + MCFG_PALETTE_ADD("palette", 256) MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG) - MCFG_PALETTE_INIT_OWNER(stfight_state, stfight) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -590,30 +495,22 @@ static MACHINE_CONFIG_START( stfight, stfight_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( stfight, stfight_base ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(stfight_cpu1_map) + MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map) + MCFG_CPU_VBLANK_INT_DRIVER("stfight_vid:screen", stfight_state, stfight_vb_interrupt) -static MACHINE_CONFIG_DERIVED( cshooter, stfight ) - MCFG_CPU_REPLACE("maincpu", Z80, XTAL_12MHz / 2) + MCFG_STFIGHT_VIDEO_ADD("stfight_vid") +MACHINE_CONFIG_END + + +static MACHINE_CONFIG_DERIVED( cshooter, stfight_base ) + MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(cshooter_cpu1_map) - MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_DECRYPTED_OPCODES) - MCFG_CPU_VBLANK_INT_DRIVER("screen", stfight_state, stfight_vb_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("airraid_vid:screen", stfight_state, stfight_vb_interrupt) - MCFG_CPU_REPLACE("audiocpu", Z80, XTAL_12MHz / 2) - MCFG_CPU_PROGRAM_MAP(cpu2_map) - MCFG_CPU_PERIODIC_INT_DRIVER(stfight_state, irq0_line_hold, 120) - - MCFG_QUANTUM_TIME(attotime::from_hz(600)) - - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(stfight_state, screen_update_cshooter) - - MCFG_GFXDECODE_MODIFY("gfxdecode", cshooter) - MCFG_VIDEO_START_OVERRIDE(stfight_state,cshooter) - - MCFG_SOUND_MODIFY("ym1") - MCFG_SOUND_CLOCK(XTAL_12MHz / 8) - - MCFG_SOUND_MODIFY("ym2") - MCFG_SOUND_CLOCK(XTAL_12MHz / 8) + MCFG_AIRRAID_VIDEO_ADD("airraid_vid") MACHINE_CONFIG_END @@ -635,47 +532,47 @@ ROM_START( empcity ) ROM_REGION( 0x0800, "mcu", 0 ) ROM_LOAD( "empcityu_68705.3j", 0x0000, 0x0800, CRC(182f7616) SHA1(38b4f23a559ae13f8ca1b974407a2a40fc52879f) ) - ROM_REGION( 0x02000, "tx_gfx", 0 ) /* character data */ + ROM_REGION( 0x02000, "stfight_vid:tx_gfx", 0 ) /* character data */ ROM_LOAD( "17.2N", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) - ROM_REGION( 0x20000, "fg_gfx", 0 ) /* foreground tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:fg_gfx", 0 ) /* foreground tile pixel data */ ROM_LOAD( "7.4C", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) ROM_LOAD( "8.5C", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) ROM_LOAD( "5.2C", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) ROM_LOAD( "6.3C", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) - ROM_REGION( 0x20000, "bg_gfx", 0 ) /* background tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:bg_gfx", 0 ) /* background tile pixel data */ ROM_LOAD( "13.4C", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) ROM_LOAD( "14.5J", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) ROM_LOAD( "11.2J", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) ROM_LOAD( "12.3J", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) - ROM_REGION( 0x20000, "spr_gfx", 0 ) /* sprite data */ + ROM_REGION( 0x20000, "stfight_vid:spr_gfx", 0 ) /* sprite data */ ROM_LOAD( "20.8W", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) ROM_LOAD( "21.9W", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) ROM_LOAD( "18.6W", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) ROM_LOAD( "19.7W", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) - ROM_REGION( 0x10000, "fg_map", 0 ) /* foreground map data */ + ROM_REGION( 0x10000, "stfight_vid:fg_map", 0 ) /* foreground map data */ ROM_LOAD( "9.7C", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) ROM_LOAD( "10.8C", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) - ROM_REGION( 0x10000, "bg_map", 0 ) /* background map data */ + ROM_REGION( 0x10000, "stfight_vid:bg_map", 0 ) /* background map data */ ROM_LOAD( "15.7J", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) ROM_LOAD( "16.8J", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) - ROM_REGION( 0x0100, "tx_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:tx_clut", 0 ) ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ - ROM_REGION( 0x0100, "fg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:fg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.002", 0x0000, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ ROM_LOAD_NIB_LOW( "82s129.003", 0x0000, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) - ROM_REGION( 0x0100, "bg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:bg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.004", 0x0000, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ ROM_LOAD_NIB_LOW( "82s129.005", 0x0000, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) - ROM_REGION( 0x0100, "spr_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:spr_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.052", 0x0000, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ ROM_LOAD_NIB_LOW( "82s129.066", 0x0000, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) @@ -697,47 +594,47 @@ ROM_START( empcityu ) ROM_REGION( 0x0800, "mcu", 0 ) ROM_LOAD( "empcityu_68705.3j", 0x0000, 0x0800, CRC(182f7616) SHA1(38b4f23a559ae13f8ca1b974407a2a40fc52879f) ) - ROM_REGION( 0x02000, "tx_gfx", 0 ) /* character data */ + ROM_REGION( 0x02000, "stfight_vid:tx_gfx", 0 ) /* character data */ ROM_LOAD( "vid.2p", 0x0000, 0x2000, CRC(15593793) SHA1(ac9ca8a0aa0ce3810f45aa41e74d4946ecced245) ) - ROM_REGION( 0x20000, "fg_gfx", 0 ) /* foreground tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:fg_gfx", 0 ) /* foreground tile pixel data */ ROM_LOAD( "7.4C", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) ROM_LOAD( "8.5C", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) ROM_LOAD( "5.2C", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) ROM_LOAD( "6.3C", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) - ROM_REGION( 0x20000, "bg_gfx", 0 ) /* background tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:bg_gfx", 0 ) /* background tile pixel data */ ROM_LOAD( "13.4C", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) ROM_LOAD( "14.5J", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) ROM_LOAD( "11.2J", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) ROM_LOAD( "12.3J", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) - ROM_REGION( 0x20000, "spr_gfx", 0 ) /* sprite data */ + ROM_REGION( 0x20000, "stfight_vid:spr_gfx", 0 ) /* sprite data */ ROM_LOAD( "20.8W", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) ROM_LOAD( "21.9W", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) ROM_LOAD( "18.6W", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) ROM_LOAD( "19.7W", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) - ROM_REGION( 0x10000, "fg_map", 0 ) /* foreground map data */ + ROM_REGION( 0x10000, "stfight_vid:fg_map", 0 ) /* foreground map data */ ROM_LOAD( "9.7C", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) ROM_LOAD( "10.8C", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) - ROM_REGION( 0x10000, "bg_map", 0 ) /* background map data */ + ROM_REGION( 0x10000, "stfight_vid:bg_map", 0 ) /* background map data */ ROM_LOAD( "15.7J", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) ROM_LOAD( "16.8J", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) - ROM_REGION( 0x0100, "tx_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:tx_clut", 0 ) ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ - ROM_REGION( 0x0100, "fg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:fg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.002", 0x0000, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ ROM_LOAD_NIB_LOW( "82s129.003", 0x0000, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) - ROM_REGION( 0x0100, "bg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:bg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.004", 0x0000, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ ROM_LOAD_NIB_LOW( "82s129.005", 0x0000, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) - ROM_REGION( 0x0100, "spr_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:spr_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.052", 0x0000, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ ROM_LOAD_NIB_LOW( "82s129.066", 0x0000, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) @@ -762,47 +659,47 @@ ROM_START( empcityj ) ROM_REGION( 0x0800, "mcu", 0 ) ROM_LOAD( "empcityj_68705.3j", 0x0000, 0x0800, BAD_DUMP CRC(19bdb0a9) SHA1(6baba9a46d64ae8349c7e9713419141f76a7af96) ) - ROM_REGION( 0x02000, "tx_gfx", 0 ) /* character data */ + ROM_REGION( 0x02000, "stfight_vid:tx_gfx", 0 ) /* character data */ ROM_LOAD( "17.2N", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) - ROM_REGION( 0x20000, "fg_gfx", 0 ) /* foreground tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:fg_gfx", 0 ) /* foreground tile pixel data */ ROM_LOAD( "7.4C", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) ROM_LOAD( "8.5C", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) ROM_LOAD( "5.2C", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) ROM_LOAD( "6.3C", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) - ROM_REGION( 0x20000, "bg_gfx", 0 ) /* background tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:bg_gfx", 0 ) /* background tile pixel data */ ROM_LOAD( "13.4C", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) ROM_LOAD( "14.5J", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) ROM_LOAD( "11.2J", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) ROM_LOAD( "12.3J", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) - ROM_REGION( 0x20000, "spr_gfx", 0 ) /* sprite data */ + ROM_REGION( 0x20000, "stfight_vid:spr_gfx", 0 ) /* sprite data */ ROM_LOAD( "20.8W", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) ROM_LOAD( "21.9W", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) ROM_LOAD( "18.6W", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) ROM_LOAD( "19.7W", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) - ROM_REGION( 0x10000, "fg_map", 0 ) /* foreground map data */ + ROM_REGION( 0x10000, "stfight_vid:fg_map", 0 ) /* foreground map data */ ROM_LOAD( "9.7C", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) ROM_LOAD( "10.8C", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) - ROM_REGION( 0x10000, "bg_map", 0 ) /* background map data */ + ROM_REGION( 0x10000, "stfight_vid:bg_map", 0 ) /* background map data */ ROM_LOAD( "15.7J", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) ROM_LOAD( "16.8J", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) - ROM_REGION( 0x0100, "tx_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:tx_clut", 0 ) ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ - ROM_REGION( 0x0100, "fg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:fg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.002", 0x0000, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ ROM_LOAD_NIB_LOW( "82s129.003", 0x0000, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) - ROM_REGION( 0x0100, "bg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:bg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.004", 0x0000, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ ROM_LOAD_NIB_LOW( "82s129.005", 0x0000, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) - ROM_REGION( 0x0100, "spr_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:spr_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.052", 0x0000, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ ROM_LOAD_NIB_LOW( "82s129.066", 0x0000, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) @@ -824,47 +721,47 @@ ROM_START( stfight ) ROM_REGION( 0x0800, "mcu", 0 ) ROM_LOAD( "stfight_68705.3j", 0x0000, 0x0800, BAD_DUMP CRC(f4cc50d6) SHA1(2ff62a349b74fa965b5d19615e52b867c04988dc) ) - ROM_REGION( 0x02000, "tx_gfx", 0 ) /* character data */ + ROM_REGION( 0x02000, "stfight_vid:tx_gfx", 0 ) /* character data */ ROM_LOAD( "17.2N", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) - ROM_REGION( 0x20000, "fg_gfx", 0 ) /* foreground tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:fg_gfx", 0 ) /* foreground tile pixel data */ ROM_LOAD( "7.4C", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) ROM_LOAD( "8.5C", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) ROM_LOAD( "5.2C", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) ROM_LOAD( "6.3C", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) - ROM_REGION( 0x20000, "bg_gfx", 0 ) /* background tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:bg_gfx", 0 ) /* background tile pixel data */ ROM_LOAD( "13.4C", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) ROM_LOAD( "14.5J", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) ROM_LOAD( "11.2J", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) ROM_LOAD( "12.3J", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) - ROM_REGION( 0x20000, "spr_gfx", 0 ) /* sprite data */ + ROM_REGION( 0x20000, "stfight_vid:spr_gfx", 0 ) /* sprite data */ ROM_LOAD( "20.8W", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) ROM_LOAD( "21.9W", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) ROM_LOAD( "18.6W", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) ROM_LOAD( "19.7W", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) - ROM_REGION( 0x10000, "fg_map", 0 ) /* foreground map data */ + ROM_REGION( 0x10000, "stfight_vid:fg_map", 0 ) /* foreground map data */ ROM_LOAD( "9.7C", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) ROM_LOAD( "10.8C", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) - ROM_REGION( 0x10000, "bg_map", 0 ) /* background map data */ + ROM_REGION( 0x10000, "stfight_vid:bg_map", 0 ) /* background map data */ ROM_LOAD( "15.7J", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) ROM_LOAD( "16.8J", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) - ROM_REGION( 0x0100, "tx_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:tx_clut", 0 ) ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ - ROM_REGION( 0x0100, "fg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:fg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.002", 0x0000, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ ROM_LOAD_NIB_LOW( "82s129.003", 0x0000, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) - ROM_REGION( 0x0100, "bg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:bg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.004", 0x0000, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ ROM_LOAD_NIB_LOW( "82s129.005", 0x0000, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) - ROM_REGION( 0x0100, "spr_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:spr_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.052", 0x0000, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ ROM_LOAD_NIB_LOW( "82s129.066", 0x0000, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) @@ -888,47 +785,47 @@ ROM_START( stfighta ) ROM_REGION( 0x0800, "mcu", 0 ) ROM_LOAD( "stfight_68705.3j", 0x0000, 0x0800, BAD_DUMP CRC(f4cc50d6) SHA1(2ff62a349b74fa965b5d19615e52b867c04988dc) ) - ROM_REGION( 0x02000, "tx_gfx", 0 ) /* character data */ + ROM_REGION( 0x02000, "stfight_vid:tx_gfx", 0 ) /* character data */ ROM_LOAD( "17.2N", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) - ROM_REGION( 0x20000, "fg_gfx", 0 ) /* foreground tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:fg_gfx", 0 ) /* foreground tile pixel data */ ROM_LOAD( "7.4C", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) ROM_LOAD( "8.5C", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) ROM_LOAD( "5.2C", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) ROM_LOAD( "6.3C", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) - ROM_REGION( 0x20000, "bg_gfx", 0 ) /* background tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:bg_gfx", 0 ) /* background tile pixel data */ ROM_LOAD( "13.4C", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) ROM_LOAD( "14.5J", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) ROM_LOAD( "11.2J", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) ROM_LOAD( "12.3J", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) - ROM_REGION( 0x20000, "spr_gfx", 0 ) /* sprite data */ + ROM_REGION( 0x20000, "stfight_vid:spr_gfx", 0 ) /* sprite data */ ROM_LOAD( "20.8W", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) ROM_LOAD( "21.9W", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) ROM_LOAD( "18.6W", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) ROM_LOAD( "19.7W", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) - ROM_REGION( 0x10000, "fg_map", 0 ) /* foreground map data */ + ROM_REGION( 0x10000, "stfight_vid:fg_map", 0 ) /* foreground map data */ ROM_LOAD( "9.7C", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) ROM_LOAD( "10.8C", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) - ROM_REGION( 0x10000, "bg_map", 0 ) /* background map data */ + ROM_REGION( 0x10000, "stfight_vid:bg_map", 0 ) /* background map data */ ROM_LOAD( "15.7J", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) ROM_LOAD( "16.8J", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) - ROM_REGION( 0x0100, "tx_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:tx_clut", 0 ) ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ - ROM_REGION( 0x0100, "fg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:fg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.002", 0x0000, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ ROM_LOAD_NIB_LOW( "82s129.003", 0x0000, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) - ROM_REGION( 0x0100, "bg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:bg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.004", 0x0000, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ ROM_LOAD_NIB_LOW( "82s129.005", 0x0000, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) - ROM_REGION( 0x0100, "spr_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:spr_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.052", 0x0000, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ ROM_LOAD_NIB_LOW( "82s129.066", 0x0000, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) @@ -950,47 +847,47 @@ ROM_START( empcityi ) // very similar to above set ROM_REGION( 0x0800, "mcu", 0 ) ROM_LOAD( "empcityi_68705.3j", 0x0000, 0x0800, BAD_DUMP CRC(b1817d44) SHA1(395aad763eb054514f658a14c12b92c1b90c02ce) ) - ROM_REGION( 0x02000, "tx_gfx", 0 ) /* character data */ + ROM_REGION( 0x02000, "stfight_vid:tx_gfx", 0 ) /* character data */ ROM_LOAD( "17.2N", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) - ROM_REGION( 0x20000, "fg_gfx", 0 ) /* foreground tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:fg_gfx", 0 ) /* foreground tile pixel data */ ROM_LOAD( "7.4C", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) ROM_LOAD( "8.5C", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) ROM_LOAD( "5.2C", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) ROM_LOAD( "6.3C", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) - ROM_REGION( 0x20000, "bg_gfx", 0 ) /* background tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:bg_gfx", 0 ) /* background tile pixel data */ ROM_LOAD( "13.4C", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) ROM_LOAD( "14.5J", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) ROM_LOAD( "11.2J", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) ROM_LOAD( "12.3J", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) - ROM_REGION( 0x20000, "spr_gfx", 0 ) /* sprite data */ + ROM_REGION( 0x20000, "stfight_vid:spr_gfx", 0 ) /* sprite data */ ROM_LOAD( "20.8W", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) ROM_LOAD( "21.9W", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) ROM_LOAD( "18.6W", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) ROM_LOAD( "19.7W", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) - ROM_REGION( 0x10000, "fg_map", 0 ) /* foreground map data */ + ROM_REGION( 0x10000, "stfight_vid:fg_map", 0 ) /* foreground map data */ ROM_LOAD( "9.7C", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) ROM_LOAD( "10.8C", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) - ROM_REGION( 0x10000, "bg_map", 0 ) /* background map data */ + ROM_REGION( 0x10000, "stfight_vid:bg_map", 0 ) /* background map data */ ROM_LOAD( "15.7J", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) ROM_LOAD( "16.8J", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) - ROM_REGION( 0x0100, "tx_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:tx_clut", 0 ) ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ - ROM_REGION( 0x0100, "fg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:fg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.002", 0x0000, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ ROM_LOAD_NIB_LOW( "82s129.003", 0x0000, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) - ROM_REGION( 0x0100, "bg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:bg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.004", 0x0000, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ ROM_LOAD_NIB_LOW( "82s129.005", 0x0000, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) - ROM_REGION( 0x0100, "spr_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:spr_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.052", 0x0000, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ ROM_LOAD_NIB_LOW( "82s129.066", 0x0000, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) @@ -1012,47 +909,47 @@ ROM_START( stfightgb ) ROM_REGION( 0x0800, "mcu", 0 ) ROM_LOAD( "stfightgb_68705.3J", 0x0000, 0x0800, BAD_DUMP CRC(3b1b2660) SHA1(8d5d853a0861ff9cdea27eb3588586b441cc77b1) ) //hand-crafted, to be dumped - ROM_REGION( 0x02000, "tx_gfx", 0 ) /* character data */ + ROM_REGION( 0x02000, "stfight_vid:tx_gfx", 0 ) /* character data */ ROM_LOAD( "17.2N", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) - ROM_REGION( 0x20000, "fg_gfx", 0 ) /* foreground tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:fg_gfx", 0 ) /* foreground tile pixel data */ ROM_LOAD( "7.4C", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) ROM_LOAD( "8.5C", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) ROM_LOAD( "5.2C", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) ROM_LOAD( "6.3C", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) - ROM_REGION( 0x20000, "bg_gfx", 0 ) /* background tile pixel data */ + ROM_REGION( 0x20000, "stfight_vid:bg_gfx", 0 ) /* background tile pixel data */ ROM_LOAD( "13.4C", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) ROM_LOAD( "14.5J", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) ROM_LOAD( "11.2J", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) ROM_LOAD( "12.3J", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) - ROM_REGION( 0x20000, "spr_gfx", 0 ) /* sprite data */ + ROM_REGION( 0x20000, "stfight_vid:spr_gfx", 0 ) /* sprite data */ ROM_LOAD( "20.8W", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) ROM_LOAD( "21.9W", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) ROM_LOAD( "18.6W", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) ROM_LOAD( "19.7W", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) - ROM_REGION( 0x10000, "fg_map", 0 ) /* foreground map data */ + ROM_REGION( 0x10000, "stfight_vid:fg_map", 0 ) /* foreground map data */ ROM_LOAD( "9.7C", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) ROM_LOAD( "10.8C", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) - ROM_REGION( 0x10000, "bg_map", 0 ) /* background map data */ + ROM_REGION( 0x10000, "stfight_vid:bg_map", 0 ) /* background map data */ ROM_LOAD( "15.7J", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) ROM_LOAD( "16.8J", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) - ROM_REGION( 0x0100, "tx_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:tx_clut", 0 ) ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ - ROM_REGION( 0x0100, "fg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:fg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.002", 0x0000, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ ROM_LOAD_NIB_LOW( "82s129.003", 0x0000, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) - ROM_REGION( 0x0100, "bg_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:bg_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.004", 0x0000, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ ROM_LOAD_NIB_LOW( "82s129.005", 0x0000, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) - ROM_REGION( 0x0100, "spr_clut", 0 ) + ROM_REGION( 0x0100, "stfight_vid:spr_clut", 0 ) ROM_LOAD_NIB_HIGH( "82s129.052", 0x0000, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ ROM_LOAD_NIB_LOW( "82s129.066", 0x0000, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) @@ -1083,13 +980,6 @@ TB 4E 82S129 2.BPR 00DC [ motion objects ] TB 16A 63S281 x x [ clut ] NOTE: dumped much later LB 3J 68705 - -Notes: LB - CPU board S-0086-002-0B - TB - GFX board S-0087-807 - - The PCB looks like a prototype, due to the modifications - to the PCB. The game is probably licensed from Seibu. - The 0/1/2 bipolar PROMs are not used for colour. However, this contradicts Guru's findings: "If I short some of the pins(of 0.bpr at 7A) @@ -1128,45 +1018,48 @@ ROM_START( cshootert ) ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */ ROM_LOAD( "crshooter.3j", 0x0000, 0x0800, CRC(aae61ce7) SHA1(bb2b9887ec73a5b82604b9b64c533c2242d20d0f) ) - ROM_REGION( 0x02000, "tx_gfx", 0 ) // TX Layer - ROM_LOAD( "r3.11a", 0x00000, 0x02000, CRC(67b50a47) SHA1(b1f4aefc9437edbeefba5371149cc08c0b55c741) ) - - ROM_REGION( 0x100, "tx_clut", 0 ) - ROM_LOAD( "63s281.16a", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut - - /* ### MODULE 1 ### Background generation / graphics */ - ROM_REGION( 0x40000, "bg_map", 0 ) - ROM_LOAD16_BYTE( "bg_layouts_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "bg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x40000, "bg_gfx", 0 ) - ROM_LOAD16_BYTE( "bg_tiles_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "bg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "bg_clut", 0 ) - ROM_LOAD( "bg_clut", 0x000, 0x100, NO_DUMP ) - - /* ### MODULE 2 ### Foreground generation / graphics */ - ROM_REGION( 0x40000, "fg_map", 0 ) - ROM_LOAD16_BYTE( "fg_layouts_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "fg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x40000, "fg_gfx", 0 ) - ROM_LOAD16_BYTE( "fg_tiles_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "fg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "fg_clut", 0 ) - ROM_LOAD( "fg_clut", 0x000, 0x100, NO_DUMP ) - - /* ### MODULE 3 ### Sprite graphics */ - ROM_REGION( 0x40000, "spr_gfx", 0 ) - ROM_LOAD16_BYTE( "sprite_tiles_even", 0x00000, 0x20000, NO_DUMP ) - ROM_LOAD16_BYTE( "sprite_tiles_odd", 0x00001, 0x20000, NO_DUMP ) - ROM_REGION( 0x100, "spr_clut", 0 ) - ROM_LOAD( "spr_clut", 0x000, 0x100, NO_DUMP ) - ROM_REGION( 0x820, "proms", 0 ) ROM_LOAD( "82s129.9s", 0x0500, 0x0100, CRC(cf14ba30) SHA1(3284b6809075756b3c8e07d9705fc7eacb7556f1) ) // timing? (not used) ROM_LOAD( "82s129.4e", 0x0600, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) // timing? (not used) ROM_LOAD( "82s123.7a", 0x0800, 0x0020, CRC(93e2d292) SHA1(af8edd0cfe85f28ede9604cfaf4516d54e5277c9) ) // ? (not used) + + // below are from the video board + + ROM_REGION( 0x02000, "airraid_vid:tx_gfx", 0 ) // TX Layer + ROM_LOAD( "r3.11a", 0x00000, 0x02000, CRC(67b50a47) SHA1(b1f4aefc9437edbeefba5371149cc08c0b55c741) ) + + ROM_REGION( 0x100, "airraid_vid:tx_clut", 0 ) + ROM_LOAD( "63s281.16a", 0x0000, 0x0100, CRC(0b8b914b) SHA1(8cf4910b846de79661cc187887171ed8ebfd6719) ) // clut + + /* ### MODULE 1 ### Background generation / graphics */ + ROM_REGION( 0x40000, "airraid_vid:bg_map", 0 ) + ROM_LOAD16_BYTE( "bg_layouts_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "bg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x40000, "airraid_vid:bg_gfx", 0 ) + ROM_LOAD16_BYTE( "bg_tiles_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "bg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x100, "airraid_vid:bg_clut", 0 ) + ROM_LOAD( "bg_clut", 0x000, 0x100, NO_DUMP ) + + /* ### MODULE 2 ### Foreground generation / graphics */ + ROM_REGION( 0x40000, "airraid_vid:fg_map", 0 ) + ROM_LOAD16_BYTE( "fg_layouts_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "fg_layouts_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x40000, "airraid_vid:fg_gfx", 0 ) + ROM_LOAD16_BYTE( "fg_tiles_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "fg_tiles_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x100, "airraid_vid:fg_clut", 0 ) + ROM_LOAD( "fg_clut", 0x000, 0x100, NO_DUMP ) + + /* ### MODULE 3 ### Sprite graphics */ + ROM_REGION( 0x40000, "airraid_vid:spr_gfx", 0 ) + ROM_LOAD16_BYTE( "sprite_tiles_even", 0x00000, 0x20000, NO_DUMP ) + ROM_LOAD16_BYTE( "sprite_tiles_odd", 0x00001, 0x20000, NO_DUMP ) + ROM_REGION( 0x100, "airraid_vid:spr_clut", 0 ) + ROM_LOAD( "spr_clut", 0x000, 0x100, NO_DUMP ) ROM_END + // Note: Marked MACHINE_IMPERFECT_SOUND due to YM2203 clock issue GAME( 1986, empcity, 0, stfight, stfight, stfight_state, empcity, ROT0, "Seibu Kaihatsu", "Empire City: 1931 (bootleg?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1986, empcityu, empcity, stfight, stfight, stfight_state, stfight, ROT0, "Seibu Kaihatsu (Taito / Romstar license)", "Empire City: 1931 (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // different title logo @@ -1176,5 +1069,5 @@ GAME( 1986, stfight, empcity, stfight, stfight, stfight_state, stfight, ROT0, GAME( 1986, stfighta, empcity, stfight, stfight, stfight_state, stfight, ROT0, "Seibu Kaihatsu", "Street Fight (bootleg?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1986, stfightgb,empcity, stfight, stfight, stfight_state, stfight, ROT0, "Seibu Kaihatsu (Tuning license)", "Street Fight (Germany - Benelux)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -/* Cross Shooter runs on a slightly modified PCB, with a different text tilemap and gfx blobs (see also airraid.c) */ +/* Cross Shooter uses the same base board, but different video board */ GAME( 1987, cshootert, airraid, cshooter, cshooter, stfight_state, cshooter, ROT270, "Seibu Kaihatsu (Taito license)", "Cross Shooter (2 PCB Stack)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/stfight.h b/src/mame/includes/stfight.h index 31af9a7ac2e..064ae984979 100644 --- a/src/mame/includes/stfight.h +++ b/src/mame/includes/stfight.h @@ -1,6 +1,8 @@ // license:BSD-3-Clause // copyright-holders:Mark McDougall #include "sound/msm5205.h" +#include "video/stfight_dev.h" +#include "video/airraid_dev.h" class stfight_state : public driver_device { @@ -16,28 +18,21 @@ public: m_audiocpu(*this, "audiocpu"), m_mcu(*this, "mcu"), m_msm(*this, "msm"), - m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_text_char_ram(*this, "text_char_ram"), - m_text_attr_ram(*this, "text_attr_ram"), - m_tx_vram(*this, "tx_vram"), - m_vh_latch_ram(*this, "vh_latch_ram"), - m_sprite_ram(*this, "sprite_ram"), - m_decrypted_opcodes(*this, "decrypted_opcodes") { } + m_decrypted_opcodes(*this, "decrypted_opcodes"), + m_stfight_video(*this, "stfight_vid"), + m_airraid_video(*this, "airraid_vid") + { } required_device m_maincpu; required_device m_audiocpu; required_device m_mcu; required_device m_msm; - required_device m_gfxdecode; required_device m_palette; - optional_shared_ptr m_text_char_ram; - optional_shared_ptr m_text_attr_ram; - optional_shared_ptr m_tx_vram; - required_shared_ptr m_vh_latch_ram; - required_shared_ptr m_sprite_ram; optional_shared_ptr m_decrypted_opcodes; + optional_device m_stfight_video; + optional_device m_airraid_video; UINT8 *m_decrypt; UINT8 m_fm_data; @@ -49,10 +44,6 @@ public: UINT8 m_adpcm_reset; UINT8 m_coin_state; - tilemap_t *m_fg_tilemap; - tilemap_t *m_bg_tilemap; - tilemap_t *m_tx_tilemap; - int m_sprite_base; DECLARE_WRITE_LINE_MEMBER(stfight_adpcm_int); @@ -67,31 +58,15 @@ public: DECLARE_WRITE8_MEMBER(stfight_mcu_w); DECLARE_WRITE8_MEMBER(stfight_bank_w); - DECLARE_WRITE8_MEMBER(stfight_text_char_w); - DECLARE_WRITE8_MEMBER(stfight_text_attr_w); - DECLARE_WRITE8_MEMBER(stfight_sprite_bank_w); - DECLARE_WRITE8_MEMBER(stfight_vh_latch_w); - DECLARE_WRITE8_MEMBER(cshooter_text_w); + DECLARE_READ8_MEMBER(stfight_fm_r); - TILEMAP_MAPPER_MEMBER(fg_scan); - TILE_GET_INFO_MEMBER(get_fg_tile_info); - TILEMAP_MAPPER_MEMBER(bg_scan); - TILE_GET_INFO_MEMBER(get_bg_tile_info); - TILE_GET_INFO_MEMBER(get_tx_tile_info); - TILE_GET_INFO_MEMBER(get_cshooter_tx_tile_info); - DECLARE_VIDEO_START(stfight); - DECLARE_VIDEO_START(cshooter); virtual void machine_start() override; virtual void machine_reset() override; - DECLARE_PALETTE_INIT(stfight); - UINT32 screen_update_stfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - UINT32 screen_update_cshooter(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(stfight_vb_interrupt); - void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void cshooter_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); /* MCU specifics diff --git a/src/mame/machine/stfight.cpp b/src/mame/machine/stfight.cpp index 2ffe2d57a95..0f88a0801ec 100644 --- a/src/mame/machine/stfight.cpp +++ b/src/mame/machine/stfight.cpp @@ -82,7 +82,6 @@ void stfight_state::machine_start() save_item(NAME(m_adpcm_nibble)); save_item(NAME(m_adpcm_reset)); save_item(NAME(m_coin_state)); - save_item(NAME(m_sprite_base)); save_item(NAME(m_portA_out)); save_item(NAME(m_portA_in)); save_item(NAME(m_portB_out)); @@ -94,6 +93,7 @@ void stfight_state::machine_start() save_item(NAME(m_ddrC)); } + void stfight_state::machine_reset() { m_fm_data = 0; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 424854d31e3..7d40c7c721e 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -10286,7 +10286,7 @@ psattack // 2004 Uniana topbladv // 2002 Sonokong. Top Blade V trivrus // 2009 AGT. Trivia R Us -@source:cshooter.cpp +@source:airraid.cpp airraid // (c) 1987 Seibu Kaihatsu cshooter // (c) 1987 JKH (bootleg) diff --git a/src/mame/video/airraid_dev.cpp b/src/mame/video/airraid_dev.cpp new file mode 100644 index 00000000000..a52bf9159af --- /dev/null +++ b/src/mame/video/airraid_dev.cpp @@ -0,0 +1,261 @@ +// license:BSD-3-Clause +// copyright-holders:Tomasz Slanina, Angelo Salese, hap, David Haywood + +/* There are 2 versions of the Air Raid / Cross Shooter hardware, one has everything integrated on a single PCB + the other is a Air Raid specific video PCB used with the Street Fight motherboard, there could be differences. + + This is very similar to Dark Mist */ + +#include "emu.h" +#include "airraid_dev.h" + +extern const device_type AIRRAID_VIDEO = &device_creator; + +airraid_video_device::airraid_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, AIRRAID_VIDEO, "Seibu Air Raid Video", tag, owner, clock, "airraid_vid", __FILE__), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "^palette"), + m_screen(*this, "screen"), + m_tx_clut(*this, "tx_clut"), + m_fg_clut(*this, "fg_clut"), + m_bg_clut(*this, "bg_clut"), + m_spr_clut(*this, "spr_clut"), + m_fgmap(*this, "fg_map"), + m_bgmap(*this, "bg_map"), + m_sprite_ram(*this, "^sprite_ram"), + m_txram(*this,"^txram"), + m_vregs(*this,"^vregs"), + m_hw(0x09) +{ +} + +static const gfx_layout charlayout = +{ + 8,8, /* 8*8 characters */ + RGN_FRAC(1,1), /* 512 characters */ + 2, /* 4 bits per pixel */ + { 0,4 }, + { 8,9,10,11,0,1,2,3 }, + { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, + 128*1 +}; + +static const gfx_layout char16layout = +{ + 16,16, /* 8*8 characters */ + RGN_FRAC(1,1), /* 512 characters */ + 4, /* 4 bits per pixel */ + { 0,4,8,12 }, + { 0,1,2,3, 16,17,18,19, 512+0,512+1,512+2,512+3, 512+16,512+17,512+18,512+19}, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 }, + 32*32 +}; + +static GFXDECODE_START( cshooter ) + GFXDECODE_ENTRY( "tx_gfx", 0, charlayout, 0, 16 ) + GFXDECODE_ENTRY( "spr_gfx", 0, char16layout, 0, 16 ) + GFXDECODE_ENTRY( "bg_gfx", 0, char16layout, 0, 16 ) + GFXDECODE_ENTRY( "fg_gfx", 0, char16layout, 0, 16 ) +GFXDECODE_END + +static MACHINE_CONFIG_FRAGMENT( airraid_vid ) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(256, 256) + MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1-16) + MCFG_SCREEN_UPDATE_DRIVER(airraid_video_device, screen_update_airraid) + MCFG_SCREEN_PALETTE("^palette") + + MCFG_GFXDECODE_ADD("gfxdecode", "^palette", cshooter) + +MACHINE_CONFIG_END + +machine_config_constructor airraid_video_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( airraid_vid ); +} + +void airraid_video_device::device_start() +{ + save_item(NAME(m_hw)); + + // there might actually be 4 banks of 2048 x 16 tilemaps in here as the upper scroll bits are with the rom banking. + m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(airraid_video_device::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(airraid_video_device::bg_scan),this),16,16,2048, 64); + + // which could in turn mean this is actually 256 x 128, not 256 x 512 +// m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(airraid_video_device::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(airraid_video_device::fg_scan),this),16,16,256, 512); + m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(airraid_video_device::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(airraid_video_device::fg_scan),this),16,16,256, 128); + + m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(airraid_video_device::get_cstx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); + +// m_fg_tilemap->set_transparent_pen(0); +// m_tx_tilemap->set_transparent_pen(0); + + // we do manual mixing using a temp bitmap + m_screen->register_screen_bitmap(m_temp_bitmap); +} + +void airraid_video_device::device_reset() +{ +} + +TILEMAP_MAPPER_MEMBER(airraid_video_device::bg_scan) +{ + return ((row&0xf) * 0x10) + (col&0xf) + (((col&0x7f0) >> 4)*0x100) + ((row & 0x30)>>4) * 0x8000; +} + +TILEMAP_MAPPER_MEMBER(airraid_video_device::fg_scan) +{ + return ((row&0xf) * 0x10) + (col&0xf) + (((col&0x0f0) >> 4)*0x100) + ((row & 0x1f0)>>4) * 0x1000; +} + + +TILE_GET_INFO_MEMBER(airraid_video_device::get_bg_tile_info) +{ + int tile = m_bgmap[(tile_index*2)+1] & 0xff; + int attr = m_bgmap[(tile_index*2)+0] & 0xff; + + tile |= (attr & 0x70) << 4; + + SET_TILE_INFO_MEMBER(2, + tile, + attr&0xf, + 0); +} + +TILE_GET_INFO_MEMBER(airraid_video_device::get_fg_tile_info) +{ + int tile = m_fgmap[(tile_index*2)+1] & 0xff; + int attr = m_fgmap[(tile_index*2)+0] & 0xff; + + tile |= (attr & 0x70) << 4; + + SET_TILE_INFO_MEMBER(3, + tile, + attr&0xf, + 0); +} + +TILE_GET_INFO_MEMBER(airraid_video_device::get_cstx_tile_info) +{ + int code = (m_txram[tile_index*2]); + int attr = (m_txram[tile_index*2+1]); + int color = attr & 0xf; + + SET_TILE_INFO_MEMBER(0, (code << 1) | ((attr & 0x20) >> 5), color, 0); +} + + + +void airraid_video_device::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + for (int i = 0x200 - 4; i >= 0 ; i -= 4) + { + if (m_sprite_ram[i+1]&0x80) + continue; + + UINT16 tile = (m_sprite_ram[i]); + tile |= (m_sprite_ram[i + 1] & 0x70) << 4; + + UINT16 col = (m_sprite_ram[i+1] & 0x0f); + //col |= (m_sprite_ram[i+1] & 0x80)<<3; + + m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, tile,col, 0, 0, m_sprite_ram[i+3],m_sprite_ram[i+2],0); + } +} + + +#define DISPLAY_SPR 1 +#define DISPLAY_FG 2 +#define DISPLAY_BG 4 +#define DISPLAY_TXT 8 +#define DM_GETSCROLL(n) (((m_vregs[(n)]<<1)&0xff) + ((m_vregs[(n)]&0x80)?1:0) +( ((m_vregs[(n)-1]<<4) | (m_vregs[(n)-1]<<12) )&0xff00)) + +void airraid_video_device::mix_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* clut, int base) +{ + for (int y = cliprect.min_y; y <= cliprect.max_y; y++) + { + UINT16 *dest = &bitmap.pix16(y); + UINT16 *src = &m_temp_bitmap.pix16(y); + for (int x = cliprect.min_x; x <= cliprect.max_x; x++) + { + UINT8 pix = src[x] & 0xff; + UINT8 real = clut[pix]; + + if (!(real & 0x40)) + { + dest[x] = (real & 0x3f) + base; + } + } + } +} + + +UINT32 airraid_video_device::screen_update_airraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + UINT16 bgscrolly = DM_GETSCROLL(0x6); + // this is more likely to be 'bank' than scroll, like NMK16 + bgscrolly += ((m_hw & 0xc0) >> 6) * 256; + + m_bg_tilemap->set_scrollx(0, DM_GETSCROLL(0x2)); + m_bg_tilemap->set_scrolly(0, bgscrolly); + m_fg_tilemap->set_scrollx(0, DM_GETSCROLL(0xa)); + m_fg_tilemap->set_scrolly(0, DM_GETSCROLL(0xe)); + + // draw screen + bitmap.fill(0x80, cliprect); // temp + +// m_temp_bitmap.fill(0x00, cliprect); + + if ((m_hw & DISPLAY_BG) == 0x00) + { + m_bg_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_layer(screen, bitmap, cliprect, m_bg_clut, 0x80); + } + + if ((m_hw & DISPLAY_FG) == 0x00) + { + m_fg_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_layer(screen, bitmap, cliprect, m_fg_clut, 0x00); + } + + if (m_hw & DISPLAY_SPR) + { + m_temp_bitmap.fill(0x00, cliprect); + draw_sprites(m_temp_bitmap, cliprect); // technically this should draw manually because 0x40 in the prom is transparency and our code just assumes it to be 0. + mix_layer(screen, bitmap, cliprect, m_spr_clut, 0x40); + } + + if (m_hw & DISPLAY_TXT) + { + m_tx_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_layer(screen, bitmap, cliprect, m_tx_clut, 0xc0); + } + + + return 0; +} + +// public functions + +WRITE8_MEMBER(airraid_video_device::txram_w) +{ + m_txram[offset] = data; + m_tx_tilemap->mark_tile_dirty(offset/2); +} + +WRITE8_MEMBER(airraid_video_device::vregs_w) +{ + m_vregs[offset] = data; + + if ((offset != 0x2) && (offset != 0x01) && (offset != 0xa) && (offset != 0x09) && (offset != 0xe) && (offset != 0x0d) ) + printf("vregs_w %02x: %02x\n", offset, data); +} + +void airraid_video_device::layer_enable_w(UINT8 enable) +{ + m_hw = enable; +} diff --git a/src/mame/video/airraid_dev.h b/src/mame/video/airraid_dev.h new file mode 100644 index 00000000000..6962b3bbf22 --- /dev/null +++ b/src/mame/video/airraid_dev.h @@ -0,0 +1,75 @@ +// license:BSD-3-Clause +// copyright-holders:Tomasz Slanina, Angelo Salese, hap, David Haywood + +#pragma once + +#ifndef __AIRRAID_VIDEO__ +#define __AIRRAID_VIDEO__ + + + +extern const device_type AIRRAID_VIDEO; + +#define MCFG_AIRRAID_VIDEO_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, AIRRAID_VIDEO, 0) + + +class airraid_video_device : public device_t +/* public device_video_interface */ +{ +public: + // construction/destruction + airraid_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + DECLARE_WRITE8_MEMBER(txram_w); + DECLARE_WRITE8_MEMBER(vregs_w); + void layer_enable_w(UINT8 enable); + + UINT32 screen_update_airraid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + // devices + required_device m_gfxdecode; + required_device m_palette; + required_device m_screen; + + // region pointers + required_region_ptr m_tx_clut; + required_region_ptr m_fg_clut; + required_region_ptr m_bg_clut; + required_region_ptr m_spr_clut; + required_region_ptr m_fgmap; + required_region_ptr m_bgmap; + + // memory pointers + required_shared_ptr m_sprite_ram; + required_shared_ptr m_txram; + required_shared_ptr m_vregs; + + // tilemaps + tilemap_t *m_bg_tilemap; + tilemap_t *m_fg_tilemap; + tilemap_t *m_tx_tilemap; + + TILEMAP_MAPPER_MEMBER(bg_scan); + TILEMAP_MAPPER_MEMBER(fg_scan); + + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + TILE_GET_INFO_MEMBER(get_cstx_tile_info); + + // internal variables + UINT16 m_hw; + + // rendering / mixing + bitmap_ind16 m_temp_bitmap; + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + void mix_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, UINT8* clut, int base); +}; + +#endif diff --git a/src/mame/video/stfight.cpp b/src/mame/video/stfight.cpp deleted file mode 100644 index bf8747828a4..00000000000 --- a/src/mame/video/stfight.cpp +++ /dev/null @@ -1,365 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Mark McDougall -/*************************************************************************** - - video.c - - Functions to emulate the video hardware of the machine. - -***************************************************************************/ - -#include "emu.h" -#include "includes/stfight.h" - - -/* - Graphics ROM Format - =================== - - Each tile is 8x8 pixels - Each composite tile is 2x2 tiles, 16x16 pixels - Each screen is 32x32 composite tiles, 64x64 tiles, 256x256 pixels - Each layer is a 4-plane bitmap 8x16 screens, 2048x4096 pixels - - There are 4x256=1024 composite tiles defined for each layer - - Each layer is mapped using 2 bytes/composite tile - - one byte for the tile - - one byte for the tile bank, attribute - - b7,b5 tile bank (0-3) - - Each pixel is 4 bits = 16 colours. - - */ - -PALETTE_INIT_MEMBER(stfight_state, stfight) -{ - UINT8 *color_prom = memregion("tx_clut")->base(); - int i; - - /* text uses colors 0xc0-0xff */ - for (i = 0; i < 0x100; i++) - { - UINT8 ctabentry = (color_prom[i] & 0x3f) | 0xc0; - palette.set_pen_indirect(i, ctabentry); - } - - color_prom = memregion("fg_clut")->base(); - - /* fg uses colors 0x40-0x7f */ - for (i = 0x00; i < 0x100; i++) - { - UINT8 ctabentry = (color_prom[i] & 0x3f) | 0x40; - palette.set_pen_indirect(i+0x100, ctabentry); - } - - color_prom = memregion("bg_clut")->base(); - - /* bg uses colors 0-0x3f */ - for (i = 0x000; i < 0x100; i++) - { - UINT8 ctabentry = (color_prom[i] & 0x3f); - palette.set_pen_indirect(i+0x200, ctabentry); - } - - color_prom = memregion("spr_clut")->base(); - - /* spr uses colors 0x80-0xbf */ - for (i = 0x000; i < 0x100; i++) - { - UINT8 ctabentry = (color_prom[i] & 0x3f) | 0x80; - palette.set_pen_indirect(i+0x300, ctabentry); - } -} - - - -/*************************************************************************** - - Callbacks for the TileMap code - -***************************************************************************/ - -TILEMAP_MAPPER_MEMBER(stfight_state::fg_scan) -{ - /* logical (col,row) -> memory offset */ - return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x70) << 4) + ((row & 0xf0) << 7); -} - -TILE_GET_INFO_MEMBER(stfight_state::get_fg_tile_info) -{ - UINT8 *fgMap = memregion("fg_map")->base(); - int attr,tile_base; - - attr = fgMap[0x8000+tile_index]; - tile_base = ((attr & 0x80) << 2) | ((attr & 0x20) << 3); - - SET_TILE_INFO_MEMBER(1, - tile_base + fgMap[tile_index], - attr & 0x07, - 0); -} - -TILEMAP_MAPPER_MEMBER(stfight_state::bg_scan) -{ - /* logical (col,row) -> memory offset */ - return ((col & 0x0e) >> 1) + ((row & 0x0f) << 3) + ((col & 0x70) << 3) + - ((row & 0x80) << 3) + ((row & 0x10) << 7) + ((col & 0x01) << 12) + - ((row & 0x60) << 8); -} - -TILE_GET_INFO_MEMBER(stfight_state::get_bg_tile_info) -{ - UINT8 *bgMap = memregion("bg_map")->base(); - int attr,tile_bank,tile_base; - - attr = bgMap[0x8000+tile_index]; - tile_bank = (attr & 0x20) >> 5; - tile_base = (attr & 0x80) << 1; - - SET_TILE_INFO_MEMBER(2+tile_bank, - tile_base + bgMap[tile_index], - attr & 0x07, - 0); -} - -TILE_GET_INFO_MEMBER(stfight_state::get_tx_tile_info) -{ - UINT8 attr = m_text_attr_ram[tile_index]; - int color = attr & 0x0f; - - tileinfo.group = color; - - SET_TILE_INFO_MEMBER(0, - m_text_char_ram[tile_index] + ((attr & 0x80) << 1), - attr & 0x0f, - TILE_FLIPYX((attr & 0x60) >> 5)); -} - -TILE_GET_INFO_MEMBER(stfight_state::get_cshooter_tx_tile_info) -{ - UINT8 tile = m_tx_vram[tile_index*2]; - UINT8 attr = m_tx_vram[tile_index*2+1]; - int color = attr & 0x0f; - - tileinfo.group = color; - - SET_TILE_INFO_MEMBER(0, - (tile << 1) | ((attr & 0x20) >> 5), - attr & 0x0f, - /*TILE_FLIPYX((attr & 0x60) >> 5)*/0); -} - - -/*************************************************************************** - - Start the video hardware emulation. - -***************************************************************************/ - -VIDEO_START_MEMBER(stfight_state,stfight) -{ - m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(stfight_state::bg_scan),this),16,16,128,256); - m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(stfight_state::fg_scan),this),16,16,128,256); - m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); - - m_fg_tilemap->set_transparent_pen(0x0f); - m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf); -} - -VIDEO_START_MEMBER(stfight_state,cshooter) -{ - m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(stfight_state::bg_scan),this),16,16,128,256); - m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(stfight_state::fg_scan),this),16,16,128,256); - m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_state::get_cshooter_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); - - m_fg_tilemap->set_transparent_pen(0x0f); - m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf); -} - - - -/*************************************************************************** - - Memory handlers - -***************************************************************************/ - -WRITE8_MEMBER(stfight_state::stfight_text_char_w) -{ - m_text_char_ram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset); -} - -WRITE8_MEMBER(stfight_state::stfight_text_attr_w) -{ - m_text_attr_ram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset); -} - -WRITE8_MEMBER(stfight_state::cshooter_text_w) -{ - m_tx_vram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset/2); -} - - -WRITE8_MEMBER(stfight_state::stfight_sprite_bank_w) -{ - m_sprite_base = ( ( data & 0x04 ) << 7 ) | - ( ( data & 0x01 ) << 8 ); -} - -WRITE8_MEMBER(stfight_state::stfight_vh_latch_w) -{ - int scroll; - - - m_vh_latch_ram[offset] = data; - - switch( offset ) - { - case 0x00: - case 0x01: - scroll = (m_vh_latch_ram[1] << 8) | m_vh_latch_ram[0]; - m_fg_tilemap->set_scrollx(0,scroll); - break; - - case 0x02: - case 0x03: - scroll = (m_vh_latch_ram[3] << 8) | m_vh_latch_ram[2]; - m_fg_tilemap->set_scrolly(0,scroll); - break; - - case 0x04: - case 0x05: - scroll = (m_vh_latch_ram[5] << 8) | m_vh_latch_ram[4]; - m_bg_tilemap->set_scrollx(0,scroll); - break; - - case 0x06: - case 0x08: - scroll = (m_vh_latch_ram[8] << 8) | m_vh_latch_ram[6]; - m_bg_tilemap->set_scrolly(0,scroll); - break; - - case 0x07: - m_tx_tilemap->enable(data & 0x80); - /* 0x40 = sprites */ - m_bg_tilemap->enable(data & 0x20); - m_fg_tilemap->enable(data & 0x10); - flip_screen_set(data & 0x01); - break; - } -} - -/*************************************************************************** - - Display refresh - -***************************************************************************/ - -void stfight_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - int offs,sx,sy; - - for (offs = 0;offs < 4096;offs += 32) - { - int code; - int attr = m_sprite_ram[offs+1]; - int flipx = attr & 0x10; - int color = attr & 0x0f; - int pri = (attr & 0x20) >> 5; - - sy = m_sprite_ram[offs+2]; - sx = m_sprite_ram[offs+3]; - - // non-active sprites have zero y coordinate value - if( sy > 0 ) - { - // sprites which wrap onto/off the screen have - // a sign extension bit in the sprite attribute - if( sx >= 0xf0 ) - { - if (attr & 0x80) - sx -= 0x100; - } - - if (flip_screen()) - { - sx = 240 - sx; - sy = 240 - sy; - flipx = !flipx; - } - - code = m_sprite_base + m_sprite_ram[offs]; - - m_gfxdecode->gfx(4)->prio_transpen(bitmap,cliprect, - code, - color, - flipx,flip_screen(), - sx,sy, - screen.priority(), - pri ? 0x02 : 0,0x0f); - } - } -} - - -UINT32 stfight_state::screen_update_stfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - screen.priority().fill(0, cliprect); - - bitmap.fill(0, cliprect); /* in case m_bg_tilemap is disabled */ - m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); - m_fg_tilemap->draw(screen, bitmap, cliprect, 0,1); - - /* Draw sprites (may be obscured by foreground layer) */ - if (m_vh_latch_ram[0x07] & 0x40) - draw_sprites(screen,bitmap,cliprect); - - m_tx_tilemap->draw(screen, bitmap, cliprect, 0,0); - return 0; -} - -void stfight_state::cshooter_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - for (int i = m_sprite_ram.bytes() - 4; i >= 0 ; i -= 4) - { - if (m_sprite_ram[i+1]&0x80) - continue; - - int attr = m_sprite_ram[i+1]; - int flipx = attr & 0x10; - int color = attr & 0x0f; - int pri = (attr & 0x20) >> 5; - - /* BCD debug code, to be removed in the end */ - UINT8 tile_low = (m_sprite_ram[i]&0x0f); - UINT8 tile_high = ((m_sprite_ram[i]&0xf0)>>4); - - tile_low += (tile_low > 0x9) ? 0x37 : 0x30; - tile_high += (tile_high > 0x9) ? 0x37 : 0x30; - - m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, tile_high << 1, color, flipx, 0, m_sprite_ram[i+3],m_sprite_ram[i+2],screen.priority(),pri ? 0x02 : 0,0x00); - m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, tile_high << 1, color, flipx, 0, m_sprite_ram[i+3]+8,m_sprite_ram[i+2],screen.priority(),pri ? 0x02 : 0,0x00); - m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, tile_low << 1, color, flipx, 0, m_sprite_ram[i+3]+8,m_sprite_ram[i+2]+8,screen.priority(),pri ? 0x02 : 0,0x00); - m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, tile_low << 1, color, flipx, 0, m_sprite_ram[i+3],m_sprite_ram[i+2]+8,screen.priority(),pri ? 0x02 : 0,0x00); - } -} - -UINT32 stfight_state::screen_update_cshooter(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - screen.priority().fill(0, cliprect); - - bitmap.fill(0, cliprect); /* in case m_bg_tilemap is disabled */ - m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); - m_fg_tilemap->draw(screen, bitmap, cliprect, 0,1); - - /* Draw sprites (may be obscured by foreground layer) */ -// if (m_vh_latch_ram[0x07] & 0x40) - cshooter_draw_sprites(screen,bitmap,cliprect); - - m_tx_tilemap->draw(screen, bitmap, cliprect, 0,0); - return 0; -} diff --git a/src/mame/video/stfight_dev.cpp b/src/mame/video/stfight_dev.cpp new file mode 100644 index 00000000000..29c0e2d1816 --- /dev/null +++ b/src/mame/video/stfight_dev.cpp @@ -0,0 +1,387 @@ +// license:BSD-3-Clause +// copyright-holders:Mark McDougall, David Haywood + +// The Street Fight video appears to be 4 layers, very similar to Dark Mist and Air Raid, but at least without the CLUT transparency handling? +// which are presumably handled by the SEI0100BU chips on the other games (with the GFX inside the modules on Air Raid) + +#include "emu.h" +#include "stfight_dev.h" + + + +extern const device_type STFIGHT_VIDEO = &device_creator; + + +stfight_video_device::stfight_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, STFIGHT_VIDEO, "Seibu Street Fight Video", tag, owner, clock, "stfight_vid", __FILE__), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this,"^palette"), + m_screen(*this, "screen"), + m_tx_clut(*this, "tx_clut"), + m_fg_clut(*this, "fg_clut"), + m_bg_clut(*this, "bg_clut"), + m_spr_clut(*this, "spr_clut"), + m_fgmap(*this,"fg_map"), + m_bgmap(*this,"bg_map"), + m_vregs(*this,"^vregs"), + m_sprite_ram(*this, "^sprite_ram"), + m_txram(*this, "^txram") +{ +} + +/* text-layer characters */ +static const gfx_layout charlayout = +{ + 8,8, /* 8*8 pixels */ + 512, /* 512 characters */ + 2, /* 2 bits per pixel */ + { 4, 0 }, + { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 }, + { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, + 8*16 /* every char takes 16 consecutive bytes */ +}; + +/* foreground tiles */ +static const gfx_layout fglayout = +{ + 16,16, /* 16*16 pixels */ + 1024, /* 1024 tiles */ + 4, /* 4 bits per pixel */ + { 64*1024*8+0, 64*1024*8+4, 0, 4 }, + { 0, 1, 2, 3, + 8, 9, 10, 11, + 32*8+0, 32*8+1, 32*8+ 2, 32*8+ 3, + 32*8+8, 32*8+9, 32*8+10, 32*8+11 }, + { 0*8, 2*8, 4*8, 6*8, + 8*8, 10*8, 12*8, 14*8, + 16*8, 18*8, 20*8, 22*8, + 24*8, 26*8, 28*8, 30*8 }, + 64*8 /* every char takes 64 consecutive bytes */ +}; + +/* + * The background tiles are interleaved in banks of 2 + * - so we need to create two separate layout structs + * to handle them properly with tilemaps + */ + +/* background tiles */ +static const gfx_layout bglayout = +{ + 16,16, /* 16*16 pixels */ + 512, /* 512 tiles */ + 4, /* 4 bits per pixel */ + { 64*1024*8+4, 64*1024*8+0, 4, 0 }, + { 0, 1, 2, 3, + 8, 9, 10, 11, + 64*8+0, 64*8+1, 64*8+ 2, 64*8+ 3, + 64*8+8, 64*8+9, 64*8+10, 64*8+11 }, + { 0*8, 2*8, 4*8, 6*8, + 8*8, 10*8, 12*8, 14*8, + 16*8, 18*8, 20*8, 22*8, + 24*8, 26*8, 28*8, 30*8 }, + 128*8 /* every tile takes 64/128 consecutive bytes */ +}; + +/* sprites */ +static const gfx_layout spritelayout = +{ + 16,16, /* 16*16 pixels */ + 1024, /* 1024 sprites */ + 4, /* 4 bits per pixel */ + { 64*1024*8+0, 64*1024*8+4, 0, 4 }, + { 0, 1, 2, 3, + 8, 9, 10, 11, + 32*8+0, 32*8+1, 32*8+ 2, 32*8+ 3, + 32*8+8, 32*8+9, 32*8+10, 32*8+11 }, + { 0*8, 2*8, 4*8, 6*8, + 8*8, 10*8, 12*8, 14*8, + 16*8, 18*8, 20*8, 22*8, + 24*8, 26*8, 28*8, 30*8 }, + 64*8 /* every sprite takes 64 consecutive bytes */ +}; + +static GFXDECODE_START( stfight ) + GFXDECODE_ENTRY( "tx_gfx", 0x0000, charlayout, 0, 16 ) + GFXDECODE_ENTRY( "fg_gfx", 0x0000, fglayout, 0, 16 ) + GFXDECODE_ENTRY( "bg_gfx", 0x0000, bglayout, 0, 16 ) + GFXDECODE_ENTRY( "bg_gfx", 0x0020, bglayout, 0, 16 ) + GFXDECODE_ENTRY( "spr_gfx", 0x0000, spritelayout, 0, 32 ) +GFXDECODE_END + +static MACHINE_CONFIG_FRAGMENT( stfight_vid ) + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(32*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) + MCFG_SCREEN_UPDATE_DRIVER(stfight_video_device, screen_update_stfight) + MCFG_SCREEN_PALETTE("^palette") + + MCFG_GFXDECODE_ADD("gfxdecode", "^palette", stfight) +MACHINE_CONFIG_END + +machine_config_constructor stfight_video_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( stfight_vid ); +} + +/* + Graphics ROM Format + =================== + + Each tile is 8x8 pixels + Each composite tile is 2x2 tiles, 16x16 pixels + Each screen is 32x32 composite tiles, 64x64 tiles, 256x256 pixels + Each layer is a 4-plane bitmap 8x16 screens, 2048x4096 pixels + + There are 4x256=1024 composite tiles defined for each layer + + Each layer is mapped using 2 bytes/composite tile + - one byte for the tile + - one byte for the tile bank, attribute + - b7,b5 tile bank (0-3) + + Each pixel is 4 bits = 16 colours. + + */ + +TILEMAP_MAPPER_MEMBER(stfight_video_device::fg_scan) +{ + /* logical (col,row) -> memory offset */ + return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x70) << 4) + ((row & 0xf0) << 7); +} + +TILE_GET_INFO_MEMBER(stfight_video_device::get_fg_tile_info) +{ + int attr,tile_base; + + attr = m_fgmap[0x8000+tile_index]; + tile_base = ((attr & 0x80) << 2) | ((attr & 0x20) << 3); + + SET_TILE_INFO_MEMBER(1, + tile_base + m_fgmap[tile_index], + attr & 0x07, + 0); +} + +TILEMAP_MAPPER_MEMBER(stfight_video_device::bg_scan) +{ + /* logical (col,row) -> memory offset */ + return ((col & 0x0e) >> 1) + ((row & 0x0f) << 3) + ((col & 0x70) << 3) + + ((row & 0x80) << 3) + ((row & 0x10) << 7) + ((col & 0x01) << 12) + + ((row & 0x60) << 8); +} + +TILE_GET_INFO_MEMBER(stfight_video_device::get_bg_tile_info) +{ + int attr,tile_bank,tile_base; + + attr = m_bgmap[0x8000+tile_index]; + tile_bank = (attr & 0x20) >> 5; + tile_base = (attr & 0x80) << 1; + + SET_TILE_INFO_MEMBER(2+tile_bank, + tile_base + m_bgmap[tile_index], + attr & 0x07, + 0); +} + +TILE_GET_INFO_MEMBER(stfight_video_device::get_tx_tile_info) +{ + UINT8 attr = m_txram[tile_index+0x400]; + int color = attr & 0x0f; + + tileinfo.group = color; + + SET_TILE_INFO_MEMBER(0, + m_txram[tile_index] + ((attr & 0x80) << 1), + attr & 0x0f, + TILE_FLIPYX((attr & 0x60) >> 5)); +} + +void stfight_video_device::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + int offs, sx, sy; + + for (offs = 4096 - 32;offs >= 0;offs -= 32) + { + int code; + int attr = m_sprite_ram[offs + 1]; + int flipx = attr & 0x10; + int color = attr & 0x0f; + color |= (attr & 0x20) >> 1; // mix in priority bit + + sy = m_sprite_ram[offs + 2]; + sx = m_sprite_ram[offs + 3]; + + // non-active sprites have zero y coordinate value + if (sy > 0) + { + // sprites which wrap onto/off the screen have + // a sign extension bit in the sprite attribute + if (sx >= 0xf0) + { + if (attr & 0x80) + sx -= 0x100; + } + + /* + if (flip_screen()) + { + sx = 240 - sx; + sy = 240 - sy; + flipx = !flipx; + } + */ + + code = m_sprite_base + m_sprite_ram[offs]; + + m_gfxdecode->gfx(4)->transpen(bitmap, cliprect, + code, + color, + flipx, 0/*flip_screen()*/, + sx, sy, + 0x0f); + } + } +} + + +UINT32 stfight_video_device::screen_update_stfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(0, cliprect); /* in case m_bg_tilemap is disabled */ + + m_temp_sprite_bitmap.fill(-1, cliprect); + draw_sprites(screen, m_temp_sprite_bitmap, cliprect); + + m_temp_bitmap.fill(-1, cliprect); + m_bg_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_txlayer(screen, bitmap, m_temp_bitmap, cliprect, m_bg_clut, 0x00, 0x00, 0x00, false); + + if (m_vregs[0x07] & 0x40) mix_txlayer(screen, bitmap, m_temp_sprite_bitmap, cliprect, m_spr_clut, 0x80, 0x100, 0x100, false); // low priority sprites + + m_temp_bitmap.fill(-1, cliprect); + m_fg_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_txlayer(screen, bitmap, m_temp_bitmap, cliprect, m_fg_clut, 0x40, 0x00, 0x00, false); + + if (m_vregs[0x07] & 0x40) mix_txlayer(screen, bitmap, m_temp_sprite_bitmap, cliprect, m_spr_clut, 0x80, 0x100, 0x000, false); // high priority sprites + + m_temp_bitmap.fill(-1, cliprect); + m_tx_tilemap->draw(screen, m_temp_bitmap, cliprect, 0, 0); + mix_txlayer(screen, bitmap, m_temp_bitmap, cliprect, m_tx_clut, 0xc0, 0x00, 0x00, true); + // + return 0; +} + + +void stfight_video_device::mix_txlayer(screen_device &screen, bitmap_ind16 &bitmap, bitmap_ind16 &bitmap2, const rectangle &cliprect, UINT8* clut, int base, int mask, int condition, bool realcheck) +{ + for (int y = cliprect.min_y; y <= cliprect.max_y; y++) + { + UINT16 *dest = &bitmap.pix16(y); + UINT16 *src = &bitmap2.pix16(y); + for (int x = cliprect.min_x; x <= cliprect.max_x; x++) + { + if (src[x] == -1) + continue; + + if ((src[x] & mask) == condition) + { + UINT8 pix = src[x] & 0xff; + UINT8 real = clut[pix]; + + if (realcheck) // the text layer transparency appears to be 0xf *after* lookup + { + if ((real & 0x0f) != 0x0f) + { + dest[x] = (real & 0x3f) + base; + } + } + else if ((src[x] & 0xf) != 0xf) // other layers it's pre-lookup + { + dest[x] = (real & 0x3f) + base; + } + } + } + } +} + +void stfight_video_device::device_start() +{ + if(!m_gfxdecode->started()) + throw device_missing_dependencies(); + + save_item(NAME(m_sprite_base)); + + m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_video_device::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(stfight_video_device::bg_scan),this),16,16,128,256); + m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_video_device::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(stfight_video_device::fg_scan),this),16,16,128,256); + m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_video_device::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); + + // we do manual mixing using a temp bitmap + m_screen->register_screen_bitmap(m_temp_sprite_bitmap); + m_screen->register_screen_bitmap(m_temp_bitmap); +} + +void stfight_video_device::device_reset() +{ +} + +// public functions + +WRITE8_MEMBER(stfight_video_device::stfight_text_char_w) +{ + m_txram[offset] = data; + m_tx_tilemap->mark_tile_dirty(offset&0x3ff); +} + + +WRITE8_MEMBER(stfight_video_device::stfight_sprite_bank_w) +{ + m_sprite_base = ( ( data & 0x04 ) << 7 ) | + ( ( data & 0x01 ) << 8 ); +} + +WRITE8_MEMBER(stfight_video_device::stfight_vh_latch_w) +{ + int scroll; + + + m_vregs[offset] = data; + + switch( offset ) + { + case 0x00: + case 0x01: + scroll = (m_vregs[1] << 8) | m_vregs[0]; + m_fg_tilemap->set_scrollx(0,scroll); + break; + + case 0x02: + case 0x03: + scroll = (m_vregs[3] << 8) | m_vregs[2]; + m_fg_tilemap->set_scrolly(0,scroll); + break; + + case 0x04: + case 0x05: + scroll = (m_vregs[5] << 8) | m_vregs[4]; + m_bg_tilemap->set_scrollx(0,scroll); + break; + + case 0x06: + case 0x08: + scroll = (m_vregs[8] << 8) | m_vregs[6]; + m_bg_tilemap->set_scrolly(0,scroll); + break; + + case 0x07: + m_tx_tilemap->enable(data & 0x80); + /* 0x40 = sprites */ + m_bg_tilemap->enable(data & 0x20); + m_fg_tilemap->enable(data & 0x10); + //flip_screen_set(data & 0x01); + break; + } +} diff --git a/src/mame/video/stfight_dev.h b/src/mame/video/stfight_dev.h new file mode 100644 index 00000000000..a36c4dd4273 --- /dev/null +++ b/src/mame/video/stfight_dev.h @@ -0,0 +1,76 @@ +// license:BSD-3-Clause +// copyright-holders:Mark McDougall, David Haywood + +#pragma once + +#ifndef __STFIGHT_VIDEO__ +#define __STFIGHT_VIDEO__ + + + +extern const device_type STFIGHT_VIDEO; + +#define MCFG_STFIGHT_VIDEO_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, STFIGHT_VIDEO, 0) + + +class stfight_video_device : public device_t +{ +public: + // construction/destruction + stfight_video_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + + DECLARE_WRITE8_MEMBER(stfight_text_char_w); + DECLARE_WRITE8_MEMBER(stfight_sprite_bank_w); + DECLARE_WRITE8_MEMBER(stfight_vh_latch_w); + + UINT32 screen_update_stfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + +protected: + virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + // devices + required_device m_gfxdecode; + required_device m_palette; + required_device m_screen; + + // region pointers + required_region_ptr m_tx_clut; + required_region_ptr m_fg_clut; + required_region_ptr m_bg_clut; + required_region_ptr m_spr_clut; + required_region_ptr m_fgmap; + required_region_ptr m_bgmap; + + // memory pointers + required_shared_ptr m_vregs; + required_shared_ptr m_sprite_ram; + required_shared_ptr m_txram; + + // tilemaps + tilemap_t *m_fg_tilemap; + tilemap_t *m_bg_tilemap; + tilemap_t *m_tx_tilemap; + + TILEMAP_MAPPER_MEMBER(fg_scan); + TILEMAP_MAPPER_MEMBER(bg_scan); + + TILE_GET_INFO_MEMBER(get_fg_tile_info); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_tx_tile_info); + + // internal variables + int m_sprite_base; + + // rendering / mixing + bitmap_ind16 m_temp_bitmap; + bitmap_ind16 m_temp_sprite_bitmap; + void mix_txlayer(screen_device &screen, bitmap_ind16 &bitmap, bitmap_ind16 &bitmap2, const rectangle &cliprect, UINT8* clut, int base, int mask, int condition, bool realcheck); + void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); +}; + +#endif From e45eb61874782731982f58db99fa895aa35ef58e Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Sat, 6 Aug 2016 17:29:28 -0400 Subject: [PATCH 051/116] Comment debug helper from being used from bfm_sc4 sets which can really fill up a log when all 3k plus machines are run in a test. (nw) --- src/mame/drivers/bfm_sc4.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp index c7bf0da5ed0..0ae8c347bc2 100644 --- a/src/mame/drivers/bfm_sc4.cpp +++ b/src/mame/drivers/bfm_sc4.cpp @@ -1644,7 +1644,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4) // debug helpers to find strings used for inputs and where the buttons map - bfm_sc45_layout_helper(machine()); +// bfm_sc45_layout_helper(machine()); } From 20554f0228c6cba45f07e9a572716747767d0ec1 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Sat, 6 Aug 2016 18:54:23 -0400 Subject: [PATCH 052/116] Finished up tiny_rom_entry conversion --- src/devices/bus/oricext/jasmin.h | 2 +- src/devices/bus/oricext/microdisc.h | 2 +- src/devices/bus/ti99_peb/bwg.h | 2 +- src/devices/bus/ti99_peb/hfdc.h | 2 +- src/devices/bus/ti99_peb/myarcmem.h | 2 +- src/devices/bus/ti99_peb/ti_fdc.h | 2 +- src/devices/bus/ti99_peb/ti_rs232.h | 2 +- src/devices/sound/qsound.h | 2 +- src/mame/audio/midway.cpp | 2 +- src/mame/audio/namco52.cpp | 2 +- src/mame/audio/namco54.cpp | 2 +- src/mame/audio/t5182.cpp | 2 +- src/mame/drivers/4enlinea.cpp | 2 +- src/mame/drivers/pcxt.cpp | 4 ++-- src/mame/machine/abc1600mac.cpp | 2 +- src/mame/machine/abc80kb.cpp | 2 +- src/mame/machine/amigakbd.cpp | 2 +- src/mame/machine/apricotkb.cpp | 2 +- src/mame/machine/beta.cpp | 2 +- src/mame/machine/compiskb.cpp | 2 +- src/mame/machine/cuda.cpp | 2 +- src/mame/machine/dec_lk201.cpp | 2 +- src/mame/machine/dmv_keyb.cpp | 2 +- src/mame/machine/egret.cpp | 2 +- src/mame/machine/ie15_kbd.cpp | 2 +- src/mame/machine/isbc_215g.cpp | 2 +- src/mame/machine/isbc_215g.h | 2 +- src/mame/machine/jvs13551.cpp | 2 +- src/mame/machine/k573dio.cpp | 2 +- src/mame/machine/k573mcr.cpp | 2 +- src/mame/machine/k573msu.cpp | 2 +- src/mame/machine/k573npu.cpp | 2 +- src/mame/machine/k7659kb.cpp | 2 +- src/mame/machine/km035.cpp | 2 +- src/mame/machine/m1comm.cpp | 2 +- src/mame/machine/m20_8086.cpp | 2 +- src/mame/machine/m24_kbd.cpp | 2 +- src/mame/machine/m24_z8000.cpp | 2 +- src/mame/machine/mackbd.cpp | 2 +- src/mame/machine/mie.cpp | 2 +- src/mame/machine/mm1kb.cpp | 2 +- src/mame/machine/ms7004.cpp | 2 +- src/mame/machine/namco50.cpp | 2 +- src/mame/machine/namco51.cpp | 2 +- src/mame/machine/namco53.cpp | 2 +- src/mame/machine/namco62.cpp | 2 +- src/mame/machine/namcomcu.cpp | 10 +++++----- src/mame/machine/nmk004.cpp | 2 +- src/mame/machine/pc1512kb.cpp | 2 +- src/mame/machine/pc9801_118.cpp | 2 +- src/mame/machine/pc9801_86.cpp | 2 +- src/mame/machine/pcd_kbd.cpp | 2 +- src/mame/machine/psxcd.cpp | 2 +- src/mame/machine/tandy2kb.cpp | 2 +- src/mame/machine/trs80m2kb.cpp | 2 +- src/mame/machine/v1050kb.cpp | 2 +- src/mame/machine/victor9k_fdc.cpp | 2 +- src/mame/machine/victor9kb.cpp | 2 +- src/mame/machine/wangpckb.cpp | 2 +- src/mame/machine/x820kb.cpp | 2 +- src/mame/video/abc1600.cpp | 2 +- src/mame/video/gic.cpp | 2 +- src/mame/video/pcd.cpp | 4 ++-- src/mame/video/stic.cpp | 2 +- 64 files changed, 70 insertions(+), 70 deletions(-) diff --git a/src/devices/bus/oricext/jasmin.h b/src/devices/bus/oricext/jasmin.h index 5d27895ccfa..9befe4a2900 100644 --- a/src/devices/bus/oricext/jasmin.h +++ b/src/devices/bus/oricext/jasmin.h @@ -33,7 +33,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - const rom_entry *device_rom_region() const override; + const tiny_rom_entry *device_rom_region() const override; machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/oricext/microdisc.h b/src/devices/bus/oricext/microdisc.h index 9ffc2f23f14..663e7fbf029 100644 --- a/src/devices/bus/oricext/microdisc.h +++ b/src/devices/bus/oricext/microdisc.h @@ -45,7 +45,7 @@ protected: virtual void device_start() override; virtual void device_reset() override; - const rom_entry *device_rom_region() const override; + const tiny_rom_entry *device_rom_region() const override; machine_config_constructor device_mconfig_additions() const override; void remap(); diff --git a/src/devices/bus/ti99_peb/bwg.h b/src/devices/bus/ti99_peb/bwg.h index 6a301b5cb59..262256b26c1 100644 --- a/src/devices/bus/ti99_peb/bwg.h +++ b/src/devices/bus/ti99_peb/bwg.h @@ -41,7 +41,7 @@ protected: void device_reset() override; void device_config_complete() override; - const rom_entry *device_rom_region() const override; + const tiny_rom_entry *device_rom_region() const override; machine_config_constructor device_mconfig_additions() const override; ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ti99_peb/hfdc.h b/src/devices/bus/ti99_peb/hfdc.h index ec51e3122d6..3fa6817ae39 100644 --- a/src/devices/bus/ti99_peb/hfdc.h +++ b/src/devices/bus/ti99_peb/hfdc.h @@ -55,7 +55,7 @@ private: void device_start() override; void device_reset() override; - const rom_entry *device_rom_region() const override; + const tiny_rom_entry *device_rom_region() const override; machine_config_constructor device_mconfig_additions() const override; ioport_constructor device_input_ports() const override; diff --git a/src/devices/bus/ti99_peb/myarcmem.h b/src/devices/bus/ti99_peb/myarcmem.h index 0210935b2c0..19a8f1fd95a 100644 --- a/src/devices/bus/ti99_peb/myarcmem.h +++ b/src/devices/bus/ti99_peb/myarcmem.h @@ -32,7 +32,7 @@ public: protected: void device_start(void) override; void device_reset(void) override; - const rom_entry *device_rom_region(void) const override; + const tiny_rom_entry *device_rom_region(void) const override; ioport_constructor device_input_ports() const override; machine_config_constructor device_mconfig_additions() const override; diff --git a/src/devices/bus/ti99_peb/ti_fdc.h b/src/devices/bus/ti99_peb/ti_fdc.h index ed1082d3b0a..7cb6267cab5 100644 --- a/src/devices/bus/ti99_peb/ti_fdc.h +++ b/src/devices/bus/ti99_peb/ti_fdc.h @@ -41,7 +41,7 @@ protected: void device_reset() override; void device_config_complete() override; - const rom_entry *device_rom_region() const override; + const tiny_rom_entry *device_rom_region() const override; machine_config_constructor device_mconfig_additions() const override; void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; diff --git a/src/devices/bus/ti99_peb/ti_rs232.h b/src/devices/bus/ti99_peb/ti_rs232.h index 78aea20a6bf..371eefccdf9 100644 --- a/src/devices/bus/ti99_peb/ti_rs232.h +++ b/src/devices/bus/ti99_peb/ti_rs232.h @@ -50,7 +50,7 @@ protected: virtual void device_start(void) override; virtual void device_reset(void) override; virtual void device_stop(void) override; - virtual const rom_entry *device_rom_region(void) const override; + virtual const tiny_rom_entry *device_rom_region(void) const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/sound/qsound.h b/src/devices/sound/qsound.h index cd90136238e..3b2e3d82c50 100644 --- a/src/devices/sound/qsound.h +++ b/src/devices/sound/qsound.h @@ -40,7 +40,7 @@ public: protected: // device-level overrides - const rom_entry *device_rom_region() const override; + const tiny_rom_entry *device_rom_region() const override; machine_config_constructor device_mconfig_additions() const override; virtual void device_start() override; diff --git a/src/mame/audio/midway.cpp b/src/mame/audio/midway.cpp index e4d3f9bc17a..6b9167bc5b2 100644 --- a/src/mame/audio/midway.cpp +++ b/src/mame/audio/midway.cpp @@ -413,7 +413,7 @@ ROM_END // the device's ROM definitions //------------------------------------------------- -const rom_entry *midway_ssio_device::device_rom_region() const +const tiny_rom_entry *midway_ssio_device::device_rom_region() const { return ROM_NAME(midway_ssio); } diff --git a/src/mame/audio/namco52.cpp b/src/mame/audio/namco52.cpp index f6e16575d93..6ecee4a30fb 100644 --- a/src/mame/audio/namco52.cpp +++ b/src/mame/audio/namco52.cpp @@ -202,7 +202,7 @@ machine_config_constructor namco_52xx_device::device_mconfig_additions() const // the device's ROM definitions //------------------------------------------------- -const rom_entry *namco_52xx_device::device_rom_region() const +const tiny_rom_entry *namco_52xx_device::device_rom_region() const { return ROM_NAME(namco_52xx ); } diff --git a/src/mame/audio/namco54.cpp b/src/mame/audio/namco54.cpp index 0b19a142529..2552ac3b2ea 100644 --- a/src/mame/audio/namco54.cpp +++ b/src/mame/audio/namco54.cpp @@ -161,7 +161,7 @@ machine_config_constructor namco_54xx_device::device_mconfig_additions() const // the device's ROM definitions //------------------------------------------------- -const rom_entry *namco_54xx_device::device_rom_region() const +const tiny_rom_entry *namco_54xx_device::device_rom_region() const { return ROM_NAME(namco_54xx ); } diff --git a/src/mame/audio/t5182.cpp b/src/mame/audio/t5182.cpp index a40349de0d0..b3d6ba53cbc 100644 --- a/src/mame/audio/t5182.cpp +++ b/src/mame/audio/t5182.cpp @@ -296,7 +296,7 @@ ROM_END // rom_region - return a pointer to the device's // internal ROM region //------------------------------------------------- -const rom_entry *t5182_device::device_rom_region() const +const tiny_rom_entry *t5182_device::device_rom_region() const { return ROM_NAME( t5182 ); } diff --git a/src/mame/drivers/4enlinea.cpp b/src/mame/drivers/4enlinea.cpp index 616cfdbcae8..d5ebe1b1455 100644 --- a/src/mame/drivers/4enlinea.cpp +++ b/src/mame/drivers/4enlinea.cpp @@ -252,7 +252,7 @@ public: virtual const tiny_rom_entry *device_rom_region() const override; }; -const rom_entry *isa8_cga_4enlinea_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_4enlinea_device::device_rom_region() const { return nullptr; } diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp index 2a31db2684c..92b1dcf8ea9 100644 --- a/src/mame/drivers/pcxt.cpp +++ b/src/mame/drivers/pcxt.cpp @@ -120,7 +120,7 @@ ROM_START( filetto_cga ) ROM_LOAD("u67.bin", 0x0000, 0x2000, CRC(09710122) SHA1(de84bdd9245df287bbd3bb808f0c3531d13a3545) ) ROM_END -const rom_entry *isa8_cga_filetto_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_filetto_device::device_rom_region() const { return ROM_NAME( filetto_cga ); } @@ -228,7 +228,7 @@ ROM_START( tetriskr_cga ) ROM_LOAD( "b-9.u43", 0x70000, 0x10000, CRC(4ea22349) SHA1(14dfd3dbd51f8bd6f3290293b8ea1c165e8cf7fd)) ROM_END -const rom_entry *isa8_cga_tetriskr_device::device_rom_region() const +const tiny_rom_entry *isa8_cga_tetriskr_device::device_rom_region() const { return ROM_NAME( tetriskr_cga ); } diff --git a/src/mame/machine/abc1600mac.cpp b/src/mame/machine/abc1600mac.cpp index 409bf5695b1..10e64e179c5 100644 --- a/src/mame/machine/abc1600mac.cpp +++ b/src/mame/machine/abc1600mac.cpp @@ -101,7 +101,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc1600_mac_device::device_rom_region() const +const tiny_rom_entry *abc1600_mac_device::device_rom_region() const { return ROM_NAME( abc1600_mac ); } diff --git a/src/mame/machine/abc80kb.cpp b/src/mame/machine/abc80kb.cpp index dd9471f5ee4..c5d7e4dfeb0 100644 --- a/src/mame/machine/abc80kb.cpp +++ b/src/mame/machine/abc80kb.cpp @@ -104,7 +104,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc80_keyboard_device::device_rom_region() const +const tiny_rom_entry *abc80_keyboard_device::device_rom_region() const { return ROM_NAME( abc80_keyboard ); } diff --git a/src/mame/machine/amigakbd.cpp b/src/mame/machine/amigakbd.cpp index ac297015deb..55f832310ac 100644 --- a/src/mame/machine/amigakbd.cpp +++ b/src/mame/machine/amigakbd.cpp @@ -75,7 +75,7 @@ ROM_START( mos6570_036 ) ROM_LOAD("328191-02.ic1", 0x000, 0x800, CRC(4a3fc332) SHA1(83b21d0c8b93fc9b9b3b287fde4ec8f3badac5a2)) ROM_END -const rom_entry *amigakbd_device::device_rom_region() const +const tiny_rom_entry *amigakbd_device::device_rom_region() const { return ROM_NAME( mos6570_036 ); } diff --git a/src/mame/machine/apricotkb.cpp b/src/mame/machine/apricotkb.cpp index 6ceb0d6ba4d..8d40e726f40 100644 --- a/src/mame/machine/apricotkb.cpp +++ b/src/mame/machine/apricotkb.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *apricot_keyboard_device::device_rom_region() const +const tiny_rom_entry *apricot_keyboard_device::device_rom_region() const { return ROM_NAME( apricot_keyboard ); } diff --git a/src/mame/machine/beta.cpp b/src/mame/machine/beta.cpp index 4c1afc59f64..52f1500f884 100644 --- a/src/mame/machine/beta.cpp +++ b/src/mame/machine/beta.cpp @@ -290,7 +290,7 @@ machine_config_constructor beta_disk_device::device_mconfig_additions() const // the device's ROM definitions //------------------------------------------------- -const rom_entry *beta_disk_device::device_rom_region() const +const tiny_rom_entry *beta_disk_device::device_rom_region() const { return ROM_NAME(beta_disk ); } diff --git a/src/mame/machine/compiskb.cpp b/src/mame/machine/compiskb.cpp index 91709ad925e..a7d0e0f895f 100644 --- a/src/mame/machine/compiskb.cpp +++ b/src/mame/machine/compiskb.cpp @@ -40,7 +40,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *compis_keyboard_device::device_rom_region() const +const tiny_rom_entry *compis_keyboard_device::device_rom_region() const { return ROM_NAME( compis_keyboard ); } diff --git a/src/mame/machine/cuda.cpp b/src/mame/machine/cuda.cpp index fc79fc6b32e..b42b8ee11f3 100644 --- a/src/mame/machine/cuda.cpp +++ b/src/mame/machine/cuda.cpp @@ -99,7 +99,7 @@ machine_config_constructor cuda_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( cuda ); } -const rom_entry *cuda_device::device_rom_region() const +const tiny_rom_entry *cuda_device::device_rom_region() const { return ROM_NAME( cuda ); } diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp index 0ba3d6a0fdc..94fb9533ec0 100644 --- a/src/mame/machine/dec_lk201.cpp +++ b/src/mame/machine/dec_lk201.cpp @@ -226,7 +226,7 @@ machine_config_constructor lk201_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( lk201 ); } -const rom_entry *lk201_device::device_rom_region() const +const tiny_rom_entry *lk201_device::device_rom_region() const { return ROM_NAME( lk201 ); } diff --git a/src/mame/machine/dmv_keyb.cpp b/src/mame/machine/dmv_keyb.cpp index 1fe0f2f8f43..4f4c3d618e1 100644 --- a/src/mame/machine/dmv_keyb.cpp +++ b/src/mame/machine/dmv_keyb.cpp @@ -249,7 +249,7 @@ machine_config_constructor dmv_keyboard_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *dmv_keyboard_device::device_rom_region() const +const tiny_rom_entry *dmv_keyboard_device::device_rom_region() const { return ROM_NAME( dmv_keyboard ); } diff --git a/src/mame/machine/egret.cpp b/src/mame/machine/egret.cpp index 736cdfd3471..9a211847e52 100644 --- a/src/mame/machine/egret.cpp +++ b/src/mame/machine/egret.cpp @@ -98,7 +98,7 @@ machine_config_constructor egret_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( egret ); } -const rom_entry *egret_device::device_rom_region() const +const tiny_rom_entry *egret_device::device_rom_region() const { return ROM_NAME( egret ); } diff --git a/src/mame/machine/ie15_kbd.cpp b/src/mame/machine/ie15_kbd.cpp index f98eb316092..fdc4be941c8 100644 --- a/src/mame/machine/ie15_kbd.cpp +++ b/src/mame/machine/ie15_kbd.cpp @@ -141,7 +141,7 @@ ROM_START( ie15_keyboard ) ROM_LOAD( "15bbb.rt5", 0x000, 0x200, CRC(e6a4226e) SHA1(0ee46f5be1b01fa917a6d483bb51463106ae441f) ) ROM_END -const rom_entry *ie15_keyboard_device::device_rom_region() const +const tiny_rom_entry *ie15_keyboard_device::device_rom_region() const { return ROM_NAME( ie15_keyboard ); } diff --git a/src/mame/machine/isbc_215g.cpp b/src/mame/machine/isbc_215g.cpp index e49818ee4d6..8cc1c937dda 100644 --- a/src/mame/machine/isbc_215g.cpp +++ b/src/mame/machine/isbc_215g.cpp @@ -377,7 +377,7 @@ ROM_START( isbc_215g ) ROM_LOAD16_BYTE( "174581.002.bin", 0x0001, 0x2000, CRC(6190fa67) SHA1(295dd4e75f699aaf93227cc4876cee8accae383a)) ROM_END -const rom_entry *isbc_215g_device::device_rom_region() const +const tiny_rom_entry *isbc_215g_device::device_rom_region() const { return ROM_NAME( isbc_215g ); } diff --git a/src/mame/machine/isbc_215g.h b/src/mame/machine/isbc_215g.h index 86c795d0306..85e1fee40b9 100644 --- a/src/mame/machine/isbc_215g.h +++ b/src/mame/machine/isbc_215g.h @@ -15,7 +15,7 @@ public: isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); virtual machine_config_constructor device_mconfig_additions() const override; - const rom_entry *device_rom_region() const override; + const tiny_rom_entry *device_rom_region() const override; DECLARE_WRITE8_MEMBER(write); DECLARE_READ16_MEMBER(io_r); diff --git a/src/mame/machine/jvs13551.cpp b/src/mame/machine/jvs13551.cpp index be82ed40bb8..261f311d796 100644 --- a/src/mame/machine/jvs13551.cpp +++ b/src/mame/machine/jvs13551.cpp @@ -35,7 +35,7 @@ ROM_START( jvs13551 ) ROM_LOAD( "315-6215.bin", 0x0000, 0x8000, CRC(d7c97e40) SHA1(b1ae8db332f869c4fdbbae15967baeca0bc7f57d)) ROM_END -const rom_entry *sega_837_13551::device_rom_region() const +const tiny_rom_entry *sega_837_13551::device_rom_region() const { return ROM_NAME(jvs13551); } diff --git a/src/mame/machine/k573dio.cpp b/src/mame/machine/k573dio.cpp index 672aa2fa209..99194a721c4 100644 --- a/src/mame/machine/k573dio.cpp +++ b/src/mame/machine/k573dio.cpp @@ -131,7 +131,7 @@ ROM_START( k573dio ) ROM_LOAD( "digital-id.bin", 0x000000, 0x000008, CRC(2b977f4d) SHA1(2b108a56653f91cb3351718c45dfcf979bc35ef1) ) ROM_END -const rom_entry *k573dio_device::device_rom_region() const +const tiny_rom_entry *k573dio_device::device_rom_region() const { return ROM_NAME(k573dio); } diff --git a/src/mame/machine/k573mcr.cpp b/src/mame/machine/k573mcr.cpp index a9866370176..1b5842cfab6 100644 --- a/src/mame/machine/k573mcr.cpp +++ b/src/mame/machine/k573mcr.cpp @@ -25,7 +25,7 @@ ROM_START( k573mcr ) ROM_LOAD( "885a01.bin", 0x000000, 0x080000, CRC(e22d093f) SHA1(927f62f63b5caa7899392decacd12fea0e6fdbea) ) ROM_END -const rom_entry *k573mcr_device::device_rom_region() const +const tiny_rom_entry *k573mcr_device::device_rom_region() const { return ROM_NAME( k573mcr ); } diff --git a/src/mame/machine/k573msu.cpp b/src/mame/machine/k573msu.cpp index b3c38ab95d9..df494d62bb8 100644 --- a/src/mame/machine/k573msu.cpp +++ b/src/mame/machine/k573msu.cpp @@ -88,7 +88,7 @@ ROM_START( k573msu ) ROM_LOAD( "m48t58y.6t", 0x000000, 0x002000, CRC(609ef020) SHA1(71b87c8b25b9613b4d4511c53d0a3a3aacf1499d) ) ROM_END -const rom_entry *k573msu_device::device_rom_region() const +const tiny_rom_entry *k573msu_device::device_rom_region() const { return ROM_NAME( k573msu ); } diff --git a/src/mame/machine/k573npu.cpp b/src/mame/machine/k573npu.cpp index f79494d7b56..a935745bc7a 100644 --- a/src/mame/machine/k573npu.cpp +++ b/src/mame/machine/k573npu.cpp @@ -85,7 +85,7 @@ ROM_START( k573npu ) ROM_LOAD( "29f400.24e", 0x000000, 0x080000, CRC(8dcf294b) SHA1(efac79e18db22c30886463ec1bc448187da7a95a) ) ROM_END -const rom_entry *k573npu_device::device_rom_region() const +const tiny_rom_entry *k573npu_device::device_rom_region() const { return ROM_NAME( k573npu ); } diff --git a/src/mame/machine/k7659kb.cpp b/src/mame/machine/k7659kb.cpp index 5b46d8a9814..4201b221213 100644 --- a/src/mame/machine/k7659kb.cpp +++ b/src/mame/machine/k7659kb.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *k7659_keyboard_device::device_rom_region() const +const tiny_rom_entry *k7659_keyboard_device::device_rom_region() const { return ROM_NAME( k7659_keyboard ); } diff --git a/src/mame/machine/km035.cpp b/src/mame/machine/km035.cpp index dcef3bfa3b0..a76117940f8 100644 --- a/src/mame/machine/km035.cpp +++ b/src/mame/machine/km035.cpp @@ -81,7 +81,7 @@ machine_config_constructor km035_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( km035 ); } -const rom_entry *km035_device::device_rom_region() const +const tiny_rom_entry *km035_device::device_rom_region() const { return ROM_NAME( km035 ); } diff --git a/src/mame/machine/m1comm.cpp b/src/mame/machine/m1comm.cpp index 8498ec9b4ea..38b17b14501 100644 --- a/src/mame/machine/m1comm.cpp +++ b/src/mame/machine/m1comm.cpp @@ -111,7 +111,7 @@ machine_config_constructor m1comm_device::device_mconfig_additions() const // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *m1comm_device::device_rom_region() const +const tiny_rom_entry *m1comm_device::device_rom_region() const { return ROM_NAME( m1comm ); } diff --git a/src/mame/machine/m20_8086.cpp b/src/mame/machine/m20_8086.cpp index 5c817b17edf..4acbce756c2 100644 --- a/src/mame/machine/m20_8086.cpp +++ b/src/mame/machine/m20_8086.cpp @@ -37,7 +37,7 @@ ROM_START( m20_8086 ) ROM_END -const rom_entry *m20_8086_device::device_rom_region() const +const tiny_rom_entry *m20_8086_device::device_rom_region() const { return ROM_NAME( m20_8086 ); } diff --git a/src/mame/machine/m24_kbd.cpp b/src/mame/machine/m24_kbd.cpp index 5cc05a95b16..f98da2dd409 100644 --- a/src/mame/machine/m24_kbd.cpp +++ b/src/mame/machine/m24_kbd.cpp @@ -10,7 +10,7 @@ ROM_START( m24_keyboard ) ROM_END -const rom_entry *m24_keyboard_device::device_rom_region() const +const tiny_rom_entry *m24_keyboard_device::device_rom_region() const { return ROM_NAME( m24_keyboard ); } diff --git a/src/mame/machine/m24_z8000.cpp b/src/mame/machine/m24_z8000.cpp index 35454177960..29d4001fb8b 100644 --- a/src/mame/machine/m24_z8000.cpp +++ b/src/mame/machine/m24_z8000.cpp @@ -34,7 +34,7 @@ ROM_START( m24_z8000 ) ROM_END -const rom_entry *m24_z8000_device::device_rom_region() const +const tiny_rom_entry *m24_z8000_device::device_rom_region() const { return ROM_NAME( m24_z8000 ); } diff --git a/src/mame/machine/mackbd.cpp b/src/mame/machine/mackbd.cpp index 7244b16866f..56e55940aa5 100644 --- a/src/mame/machine/mackbd.cpp +++ b/src/mame/machine/mackbd.cpp @@ -191,7 +191,7 @@ machine_config_constructor mackbd_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( mackbd ); } -const rom_entry *mackbd_device::device_rom_region() const +const tiny_rom_entry *mackbd_device::device_rom_region() const { return ROM_NAME( mackbd ); } diff --git a/src/mame/machine/mie.cpp b/src/mame/machine/mie.cpp index 55bac6f038f..c0c95483e77 100644 --- a/src/mame/machine/mie.cpp +++ b/src/mame/machine/mie.cpp @@ -77,7 +77,7 @@ void mie_device::static_set_jvs_name(device_t &device, const char *name) mie.jvs_name = name; } -const rom_entry *mie_device::device_rom_region() const +const tiny_rom_entry *mie_device::device_rom_region() const { return ROM_NAME(mie); } diff --git a/src/mame/machine/mm1kb.cpp b/src/mame/machine/mm1kb.cpp index 88faf286961..e4d88bb8587 100644 --- a/src/mame/machine/mm1kb.cpp +++ b/src/mame/machine/mm1kb.cpp @@ -31,7 +31,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *mm1_keyboard_t::device_rom_region() const +const tiny_rom_entry *mm1_keyboard_t::device_rom_region() const { return ROM_NAME( mm1_keyboard ); } diff --git a/src/mame/machine/ms7004.cpp b/src/mame/machine/ms7004.cpp index 5de44785bc3..fb8ca4068cb 100644 --- a/src/mame/machine/ms7004.cpp +++ b/src/mame/machine/ms7004.cpp @@ -79,7 +79,7 @@ machine_config_constructor ms7004_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( ms7004 ); } -const rom_entry *ms7004_device::device_rom_region() const +const tiny_rom_entry *ms7004_device::device_rom_region() const { return ROM_NAME( ms7004 ); } diff --git a/src/mame/machine/namco50.cpp b/src/mame/machine/namco50.cpp index 8967806295a..21b592fa99c 100644 --- a/src/mame/machine/namco50.cpp +++ b/src/mame/machine/namco50.cpp @@ -275,7 +275,7 @@ machine_config_constructor namco_50xx_device::device_mconfig_additions() const // the device's ROM definitions //------------------------------------------------- -const rom_entry *namco_50xx_device::device_rom_region() const +const tiny_rom_entry *namco_50xx_device::device_rom_region() const { return ROM_NAME(namco_50xx ); } diff --git a/src/mame/machine/namco51.cpp b/src/mame/machine/namco51.cpp index 2cd77ab69b5..8cfe739ad70 100644 --- a/src/mame/machine/namco51.cpp +++ b/src/mame/machine/namco51.cpp @@ -419,7 +419,7 @@ machine_config_constructor namco_51xx_device::device_mconfig_additions() const // the device's ROM definitions //------------------------------------------------- -const rom_entry *namco_51xx_device::device_rom_region() const +const tiny_rom_entry *namco_51xx_device::device_rom_region() const { return ROM_NAME(namco_51xx ); } diff --git a/src/mame/machine/namco53.cpp b/src/mame/machine/namco53.cpp index e5e809ec465..e94b9a867ec 100644 --- a/src/mame/machine/namco53.cpp +++ b/src/mame/machine/namco53.cpp @@ -189,7 +189,7 @@ machine_config_constructor namco_53xx_device::device_mconfig_additions() const // the device's ROM definitions //------------------------------------------------- -const rom_entry *namco_53xx_device::device_rom_region() const +const tiny_rom_entry *namco_53xx_device::device_rom_region() const { return ROM_NAME(namco_53xx ); } diff --git a/src/mame/machine/namco62.cpp b/src/mame/machine/namco62.cpp index de6e6067972..99a7f647ef8 100644 --- a/src/mame/machine/namco62.cpp +++ b/src/mame/machine/namco62.cpp @@ -88,7 +88,7 @@ machine_config_constructor namco_62xx_device::device_mconfig_additions() const // the device's ROM definitions //------------------------------------------------- -const rom_entry *namco_62xx_device::device_rom_region() const +const tiny_rom_entry *namco_62xx_device::device_rom_region() const { return ROM_NAME(namco_62xx ); } diff --git a/src/mame/machine/namcomcu.cpp b/src/mame/machine/namcomcu.cpp index 82495680f51..803e1e53b58 100644 --- a/src/mame/machine/namcomcu.cpp +++ b/src/mame/machine/namcomcu.cpp @@ -78,27 +78,27 @@ namco_c76_device::namco_c76_device(const machine_config &mconfig, const char *ta { } -const rom_entry *namco_c69_device::device_rom_region() const +const tiny_rom_entry *namco_c69_device::device_rom_region() const { return ROM_NAME(c69); } -const rom_entry *namco_c70_device::device_rom_region() const +const tiny_rom_entry *namco_c70_device::device_rom_region() const { return ROM_NAME(c70); } -const rom_entry *namco_c74_device::device_rom_region() const +const tiny_rom_entry *namco_c74_device::device_rom_region() const { return ROM_NAME(c74); } -const rom_entry *namco_c75_device::device_rom_region() const +const tiny_rom_entry *namco_c75_device::device_rom_region() const { return ROM_NAME(c75); } -const rom_entry *namco_c76_device::device_rom_region() const +const tiny_rom_entry *namco_c76_device::device_rom_region() const { return ROM_NAME(c76); } diff --git a/src/mame/machine/nmk004.cpp b/src/mame/machine/nmk004.cpp index 18526bd6723..3ff6d37c69f 100644 --- a/src/mame/machine/nmk004.cpp +++ b/src/mame/machine/nmk004.cpp @@ -124,7 +124,7 @@ machine_config_constructor nmk004_device::device_mconfig_additions() const // device_rom_region - return a pointer to the // the device's ROM definitions //------------------------------------------------- -const rom_entry *nmk004_device::device_rom_region() const +const tiny_rom_entry *nmk004_device::device_rom_region() const { return ROM_NAME(nmk004 ); } diff --git a/src/mame/machine/pc1512kb.cpp b/src/mame/machine/pc1512kb.cpp index 262d253d31b..494c15bcd77 100644 --- a/src/mame/machine/pc1512kb.cpp +++ b/src/mame/machine/pc1512kb.cpp @@ -39,7 +39,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *pc1512_keyboard_device::device_rom_region() const +const tiny_rom_entry *pc1512_keyboard_device::device_rom_region() const { return ROM_NAME( pc1512_keyboard ); } diff --git a/src/mame/machine/pc9801_118.cpp b/src/mame/machine/pc9801_118.cpp index adac1a4ea0b..c5cf627e423 100644 --- a/src/mame/machine/pc9801_118.cpp +++ b/src/mame/machine/pc9801_118.cpp @@ -104,7 +104,7 @@ ROM_START( pc9801_118 ) ROM_REGION( 0x100000, "opn3", ROMREGION_ERASE00 ) ROM_END -const rom_entry *pc9801_118_device::device_rom_region() const +const tiny_rom_entry *pc9801_118_device::device_rom_region() const { return ROM_NAME( pc9801_118 ); } diff --git a/src/mame/machine/pc9801_86.cpp b/src/mame/machine/pc9801_86.cpp index 8dd0af5a1cf..b0580a67c70 100644 --- a/src/mame/machine/pc9801_86.cpp +++ b/src/mame/machine/pc9801_86.cpp @@ -77,7 +77,7 @@ ROM_START( pc9801_86 ) ROM_REGION( 0x100000, "opna", ROMREGION_ERASE00 ) ROM_END -const rom_entry *pc9801_86_device::device_rom_region() const +const tiny_rom_entry *pc9801_86_device::device_rom_region() const { return ROM_NAME( pc9801_86 ); } diff --git a/src/mame/machine/pcd_kbd.cpp b/src/mame/machine/pcd_kbd.cpp index 4c1aa9f0ea5..25c7eabb981 100644 --- a/src/mame/machine/pcd_kbd.cpp +++ b/src/mame/machine/pcd_kbd.cpp @@ -12,7 +12,7 @@ ROM_START( pcd_keyboard ) ROM_END -const rom_entry *pcd_keyboard_device::device_rom_region() const +const tiny_rom_entry *pcd_keyboard_device::device_rom_region() const { return ROM_NAME( pcd_keyboard ); } diff --git a/src/mame/machine/psxcd.cpp b/src/mame/machine/psxcd.cpp index 320c5624c31..dd653525dfa 100644 --- a/src/mame/machine/psxcd.cpp +++ b/src/mame/machine/psxcd.cpp @@ -1322,7 +1322,7 @@ ROM_START( psxcd ) ROMX_LOAD( "sc430920.s19", 0x0000, 0xb195, CRC(8380a5a2) SHA1(6fe45fd6fb96b12a25a45f39b5efd0be5e3f3e86), ROM_BIOS(16) ) ROM_END -const rom_entry *psxcd_device::device_rom_region() const +const tiny_rom_entry *psxcd_device::device_rom_region() const { return ROM_NAME( psxcd ); } diff --git a/src/mame/machine/tandy2kb.cpp b/src/mame/machine/tandy2kb.cpp index 6e0b08351e7..a57374b80f5 100644 --- a/src/mame/machine/tandy2kb.cpp +++ b/src/mame/machine/tandy2kb.cpp @@ -40,7 +40,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *tandy2k_keyboard_device::device_rom_region() const +const tiny_rom_entry *tandy2k_keyboard_device::device_rom_region() const { return ROM_NAME( tandy2k_keyboard ); } diff --git a/src/mame/machine/trs80m2kb.cpp b/src/mame/machine/trs80m2kb.cpp index d098a56ae88..d007f4f49fa 100644 --- a/src/mame/machine/trs80m2kb.cpp +++ b/src/mame/machine/trs80m2kb.cpp @@ -40,7 +40,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *trs80m2_keyboard_device::device_rom_region() const +const tiny_rom_entry *trs80m2_keyboard_device::device_rom_region() const { return ROM_NAME( trs80m2_keyboard ); } diff --git a/src/mame/machine/v1050kb.cpp b/src/mame/machine/v1050kb.cpp index d1f06bcdf30..3c5259d7f0e 100644 --- a/src/mame/machine/v1050kb.cpp +++ b/src/mame/machine/v1050kb.cpp @@ -41,7 +41,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *v1050_keyboard_device::device_rom_region() const +const tiny_rom_entry *v1050_keyboard_device::device_rom_region() const { return ROM_NAME( v1050_keyboard ); } diff --git a/src/mame/machine/victor9k_fdc.cpp b/src/mame/machine/victor9k_fdc.cpp index 19f989890fa..157df8edc7c 100644 --- a/src/mame/machine/victor9k_fdc.cpp +++ b/src/mame/machine/victor9k_fdc.cpp @@ -101,7 +101,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *victor_9000_fdc_t::device_rom_region() const +const tiny_rom_entry *victor_9000_fdc_t::device_rom_region() const { return ROM_NAME( victor_9000_fdc ); } diff --git a/src/mame/machine/victor9kb.cpp b/src/mame/machine/victor9kb.cpp index b2d77129919..ec0eaa4229e 100644 --- a/src/mame/machine/victor9kb.cpp +++ b/src/mame/machine/victor9kb.cpp @@ -369,7 +369,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *victor_9000_keyboard_t::device_rom_region() const +const tiny_rom_entry *victor_9000_keyboard_t::device_rom_region() const { return ROM_NAME( victor9k_keyboard ); } diff --git a/src/mame/machine/wangpckb.cpp b/src/mame/machine/wangpckb.cpp index d31877824f7..76f59922cff 100644 --- a/src/mame/machine/wangpckb.cpp +++ b/src/mame/machine/wangpckb.cpp @@ -86,7 +86,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *wangpc_keyboard_device::device_rom_region() const +const tiny_rom_entry *wangpc_keyboard_device::device_rom_region() const { return ROM_NAME( wangpc_keyboard ); } diff --git a/src/mame/machine/x820kb.cpp b/src/mame/machine/x820kb.cpp index 115e8591e4a..98f75efa559 100644 --- a/src/mame/machine/x820kb.cpp +++ b/src/mame/machine/x820kb.cpp @@ -73,7 +73,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *xerox_820_keyboard_t::device_rom_region() const +const tiny_rom_entry *xerox_820_keyboard_t::device_rom_region() const { return ROM_NAME( xerox_820_keyboard ); } diff --git a/src/mame/video/abc1600.cpp b/src/mame/video/abc1600.cpp index 2c947d5772a..e7d6e8356f3 100644 --- a/src/mame/video/abc1600.cpp +++ b/src/mame/video/abc1600.cpp @@ -109,7 +109,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *abc1600_mover_device::device_rom_region() const +const tiny_rom_entry *abc1600_mover_device::device_rom_region() const { return ROM_NAME( abc1600_mover ); } diff --git a/src/mame/video/gic.cpp b/src/mame/video/gic.cpp index 6adcea87227..e37213f9602 100644 --- a/src/mame/video/gic.cpp +++ b/src/mame/video/gic.cpp @@ -105,7 +105,7 @@ gic_device::gic_device(const machine_config &mconfig, device_type type, const ch { } -const rom_entry *gic_device::device_rom_region() const +const tiny_rom_entry *gic_device::device_rom_region() const { //there is only one... how do I get rid of this? return ROM_NAME( gic_font ); diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp index b192fd62ad2..4d75ab88e29 100644 --- a/src/mame/video/pcd.cpp +++ b/src/mame/video/pcd.cpp @@ -42,7 +42,7 @@ ROM_START( pcd_video ) ROM_LOAD("s36361-d321-v1.bin", 0x000, 0x400, CRC(69baeb2a) SHA1(98b9cd0f38c51b4988a3aed0efcf004bedd115ff)) ROM_END -const rom_entry *pcd_video_device::device_rom_region() const +const tiny_rom_entry *pcd_video_device::device_rom_region() const { return ROM_NAME( pcd_video ); } @@ -56,7 +56,7 @@ ROM_START( pcx_video ) ROM_LOAD("d39-graka.bin", 0x4000, 0x2000, CRC(02920e25) SHA1(145a6648d75c1dc4788f9bc7790281ef7e8f8426)) ROM_END -const rom_entry *pcx_video_device::device_rom_region() const +const tiny_rom_entry *pcx_video_device::device_rom_region() const { return ROM_NAME( pcx_video ); } diff --git a/src/mame/video/stic.cpp b/src/mame/video/stic.cpp index b73881e4d3e..a98a6609e31 100644 --- a/src/mame/video/stic.cpp +++ b/src/mame/video/stic.cpp @@ -130,7 +130,7 @@ ROM_START( stic_grom ) ROM_LOAD( "ro-3-9503-003.u21", 0, 0x0800, CRC(683a4158) SHA1(f9608bb4ad1cfe3640d02844c7ad8e0bcd974917)) ROM_END -const rom_entry *stic_device::device_rom_region() const +const tiny_rom_entry *stic_device::device_rom_region() const { return ROM_NAME( stic_grom ); } From a38471602c29a6fc69e7440a25cf052d0ec9e4f2 Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Sat, 6 Aug 2016 18:55:28 -0400 Subject: [PATCH 053/116] Fixed MT#6343 for plottingu (credits DIPs for US region) (nw) --- src/mame/drivers/taito_l.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp index c033a47b026..a3feb5c5e8f 100644 --- a/src/mame/drivers/taito_l.cpp +++ b/src/mame/drivers/taito_l.cpp @@ -1213,6 +1213,12 @@ static INPUT_PORTS_START( plotting ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) INPUT_PORTS_END +static INPUT_PORTS_START( plottingu ) + PORT_INCLUDE(plotting) + PORT_MODIFY("DSWA") + TAITO_COINAGE_US_LOC(SW1) +INPUT_PORTS_END + static INPUT_PORTS_START( palamed ) PORT_START("DSWA") TAITO_MACHINE_NO_COCKTAIL_LOC(SW1) @@ -2595,7 +2601,7 @@ GAME( 1988, kurikinta, kurikint, kurikint, kurikinta, driver_device, 0, GAME( 1989, plotting, 0, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 1)", 0 ) GAME( 1989, plottinga, plotting, plotting, plotting, taitol_state, plottinga, ROT0, "Taito Corporation Japan", "Plotting (World set 2, protected)", 0 ) GAME( 1989, plottingb, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 3, earliest version)", 0 ) -GAME( 1989, plottingu, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito America Corporation", "Plotting (US)", 0 ) +GAME( 1989, plottingu, plotting, plotting, plottingu, driver_device, 0, ROT0, "Taito America Corporation", "Plotting (US)", 0 ) GAME( 1989, flipull, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation", "Flipull (Japan)", 0 ) GAME( 1989, puzznic, 0, puzznic, puzznic, driver_device, 0, ROT0, "Taito Corporation Japan", "Puzznic (World)", 0 ) From 5b1d15383dfecd9695c18711b56f08e4a71ca08e Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 7 Aug 2016 01:44:45 +0200 Subject: [PATCH 054/116] Use noexcept in netlist code where appropriate. Use macro NL_NOEXCEPT if debug builds would throw an exception (e.g. by using nl_assert). This is not entirely safe. Going forward, nl_assert should call log first and than throw. (nw) --- src/lib/netlist/devices/nld_truthtable.h | 4 +- src/lib/netlist/nl_base.cpp | 43 ++------ src/lib/netlist/nl_base.h | 120 +++++++++++------------ src/lib/netlist/nl_config.h | 5 - src/lib/netlist/nl_lists.h | 16 +-- src/lib/netlist/nl_setup.cpp | 33 ++++++- src/lib/netlist/nl_setup.h | 2 + src/lib/netlist/nl_time.h | 8 +- src/lib/netlist/plib/palloc.h | 6 +- src/lib/netlist/plib/plists.h | 10 +- src/lib/netlist/solver/nld_solver.cpp | 2 +- 11 files changed, 122 insertions(+), 127 deletions(-) diff --git a/src/lib/netlist/devices/nld_truthtable.h b/src/lib/netlist/devices/nld_truthtable.h index 2d3c04e1536..45a150574c8 100644 --- a/src/lib/netlist/devices/nld_truthtable.h +++ b/src/lib/netlist/devices/nld_truthtable.h @@ -261,7 +261,7 @@ namespace netlist } public: - void inc_active() override + void inc_active() noexcept override { if (m_NI > 1) if (++m_active == 1) @@ -270,7 +270,7 @@ namespace netlist } } - void dec_active() override + void dec_active() noexcept override { /* FIXME: * Based on current measurements there is no point to disable diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index cc500693dd2..f178dd1eb76 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -536,8 +536,9 @@ void core_device_t::set_delegate_pointer() void core_device_t::stop_dev() { -#if (NL_KEEP_STATISTICS) -#endif + //NOTE: stop_dev is not removed. It remains so it can be reactivated in case + // we run into a situation were RAII and noexcept dtors force us to + // to have a device stop() routine which may throw. //stop(); } @@ -640,7 +641,7 @@ detail::net_t::~net_t() netlist().state().remove_save_items(this); } -void detail::net_t::inc_active(core_terminal_t &term) +void detail::net_t::inc_active(core_terminal_t &term) NL_NOEXCEPT { m_active++; m_list_active.push_front(&term); @@ -664,7 +665,7 @@ void detail::net_t::inc_active(core_terminal_t &term) } } -void detail::net_t::dec_active(core_terminal_t &term) +void detail::net_t::dec_active(core_terminal_t &term) NL_NOEXCEPT { --m_active; nl_assert(m_active >= 0); @@ -688,9 +689,8 @@ void detail::net_t::rebuild_list() m_active = cnt; } -void detail::net_t::update_devs() +void detail::net_t::update_devs() NL_NOEXCEPT { - //assert(m_num_cons != 0); nl_assert(this->isRailNet()); static const unsigned masks[4] = @@ -748,41 +748,14 @@ void detail::net_t::register_con(detail::core_terminal_t &terminal) m_active++; } -void detail::net_t::move_connections(detail::net_t *dest_net) +void detail::net_t::move_connections(detail::net_t &dest_net) { for (auto &ct : m_core_terms) - dest_net->register_con(*ct); + dest_net.register_con(*ct); m_core_terms.clear(); m_active = 0; } -void detail::net_t::merge_net(detail::net_t *othernet) -{ - netlist().log().debug("merging nets ...\n"); - if (othernet == nullptr) - return; // Nothing to do - - if (othernet == this) - { - netlist().log().warning("Connecting {1} to itself. This may be right, though\n", this->name()); - return; // Nothing to do - } - - if (this->isRailNet() && othernet->isRailNet()) - netlist().log().fatal("Trying to merge two rail nets: {1} and {2}\n", this->name(), othernet->name()); - - if (othernet->isRailNet()) - { - netlist().log().debug("othernet is railnet\n"); - othernet->merge_net(this); - } - else - { - othernet->move_connections(this); - } -} - - // ---------------------------------------------------------------------------------------- // logic_net_t // ---------------------------------------------------------------------------------------- diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index d10c11839a3..d9b93c3ecc9 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -117,14 +117,14 @@ class NETLIB_NAME(name) : public device_t #define NETLIB_FAMILY(family) , m_famsetter(*this, family) #define NETLIB_UPDATE_TERMINALSI() public: virtual void update_terminals() override -#define NETLIB_UPDATEI() protected: virtual void update() NOEXCEPT override +#define NETLIB_UPDATEI() protected: virtual void update() noexcept override #define NETLIB_UPDATE_PARAMI() public: virtual void update_param() override #define NETLIB_RESETI() protected: virtual void reset() override #define NETLIB_SUB(chip) nld_ ## chip #define NETLIB_SUBXX(chip) std::unique_ptr< nld_ ## chip > -#define NETLIB_UPDATE(chip) void NETLIB_NAME(chip) :: update(void) NOEXCEPT +#define NETLIB_UPDATE(chip) void NETLIB_NAME(chip) :: update(void) NL_NOEXCEPT #define NETLIB_RESET(chip) void NETLIB_NAME(chip) :: reset(void) @@ -140,13 +140,14 @@ class NETLIB_NAME(name) : public device_t //============================================================ #if defined(MAME_DEBUG) -#define nl_assert(x) do { if (1) if (!(x)) throw nl_exception(plib::pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); } while (0) +#define nl_assert(x) do { if (1) if (!(x)) throw nl_exception(plib::pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); } while (0) +#define NL_NOEXCEPT #else -#define nl_assert(x) do { if (0) if (!(x)) throw nl_exception(plib::pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); } while (0) +#define nl_assert(x) do { if (0) if (!(x)) throw nl_exception(plib::pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); } while (0) +#define NL_NOEXCEPT noexcept #endif #define nl_assert_always(x, msg) do { if (!(x)) throw nl_exception(plib::pfmt("Fatal error: {1}\nCaused by assert: {2}:{3}: {4}")(msg)(__FILE__)(__LINE__)(#x)); } while (0) - // ----------------------------------------------------------------------------- // forward definitions // ----------------------------------------------------------------------------- @@ -196,7 +197,7 @@ namespace netlist : plib::pexception(text) { } /*! Copy constructor. */ nl_exception(const nl_exception &e) : plib::pexception(e) { } - virtual ~nl_exception() noexcept {} + virtual ~nl_exception() {} }; class logic_output_t; @@ -285,9 +286,9 @@ namespace netlist const T &value //!< Initial value after construction ); //! Copy Constructor. - state_var(const state_var &rhs) NOEXCEPT = default; + state_var(const state_var &rhs) noexcept = default; //! Move Constructor. - state_var(state_var &&rhs) NOEXCEPT = default; + state_var(state_var &&rhs) noexcept = default; //! Assignment operator to assign value of a state var. state_var &operator=(state_var rhs) { std::swap(rhs.m_value, this->m_value); return *this; } //! Assignment operator to assign value of type T. @@ -315,8 +316,8 @@ namespace netlist { public: state_var(device_t &dev, const pstring name, const T & value); - state_var(const state_var &rhs) NOEXCEPT = default; - state_var(state_var &&rhs) NOEXCEPT = default; + state_var(const state_var &rhs) noexcept = default; + state_var(state_var &&rhs) noexcept = default; state_var &operator=(const state_var rhs) { m_value = rhs.m_value; return *this; } state_var &operator=(const T rhs) { m_value = rhs; return *this; } T & operator[](const std::size_t i) { return m_value[i]; } @@ -475,8 +476,8 @@ namespace netlist const net_t & net() const { return *m_net;} net_t & net() { return *m_net;} - bool is_logic() const; - bool is_analog() const; + bool is_logic() const noexcept; + bool is_analog() const noexcept; bool is_state(const state_e astate) const { return (m_state == astate); } state_e state() const { return m_state; } @@ -506,8 +507,8 @@ namespace netlist { } - const analog_net_t & net() const; - analog_net_t & net(); + const analog_net_t & net() const noexcept; + analog_net_t & net() noexcept; }; // ----------------------------------------------------------------------------- @@ -589,8 +590,8 @@ namespace netlist devices::nld_base_proxy *get_proxy() const { return m_proxy; } void set_proxy(devices::nld_base_proxy *proxy) { m_proxy = proxy; } - logic_net_t & net(); - const logic_net_t & net() const; + logic_net_t & net() noexcept; + const logic_net_t & net() const noexcept; protected: @@ -607,9 +608,9 @@ namespace netlist public: logic_input_t(core_device_t &dev, const pstring &aname); - netlist_sig_t Q() const; + netlist_sig_t Q() const noexcept; - netlist_sig_t operator()() const + netlist_sig_t operator()() const NL_NOEXCEPT { nl_assert(state() != STATE_INP_PASSIVE); return Q(); @@ -647,7 +648,7 @@ namespace netlist /*! returns voltage at terminal. * \returns voltage at terminal. */ - nl_double Q_Analog() const; + nl_double Q_Analog() const noexcept; }; @@ -668,19 +669,18 @@ namespace netlist void reset(); void register_con(core_terminal_t &terminal); - void merge_net(net_t *othernet); - bool is_logic() const; - bool is_analog() const; + bool is_logic() const noexcept; + bool is_analog() const noexcept; void toggle_new_Q() { m_new_Q ^= 1; } void force_queue_execution() { m_new_Q = (m_cur_Q ^ 1); } - void push_to_queue(const netlist_time delay) NOEXCEPT; - void reschedule_in_queue(const netlist_time delay) NOEXCEPT; + void push_to_queue(const netlist_time delay) noexcept; + void reschedule_in_queue(const netlist_time delay) noexcept; bool is_queued() const { return m_in_queue == 1; } - void update_devs(); + void update_devs() NL_NOEXCEPT; const netlist_time time() const { return m_time; } void set_time(const netlist_time ntime) { m_time = ntime; } @@ -688,12 +688,13 @@ namespace netlist bool isRailNet() const { return !(m_railterminal == nullptr); } core_terminal_t & railterminal() const { return *m_railterminal; } - std::size_t num_cons() const { return m_core_terms.size(); } + std::size_t num_cons() const noexcept { return m_core_terms.size(); } - void inc_active(core_terminal_t &term); - void dec_active(core_terminal_t &term); + void inc_active(core_terminal_t &term) NL_NOEXCEPT; + void dec_active(core_terminal_t &term) NL_NOEXCEPT; void rebuild_list(); /* rebuild m_list after a load */ + void move_connections(net_t &dest_net); std::vector m_core_terms; // save post-start m_list ... @@ -706,8 +707,6 @@ namespace netlist state_var_u8 m_in_queue; /* 0: not in queue, 1: in queue, 2: last was taken */ private: - void move_connections(net_t *new_net); - plib::linkedlist_t m_list_active; core_terminal_t * m_railterminal; @@ -729,7 +728,7 @@ namespace netlist netlist_sig_t new_Q() const { return m_new_Q; } void initial(const netlist_sig_t val) { m_cur_Q = m_new_Q = val; } - void set_Q(const netlist_sig_t newQ, const netlist_time delay) NOEXCEPT + void set_Q(const netlist_sig_t newQ, const netlist_time delay) noexcept { if (newQ != m_new_Q) { @@ -738,7 +737,7 @@ namespace netlist } } - void set_Q_time(const netlist_sig_t newQ, const netlist_time at) + void set_Q_time(const netlist_sig_t newQ, const netlist_time at) noexcept { if (newQ != m_new_Q) { @@ -793,7 +792,7 @@ namespace netlist void initial(const netlist_sig_t val); - void push(const netlist_sig_t newQ, const netlist_time delay) NOEXCEPT + void push(const netlist_sig_t newQ, const netlist_time delay) noexcept { m_my_net.set_Q(newQ, delay); // take the shortcut } @@ -808,11 +807,11 @@ namespace netlist public: analog_output_t(core_device_t &dev, const pstring &aname); - void push(const nl_double val) { set_Q(val); } + void push(const nl_double val) noexcept { set_Q(val); } void initial(const nl_double val); private: - void set_Q(const nl_double newQ); + void set_Q(const nl_double newQ) noexcept; analog_net_t m_my_net; }; @@ -849,7 +848,7 @@ namespace netlist public: param_template_t(device_t &device, const pstring name, const C val); - const C operator()() const { return Value(); } + const C operator()() const { return Value(); } void setTo(const C ¶m); void initial(const C &val) { m_param = val; } @@ -902,14 +901,14 @@ namespace netlist virtual ~core_device_t(); - void update_dev() + void update_dev() noexcept { m_stat_total_time.start(); do_update(); m_stat_total_time.stop(); } - void do_update() NOEXCEPT + void do_update() noexcept { #if (NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF) (this->*m_static_update)(); @@ -923,7 +922,7 @@ namespace netlist void set_delegate_pointer(); void stop_dev(); - void do_inc_active() + void do_inc_active() noexcept { if (m_hint_deactivate) { @@ -931,7 +930,8 @@ namespace netlist inc_active(); } } - void do_dec_active() + + void do_dec_active() noexcept { if (m_hint_deactivate) dec_active(); @@ -946,9 +946,9 @@ namespace netlist protected: - virtual void update() NOEXCEPT { } - virtual void inc_active() { } - virtual void dec_active() { } + virtual void update() noexcept { } + virtual void inc_active() noexcept { } + virtual void dec_active() noexcept { } virtual void stop() { } virtual void reset() { } @@ -1085,8 +1085,8 @@ namespace netlist devices::NETLIB_NAME(gnd) *gnd() const { return m_gnd; } nl_double gmin() const; - void push_to_queue(detail::net_t &out, const netlist_time attime) NOEXCEPT; - void remove_from_queue(detail::net_t &out); + void push_to_queue(detail::net_t &out, const netlist_time attime) noexcept; + void remove_from_queue(detail::net_t &out) NL_NOEXCEPT; void process_queue(const netlist_time &delta); void abort_current_queue_slice() { m_queue.retime(m_time, nullptr); } @@ -1218,22 +1218,22 @@ namespace netlist } } - inline bool detail::core_terminal_t::is_logic() const + inline bool detail::core_terminal_t::is_logic() const noexcept { return dynamic_cast(this) != nullptr; } - inline bool detail::core_terminal_t::is_analog() const + inline bool detail::core_terminal_t::is_analog() const noexcept { return dynamic_cast(this) != nullptr; } - inline bool detail::net_t::is_logic() const + inline bool detail::net_t::is_logic() const noexcept { return dynamic_cast(this) != nullptr; } - inline bool detail::net_t::is_analog() const + inline bool detail::net_t::is_analog() const noexcept { return dynamic_cast(this) != nullptr; } @@ -1274,7 +1274,7 @@ namespace netlist } } - inline void detail::net_t::push_to_queue(const netlist_time delay) NOEXCEPT + inline void detail::net_t::push_to_queue(const netlist_time delay) noexcept { if (!is_queued() && (num_cons() != 0)) { @@ -1287,7 +1287,7 @@ namespace netlist } } - inline void detail::net_t::reschedule_in_queue(const netlist_time delay) NOEXCEPT + inline void detail::net_t::reschedule_in_queue(const netlist_time delay) noexcept { if (is_queued()) netlist().remove_from_queue(*this); @@ -1300,39 +1300,39 @@ namespace netlist } } - inline const analog_net_t & analog_t::net() const + inline const analog_net_t & analog_t::net() const noexcept { return static_cast(core_terminal_t::net()); } - inline analog_net_t & analog_t::net() + inline analog_net_t & analog_t::net() noexcept { return static_cast(core_terminal_t::net()); } inline nl_double terminal_t::operator ()() const { return net().Q_Analog(); } - inline logic_net_t & logic_t::net() + inline logic_net_t & logic_t::net() noexcept { return *static_cast(&core_terminal_t::net()); } - inline const logic_net_t & logic_t::net() const + inline const logic_net_t & logic_t::net() const noexcept { return static_cast(core_terminal_t::net()); } - inline netlist_sig_t logic_input_t::Q() const + inline netlist_sig_t logic_input_t::Q() const noexcept { return net().Q(); } - inline nl_double analog_input_t::Q_Analog() const + inline nl_double analog_input_t::Q_Analog() const noexcept { return net().Q_Analog(); } - inline void analog_output_t::set_Q(const nl_double newQ) + inline void analog_output_t::set_Q(const nl_double newQ) noexcept { if (newQ != net().Q_Analog()) { @@ -1342,12 +1342,12 @@ namespace netlist } } - inline void netlist_t::push_to_queue(detail::net_t &out, const netlist_time attime) NOEXCEPT + inline void netlist_t::push_to_queue(detail::net_t &out, const netlist_time attime) noexcept { m_queue.push(attime, &out); } - inline void netlist_t::remove_from_queue(detail::net_t &out) + inline void netlist_t::remove_from_queue(detail::net_t &out) NL_NOEXCEPT { m_queue.remove(&out); } diff --git a/src/lib/netlist/nl_config.h b/src/lib/netlist/nl_config.h index a2fe70b5320..4965e7b9746 100644 --- a/src/lib/netlist/nl_config.h +++ b/src/lib/netlist/nl_config.h @@ -135,11 +135,6 @@ using nperfcount_t = plib::chrono::counter; // General //============================================================ -// this macro passes an item followed by a string version of itself as two consecutive parameters -//#define NLNAME(x) x, #x - -#define NOEXCEPT noexcept - // The following adds about 10% performance ... #if !defined(USE_OPENMP) diff --git a/src/lib/netlist/nl_lists.h b/src/lib/netlist/nl_lists.h index 84914d67450..e1fdbd10986 100644 --- a/src/lib/netlist/nl_lists.h +++ b/src/lib/netlist/nl_lists.h @@ -47,7 +47,7 @@ namespace netlist std::size_t capacity() const { return m_list.size(); } bool empty() const { return (m_end == &m_list[1]); } - void push(const Time t, Element o) NOEXCEPT + void push(const Time t, Element o) noexcept { #if HAS_OPENMP && USE_OPENMP /* Lock */ @@ -67,10 +67,10 @@ namespace netlist #endif } - entry_t pop() NOEXCEPT { return *(--m_end); } - const entry_t &top() const NOEXCEPT { return *(m_end-1); } + entry_t pop() noexcept { return *(--m_end); } + const entry_t &top() const noexcept { return *(m_end-1); } - void remove(const Element &elem) NOEXCEPT + void remove(const Element &elem) noexcept { /* Lock */ #if HAS_OPENMP && USE_OPENMP @@ -97,7 +97,7 @@ namespace netlist #endif } - void retime(const Time t, const Element &elem) NOEXCEPT + void retime(const Time t, const Element &elem) noexcept { remove(elem); push(t, elem); @@ -116,9 +116,9 @@ namespace netlist // save state support & mame disasm - const entry_t *listptr() const { return &m_list[1]; } - std::size_t size() const { return static_cast(m_end - &m_list[1]); } - const entry_t & operator[](const std::size_t index) const { return m_list[ 1 + index]; } + const entry_t *listptr() const { return &m_list[1]; } + std::size_t size() const noexcept { return static_cast(m_end - &m_list[1]); } + const entry_t & operator[](const std::size_t index) const { return m_list[ 1 + index]; } private: diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index f02d7d7871a..274daba019c 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -451,6 +451,31 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(detail::core_terminal_t &out) return proxy; } +void setup_t::merge_nets(detail::net_t &thisnet, detail::net_t &othernet) +{ + netlist().log().debug("merging nets ...\n"); + if (&othernet == &thisnet) + { + netlist().log().warning("Connecting {1} to itself. This may be right, though\n", thisnet.name()); + return; // Nothing to do + } + + if (thisnet.isRailNet() && othernet.isRailNet()) + netlist().log().fatal("Trying to merge two rail nets: {1} and {2}\n", thisnet.name(), othernet.name()); + + if (othernet.isRailNet()) + { + netlist().log().debug("othernet is railnet\n"); + merge_nets(othernet, thisnet); + } + else + { + othernet.move_connections(thisnet); + } +} + + + void setup_t::connect_input_output(detail::core_terminal_t &in, detail::core_terminal_t &out) { if (out.is_analog() && in.is_logic()) @@ -477,7 +502,7 @@ void setup_t::connect_input_output(detail::core_terminal_t &in, detail::core_ter else { if (in.has_net()) - out.net().merge_net(&in.net()); + merge_nets(out.net(), in.net()); else out.net().register_con(in); } @@ -503,7 +528,7 @@ void setup_t::connect_terminal_input(terminal_t &term, detail::core_terminal_t & if (inp.has_net()) //fatalerror("logic inputs can only belong to one net!\n"); - proxy->m_Q.net().merge_net(&inp.net()); + merge_nets(proxy->m_Q.net(), inp.net()); else proxy->m_Q.net().register_con(inp); @@ -522,7 +547,7 @@ void setup_t::connect_terminal_output(terminal_t &in, detail::core_terminal_t &o log().debug("connect_terminal_output: {1} {2}\n", in.name(), out.name()); /* no proxy needed, just merge existing terminal net */ if (in.has_net()) - out.net().merge_net(&in.net()); + merge_nets(out.net(), in.net()); else out.net().register_con(in); } @@ -544,7 +569,7 @@ void setup_t::connect_terminals(detail::core_terminal_t &t1, detail::core_termin if (t1.has_net() && t2.has_net()) { log().debug("T2 and T1 have net\n"); - t1.net().merge_net(&t2.net()); + merge_nets(t1.net(), t2.net()); } else if (t2.has_net()) { diff --git a/src/lib/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h index 155ccc259c6..aec2da2dcd8 100644 --- a/src/lib/netlist/nl_setup.h +++ b/src/lib/netlist/nl_setup.h @@ -270,6 +270,8 @@ namespace netlist detail::core_terminal_t *find_terminal(const pstring &outname_in, bool required = true); detail::core_terminal_t *find_terminal(const pstring &outname_in, detail::device_object_t::type_t atype, bool required = true); + void merge_nets(detail::net_t &thisnet, detail::net_t &othernet); + void connect_terminals(detail::core_terminal_t &in, detail::core_terminal_t &out); void connect_input_output(detail::core_terminal_t &in, detail::core_terminal_t &out); void connect_terminal_output(terminal_t &in, detail::core_terminal_t &out); diff --git a/src/lib/netlist/nl_time.h b/src/lib/netlist/nl_time.h index bd9a12168e9..9eb1dae0ad8 100644 --- a/src/lib/netlist/nl_time.h +++ b/src/lib/netlist/nl_time.h @@ -36,13 +36,13 @@ namespace netlist using mult_type = std::uint_fast64_t; static constexpr internal_type resolution = RES; - constexpr ptime() NOEXCEPT : m_time(0) {} - constexpr ptime(const ptime &rhs) NOEXCEPT = default; - constexpr ptime(ptime &&rhs) NOEXCEPT = default; + constexpr ptime() noexcept : m_time(0) {} + constexpr ptime(const ptime &rhs) noexcept = default; + constexpr ptime(ptime &&rhs) noexcept = default; constexpr explicit ptime(const double t) = delete; //: m_time((internal_type) ( t * (double) resolution)) { } - constexpr explicit ptime(const internal_type nom, const internal_type den) NOEXCEPT + constexpr explicit ptime(const internal_type nom, const internal_type den) noexcept : m_time(nom * (resolution / den)) { } ptime &operator=(const ptime rhs) { m_time = rhs.m_time; return *this; } diff --git a/src/lib/netlist/plib/palloc.h b/src/lib/netlist/plib/palloc.h index 088320fa7e3..a12595e0027 100644 --- a/src/lib/netlist/plib/palloc.h +++ b/src/lib/netlist/plib/palloc.h @@ -112,7 +112,7 @@ private: owned_ptr() : m_ptr(nullptr), m_is_owned(true) { } public: - owned_ptr(SC *p, bool owned) + owned_ptr(SC *p, bool owned) noexcept : m_ptr(p), m_is_owned(owned) { } owned_ptr(const owned_ptr &r) = delete; @@ -130,7 +130,7 @@ public: return *this; } - owned_ptr(owned_ptr &&r) + owned_ptr(owned_ptr &&r) noexcept { m_is_owned = r.m_is_owned; m_ptr = r.m_ptr; @@ -139,7 +139,7 @@ public: } template - owned_ptr(owned_ptr &&r) + owned_ptr(owned_ptr &&r) noexcept { m_ptr = static_cast(r.get()); m_is_owned = r.is_owned(); diff --git a/src/lib/netlist/plib/plists.h b/src/lib/netlist/plib/plists.h index 0bb83750874..881386a142c 100644 --- a/src/lib/netlist/plib/plists.h +++ b/src/lib/netlist/plib/plists.h @@ -43,12 +43,12 @@ public: size_t size() { return N; } - C& operator[](const std::size_t &index) + C& operator[](const std::size_t &index) noexcept { return *reinterpret_cast(&m_buf[index]); } - const C& operator[](const std::size_t &index) const + const C& operator[](const std::size_t &index) const noexcept { return *reinterpret_cast(&m_buf[index]); } @@ -85,7 +85,7 @@ public: element_t() : m_next(nullptr) {} - LC *next() const { return m_next; } + LC *next() const noexcept { return m_next; } private: LC * m_next; }; @@ -107,8 +107,8 @@ public: linkedlist_t() : m_head(nullptr) {} - iter_t begin() const { return iter_t(m_head); } - constexpr iter_t end() const { return iter_t(nullptr); } + iter_t begin() const noexcept { return iter_t(m_head); } + constexpr iter_t end() const noexcept { return iter_t(nullptr); } void push_front(LC *elem) { diff --git a/src/lib/netlist/solver/nld_solver.cpp b/src/lib/netlist/solver/nld_solver.cpp index bc63cbf434a..b9c69884382 100644 --- a/src/lib/netlist/solver/nld_solver.cpp +++ b/src/lib/netlist/solver/nld_solver.cpp @@ -382,7 +382,7 @@ void matrix_solver_t::reset() m_last_step = netlist_time::zero(); } -void matrix_solver_t::update() NOEXCEPT +void matrix_solver_t::update() NL_NOEXCEPT { const netlist_time new_timestep = solve(); From 4f363a267467aaadc6d0429af9fbcd63c8028b83 Mon Sep 17 00:00:00 2001 From: briantro Date: Sat, 6 Aug 2016 19:53:32 -0500 Subject: [PATCH 055/116] apple2gs.cpp: Redump, verify & Correct 341-0748 FE-FF ROM for Apple IIGS ROM03 [Brian Troha] --- src/mame/drivers/apple2gs.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp index 5fcb899002e..5ac6313b923 100644 --- a/src/mame/drivers/apple2gs.cpp +++ b/src/mame/drivers/apple2gs.cpp @@ -448,8 +448,9 @@ ROM_START(apple2gs) ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89)) /* need label/part number */ ROM_REGION(0x40000,"maincpu",0) - ROM_LOAD("341-0737", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27)) /* Needs verification; 341-0737: IIgs ROM03 FC-FD */ - ROM_LOAD("341-0748", 0x20000, 0x20000, CRC(d4c50550) SHA1(2784cdd7ac7094b3e494409db3e72b4e6d2d9e81)) /* Needs verification; 341-0748: IIgs ROM03 FE-FF */ + // The 341-0749 is known to also be matched with the 341-0728 MASK rom which holds the same data as the EPROM 341-0737 version. + ROM_LOAD("341-0737", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27) ) /* 341-0737: IIgs ROM03 FC-FD */ + ROM_LOAD("341-0748", 0x20000, 0x20000, CRC(18190283) SHA1(c70576869deec92ca82c78438b1d5c686eac7480) ) /* 341-0748: IIgs ROM03 FE-FF */ ROM_REGION(0x20000, "es5503", ROMREGION_ERASE00) @@ -494,7 +495,7 @@ ROM_START(apple2gsr3lp) ROM_REGION(0x40000,"maincpu",0) // The 341-0749 is known to also be matched with the 341-0728 MASK rom which holds the same data as the EPROM 341-0737 version. ROM_LOAD("341-0737", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27) ) /* 341-0737: IIgs ROM03 FC-FD - 32 pin EPROM */ - ROM_LOAD("341-0749", 0x20000, 0x20000, CRC(c6e9b4b4) SHA1(d754a3c3a26763c50bc9adfd0fcb9b71aef7999d) ) /* 341-0749: unknown ?post? ROM03 IIgs prototype? FE-FF - 32 pin EPROM */ + ROM_LOAD("341-0749", 0x20000, 0x20000, BAD_DUMP CRC(c6e9b4b4) SHA1(d754a3c3a26763c50bc9adfd0fcb9b71aef7999d) ) /* 341-0749: unknown ?post? ROM03 IIgs prototype? FE-FF - 32 pin EPROM - second half blank */ ROM_REGION(0x20000, "es5503", ROMREGION_ERASE00) @@ -536,11 +537,6 @@ ROM_START(apple2gsr0) ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89)) ROM_REGION(0x20000,"maincpu",0) - /* Should these roms really be split like this? according to the unofficial apple rom list, IIgs ROM00 was on one rom labeled 342-0077-A */ -// ROM_LOAD("rom0a.bin", 0x0000, 0x8000, CRC(9cc78238) SHA1(0ea82e10720a01b68722ab7d9f66efec672a44d3)) -// ROM_LOAD("rom0b.bin", 0x8000, 0x8000, CRC(8baf2a79) SHA1(91beeb11827932fe10475252d8036a63a2edbb1c)) -// ROM_LOAD("rom0c.bin", 0x10000, 0x8000, CRC(94c32caa) SHA1(4806d50d676b06f5213b181693fc1585956b98bb)) -// ROM_LOAD("rom0d.bin", 0x18000, 0x8000, CRC(200a15b8) SHA1(0c2890bb169ead63369738bbd5f33b869f24c42a)) ROM_LOAD("342-0077-a", 0x0000, 0x20000, CRC(dfbdd97b) SHA1(ff0c245dd0732ec4413a934fd80efc2defd8a8e3) ) /* 342-0077-A: IIgs ROM00 */ ROM_REGION(0x20000, "es5503", ROMREGION_ERASE00) From dfe020a2832ad0b38fa9cd1b37a3a930c68f9ef5 Mon Sep 17 00:00:00 2001 From: briantro Date: Sat, 6 Aug 2016 19:54:42 -0500 Subject: [PATCH 056/116] apple2gs.cpp: Cut-n-paste fix - NW --- src/mame/drivers/apple2gs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp index 5ac6313b923..e45ab1627b5 100644 --- a/src/mame/drivers/apple2gs.cpp +++ b/src/mame/drivers/apple2gs.cpp @@ -448,7 +448,7 @@ ROM_START(apple2gs) ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89)) /* need label/part number */ ROM_REGION(0x40000,"maincpu",0) - // The 341-0749 is known to also be matched with the 341-0728 MASK rom which holds the same data as the EPROM 341-0737 version. + // The 341-0748 is known to also be matched with the 341-0728 MASK rom which holds the same data as the EPROM 341-0737 version. ROM_LOAD("341-0737", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27) ) /* 341-0737: IIgs ROM03 FC-FD */ ROM_LOAD("341-0748", 0x20000, 0x20000, CRC(18190283) SHA1(c70576869deec92ca82c78438b1d5c686eac7480) ) /* 341-0748: IIgs ROM03 FE-FF */ From 5a155a707e5ded9bf20cee109174aeff4e6a8ce7 Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 6 Aug 2016 21:20:05 -0400 Subject: [PATCH 057/116] Fix addressing mistake causing regression in edfbl and monkelf (nw) --- src/mame/drivers/megasys1.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp index 3f7c3a20fdc..8f0cba5913c 100644 --- a/src/mame/drivers/megasys1.cpp +++ b/src/mame/drivers/megasys1.cpp @@ -305,11 +305,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( megasys1B_edfbl_map, AS_PROGRAM, 16, megasys1_state ) ADDRESS_MAP_GLOBAL_MASK(0xfffff) - AM_RANGE(0xe00002, 0x0e0003) AM_READ_PORT("SYSTEM") - AM_RANGE(0xe00004, 0x0e0005) AM_READ_PORT("P1") - AM_RANGE(0xe00006, 0x0e0007) AM_READ_PORT("P2") - AM_RANGE(0xe00008, 0x0e0009) AM_READ_PORT("DSW1") - AM_RANGE(0xe0000a, 0x0e000b) AM_READ_PORT("DSW2") + AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("SYSTEM") + AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("P1") + AM_RANGE(0x0e0006, 0x0e0007) AM_READ_PORT("P2") + AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW1") + AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("DSW2") + //AM_RANGE(0x0e000e, 0x0e000f) // soundlatch moved here AM_IMPORT_FROM(megasys1B_map) ADDRESS_MAP_END @@ -317,11 +318,11 @@ static ADDRESS_MAP_START( megasys1B_monkelf_map, AS_PROGRAM, 16, megasys1_state ADDRESS_MAP_GLOBAL_MASK(0xfffff) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x044000, 0x0443ff) AM_WRITE(megasys1_vregs_monkelf_w) - AM_RANGE(0xe00002, 0x0e0003) AM_READ_PORT("P1") - AM_RANGE(0xe00004, 0x0e0005) AM_READ_PORT("P2") - AM_RANGE(0xe00006, 0x0e0007) AM_READ_PORT("DSW1") - AM_RANGE(0xe00008, 0x0e0009) AM_READ_PORT("DSW2") - AM_RANGE(0xe0000a, 0x0e000b) AM_READ_PORT("SYSTEM") + AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("P1") + AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("P2") + AM_RANGE(0x0e0006, 0x0e0007) AM_READ_PORT("DSW1") + AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW2") + AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("SYSTEM") AM_IMPORT_FROM(megasys1B_map) ADDRESS_MAP_END From 2f312c14d22eebc367be51066fc20d649f243182 Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 6 Aug 2016 21:47:57 -0400 Subject: [PATCH 058/116] More consistent use of NL_NOEXCEPT macro to fix debug build (nw) --- src/lib/netlist/nl_base.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index d9b93c3ecc9..6caf6810a1d 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -117,7 +117,7 @@ class NETLIB_NAME(name) : public device_t #define NETLIB_FAMILY(family) , m_famsetter(*this, family) #define NETLIB_UPDATE_TERMINALSI() public: virtual void update_terminals() override -#define NETLIB_UPDATEI() protected: virtual void update() noexcept override +#define NETLIB_UPDATEI() protected: virtual void update() NL_NOEXCEPT override #define NETLIB_UPDATE_PARAMI() public: virtual void update_param() override #define NETLIB_RESETI() protected: virtual void reset() override @@ -901,14 +901,14 @@ namespace netlist virtual ~core_device_t(); - void update_dev() noexcept + void update_dev() NL_NOEXCEPT { m_stat_total_time.start(); do_update(); m_stat_total_time.stop(); } - void do_update() noexcept + void do_update() NL_NOEXCEPT { #if (NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF) (this->*m_static_update)(); @@ -946,7 +946,7 @@ namespace netlist protected: - virtual void update() noexcept { } + virtual void update() NL_NOEXCEPT { } virtual void inc_active() noexcept { } virtual void dec_active() noexcept { } virtual void stop() { } From 757aa4cf3a35b0683a3c7ff2b0bfe615187461c2 Mon Sep 17 00:00:00 2001 From: briantro Date: Sat, 6 Aug 2016 22:47:38 -0500 Subject: [PATCH 059/116] apple2gs.cpp: Confirmed 341-0748 == 341-0749 Removed non actual clone now that all the roms have been dumped correctly and verified. --- src/mame/drivers/apple2gs.cpp | 41 ++++++++--------------------------- src/mame/mame.lst | 1 - 2 files changed, 9 insertions(+), 33 deletions(-) diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp index e45ab1627b5..ca65f5fdfd1 100644 --- a/src/mame/drivers/apple2gs.cpp +++ b/src/mame/drivers/apple2gs.cpp @@ -448,8 +448,9 @@ ROM_START(apple2gs) ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89)) /* need label/part number */ ROM_REGION(0x40000,"maincpu",0) - // The 341-0748 is known to also be matched with the 341-0728 MASK rom which holds the same data as the EPROM 341-0737 version. - ROM_LOAD("341-0737", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27) ) /* 341-0737: IIgs ROM03 FC-FD */ + // 341-0728 is the MASK rom version while 341-0737 is the EPROM version - SAME data. + ROM_LOAD("341-0728", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27) ) /* 341-0728: IIgs ROM03 FC-FD */ + // 341-0748 is the MASK rom version while 341-0749 is the EPROM version - SAME data. ROM_LOAD("341-0748", 0x20000, 0x20000, CRC(18190283) SHA1(c70576869deec92ca82c78438b1d5c686eac7480) ) /* 341-0748: IIgs ROM03 FE-FF */ ROM_REGION(0x20000, "es5503", ROMREGION_ERASE00) @@ -481,29 +482,6 @@ ROM_START(apple2gsr3p) ROM_LOAD( "341-0132-d.e12", 0x000, 0x800, CRC(c506efb9) SHA1(8e14e85c645187504ec9d162b3ea614a0c421d32) ) ROM_END -ROM_START(apple2gsr3lp) - ROM_REGION(0x1000,M5074X_INTERNAL_ROM(ADBMICRO_TAG),0) - ROM_LOAD( "341s0632-2.bin", 0x000000, 0x001000, CRC(e1c11fb0) SHA1(141d18c36a617ab9dce668445440d34354be0672) ) - - ROM_REGION(0x400, "kmcu", 0) - ROM_LOAD( "341-0232a.bin", 0x000000, 0x000400, CRC(6a158b9f) SHA1(e8744180075182849d431fd8023a52a062a6da76) ) - ROM_LOAD( "341-0124a.bin", 0x000000, 0x000400, CRC(2a3576bf) SHA1(58fbf770d3801a02d0944039829f9241b5279013) ) - - ROM_REGION(0x1000,"gfx1",0) - ROM_LOAD ( "apple2gs.chr", 0x0000, 0x1000, CRC(91e53cd8) SHA1(34e2443e2ef960a36c047a09ed5a93f471797f89) ) /* need label/part number */ - - ROM_REGION(0x40000,"maincpu",0) - // The 341-0749 is known to also be matched with the 341-0728 MASK rom which holds the same data as the EPROM 341-0737 version. - ROM_LOAD("341-0737", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27) ) /* 341-0737: IIgs ROM03 FC-FD - 32 pin EPROM */ - ROM_LOAD("341-0749", 0x20000, 0x20000, BAD_DUMP CRC(c6e9b4b4) SHA1(d754a3c3a26763c50bc9adfd0fcb9b71aef7999d) ) /* 341-0749: unknown ?post? ROM03 IIgs prototype? FE-FF - 32 pin EPROM - second half blank */ - - ROM_REGION(0x20000, "es5503", ROMREGION_ERASE00) - - // temporary: use IIe enhanced keyboard decode ROM - ROM_REGION( 0x800, "keyboard", 0 ) - ROM_LOAD( "341-0132-d.e12", 0x000, 0x800, CRC(c506efb9) SHA1(8e14e85c645187504ec9d162b3ea614a0c421d32) ) -ROM_END - ROM_START(apple2gsr1) ROM_REGION(0xc00,M5074X_INTERNAL_ROM(ADBMICRO_TAG),0) ROM_LOAD( "341s0345.bin", 0x000000, 0x000c00, CRC(48cd5779) SHA1(97e421f5247c00a0ca34cd08b6209df573101480) ) @@ -589,10 +567,9 @@ ROM_START(apple2gsr0p2) // 3/10/1986 Cortland prototype, boots as "Apple //'ing ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ -COMP( 1989, apple2gs, 0, apple2, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03)", MACHINE_SUPPORTS_SAVE ) -COMP( 198?, apple2gsr3p, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 prototype)", MACHINE_NOT_WORKING ) -COMP( 1989, apple2gsr3lp, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 late prototype?)", MACHINE_SUPPORTS_SAVE ) -COMP( 1987, apple2gsr1, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM01)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, apple2gsr0, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, apple2gsr0p,apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 6/19/1986)", MACHINE_SUPPORTS_SAVE ) -COMP( 1986, apple2gsr0p2,apple2gs,0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 3/10/1986)", MACHINE_SUPPORTS_SAVE ) +COMP( 1989, apple2gs, 0, apple2, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03)", MACHINE_SUPPORTS_SAVE ) +COMP( 198?, apple2gsr3p, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 prototype)", MACHINE_NOT_WORKING ) +COMP( 1987, apple2gsr1, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM01)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, apple2gsr0, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, apple2gsr0p, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 6/19/1986)", MACHINE_SUPPORTS_SAVE ) +COMP( 1986, apple2gsr0p2, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 3/10/1986)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index db85aa377b4..a1a6f161769 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -1223,7 +1223,6 @@ apple2gsr0 // Sep 1986 Apple IIgs ROM00 apple2gsr0p // June 19, 1986 Apple IIgs ROM00 prototype apple2gsr0p2 // March 10, 1986 Apple IIgs ROM00 prototype apple2gsr1 // Sep 1987 Apple IIgs ROM01 -apple2gsr3lp // ??? 1989 Apple IIgs ROM03 late? prototype apple2gsr3p // ??? 198? Apple IIgs ROM03 prototype @source:apple3.cpp From 3751d8aa60be0cf0dc3114f53f281ff7b6a5e2af Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 7 Aug 2016 11:11:43 +0200 Subject: [PATCH 060/116] removed NL_NOEXCEPT since there is a case when these calls throws exceptions (nw) --- src/lib/netlist/nl_base.cpp | 6 +++--- src/lib/netlist/nl_base.h | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index f178dd1eb76..0145d918766 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -641,7 +641,7 @@ detail::net_t::~net_t() netlist().state().remove_save_items(this); } -void detail::net_t::inc_active(core_terminal_t &term) NL_NOEXCEPT +void detail::net_t::inc_active(core_terminal_t &term) { m_active++; m_list_active.push_front(&term); @@ -665,7 +665,7 @@ void detail::net_t::inc_active(core_terminal_t &term) NL_NOEXCEPT } } -void detail::net_t::dec_active(core_terminal_t &term) NL_NOEXCEPT +void detail::net_t::dec_active(core_terminal_t &term) { --m_active; nl_assert(m_active >= 0); @@ -689,7 +689,7 @@ void detail::net_t::rebuild_list() m_active = cnt; } -void detail::net_t::update_devs() NL_NOEXCEPT +void detail::net_t::update_devs() { nl_assert(this->isRailNet()); diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index 6caf6810a1d..e9ac9a64129 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -610,7 +610,7 @@ namespace netlist netlist_sig_t Q() const noexcept; - netlist_sig_t operator()() const NL_NOEXCEPT + netlist_sig_t operator()() const { nl_assert(state() != STATE_INP_PASSIVE); return Q(); @@ -680,7 +680,7 @@ namespace netlist void reschedule_in_queue(const netlist_time delay) noexcept; bool is_queued() const { return m_in_queue == 1; } - void update_devs() NL_NOEXCEPT; + void update_devs(); const netlist_time time() const { return m_time; } void set_time(const netlist_time ntime) { m_time = ntime; } @@ -690,8 +690,8 @@ namespace netlist std::size_t num_cons() const noexcept { return m_core_terms.size(); } - void inc_active(core_terminal_t &term) NL_NOEXCEPT; - void dec_active(core_terminal_t &term) NL_NOEXCEPT; + void inc_active(core_terminal_t &term); + void dec_active(core_terminal_t &term); void rebuild_list(); /* rebuild m_list after a load */ void move_connections(net_t &dest_net); From 932bb545fc5e3a89bb7d70383c95b8f8f4f9e12a Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Sat, 30 Jul 2016 13:53:26 +0300 Subject: [PATCH 061/116] poisk1: trap port fix (makes HyperBIOS run); unbreak cassette i/o; adapt to Memory Fun (TM) --- src/mame/drivers/poisk1.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp index 8e7408060f1..a152e1ff78f 100644 --- a/src/mame/drivers/poisk1.cpp +++ b/src/mame/drivers/poisk1.cpp @@ -151,6 +151,11 @@ WRITE8_MEMBER(p1_state::p1_trap_w) READ8_MEMBER(p1_state::p1_cga_r) { + UINT16 port = offset + 0x3d0; + + DBG_LOG(1,"cga",("R %.4x\n", port)); + m_video.trap[1] = 0x40 | ((port >> 8) & 0x3f); + m_video.trap[0] = port & 255; m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); return 0; } @@ -189,15 +194,18 @@ WRITE8_MEMBER(p1_state::p1_vram_w) WRITE8_MEMBER(p1_state::p1_ppi2_porta_w) { + address_space &program = m_maincpu->space(AS_PROGRAM); + DBG_LOG(1,"color_select_68",("W $%02x\n", data)); // NMI DISABLE if (BIT((data ^ m_video.color_select_68), 3)) { + program.unmap_readwrite( 0xb8000, 0xbbfff, 0 ); if (BIT(data, 3)) { - space.install_readwrite_bank( 0xb8000, 0xbbfff, "bank11" ); + program.install_readwrite_bank( 0xb8000, 0xbbfff, "bank11" ); } else { - space.install_read_bank( 0xb8000, 0xbbfff, "bank11" ); - space.install_write_handler( 0xb8000, 0xbbfff, WRITE8_DELEGATE(p1_state, p1_vram_w) ); + program.install_read_bank( 0xb8000, 0xbbfff, "bank11" ); + program.install_write_handler( 0xb8000, 0xbbfff, WRITE8_DELEGATE(p1_state, p1_vram_w) ); } } // DISPLAY BANK @@ -386,8 +394,10 @@ void p1_state::video_start() m_video.videoram = m_video.videoram_base.get(); m_video.stride = 80; - space.install_readwrite_bank(0xb8000, 0xbffff, "bank11" ); + space.install_readwrite_bank(0xb8000, 0xbbfff, "bank11" ); machine().root_device().membank("bank11")->set_base(m_video.videoram); + space.install_readwrite_bank(0xbc000, 0xbffff, "bank12" ); + machine().root_device().membank("bank12")->set_base(m_video.videoram + 0x4000); } UINT32 p1_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -641,7 +651,7 @@ static MACHINE_CONFIG_START( poisk1, p1_state ) MCFG_ISA8_SLOT_ADD("isa", "isa4", p1_isa8_cards, nullptr, false) MCFG_CASSETTE_ADD( "cassette" ) - MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) + MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) MCFG_SOFTWARE_LIST_ADD("flop_list","poisk1_flop") // MCFG_SOFTWARE_LIST_ADD("cass_list","poisk1_cass") From ce8580b61fadf0b4165a6310caf57fa894ddb2cf Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Mon, 1 Aug 2016 01:06:27 +0300 Subject: [PATCH 062/116] mc1502: make serial test in BIOS work --- src/mame/drivers/mc1502.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mame/drivers/mc1502.cpp b/src/mame/drivers/mc1502.cpp index a0a90856b39..2ad1fc20adc 100644 --- a/src/mame/drivers/mc1502.cpp +++ b/src/mame/drivers/mc1502.cpp @@ -267,17 +267,18 @@ static MACHINE_CONFIG_START( mc1502, mc1502_state ) MCFG_I8255_OUT_PORTC_CB(WRITE8(mc1502_state, mc1502_kppi_portc_w)) MCFG_DEVICE_ADD( "upd8251", I8251, 0) - MCFG_I8251_TXD_HANDLER(DEVWRITELINE("irps", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(DEVWRITELINE("irps", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(DEVWRITELINE("irps", rs232_port_device, write_rts)) + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) + MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) + MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts)) /* XXX RxD data are accessible via PPI port C, bit 7 */ MCFG_I8251_RXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir7_w)) /* default handler does nothing */ MCFG_I8251_TXRDY_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir7_w)) MCFG_I8251_SYNDET_HANDLER(WRITELINE(mc1502_state, mc1502_i8251_syndet)) - MCFG_RS232_PORT_ADD("irps", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("upd8251", i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(DEVWRITELINE("upd8251", i8251_device, write_dsr)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("upd8251", i8251_device, write_cts)) MCFG_DEVICE_ADD("isa", ISA8, 0) MCFG_ISA8_CPU(":maincpu") From b2c46a72892a83c174ea4fa13ae3c852960141d4 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Sun, 7 Aug 2016 07:14:51 -0400 Subject: [PATCH 063/116] Fixes a copy-and-paste error that broke -listxml --- src/frontend/mame/info.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index 829bf687d40..6b8d7f65673 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -580,7 +580,7 @@ void info_xml_creator::output_rom(device_t &device) { // scan backwards through the ROM entries auto entries = rom_build_entries(m_drivlist.driver().rom); - for (const rom_entry *brom = entries.data(); !ROMENTRY_ISEND(rom); rom++) + for (const rom_entry *brom = entries.data(); !ROMENTRY_ISEND(brom); brom++) if (ROMENTRY_ISSYSTEM_BIOS(brom)) { strcpy(bios_name, ROM_GETNAME(brom)); From ccf61908ce44181c2c0d6fa61f7a364aadc2b08b Mon Sep 17 00:00:00 2001 From: MASH Date: Sun, 7 Aug 2016 15:05:31 +0100 Subject: [PATCH 064/116] Decrypted River Patrol (Japan), game now working. --- src/mame/drivers/cclimber.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp index c83fc09decd..a14ef528522 100644 --- a/src/mame/drivers/cclimber.cpp +++ b/src/mame/drivers/cclimber.cpp @@ -2605,6 +2605,19 @@ DRIVER_INIT_MEMBER(cclimber_state,dking) } +DRIVER_INIT_MEMBER(cclimber_state,rpatrol) +{ + UINT8 *rom = memregion( "maincpu" )->base(); + + /* Bits are inverted */ + for (int i = 0x0000; i < 0x5000; i++) + { + rom[i] = rom[i] ^ 0x79; + i++; + rom[i] = rom[i] ^ 0x5b; + } +} + GAME( 1980, cclimber, 0, cclimberx, cclimber, cclimber_state, cclimber, ROT0, "Nichibutsu", "Crazy Climber (US)", MACHINE_SUPPORTS_SAVE ) GAME( 1980, cclimberj, cclimber, cclimberx, cclimberj, cclimber_state,cclimberj,ROT0, "Nichibutsu", "Crazy Climber (Japan)", MACHINE_SUPPORTS_SAVE ) @@ -2640,7 +2653,7 @@ GAME( 1981, ckongpt2b, ckongpt2, cclimber, ckongb, cclimber_state, ckongb, // see bagman.cpp for parent GAME( 1981, bagmanf, bagman, bagmanf, bagmanf, driver_device, 0, ROT270, "bootleg", "Bagman (bootleg on Crazy Kong hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1981, rpatrol, 0, cclimber, rpatrol, driver_device, 0, ROT0, "Orca", "River Patrol (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // TODO: encrypted, suicide battery on PCB +GAME( 1981, rpatrol, 0, cclimber, rpatrol, cclimber_state, rpatrol, ROT0, "Orca", "River Patrol (Japan)", MACHINE_SUPPORTS_SAVE) GAME( 1981, rpatrola, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "bootleg", "River Patrol (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "bootleg", "River Patrol (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, silvland, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "Falcon", "Silver Land", MACHINE_SUPPORTS_SAVE ) From 11b0c801d833c52817224c7c10da0341b3e961da Mon Sep 17 00:00:00 2001 From: MASH Date: Sun, 7 Aug 2016 15:09:28 +0100 Subject: [PATCH 065/116] Update cclimber.h --- src/mame/includes/cclimber.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mame/includes/cclimber.h b/src/mame/includes/cclimber.h index bd325e5a122..d9c8f77e551 100644 --- a/src/mame/includes/cclimber.h +++ b/src/mame/includes/cclimber.h @@ -75,6 +75,7 @@ public: DECLARE_DRIVER_INIT(cannonb2); DECLARE_DRIVER_INIT(cannonb); DECLARE_DRIVER_INIT(dking); + DECLARE_DRIVER_INIT(rpatrol); DECLARE_MACHINE_RESET(cclimber); DECLARE_VIDEO_START(cclimber); DECLARE_PALETTE_INIT(cclimber); From f5968efcea5798f8606e8a393c33c7983b16544d Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Sun, 7 Aug 2016 10:29:51 -0400 Subject: [PATCH 066/116] C++-fiied code that iterates over rom_entry arrays (without usage of rom_[first|next]_*) --- src/emu/device.cpp | 6 +++--- src/emu/device.h | 3 ++- src/emu/ioport.cpp | 5 ++--- src/emu/romload.cpp | 15 +++++++-------- src/frontend/mame/info.cpp | 16 ++++++++-------- src/frontend/mame/ui/devopt.cpp | 14 +++++++------- src/frontend/mame/ui/miscmenu.cpp | 20 ++++++++++---------- src/frontend/mame/ui/selgame.cpp | 12 ++++++------ src/frontend/mame/ui/selsoft.cpp | 16 ++++++++-------- 9 files changed, 53 insertions(+), 54 deletions(-) diff --git a/src/emu/device.cpp b/src/emu/device.cpp index 07787934863..6bc7ff40345 100644 --- a/src/emu/device.cpp +++ b/src/emu/device.cpp @@ -924,14 +924,14 @@ void device_interface::interface_debug_setup() //------------------------------------------------- -// rom_region +// rom_region_vector //------------------------------------------------- -const rom_entry *device_t::rom_region() const +const std::vector &device_t::rom_region_vector() const { if (m_rom_entries.empty()) { m_rom_entries = rom_build_entries(device_rom_region()); } - return m_rom_entries.data(); + return m_rom_entries; } \ No newline at end of file diff --git a/src/emu/device.h b/src/emu/device.h index cdc7a8dd5a3..6892157e084 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -203,7 +203,8 @@ public: UINT32 configured_clock() const { return m_configured_clock; } const machine_config &mconfig() const { return m_machine_config; } const input_device_default *input_ports_defaults() const { return m_input_defaults; } - const rom_entry *rom_region() const; + const std::vector &rom_region_vector() const; + const rom_entry *rom_region() const { return rom_region_vector().data(); } machine_config_constructor machine_config_additions() const { return device_mconfig_additions(); } ioport_constructor input_ports() const { return device_input_ports(); } UINT8 default_bios() const { return m_default_bios; } diff --git a/src/emu/ioport.cpp b/src/emu/ioport.cpp index 43649e3f886..470f1faf1f2 100644 --- a/src/emu/ioport.cpp +++ b/src/emu/ioport.cpp @@ -2548,9 +2548,8 @@ time_t ioport_manager::initialize() m_has_analog = true; } for (device_t &device : device_iterator(machine().root_device())) - if (device.rom_region()) - for (const rom_entry *rom = device.rom_region(); !ROMENTRY_ISEND(rom); rom++) - if (ROMENTRY_ISSYSTEM_BIOS(rom)) { m_has_bioses= true; break; } + for (const rom_entry &rom : device.rom_region_vector()) + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) { m_has_bioses= true; break; } } // open playback and record files if specified diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index db54d3d4633..2bb4d984602 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -268,23 +268,22 @@ int rom_load_manager::set_disk_handle(const char *region, const char *fullpath) void rom_load_manager::determine_bios_rom(device_t &device, const char *specbios) { const char *defaultname = nullptr; - const rom_entry *rom; int default_no = 1; int bios_count = 0; device.set_system_bios(0); /* first determine the default BIOS name */ - for (rom = device.rom_region(); !ROMENTRY_ISEND(rom); rom++) - if (ROMENTRY_ISDEFAULT_BIOS(rom)) - defaultname = ROM_GETNAME(rom); + for (const rom_entry &rom : device.rom_region_vector()) + if (ROMENTRY_ISDEFAULT_BIOS(&rom)) + defaultname = ROM_GETNAME(&rom); /* look for a BIOS with a matching name */ - for (rom = device.rom_region(); !ROMENTRY_ISEND(rom); rom++) - if (ROMENTRY_ISSYSTEM_BIOS(rom)) + for (const rom_entry &rom : device.rom_region_vector()) + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) { - const char *biosname = ROM_GETNAME(rom); - int bios_flags = ROM_GETBIOSFLAGS(rom); + const char *biosname = ROM_GETNAME(&rom); + int bios_flags = ROM_GETBIOSFLAGS(&rom); char bios_number[20]; /* Allow '-bios n' to still be used */ diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index 6b8d7f65673..6431517163b 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -519,19 +519,19 @@ void info_xml_creator::output_bios() // first determine the default BIOS name std::string defaultname; - for (const rom_entry *rom = rom_entries.data(); !ROMENTRY_ISEND(rom); rom++) - if (ROMENTRY_ISDEFAULT_BIOS(rom)) - defaultname = ROM_GETNAME(rom); + for (const rom_entry &rom : rom_entries) + if (ROMENTRY_ISDEFAULT_BIOS(&rom)) + defaultname = ROM_GETNAME(&rom); // iterate over ROM entries and look for BIOSes - for (const rom_entry *rom = rom_entries.data(); !ROMENTRY_ISEND(rom); rom++) - if (ROMENTRY_ISSYSTEM_BIOS(rom)) + for (const rom_entry &rom : rom_entries) + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) { // output extracted name and descriptions fprintf(m_output, "\t\t\n"); } diff --git a/src/frontend/mame/ui/devopt.cpp b/src/frontend/mame/ui/devopt.cpp index 099c62428f0..9ebfd7f70e5 100644 --- a/src/frontend/mame/ui/devopt.cpp +++ b/src/frontend/mame/ui/devopt.cpp @@ -147,18 +147,18 @@ void menu_device_config::populate() { std::string bios_str; // first loop through roms in search of default bios (shortname) - for (const rom_entry *rom = dev->rom_region(); !ROMENTRY_ISEND(rom); rom++) - if (ROMENTRY_ISDEFAULT_BIOS(rom)) - bios_str.assign(ROM_GETNAME(rom)); + for (const rom_entry &rom : dev->rom_region_vector()) + if (ROMENTRY_ISDEFAULT_BIOS(&rom)) + bios_str.assign(ROM_GETNAME(&rom)); // then loop again to count bios options and to get the default bios complete name - for (const rom_entry *rom = dev->rom_region(); !ROMENTRY_ISEND(rom); rom++) + for (const rom_entry &rom : dev->rom_region_vector()) { - if (ROMENTRY_ISSYSTEM_BIOS(rom)) + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) { bios++; - if (bios_str.compare(ROM_GETNAME(rom))==0) - bios_str.assign(ROM_GETHASHDATA(rom)); + if (bios_str.compare(ROM_GETNAME(&rom))==0) + bios_str.assign(ROM_GETHASHDATA(&rom)); } } diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index 514ab779a1a..0191b5d7fea 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -117,9 +117,9 @@ void menu_bios_selection::handle() { device_t *dev = (device_t *)menu_event->itemref; int cnt = 0; - for (const rom_entry *rom = dev->rom_region(); !ROMENTRY_ISEND(rom); rom++) + for (const rom_entry &rom : dev->rom_region_vector()) { - if (ROMENTRY_ISSYSTEM_BIOS(rom)) cnt ++; + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) cnt ++; } int val = dev->system_bios() + ((menu_event->iptkey == IPT_UI_LEFT) ? -1 : +1); if (val<1) val=cnt; @@ -842,18 +842,18 @@ void menu_machine_configure::setup_bios() std::string specbios(m_opts.bios()); std::string default_name; - for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) - if (ROMENTRY_ISDEFAULT_BIOS(rom)) - default_name = ROM_GETNAME(rom); + for (const rom_entry &rom : entries) + if (ROMENTRY_ISDEFAULT_BIOS(&rom)) + default_name = ROM_GETNAME(&rom); std::size_t bios_count = 0; - for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) + for (const rom_entry &rom : entries) { - if (ROMENTRY_ISSYSTEM_BIOS(rom)) + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) { - std::string name(ROM_GETHASHDATA(rom)); - std::string biosname(ROM_GETNAME(rom)); - int bios_flags = ROM_GETBIOSFLAGS(rom); + std::string name(ROM_GETHASHDATA(&rom)); + std::string biosname(ROM_GETNAME(&rom)); + int bios_flags = ROM_GETBIOSFLAGS(&rom); std::string bios_number = std::to_string(bios_flags - 1); // check biosnumber and name diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index 2f39f90be0f..bbfb0937f18 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -1113,8 +1113,8 @@ void menu_select_game::build_list(const char *filter_text, int filter, bool bios } break; case FILTER_CHD: - for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) - if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom)) + for (const rom_entry &rom : entries) + if (ROMENTRY_ISREGION(&rom) && ROMREGION_ISDISKDATA(&rom)) { m_displaylist.push_back(s_driver); break; @@ -1123,8 +1123,8 @@ void menu_select_game::build_list(const char *filter_text, int filter, bool bios case FILTER_NOCHD: { bool found = false; - for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) - if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom)) + for (const rom_entry &rom : entries) + if (ROMENTRY_ISREGION(&rom) && ROMREGION_ISDISKDATA(&rom)) { found = true; break; @@ -1304,8 +1304,8 @@ void menu_select_game::general_info(const game_driver *driver, std::string &buff util::stream_format(str, _("Screen Orientation: %1$s\n"), ((driver->flags & ORIENTATION_SWAP_XY) ? _("Vertical") : _("Horizontal"))); bool found = false; auto entries = rom_build_entries(driver->rom); - for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) - if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom)) + for (const rom_entry &rom : entries) + if (ROMENTRY_ISREGION(&rom) && ROMREGION_ISDISKDATA(&rom)) { found = true; break; diff --git a/src/frontend/mame/ui/selsoft.cpp b/src/frontend/mame/ui/selsoft.cpp index 98ec8e5b826..baf1e17ba24 100644 --- a/src/frontend/mame/ui/selsoft.cpp +++ b/src/frontend/mame/ui/selsoft.cpp @@ -99,17 +99,17 @@ bool has_multiple_bios(const game_driver *driver, s_bios &biosname) auto entries = rom_build_entries(driver->rom); std::string default_name; - for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) - if (ROMENTRY_ISDEFAULT_BIOS(rom)) - default_name = ROM_GETNAME(rom); + for (const rom_entry &rom : entries) + if (ROMENTRY_ISDEFAULT_BIOS(&rom)) + default_name = ROM_GETNAME(&rom); - for (const rom_entry *rom = entries.data(); !ROMENTRY_ISEND(rom); ++rom) + for (const rom_entry &rom : entries) { - if (ROMENTRY_ISSYSTEM_BIOS(rom)) + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) { - std::string name(ROM_GETHASHDATA(rom)); - std::string bname(ROM_GETNAME(rom)); - int bios_flags = ROM_GETBIOSFLAGS(rom); + std::string name(ROM_GETHASHDATA(&rom)); + std::string bname(ROM_GETNAME(&rom)); + int bios_flags = ROM_GETBIOSFLAGS(&rom); if (bname == default_name) { From e019e6be5297359c5acb1a16cdc7046e81f101c5 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Sun, 7 Aug 2016 21:29:37 +0300 Subject: [PATCH 067/116] c64: Optimized the 1541 bit read/write function slightly without noticable effect on driver speed since the 2 CIA's are the current bottlenecks. [Curt Coder] --- src/devices/machine/64h156.cpp | 120 ++++++++++++++++----------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/src/devices/machine/64h156.cpp b/src/devices/machine/64h156.cpp index fbbe84d7383..243627e1f1e 100644 --- a/src/devices/machine/64h156.cpp +++ b/src/devices/machine/64h156.cpp @@ -282,73 +282,73 @@ void c64h156_device::live_run(const attotime &limit) cur_live.cell_counter = 0; } else { cur_live.cycle_counter++; - } - if (cur_live.cycle_counter == 16) { - cur_live.cycle_counter = cur_live.ds; + if (cur_live.cycle_counter == 16) { + cur_live.cycle_counter = cur_live.ds; - cur_live.cell_counter++; - cur_live.cell_counter &= 0xf; - } - - if (!BIT(cell_counter, 1) && BIT(cur_live.cell_counter, 1)) { - // read bit - cur_live.shift_reg <<= 1; - cur_live.shift_reg |= !(BIT(cur_live.cell_counter, 3) || BIT(cur_live.cell_counter, 2)); - cur_live.shift_reg &= 0x3ff; - - if (LOG) logerror("%s read bit %u (%u) >> %03x, oe=%u soe=%u sync=%u byte=%u\n", cur_live.tm.as_string(), cur_live.bit_counter, - !(BIT(cur_live.cell_counter, 3) || BIT(cur_live.cell_counter, 2)), cur_live.shift_reg, cur_live.oe, cur_live.soe, cur_live.sync, cur_live.byte); - - syncpoint = true; - } - - if (BIT(cell_counter, 1) && !BIT(cur_live.cell_counter, 1) && !cur_live.oe) { // TODO WPS - write_next_bit(BIT(cur_live.shift_reg_write, 7), limit); - } - - int sync = !((cur_live.shift_reg == 0x3ff) && cur_live.oe); - - if (!sync) { - cur_live.bit_counter = 8; - } else if (!BIT(cell_counter, 1) && BIT(cur_live.cell_counter, 1) && cur_live.sync) { - cur_live.bit_counter++; - cur_live.bit_counter &= 0xf; - } - - int byte = !(((cur_live.bit_counter & 7) == 7) && cur_live.soe && !(cur_live.cell_counter & 2)); - int load = !(((cur_live.bit_counter & 7) == 7) && ((cur_live.cell_counter & 3) == 3)); - - if (!load) { - if (cur_live.oe) { - cur_live.shift_reg_write = cur_live.shift_reg; - if (LOG) logerror("%s load write shift register from read shift register %02x\n",cur_live.tm.as_string(),cur_live.shift_reg_write); - } else { - cur_live.shift_reg_write = cur_live.yb; - if (LOG) logerror("%s load write shift register from YB %02x\n",cur_live.tm.as_string(),cur_live.shift_reg_write); + cur_live.cell_counter++; + cur_live.cell_counter &= 0xf; } - } else if (!BIT(cell_counter, 1) && BIT(cur_live.cell_counter, 1)) { - cur_live.shift_reg_write <<= 1; - cur_live.shift_reg_write &= 0xff; - if (LOG) logerror("%s shift write register << %02x\n", cur_live.tm.as_string(), cur_live.shift_reg_write); - } - // update signals - if (byte != cur_live.byte) { - if (!byte || !cur_live.accl) { - if (LOG) logerror("%s BYTE %02x\n", cur_live.tm.as_string(), cur_live.shift_reg & 0xff); - cur_live.byte = byte; + if (!BIT(cell_counter, 1) && BIT(cur_live.cell_counter, 1)) { + // read bit + cur_live.shift_reg <<= 1; + cur_live.shift_reg |= !(BIT(cur_live.cell_counter, 3) || BIT(cur_live.cell_counter, 2)); + cur_live.shift_reg &= 0x3ff; + + if (LOG) logerror("%s read bit %u (%u) >> %03x, oe=%u soe=%u sync=%u byte=%u\n", cur_live.tm.as_string(), cur_live.bit_counter, + !(BIT(cur_live.cell_counter, 3) || BIT(cur_live.cell_counter, 2)), cur_live.shift_reg, cur_live.oe, cur_live.soe, cur_live.sync, cur_live.byte); + syncpoint = true; } - if (!byte) { - cur_live.accl_yb = cur_live.shift_reg & 0xff; - } - } - if (sync != cur_live.sync) { - if (LOG) logerror("%s SYNC %u\n", cur_live.tm.as_string(),sync); - cur_live.sync = sync; - syncpoint = true; + if (BIT(cell_counter, 1) && !BIT(cur_live.cell_counter, 1) && !cur_live.oe) { // TODO WPS + write_next_bit(BIT(cur_live.shift_reg_write, 7), limit); + } + + int sync = !((cur_live.shift_reg == 0x3ff) && cur_live.oe); + + if (!sync) { + cur_live.bit_counter = 8; + } else if (!BIT(cell_counter, 1) && BIT(cur_live.cell_counter, 1) && cur_live.sync) { + cur_live.bit_counter++; + cur_live.bit_counter &= 0xf; + } + + int byte = !(((cur_live.bit_counter & 7) == 7) && cur_live.soe && !(cur_live.cell_counter & 2)); + int load = !(((cur_live.bit_counter & 7) == 7) && ((cur_live.cell_counter & 3) == 3)); + + if (!load) { + if (cur_live.oe) { + cur_live.shift_reg_write = cur_live.shift_reg; + if (LOG) logerror("%s load write shift register from read shift register %02x\n",cur_live.tm.as_string(),cur_live.shift_reg_write); + } else { + cur_live.shift_reg_write = cur_live.yb; + if (LOG) logerror("%s load write shift register from YB %02x\n",cur_live.tm.as_string(),cur_live.shift_reg_write); + } + } else if (!BIT(cell_counter, 1) && BIT(cur_live.cell_counter, 1)) { + cur_live.shift_reg_write <<= 1; + cur_live.shift_reg_write &= 0xff; + if (LOG) logerror("%s shift write register << %02x\n", cur_live.tm.as_string(), cur_live.shift_reg_write); + } + + // update signals + if (byte != cur_live.byte) { + if (!byte || !cur_live.accl) { + if (LOG) logerror("%s BYTE %02x\n", cur_live.tm.as_string(), cur_live.shift_reg & 0xff); + cur_live.byte = byte; + syncpoint = true; + } + if (!byte) { + cur_live.accl_yb = cur_live.shift_reg & 0xff; + } + } + + if (sync != cur_live.sync) { + if (LOG) logerror("%s SYNC %u\n", cur_live.tm.as_string(),sync); + cur_live.sync = sync; + syncpoint = true; + } } if (syncpoint) { From 8c297602c46de8115581f96b11f0d405a83232fb Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 7 Aug 2016 21:52:42 +0200 Subject: [PATCH 068/116] Fix noexcept and NL_NOEXCEPT to pass g++ 6.x builds. (nw) --- src/lib/netlist/nl_base.cpp | 27 +++++++++---------- src/lib/netlist/nl_base.h | 45 +++++++++++++++++--------------- src/lib/netlist/plib/pdynlib.cpp | 10 +++---- src/lib/netlist/plib/putil.cpp | 2 +- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index 0145d918766..d8a01612e25 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -641,7 +641,7 @@ detail::net_t::~net_t() netlist().state().remove_save_items(this); } -void detail::net_t::inc_active(core_terminal_t &term) +void detail::net_t::inc_active(core_terminal_t &term) NL_NOEXCEPT { m_active++; m_list_active.push_front(&term); @@ -665,7 +665,7 @@ void detail::net_t::inc_active(core_terminal_t &term) } } -void detail::net_t::dec_active(core_terminal_t &term) +void detail::net_t::dec_active(core_terminal_t &term) NL_NOEXCEPT { --m_active; nl_assert(m_active >= 0); @@ -689,7 +689,7 @@ void detail::net_t::rebuild_list() m_active = cnt; } -void detail::net_t::update_devs() +void detail::net_t::update_devs() NL_NOEXCEPT { nl_assert(this->isRailNet()); @@ -780,11 +780,12 @@ analog_net_t::analog_net_t(netlist_t &nl, const pstring &aname, detail::core_ter // core_terminal_t // ---------------------------------------------------------------------------------------- -detail::core_terminal_t::core_terminal_t(core_device_t &dev, const pstring &aname, const type_t atype) -: device_object_t(dev, dev.name() + "." + aname, atype) +detail::core_terminal_t::core_terminal_t(core_device_t &dev, const pstring &aname, + const type_t type, const state_e state) +: device_object_t(dev, dev.name() + "." + aname, type) , plib::linkedlist_t::element_t() , m_net(nullptr) -, m_state(*this, "m_state", STATE_NONEX) +, m_state(*this, "m_state", state) { } @@ -812,7 +813,7 @@ void detail::core_terminal_t::set_net(net_t *anet) // ---------------------------------------------------------------------------------------- terminal_t::terminal_t(core_device_t &dev, const pstring &aname) -: analog_t(dev, aname, TERMINAL) +: analog_t(dev, aname, TERMINAL, STATE_BIDIR) , m_otherterm(nullptr) , m_Idr1(*this, "m_Idr1", nullptr) , m_go1(*this, "m_go1", nullptr) @@ -849,10 +850,9 @@ void terminal_t::schedule_after(const netlist_time &after) // ---------------------------------------------------------------------------------------- logic_output_t::logic_output_t(core_device_t &dev, const pstring &aname) - : logic_t(dev, aname, OUTPUT) + : logic_t(dev, aname, OUTPUT, STATE_OUT) , m_my_net(dev.netlist(), name() + ".net", this) { - set_state(STATE_OUT); this->set_net(&m_my_net); set_logic_family(dev.logic_family()); netlist().setup().register_term(*this); @@ -868,9 +868,8 @@ void logic_output_t::initial(const netlist_sig_t val) // ---------------------------------------------------------------------------------------- analog_input_t::analog_input_t(core_device_t &dev, const pstring &aname) -: analog_t(dev, aname, INPUT) +: analog_t(dev, aname, INPUT, STATE_INP_ACTIVE) { - set_state(STATE_INP_ACTIVE); netlist().setup().register_term(*this); } @@ -879,11 +878,10 @@ analog_input_t::analog_input_t(core_device_t &dev, const pstring &aname) // ---------------------------------------------------------------------------------------- analog_output_t::analog_output_t(core_device_t &dev, const pstring &aname) - : analog_t(dev, aname, OUTPUT) + : analog_t(dev, aname, OUTPUT, STATE_OUT) , m_my_net(dev.netlist(), name() + ".net", this) { this->set_net(&m_my_net); - set_state(STATE_OUT); net().m_cur_Analog = NL_FCONST(0.0); netlist().setup().register_term(*this); @@ -899,9 +897,8 @@ void analog_output_t::initial(const nl_double val) // ----------------------------------------------------------------------------- logic_input_t::logic_input_t(core_device_t &dev, const pstring &aname) - : logic_t(dev, aname, INPUT) + : logic_t(dev, aname, INPUT, STATE_INP_ACTIVE) { - set_state(STATE_INP_ACTIVE); set_logic_family(dev.logic_family()); netlist().setup().register_term(*this); } diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index e9ac9a64129..f76b7b8e673 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -143,7 +143,7 @@ class NETLIB_NAME(name) : public device_t #define nl_assert(x) do { if (1) if (!(x)) throw nl_exception(plib::pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); } while (0) #define NL_NOEXCEPT #else -#define nl_assert(x) do { if (0) if (!(x)) throw nl_exception(plib::pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); } while (0) +#define nl_assert(x) do { if (0) if (!(x)) { /*throw nl_exception(plib::pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); */} } while (0) #define NL_NOEXCEPT noexcept #endif #define nl_assert_always(x, msg) do { if (!(x)) throw nl_exception(plib::pfmt("Fatal error: {1}\nCaused by assert: {2}:{3}: {4}")(msg)(__FILE__)(__LINE__)(#x)); } while (0) @@ -214,8 +214,8 @@ namespace netlist */ using model_map_t = std::unordered_map; - /*! Logic families descriptors are used create proxy devices. - * The logic family describe the analog capabilities of logic devices, + /*! Logic families descriptors are used to create proxy devices. + * The logic family describes the analog capabilities of logic devices, * inputs and outputs. */ class logic_family_desc_t @@ -448,6 +448,11 @@ namespace netlist // core_terminal_t // ----------------------------------------------------------------------------- + /*! Base class for all terminals. + * + * All terminals are derived from this class. + * + */ class detail::core_terminal_t : public device_object_t, public plib::linkedlist_t::element_t { P_PREVENT_COPYING(core_terminal_t) @@ -455,18 +460,17 @@ namespace netlist using list_t = std::vector; - /* needed here ... */ - enum state_e { STATE_INP_PASSIVE = 0, STATE_INP_ACTIVE = 1, STATE_INP_HL = 2, STATE_INP_LH = 4, STATE_OUT = 128, - STATE_NONEX = 256 + STATE_BIDIR = 256 }; - core_terminal_t(core_device_t &dev, const pstring &aname, const type_t atype); + core_terminal_t(core_device_t &dev, const pstring &aname, + const type_t type, const state_e state); virtual ~core_terminal_t() { } void set_net(net_t *anet); @@ -481,11 +485,7 @@ namespace netlist bool is_state(const state_e astate) const { return (m_state == astate); } state_e state() const { return m_state; } - void set_state(const state_e astate) - { - nl_assert(astate != STATE_NONEX); - m_state = astate; - } + void set_state(const state_e astate) { m_state = astate; } void reset(); @@ -502,8 +502,9 @@ namespace netlist { public: - analog_t(core_device_t &dev, const pstring &aname, const type_t atype) - : core_terminal_t(dev, aname, atype) + analog_t(core_device_t &dev, const pstring &aname, const type_t type, + const state_e state) + : core_terminal_t(dev, aname, type, state) { } @@ -580,9 +581,11 @@ namespace netlist class logic_t : public detail::core_terminal_t, public logic_family_t { public: - logic_t(core_device_t &dev, const pstring &aname, const type_t atype) - : core_terminal_t(dev, aname, atype), logic_family_t(), - m_proxy(nullptr) + logic_t(core_device_t &dev, const pstring &aname, const type_t type, + const state_e state) + : core_terminal_t(dev, aname, type, state) + , logic_family_t() + , m_proxy(nullptr) { } @@ -610,7 +613,7 @@ namespace netlist netlist_sig_t Q() const noexcept; - netlist_sig_t operator()() const + netlist_sig_t operator()() const NL_NOEXCEPT { nl_assert(state() != STATE_INP_PASSIVE); return Q(); @@ -680,7 +683,7 @@ namespace netlist void reschedule_in_queue(const netlist_time delay) noexcept; bool is_queued() const { return m_in_queue == 1; } - void update_devs(); + void update_devs() NL_NOEXCEPT; const netlist_time time() const { return m_time; } void set_time(const netlist_time ntime) { m_time = ntime; } @@ -690,8 +693,8 @@ namespace netlist std::size_t num_cons() const noexcept { return m_core_terms.size(); } - void inc_active(core_terminal_t &term); - void dec_active(core_terminal_t &term); + void inc_active(core_terminal_t &term) NL_NOEXCEPT; + void dec_active(core_terminal_t &term) NL_NOEXCEPT; void rebuild_list(); /* rebuild m_list after a load */ void move_connections(net_t &dest_net); diff --git a/src/lib/netlist/plib/pdynlib.cpp b/src/lib/netlist/plib/pdynlib.cpp index 2088ab47c1b..0ed2ca3a620 100644 --- a/src/lib/netlist/plib/pdynlib.cpp +++ b/src/lib/netlist/plib/pdynlib.cpp @@ -7,7 +7,7 @@ #include "pdynlib.h" -#ifdef WIN32 +#ifdef _WIN32 #include "windows.h" #include "palloc.h" @@ -61,7 +61,7 @@ namespace plib { dynlib::dynlib(const pstring libname) : m_isLoaded(false), m_lib(nullptr) { -#ifdef WIN32 +#ifdef _WIN32 //fprintf(stderr, "win: loading <%s>\n", libname.cstr()); TCHAR *buffer = tstring_from_utf8(libname.cstr()); if (libname != "") @@ -90,7 +90,7 @@ dynlib::dynlib(const pstring path, const pstring libname) : m_isLoaded(false), m_lib(nullptr) { // printf("win: loading <%s>\n", libname.cstr()); -#ifdef WIN32 +#ifdef _WIN32 TCHAR *buffer = tstring_from_utf8(libname.cstr()); if (libname != "") m_lib = LoadLibrary(buffer); @@ -122,7 +122,7 @@ dynlib::~dynlib() { if (m_lib != nullptr) { -#ifdef WIN32 +#ifdef _WIN32 #else dlclose(m_lib); //printf("Closed %s\n", dlerror()); @@ -137,7 +137,7 @@ bool dynlib::isLoaded() const void *dynlib::getsym_p(const pstring name) { -#ifdef WIN32 +#ifdef _WIN32 return (void *) GetProcAddress((HMODULE) m_lib, name.cstr()); #else return dlsym(m_lib, name.cstr()); diff --git a/src/lib/netlist/plib/putil.cpp b/src/lib/netlist/plib/putil.cpp index f3f9b4c15ea..ad340017bc4 100644 --- a/src/lib/netlist/plib/putil.cpp +++ b/src/lib/netlist/plib/putil.cpp @@ -22,7 +22,7 @@ namespace plib if (ret == "") ret = elem; else - #ifdef WIN32 + #ifdef _WIN32 ret = ret + '\\' + elem; #else ret = ret + '/' + elem; From 7b8179bb04403adb1b4f8b6d2d75b3e96f7ec3da Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 7 Aug 2016 21:53:19 +0200 Subject: [PATCH 069/116] Add target minw to standalone netlist makefile. (nw) --- src/lib/netlist/build/makefile | 71 +++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile index 8f11a68b6bd..36bce299de5 100644 --- a/src/lib/netlist/build/makefile +++ b/src/lib/netlist/build/makefile @@ -16,16 +16,12 @@ SRC = .. # LTO = -flto=4 -fuse-linker-plugin -flto-partition=balanced -Wodr -#-Werror -#CFLAGS = $(LTO) -g -O3 -std=c++98 -Doverride="" -march=native -msse4.2 -Wall -Wpedantic -Wsign-compare -Wextra -Wno-long-long -Wno-unused-parameter -Wno-unused-result -Wno-variadic-macros -I.. -#LDFLAGS = $(LTO) -g -O3 -std=c++98 - -CFLAGS = $(CEXTRAFLAGS) $(LTO) -g -O3 -std=c++11 -march=native -I.. -Wall -Wpedantic -Wsign-compare -Wextra -Wno-unused-parameter -LDFLAGS = $(LTO) -g -O3 -std=c++11 +CFLAGS = $(LTO) -g -O3 -std=c++11 -march=native -I.. -Wall -Wpedantic -Wsign-compare -Wextra -Wno-unused-parameter $(CEXTRAFLAGS) +LDFLAGS = $(LTO) -g -O3 -std=c++11 $(LDEXTRAFLAGS) LIBS = -lpthread -ldl -CC = g++-5 -LD = @g++-5 +CC = g++ +LD = @g++ MD = @mkdir RM = @rm DOXYGEN = @doxygen @@ -107,19 +103,20 @@ NLOBJS := \ ALL_OBJS = $(OBJS) $(NLOBJ)/prg/nltool.o $(NLOBJ)/prg/nlwav.o SOURCES = $(patsubst $(OBJ)%, $(SRC)%, $(ALL_OBJS:.o=.cpp)) +MAKEFILE_TARGETS_WITHOUT_INCLUDE := clean doc clang mingw #------------------------------------------------- # all #------------------------------------------------- -all: maketree $(TARGETS) +all: maketree depend $(TARGETS) #------------------------------------------------- # clean #------------------------------------------------- clean: - $(RM) -rf $(OBJS) $(TARGETS) .depend + $(RM) -rf $(OBJS) $(TARGETS) $(OBJ)/prg/nltool.o $(OBJ)/prg/nlwav.o .depend #------------------------------------------------- # nltool @@ -127,11 +124,11 @@ clean: nltool: $(OBJ)/prg/nltool.o $(OBJS) @echo Linking $@... - @$(LD) -o $@ $(LDFLAGS) $^ $(LIBS) + $(LD) -o $@ $(LDFLAGS) $^ $(LIBS) nlwav: $(OBJ)/prg/nlwav.o $(OBJS) @echo Linking $@... - @$(LD) -o $@ $(LDFLAGS) $^ $(LIBS) + $(LD) -o $@ $(LDFLAGS) $^ $(LIBS) #------------------------------------------------- # directories @@ -143,10 +140,34 @@ $(sort $(OBJDIRS)): maketree: $(sort $(OBJDIRS)) #------------------------------------------------- -# depends +# Special targets #------------------------------------------------- -depend: .depend +.PHONY: clang mingw doc + +clang: + $(MAKE) CC=clang++ LD=clang++ CEXTRAFLAGS="-Weverything -Werror -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-cast-align -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-exit-time-destructors -Wno-format-nonliteral -Wno-weak-template-vtables" + +# +# FIXME: -Wno-weak-vtables -Wno-missing-variable-declarations -Wno-conversion -Wno-exit-time-destructors +# + +mingw: + $(MAKE) LDEXTRAFLAGS="-Wl,--subsystem,console" LIBS= MD=@mkdir.exe SHELL=sh.exe + +# +# FIXME: Unicode +# CEXTRAFLAGS = -DUNICODE -D_UNICODE -municode +# LDEXTRAFLAGS = -municode +# + + +doc: + $(DOXYGEN) doxygen.conf + +#------------------------------------------------- +# depends +#------------------------------------------------- .depend: $(SOURCES) @echo creating .depend @@ -155,22 +176,12 @@ depend: .depend $(CC) $(CFLAGS) -MM $$i -MT `echo $$i | sed -e 's/$(SRC)/$(OBJ)/' -e 's/.cpp/.o/' ` >>./.depend; \ done +depend: .depend + +# Include only if the goal needs it +ifeq ($(filter $(MAKECMDGOALS),$(MAKEFILE_TARGETS_WITHOUT_INCLUDE)),) -include .depend - -#------------------------------------------------- -# Special targets -#------------------------------------------------- - -.PHONY: clang doc -clang: - $(MAKE) CC=clang++ LD=clang++ CEXTRAFLAGS="-Weverything -Werror -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-cast-align -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-exit-time-destructors -Wno-format-nonliteral -Wno-weak-template-vtables" - -# -# FIX: -Wno-weak-vtables -Wno-missing-variable-declarations -Wno-conversion -Wno-exit-time-destructors -# - -doc: - $(DOXYGEN) doxygen.conf +endif #------------------------------------------------- # generic rules @@ -192,5 +203,3 @@ $(OBJ)/%.a: @echo Archiving $@... $(RM) $@ $(AR) $(ARFLAGS) $@ $^ - - From 99d2a6a547bc5af663d3ac76a0a0acd819e65040 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 7 Aug 2016 22:14:54 +0100 Subject: [PATCH 070/116] start improving MPU4 set descriptions, move some roms that were associated with the incorrect games to the correct ones. --- src/mame/drivers/mpu4mod4yam.hxx | 2 + src/mame/drivers/mpu4sw.hxx | 1196 +++++++++++++++++------------- src/mame/mame.lst | 4 +- 3 files changed, 674 insertions(+), 528 deletions(-) diff --git a/src/mame/drivers/mpu4mod4yam.hxx b/src/mame/drivers/mpu4mod4yam.hxx index 0df27c2b378..4400e026f6c 100644 --- a/src/mame/drivers/mpu4mod4yam.hxx +++ b/src/mame/drivers/mpu4mod4yam.hxx @@ -641,6 +641,8 @@ GAME_CUSTOM( 199?, m4vivalv__5, m4vivalv, "vv_10_d_.3_3", 0 GAME_CUSTOM( 199?, m4vivalv__6, m4vivalv, "vv_10_k_.3_3", 0x0000, 0x010000, CRC(70fc4c56) SHA1(02cbaadd3575ef0d9dc192aabbe39a735893a662), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (set 34)" ) GAME_CUSTOM( 199?, m4vivalv__7, m4vivalv, "vv_10a__.3_3", 0x0000, 0x010000, CRC(c908d65a) SHA1(5af180e697c22c27380e275d76708103e298cf41), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (set 35)" ) GAME_CUSTOM( 199?, m4vivalv__8, m4vivalv, "vvi05___.3_3", 0x0000, 0x010000, CRC(a5829d5c) SHA1(4cd1a2185579898db7be75f8c3f565043f0691b6), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (set 36)" ) +// "(C)1991 BARCREST" and "VLV 1.0" +GAME_CUSTOM( 199?, m4vivalv__9, m4vivalv, "viva206", 0x0000, 0x010000, CRC(76ab9a5d) SHA1(455699cbc05f744eafe58881a8fb120b24cfe5c8), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (set 37)" ) GAME(199?, m4stc ,0 ,mod4yam ,mpu4 , mpu4_state,m4default ,ROT0, "Barcrest","unknown MPU4 'STC 0.1' (Barcrest) (MPU4)",GAME_FLAGS) diff --git a/src/mame/drivers/mpu4sw.hxx b/src/mame/drivers/mpu4sw.hxx index 417f55d784c..83a836cb211 100644 --- a/src/mame/drivers/mpu4sw.hxx +++ b/src/mame/drivers/mpu4sw.hxx @@ -674,55 +674,60 @@ GAME_CUSTOM( 199?, m4crmaze__s, m4crmaze, "cmaz58t", 0x0000, 0 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4jackpot8tkn , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4cashmn, 0, "cma07s.p1", 0x0000, 0x020000, CRC(e9c1d9f2) SHA1(f2df4ae650ec2b62d15bbaa562d638476bf926e7), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4cashmn__a, m4cashmn, "camc2010", 0x0000, 0x020000, CRC(82e459ab) SHA1(62e1906007f6bba99e3e8badc3472070e8ae84f8), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4cashmn__b, m4cashmn, "cma07ad.p1", 0x0000, 0x020000, CRC(411889fd) SHA1(5855b584315867ecc5df6d37f4a664b8331ecde8), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4cashmn__c, m4cashmn, "cma07b.p1", 0x0000, 0x020000, CRC(ab889a33) SHA1(0f3ed0e4b8131585bcb4af47674fb1b65c37503d), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4cashmn__d, m4cashmn, "cma07bd.p1", 0x0000, 0x020000, CRC(cc022738) SHA1(5968d1b6db55008cbd3c83651214c61c28fd4c5c), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4cashmn__e, m4cashmn, "cma07c.p1", 0x0000, 0x020000, CRC(9cc22721) SHA1(ee4e9860641c8bf7db024a5bf9469265a6383e0a), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4cashmn__f, m4cashmn, "cma07d.p1", 0x0000, 0x020000, CRC(d6939145) SHA1(45b6f7f80c7a2f4377d9bf8e184fb791f4ed0a2d), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4cashmn__g, m4cashmn, "cma07dk.p1", 0x0000, 0x020000, CRC(86c58f6e) SHA1(fce50f86a641d27d0f5e5ecbac84822ccc9c177b), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4cashmn__h, m4cashmn, "cma07dr.p1", 0x0000, 0x020000, CRC(35ca345f) SHA1(ddbb926988028bef13ebaa949d3ee92599770003), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4cashmn__i, m4cashmn, "cma07dy.p1", 0x0000, 0x020000, CRC(0126af90) SHA1(0f303451fd8ca8c0cc50a31297f0d2729cfc2d7b), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4cashmn__j, m4cashmn, "cma07k.p1", 0x0000, 0x020000, CRC(e14f3265) SHA1(7b5dc581fe8679559356fdca9644985da7d299cb), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4cashmn__k, m4cashmn, "cma07r.p1", 0x0000, 0x020000, CRC(52408954) SHA1(623f840d94cc3cf2d2d648eb2be644d48350b169), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4cashmn__l, m4cashmn, "cma07y.p1", 0x0000, 0x020000, CRC(66ac129b) SHA1(97f8c0c1f46444d4a492bc3dd3689df038000640), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4cashmn__m, m4cashmn, "cma08ad.p1", 0x0000, 0x020000, CRC(fce2f785) SHA1(fc508e3d1036319894985600cb0142f13536078c), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4cashmn__n, m4cashmn, "cma08b.p1", 0x0000, 0x020000, CRC(df7526de) SHA1(71456496fc31ae11ffa7c543b6444adba735aeb9), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4cashmn__o, m4cashmn, "cma08bd.p1", 0x0000, 0x020000, CRC(71f85940) SHA1(439c54f35f4f6161a683d2c3d2bb6ce81b4190bf), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4cashmn__p, m4cashmn, "cma08c.p1", 0x0000, 0x020000, CRC(e83f9bcc) SHA1(e20297ba5238b59c3872776b01e6a89a51a7aea7), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4cashmn__q, m4cashmn, "cma08d.p1", 0x0000, 0x020000, CRC(a26e2da8) SHA1(928dfe399a7ae278dadd1e930bd370022f5113c4), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4cashmn__r, m4cashmn, "cma08dk.p1", 0x0000, 0x020000, CRC(3b3ff116) SHA1(f60f0f9d996398a0f1c5b7d2a411613c42149e65), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4cashmn__s, m4cashmn, "cma08dr.p1", 0x0000, 0x020000, CRC(88304a27) SHA1(9b86a49edca078dd68abab4c3e8655d3b4e79d47), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4cashmn__t, m4cashmn, "cma08dy.p1", 0x0000, 0x020000, CRC(bcdcd1e8) SHA1(a7a4ab2313198c3bc0536526bd83179fd9170e66), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4cashmn__u, m4cashmn, "cma08k.p1", 0x0000, 0x020000, CRC(95b28e88) SHA1(282a782900a0ddf60c66aa6a69e6871bb42c647a), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4cashmn__v, m4cashmn, "cma08r.p1", 0x0000, 0x020000, CRC(26bd35b9) SHA1(74d07da26932bf48fe4b79b39ff76956b0993f3b), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4cashmn__w, m4cashmn, "cma08s.p1", 0x0000, 0x020000, CRC(d0154d3c) SHA1(773f211092c51fb4ca1ef6a5a0cbdb15f842aca8), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4cashmn__x, m4cashmn, "cma08y.p1", 0x0000, 0x020000, CRC(1251ae76) SHA1(600ce195be615796b887bb56bebb6c4322709632), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4cashmn__y, m4cashmn, "cmh06ad.p1", 0x0000, 0x020000, CRC(ea2f6866) SHA1(afae312a488d7d83576c17eb2627a84637d88f18), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4cashmn__z, m4cashmn, "cmh06b.p1", 0x0000, 0x020000, CRC(2d4d9667) SHA1(896ed70962c8904646df7159c3717399d0ceb022), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4cashmn__0, m4cashmn, "cmh06bd.p1", 0x0000, 0x020000, CRC(6735c6a3) SHA1(4bce480c57473a9b0787a87a462c76e146a10157), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4cashmn__1, m4cashmn, "cmh06c.p1", 0x0000, 0x020000, CRC(1a072b75) SHA1(89d4aed011391b2f12b48c0344136d83175ff2f0), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4cashmn__2, m4cashmn, "cmh06d.p1", 0x0000, 0x020000, CRC(50569d11) SHA1(bdf7e984766bbe90bafbf0b367690ca65a8612d2), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4cashmn__3, m4cashmn, "cmh06dk.p1", 0x0000, 0x020000, CRC(2df26ef5) SHA1(c716b73396d0af1f69f5812bace06341d368859f), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4cashmn__4, m4cashmn, "cmh06dr.p1", 0x0000, 0x020000, CRC(9efdd5c4) SHA1(b9e02fe91e766aff41ca19879ab29e53bdee537e), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4cashmn__5, m4cashmn, "cmh06dy.p1", 0x0000, 0x020000, CRC(aa114e0b) SHA1(8bc9b94e488a98b8a8008f9a35b6c078cc5c8f3f), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4cashmn__6, m4cashmn, "cmh06k.p1", 0x0000, 0x020000, CRC(678a3e31) SHA1(2351b5167eec2a0d23c9938014de6f6ee07f13ff), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4cashmn__7, m4cashmn, "cmh06r.p1", 0x0000, 0x020000, CRC(d4858500) SHA1(489fd55ac6c93b94bfb9297fd71b5d74bf95a97f), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4cashmn__8, m4cashmn, "cmh06s.p1", 0x0000, 0x020000, CRC(9d3b4260) SHA1(7c4740585d17be3da3a0ea6e7fc68f89538013fb), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4cashmn__9, m4cashmn, "cmh06y.p1", 0x0000, 0x020000, CRC(e0691ecf) SHA1(978fa00736967dd09d48ce5c847698b39a058ab5), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4cashmn__aa, m4cashmn, "cmh07ad.p1", 0x0000, 0x020000, CRC(4f354391) SHA1(687eccc312cd69f8bb70e35837f0b7ce74392936), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4cashmn__ab, m4cashmn, "cmh07b.p1", 0x0000, 0x020000, CRC(27fb6e7b) SHA1(c1558e4a0e2c28a825c2c5bb4089143cf919b67c), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4cashmn__ac, m4cashmn, "cmh07bd.p1", 0x0000, 0x020000, CRC(c22fed54) SHA1(5b6df1ed8518f9ba3e02b17c189c01ad1d0acbbb), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4cashmn__ad, m4cashmn, "cmh07c.p1", 0x0000, 0x020000, CRC(10b1d369) SHA1(9933a2a7933df941ee93e16682e91dcc90abb627), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4cashmn__ae, m4cashmn, "cmh07d.p1", 0x0000, 0x020000, CRC(5ae0650d) SHA1(da6917aa186daf59f35124c7cdc9d039d365c4c2), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4cashmn__af, m4cashmn, "cmh07dk.p1", 0x0000, 0x020000, CRC(88e84502) SHA1(2ab86be51b3dde0b2cb05e3af5f43aad3d8a76df), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 43)" ) -GAME_CUSTOM( 199?, m4cashmn__ag, m4cashmn, "cmh07dr.p1", 0x0000, 0x020000, CRC(3be7fe33) SHA1(074243cdfd37ba36e18e00610f45473e46ddc728), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 44)" ) -GAME_CUSTOM( 199?, m4cashmn__ah, m4cashmn, "cmh07dy.p1", 0x0000, 0x020000, CRC(0f0b65fc) SHA1(68d775bb4af9595ac87c33c2663b272640eea69e), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 45)" ) -GAME_CUSTOM( 199?, m4cashmn__ai, m4cashmn, "cmh07k.p1", 0x0000, 0x020000, CRC(6d3cc62d) SHA1(85f76fd8513c20683d486de7a1509cadfb6ecaa9), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 46)" ) -GAME_CUSTOM( 199?, m4cashmn__aj, m4cashmn, "cmh07r.p1", 0x0000, 0x020000, CRC(de337d1c) SHA1(dd07727fb183833eced5c0c2dc284d571baacd25), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 47)" ) -GAME_CUSTOM( 199?, m4cashmn__ak, m4cashmn, "cmh07s.p1", 0x0000, 0x020000, CRC(0367f4cf) SHA1(8b24a9009ff17d517b34e078ebbdc17465df139d), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 48)" ) -GAME_CUSTOM( 199?, m4cashmn__al, m4cashmn, "cmh07y.p1", 0x0000, 0x020000, CRC(eadfe6d3) SHA1(80541aba612b8ebba7ab159c61e6492b9c06feda), "Barcrest","Cash Machine (Barcrest) (MPU4) (set 49)" ) +// "(C)1993 BARCREST" and "CMA 0.7" +GAME_CUSTOM( 199?, m4cashmn, 0, "cma07s.p1", 0x0000, 0x020000, CRC(e9c1d9f2) SHA1(f2df4ae650ec2b62d15bbaa562d638476bf926e7), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7)" ) +GAME_CUSTOM( 199?, m4cashmn__b, m4cashmn, "cma07ad.p1", 0x0000, 0x020000, CRC(411889fd) SHA1(5855b584315867ecc5df6d37f4a664b8331ecde8), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7AD)" ) +GAME_CUSTOM( 199?, m4cashmn__c, m4cashmn, "cma07b.p1", 0x0000, 0x020000, CRC(ab889a33) SHA1(0f3ed0e4b8131585bcb4af47674fb1b65c37503d), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7B)" ) +GAME_CUSTOM( 199?, m4cashmn__d, m4cashmn, "cma07bd.p1", 0x0000, 0x020000, CRC(cc022738) SHA1(5968d1b6db55008cbd3c83651214c61c28fd4c5c), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7BD)" ) +GAME_CUSTOM( 199?, m4cashmn__e, m4cashmn, "cma07c.p1", 0x0000, 0x020000, CRC(9cc22721) SHA1(ee4e9860641c8bf7db024a5bf9469265a6383e0a), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7C)" ) +GAME_CUSTOM( 199?, m4cashmn__f, m4cashmn, "cma07d.p1", 0x0000, 0x020000, CRC(d6939145) SHA1(45b6f7f80c7a2f4377d9bf8e184fb791f4ed0a2d), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7D)" ) +GAME_CUSTOM( 199?, m4cashmn__g, m4cashmn, "cma07dk.p1", 0x0000, 0x020000, CRC(86c58f6e) SHA1(fce50f86a641d27d0f5e5ecbac84822ccc9c177b), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7KD)" ) +GAME_CUSTOM( 199?, m4cashmn__h, m4cashmn, "cma07dr.p1", 0x0000, 0x020000, CRC(35ca345f) SHA1(ddbb926988028bef13ebaa949d3ee92599770003), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7RD)" ) +GAME_CUSTOM( 199?, m4cashmn__i, m4cashmn, "cma07dy.p1", 0x0000, 0x020000, CRC(0126af90) SHA1(0f303451fd8ca8c0cc50a31297f0d2729cfc2d7b), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7YD)" ) +GAME_CUSTOM( 199?, m4cashmn__j, m4cashmn, "cma07k.p1", 0x0000, 0x020000, CRC(e14f3265) SHA1(7b5dc581fe8679559356fdca9644985da7d299cb), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7K)" ) +GAME_CUSTOM( 199?, m4cashmn__k, m4cashmn, "cma07r.p1", 0x0000, 0x020000, CRC(52408954) SHA1(623f840d94cc3cf2d2d648eb2be644d48350b169), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7R)" ) +GAME_CUSTOM( 199?, m4cashmn__l, m4cashmn, "cma07y.p1", 0x0000, 0x020000, CRC(66ac129b) SHA1(97f8c0c1f46444d4a492bc3dd3689df038000640), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7Y)" ) +// "(C)1993 BARCREST" and "CMA 0.8" +GAME_CUSTOM( 199?, m4cashmn__m, m4cashmn, "cma08ad.p1", 0x0000, 0x020000, CRC(fce2f785) SHA1(fc508e3d1036319894985600cb0142f13536078c), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8AD)" ) +GAME_CUSTOM( 199?, m4cashmn__n, m4cashmn, "cma08b.p1", 0x0000, 0x020000, CRC(df7526de) SHA1(71456496fc31ae11ffa7c543b6444adba735aeb9), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8B)" ) +GAME_CUSTOM( 199?, m4cashmn__o, m4cashmn, "cma08bd.p1", 0x0000, 0x020000, CRC(71f85940) SHA1(439c54f35f4f6161a683d2c3d2bb6ce81b4190bf), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8BD)" ) +GAME_CUSTOM( 199?, m4cashmn__p, m4cashmn, "cma08c.p1", 0x0000, 0x020000, CRC(e83f9bcc) SHA1(e20297ba5238b59c3872776b01e6a89a51a7aea7), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8C)" ) +GAME_CUSTOM( 199?, m4cashmn__q, m4cashmn, "cma08d.p1", 0x0000, 0x020000, CRC(a26e2da8) SHA1(928dfe399a7ae278dadd1e930bd370022f5113c4), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8D)" ) +GAME_CUSTOM( 199?, m4cashmn__r, m4cashmn, "cma08dk.p1", 0x0000, 0x020000, CRC(3b3ff116) SHA1(f60f0f9d996398a0f1c5b7d2a411613c42149e65), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8KD)" ) +GAME_CUSTOM( 199?, m4cashmn__s, m4cashmn, "cma08dr.p1", 0x0000, 0x020000, CRC(88304a27) SHA1(9b86a49edca078dd68abab4c3e8655d3b4e79d47), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8RD)" ) +GAME_CUSTOM( 199?, m4cashmn__t, m4cashmn, "cma08dy.p1", 0x0000, 0x020000, CRC(bcdcd1e8) SHA1(a7a4ab2313198c3bc0536526bd83179fd9170e66), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8YD)" ) +GAME_CUSTOM( 199?, m4cashmn__u, m4cashmn, "cma08k.p1", 0x0000, 0x020000, CRC(95b28e88) SHA1(282a782900a0ddf60c66aa6a69e6871bb42c647a), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8K)" ) +GAME_CUSTOM( 199?, m4cashmn__v, m4cashmn, "cma08r.p1", 0x0000, 0x020000, CRC(26bd35b9) SHA1(74d07da26932bf48fe4b79b39ff76956b0993f3b), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8R)" ) +GAME_CUSTOM( 199?, m4cashmn__w, m4cashmn, "cma08s.p1", 0x0000, 0x020000, CRC(d0154d3c) SHA1(773f211092c51fb4ca1ef6a5a0cbdb15f842aca8), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8)" ) +GAME_CUSTOM( 199?, m4cashmn__x, m4cashmn, "cma08y.p1", 0x0000, 0x020000, CRC(1251ae76) SHA1(600ce195be615796b887bb56bebb6c4322709632), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8Y)" ) +// "(C)1993 BARCREST" and "CMH 0.6" +GAME_CUSTOM( 199?, m4cashmn__y, m4cashmn, "cmh06ad.p1", 0x0000, 0x020000, CRC(ea2f6866) SHA1(afae312a488d7d83576c17eb2627a84637d88f18), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6AD)" ) +GAME_CUSTOM( 199?, m4cashmn__z, m4cashmn, "cmh06b.p1", 0x0000, 0x020000, CRC(2d4d9667) SHA1(896ed70962c8904646df7159c3717399d0ceb022), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6B)" ) +GAME_CUSTOM( 199?, m4cashmn__0, m4cashmn, "cmh06bd.p1", 0x0000, 0x020000, CRC(6735c6a3) SHA1(4bce480c57473a9b0787a87a462c76e146a10157), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6BD)" ) +GAME_CUSTOM( 199?, m4cashmn__1, m4cashmn, "cmh06c.p1", 0x0000, 0x020000, CRC(1a072b75) SHA1(89d4aed011391b2f12b48c0344136d83175ff2f0), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6C)" ) +GAME_CUSTOM( 199?, m4cashmn__2, m4cashmn, "cmh06d.p1", 0x0000, 0x020000, CRC(50569d11) SHA1(bdf7e984766bbe90bafbf0b367690ca65a8612d2), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6D)" ) +GAME_CUSTOM( 199?, m4cashmn__3, m4cashmn, "cmh06dk.p1", 0x0000, 0x020000, CRC(2df26ef5) SHA1(c716b73396d0af1f69f5812bace06341d368859f), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6KD)" ) +GAME_CUSTOM( 199?, m4cashmn__4, m4cashmn, "cmh06dr.p1", 0x0000, 0x020000, CRC(9efdd5c4) SHA1(b9e02fe91e766aff41ca19879ab29e53bdee537e), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6RD)" ) +GAME_CUSTOM( 199?, m4cashmn__5, m4cashmn, "cmh06dy.p1", 0x0000, 0x020000, CRC(aa114e0b) SHA1(8bc9b94e488a98b8a8008f9a35b6c078cc5c8f3f), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6YD)" ) +GAME_CUSTOM( 199?, m4cashmn__6, m4cashmn, "cmh06k.p1", 0x0000, 0x020000, CRC(678a3e31) SHA1(2351b5167eec2a0d23c9938014de6f6ee07f13ff), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6K)" ) +GAME_CUSTOM( 199?, m4cashmn__7, m4cashmn, "cmh06r.p1", 0x0000, 0x020000, CRC(d4858500) SHA1(489fd55ac6c93b94bfb9297fd71b5d74bf95a97f), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6R)" ) +GAME_CUSTOM( 199?, m4cashmn__8, m4cashmn, "cmh06s.p1", 0x0000, 0x020000, CRC(9d3b4260) SHA1(7c4740585d17be3da3a0ea6e7fc68f89538013fb), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6)" ) +GAME_CUSTOM( 199?, m4cashmn__9, m4cashmn, "cmh06y.p1", 0x0000, 0x020000, CRC(e0691ecf) SHA1(978fa00736967dd09d48ce5c847698b39a058ab5), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.6Y)" ) +// "(C)1993 BARCREST" and "CMH 0.7" +GAME_CUSTOM( 199?, m4cashmn__aa, m4cashmn, "cmh07ad.p1", 0x0000, 0x020000, CRC(4f354391) SHA1(687eccc312cd69f8bb70e35837f0b7ce74392936), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7AD)" ) +GAME_CUSTOM( 199?, m4cashmn__ab, m4cashmn, "cmh07b.p1", 0x0000, 0x020000, CRC(27fb6e7b) SHA1(c1558e4a0e2c28a825c2c5bb4089143cf919b67c), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7B)" ) +GAME_CUSTOM( 199?, m4cashmn__ac, m4cashmn, "cmh07bd.p1", 0x0000, 0x020000, CRC(c22fed54) SHA1(5b6df1ed8518f9ba3e02b17c189c01ad1d0acbbb), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7BD)" ) +GAME_CUSTOM( 199?, m4cashmn__ad, m4cashmn, "cmh07c.p1", 0x0000, 0x020000, CRC(10b1d369) SHA1(9933a2a7933df941ee93e16682e91dcc90abb627), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7C)" ) +GAME_CUSTOM( 199?, m4cashmn__ae, m4cashmn, "cmh07d.p1", 0x0000, 0x020000, CRC(5ae0650d) SHA1(da6917aa186daf59f35124c7cdc9d039d365c4c2), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7D)" ) +GAME_CUSTOM( 199?, m4cashmn__af, m4cashmn, "cmh07dk.p1", 0x0000, 0x020000, CRC(88e84502) SHA1(2ab86be51b3dde0b2cb05e3af5f43aad3d8a76df), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7KD)" ) +GAME_CUSTOM( 199?, m4cashmn__ag, m4cashmn, "cmh07dr.p1", 0x0000, 0x020000, CRC(3be7fe33) SHA1(074243cdfd37ba36e18e00610f45473e46ddc728), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7RD)" ) +GAME_CUSTOM( 199?, m4cashmn__ah, m4cashmn, "cmh07dy.p1", 0x0000, 0x020000, CRC(0f0b65fc) SHA1(68d775bb4af9595ac87c33c2663b272640eea69e), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7YD)" ) +GAME_CUSTOM( 199?, m4cashmn__ai, m4cashmn, "cmh07k.p1", 0x0000, 0x020000, CRC(6d3cc62d) SHA1(85f76fd8513c20683d486de7a1509cadfb6ecaa9), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7K)" ) +GAME_CUSTOM( 199?, m4cashmn__aj, m4cashmn, "cmh07r.p1", 0x0000, 0x020000, CRC(de337d1c) SHA1(dd07727fb183833eced5c0c2dc284d571baacd25), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7R)" ) +GAME_CUSTOM( 199?, m4cashmn__ak, m4cashmn, "cmh07s.p1", 0x0000, 0x020000, CRC(0367f4cf) SHA1(8b24a9009ff17d517b34e078ebbdc17465df139d), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7)" ) +GAME_CUSTOM( 199?, m4cashmn__al, m4cashmn, "cmh07y.p1", 0x0000, 0x020000, CRC(eadfe6d3) SHA1(80541aba612b8ebba7ab159c61e6492b9c06feda), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.7Y)" ) +// "(C)1993 BARCREST" and "CMH 0.2" +GAME_CUSTOM( 199?, m4cashmn__a, m4cashmn, "camc2010", 0x0000, 0x020000, CRC(82e459ab) SHA1(62e1906007f6bba99e3e8badc3472070e8ae84f8), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMH 0.2)" ) // "(C)1993 BARCREST" and "CMH 0.6" GAME_CUSTOM( 199?, m4cashmn__za, m4cashmn, "cma15g", 0x0000, 0x020000, CRC(f30b3ef2) SHA1(c8fb4d883d12a477a703d8cb0842994675aaf879), "hack?","Cash Machine (Barcrest) (MPU4) (CMH 0.6Y, hack?)" ) // no copyright string, and "CMA 0.7" @@ -896,7 +901,18 @@ GAME_CUSTOM( 199?, m4toot__zb, m4toot, "tot15t", 0x0000, 0x020000, CRC(1 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4eaw, 0, "er4s.p1", 0x0000, 0x010000, CRC(163fc987) SHA1(8e1768ed2fbddbd5e00652ff40614de3978c9567), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "ER4 0.2" +GAME_CUSTOM( 199?, m4eaw, 0, "er4s.p1", 0x0000, 0x010000, CRC(163fc987) SHA1(8e1768ed2fbddbd5e00652ff40614de3978c9567), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2)" ) +GAME_CUSTOM( 199?, m4eaw__av, m4eaw, "er4ad.p1", 0x0000, 0x010000, CRC(93fff89d) SHA1(3f90168efa5ecaf7707ef357616638a9d5ab746f), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 59)" ) +GAME_CUSTOM( 199?, m4eaw__aw, m4eaw, "er4b.p1", 0x0000, 0x010000, CRC(cb39fda7) SHA1(4a31d2ff53942a658992a5e13c2b617da5fb03ce), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 60)" ) +GAME_CUSTOM( 199?, m4eaw__ax, m4eaw, "er4bd.p1", 0x0000, 0x010000, CRC(a5e395d7) SHA1(3f134a2ce3788ac84a6de096306c651e6b2d6a4a), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 61)" ) +GAME_CUSTOM( 199?, m4eaw__ay, m4eaw, "er4d.p1", 0x0000, 0x010000, CRC(33612923) SHA1(1129ced207aaf46045f20a1ef1a37af8ec537bb0), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 62)" ) +GAME_CUSTOM( 199?, m4eaw__az, m4eaw, "er4dk.p1", 0x0000, 0x010000, CRC(df41d570) SHA1(4a2db04ee51bb811ac3aee5b2c3c1f1a2201f7ec), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 63)" ) +GAME_CUSTOM( 199?, m4eaw__a0, m4eaw, "er4dy.p1", 0x0000, 0x010000, CRC(7df882e6) SHA1(1246220a5ac8a4454a7f3a359a5a00319395095d), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 64)" ) +GAME_CUSTOM( 199?, m4eaw__a1, m4eaw, "er4k.p1", 0x0000, 0x010000, CRC(9803cc0d) SHA1(1516c3836919a7a2cc32711a9bf2d3bf3d6b82c0), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 65)" ) +GAME_CUSTOM( 199?, m4eaw__a2, m4eaw, "er4y.p1", 0x0000, 0x010000, CRC(d8dece2d) SHA1(8482092434e1e94e6648e402c8b518c2f0fcc28e), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 66)" ) +// "(C)1991 BARCREST" and "ER4 0.3" (startup is CET 0.3) +GAME_CUSTOM( 199?, m4eaw__j, m4eaw, "cet03s.p1", 0x0000, 0x010000, CRC(bec3ea51) SHA1(740a73da105d8329dc9ceaa5e8c25b305124e2dd), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (CET0.3 / ER4 0.3)" ) GAME_CUSTOM( 199?, m4eaw__a, m4eaw, "cet03ad.p1", 0x0000, 0x010000, CRC(33afe7a5) SHA1(5d3bdb74c6babd49e88915282ad81c184bd7aa68), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4eaw__b, m4eaw, "cet03b.p1", 0x0000, 0x010000, CRC(7674e2a5) SHA1(188e683eac91f64fe563b0f09f2b934e709c47fb), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4eaw__c, m4eaw, "cet03bd.p1", 0x0000, 0x010000, CRC(406843a2) SHA1(7d4bf6cd3c5be0f6df687b0ba97b3b88fd377170), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 4)" ) @@ -906,8 +922,9 @@ GAME_CUSTOM( 199?, m4eaw__f, m4eaw, "cet03dr.p1", 0x0000, 0x0100 GAME_CUSTOM( 199?, m4eaw__g, m4eaw, "cet03dy.p1", 0x0000, 0x010000, CRC(fece4ac4) SHA1(badf4f94d565958fc9f42a443f53ec9624925ee1), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4eaw__h, m4eaw, "cet03k.p1", 0x0000, 0x010000, CRC(f6531a43) SHA1(75ec5c8fc0012fee144daab7761f3717c17fa22d), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4eaw__i, m4eaw, "cet03r.p1", 0x0000, 0x010000, CRC(fec4a6c0) SHA1(89fac7e4df77f526d0e357f1874b73be932548ce), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4eaw__j, m4eaw, "cet03s.p1", 0x0000, 0x010000, CRC(bec3ea51) SHA1(740a73da105d8329dc9ceaa5e8c25b305124e2dd), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4eaw__k, m4eaw, "cet03y.p1", 0x0000, 0x010000, CRC(63af8e2e) SHA1(97b9dd02bf8a72ca0be7c1a9cb753fbd55644497), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 12)" ) +// "(C)1991 BARCREST" and "ER4 0.2" (startup is CEU 0.2) +GAME_CUSTOM( 199?, m4eaw__u, m4eaw, "ceu02s.p1", 0x0000, 0x010000, CRC(d52099e6) SHA1(10f1acb948fa7c4b547f801ddb5e15111992ca91), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (CEU0.2 / ER4 0.2)" ) GAME_CUSTOM( 199?, m4eaw__l, m4eaw, "ceu02ad.p1", 0x0000, 0x010000, CRC(5805182c) SHA1(c15ef2e05061fd89944b039f007d92bc4bdf66d5), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4eaw__m, m4eaw, "ceu02b.p1", 0x0000, 0x010000, CRC(cbf62a02) SHA1(20fb16ac4602d4e386e5dc01e1b7e83c459f614d), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4eaw__n, m4eaw, "ceu02bd.p1", 0x0000, 0x010000, CRC(6e197566) SHA1(16f44ca77bc02c7eb186c3684b4e837da0d73553), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 15)" ) @@ -917,8 +934,9 @@ GAME_CUSTOM( 199?, m4eaw__q, m4eaw, "ceu02dr.p1", 0x0000, 0x0100 GAME_CUSTOM( 199?, m4eaw__r, m4eaw, "ceu02dy.p1", 0x0000, 0x010000, CRC(a345696d) SHA1(a189eb6a6a6a83fe0d490f4a7c8e9c4c52aa91f7), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4eaw__s, m4eaw, "ceu02k.p1", 0x0000, 0x010000, CRC(0e0a1ba9) SHA1(e1ee2595a3fd4fe874f50dc027f6c931636aadcc), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 20)" ) GAME_CUSTOM( 199?, m4eaw__t, m4eaw, "ceu02r.p1", 0x0000, 0x010000, CRC(1a882a6a) SHA1(c966be957e7a78c33a28afd79ba60c69a6de42b8), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4eaw__u, m4eaw, "ceu02s.p1", 0x0000, 0x010000, CRC(d52099e6) SHA1(10f1acb948fa7c4b547f801ddb5e15111992ca91), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 22)" ) GAME_CUSTOM( 199?, m4eaw__v, m4eaw, "ceu02y.p1", 0x0000, 0x010000, CRC(87e30284) SHA1(4c598a33b73cfe6338c0f51408f2a6c1abfa978b), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 23)" ) +// "(C)1991 BARCREST" and "ER4 0.1" (startup is ENN 0.1) +GAME_CUSTOM( 199?, m4eaw__6, m4eaw, "enn01s.p1", 0x0000, 0x010000, CRC(d0ba447d) SHA1(744d5448c5318287e58994b684e116ac1a236f05), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 / ER4 0.1)" ) GAME_CUSTOM( 199?, m4eaw__w, m4eaw, "enn01ad.p1", 0x0000, 0x010000, CRC(913ba1d6) SHA1(1167ccce2f0b528ec8eba140b1f9c8358fa19f54), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4eaw__x, m4eaw, "enn01b.p1", 0x0000, 0x010000, CRC(76cf750c) SHA1(7f3ede643c5b92d9e313c4450a0d4ef3bd9eefd3), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 25)" ) GAME_CUSTOM( 199?, m4eaw__y, m4eaw, "enn01bd.p1", 0x0000, 0x010000, CRC(c6c29211) SHA1(a49759c4c00633405a338eeb89fcb00f7503990c), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 26)" ) @@ -929,8 +947,9 @@ GAME_CUSTOM( 199?, m4eaw__2, m4eaw, "enn01dr.p1", 0x0000, 0x0100 GAME_CUSTOM( 199?, m4eaw__3, m4eaw, "enn01dy.p1", 0x0000, 0x010000, CRC(be3e5901) SHA1(ea3f366724135682da7cddad3c82e5f4c434f4a9), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 31)" ) GAME_CUSTOM( 199?, m4eaw__4, m4eaw, "enn01k.p1", 0x0000, 0x010000, CRC(273d7b10) SHA1(5577355c918407e548266a16b225e8a4f58c921c), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4eaw__5, m4eaw, "enn01r.p1", 0x0000, 0x010000, CRC(aee3f31e) SHA1(72676bc6b3bc287bf3bd3e7719848b40aa1b3627), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4eaw__6, m4eaw, "enn01s.p1", 0x0000, 0x010000, CRC(d0ba447d) SHA1(744d5448c5318287e58994b684e116ac1a236f05), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 34)" ) GAME_CUSTOM( 199?, m4eaw__7, m4eaw, "enn01y.p1", 0x0000, 0x010000, CRC(91a73867) SHA1(5197fcd5bf3dc036095b8291d7b23776995d84d1), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 35)" ) +// "(C)1991 BARCREST" and "ER4 0.1" (startup is EON 0.1) +GAME_CUSTOM( 199?, m4eaw__ai, m4eaw, "eon01s.p1", 0x0000, 0x010000, CRC(e2e9ce10) SHA1(41a08b17285d6591b4a5cb6b1b6cc40ee7d35f01), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 / ER4 0.1)" ) GAME_CUSTOM( 199?, m4eaw__8, m4eaw, "eon01ad.p1", 0x0000, 0x010000, CRC(998b0e8d) SHA1(f2d0c43073d76d662c3a997b1fd081016e4c7a7d), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 36)" ) GAME_CUSTOM( 199?, m4eaw__9, m4eaw, "eon01b.p1", 0x0000, 0x010000, CRC(66f281db) SHA1(b9bd37c53ab7c8838ec87062c8b9da39779b9fa9), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 37)" ) GAME_CUSTOM( 199?, m4eaw__aa, m4eaw, "eon01bd.p1", 0x0000, 0x010000, CRC(66a378ca) SHA1(6639f36df67af8bdd381ad3e16e0adc78a4552f4), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 38)" ) @@ -941,8 +960,9 @@ GAME_CUSTOM( 199?, m4eaw__ae, m4eaw, "eon01dr.p1", 0x0000, 0x0100 GAME_CUSTOM( 199?, m4eaw__af, m4eaw, "eon01dy.p1", 0x0000, 0x010000, CRC(d5a39761) SHA1(9b69f9e45d87f53196e5d4fd595300beb573ff49), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4eaw__ag, m4eaw, "eon01k.p1", 0x0000, 0x010000, CRC(1d34dea7) SHA1(546db8247d0c78501fe4ec818d614e8f451b0076), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 44)" ) GAME_CUSTOM( 199?, m4eaw__ah, m4eaw, "eon01r.p1", 0x0000, 0x010000, CRC(7c70a508) SHA1(2c5835f36ef4c215ff9f6f6cc350f0916b397b7b), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 45)" ) -GAME_CUSTOM( 199?, m4eaw__ai, m4eaw, "eon01s.p1", 0x0000, 0x010000, CRC(e2e9ce10) SHA1(41a08b17285d6591b4a5cb6b1b6cc40ee7d35f01), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 46)" ) GAME_CUSTOM( 199?, m4eaw__aj, m4eaw, "eon01y.p1", 0x0000, 0x010000, CRC(ddc4f7d1) SHA1(bbc21ba153541df1507e01d4a25a1a669c8eab62), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 47)" ) +// "(C)1991 BARCREST" and "ER2 0.1" +GAME_CUSTOM( 199?, m4eaw__at, m4eaw, "er2s.p1", 0x0000, 0x010000, CRC(bfee8157) SHA1(3ce5a2ec16f06c753a054a9f645efbcd26f411ab), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1)" ) GAME_CUSTOM( 199?, m4eaw__ak, m4eaw, "er2ad.p1", 0x0000, 0x010000, CRC(4e5fcc8b) SHA1(8176ca01ad49f39e1337a085cf3a1fd33803c517), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 48)" ) GAME_CUSTOM( 199?, m4eaw__al, m4eaw, "er2b.p1", 0x0000, 0x010000, CRC(999c6510) SHA1(bc70b88183df84ea0e18e1017ab9d74545ce7588), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 49)" ) GAME_CUSTOM( 199?, m4eaw__am, m4eaw, "er2bd.p1", 0x0000, 0x010000, CRC(3f50573a) SHA1(46527b08d751372df09d61fd67054600b6e933f3), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 50)" ) @@ -952,24 +972,18 @@ GAME_CUSTOM( 199?, m4eaw__ap, m4eaw, "er2dr.p1", 0x0000, 0x0100 GAME_CUSTOM( 199?, m4eaw__aq, m4eaw, "er2dy.p1", 0x0000, 0x010000, CRC(f20c4b31) SHA1(744ce6065b3bea3a0c128a4848282cbca2bc8056), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 54)" ) GAME_CUSTOM( 199?, m4eaw__ar, m4eaw, "er2k.p1", 0x0000, 0x010000, CRC(2c3661bb) SHA1(5f5a6b47dacdb2184d3ac9646da616283743fcbf), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 55)" ) GAME_CUSTOM( 199?, m4eaw__as, m4eaw, "er2r.p1", 0x0000, 0x010000, CRC(cb636e43) SHA1(44df3adc1d5af4c1930596f34f41884e7731be62), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 56)" ) -GAME_CUSTOM( 199?, m4eaw__at, m4eaw, "er2s.p1", 0x0000, 0x010000, CRC(bfee8157) SHA1(3ce5a2ec16f06c753a054a9f645efbcd26f411ab), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 57)" ) GAME_CUSTOM( 199?, m4eaw__au, m4eaw, "er2y.p1", 0x0000, 0x010000, CRC(91369b00) SHA1(7427fcf9e350bc9a3883577de5ee4a4ab5ff63b0), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 58)" ) -GAME_CUSTOM( 199?, m4eaw__av, m4eaw, "er4ad.p1", 0x0000, 0x010000, CRC(93fff89d) SHA1(3f90168efa5ecaf7707ef357616638a9d5ab746f), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4eaw__aw, m4eaw, "er4b.p1", 0x0000, 0x010000, CRC(cb39fda7) SHA1(4a31d2ff53942a658992a5e13c2b617da5fb03ce), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 60)" ) -GAME_CUSTOM( 199?, m4eaw__ax, m4eaw, "er4bd.p1", 0x0000, 0x010000, CRC(a5e395d7) SHA1(3f134a2ce3788ac84a6de096306c651e6b2d6a4a), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4eaw__ay, m4eaw, "er4d.p1", 0x0000, 0x010000, CRC(33612923) SHA1(1129ced207aaf46045f20a1ef1a37af8ec537bb0), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4eaw__az, m4eaw, "er4dk.p1", 0x0000, 0x010000, CRC(df41d570) SHA1(4a2db04ee51bb811ac3aee5b2c3c1f1a2201f7ec), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4eaw__a0, m4eaw, "er4dy.p1", 0x0000, 0x010000, CRC(7df882e6) SHA1(1246220a5ac8a4454a7f3a359a5a00319395095d), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 64)" ) -GAME_CUSTOM( 199?, m4eaw__a1, m4eaw, "er4k.p1", 0x0000, 0x010000, CRC(9803cc0d) SHA1(1516c3836919a7a2cc32711a9bf2d3bf3d6b82c0), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4eaw__a2, m4eaw, "er4y.p1", 0x0000, 0x010000, CRC(d8dece2d) SHA1(8482092434e1e94e6648e402c8b518c2f0fcc28e), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 66)" ) +// "(C)1991 BARCREST" and "ER8 0.1" +GAME_CUSTOM( 199?, m4eaw__a9, m4eaw, "er8s.p1", 0x0000, 0x010000, CRC(5d36bbc6) SHA1(4d0cd8e939f22d919671dc97c3d97bf6191e738f), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1)" ) GAME_CUSTOM( 199?, m4eaw__a3, m4eaw, "er8ad.p1", 0x0000, 0x010000, CRC(ba059e06) SHA1(f6bb9092c9d18bccde111f8e20e79b8b4e6d8593), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 67)" ) GAME_CUSTOM( 199?, m4eaw__a4, m4eaw, "er8b.p1", 0x0000, 0x010000, CRC(27c7f954) SHA1(93305d1d4a5781de56f1e54801e25b29b6713ef0), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 68)" ) GAME_CUSTOM( 199?, m4eaw__a5, m4eaw, "er8c.p1", 0x0000, 0x010000, CRC(cee94fb3) SHA1(01ec098016b6946c3fbf96b2071076316bbd5795), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 69)" ) GAME_CUSTOM( 199?, m4eaw__a6, m4eaw, "er8dk.p1", 0x0000, 0x010000, CRC(789c5e1d) SHA1(5f5b686a770f4ab0cfa8e8ae21b3805ef6102516), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 70)" ) GAME_CUSTOM( 199?, m4eaw__a7, m4eaw, "er8dy.p1", 0x0000, 0x010000, CRC(4adf568b) SHA1(dd21b547211566ad5cb018a0205d887b7f860bc9), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 71)" ) GAME_CUSTOM( 199?, m4eaw__a8, m4eaw, "er8k.p1", 0x0000, 0x010000, CRC(c76140e4) SHA1(6c097fdd018eb594a84ceb7712a45201490ca370), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 72)" ) -GAME_CUSTOM( 199?, m4eaw__a9, m4eaw, "er8s.p1", 0x0000, 0x010000, CRC(5d36bbc6) SHA1(4d0cd8e939f22d919671dc97c3d97bf6191e738f), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 73)" ) GAME_CUSTOM( 199?, m4eaw__ba, m4eaw, "er8y.p1", 0x0000, 0x010000, CRC(8a1aa409) SHA1(a7ae62e1038e52a111de3004e2160838e0d102d0), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 74)" ) +// "(C)1991 BARCREST" and "ERT 0.2" +GAME_CUSTOM( 199?, m4eaw__bk, m4eaw, "erts.p1", 0x0000, 0x010000, CRC(185b47bb) SHA1(377cb42878572a3e94dd6be6fb106ecacb3c5059), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2)" ) GAME_CUSTOM( 199?, m4eaw__bb, m4eaw, "ertad.p1", 0x0000, 0x010000, CRC(75798f2d) SHA1(68939c187d841aa046a4f7dd8f39e8387969460c), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 75)" ) GAME_CUSTOM( 199?, m4eaw__bc, m4eaw, "ertb.p1", 0x0000, 0x010000, CRC(c6407839) SHA1(79d73d79b389682586fdf7c9c25d8e2ea5943bb6), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 76)" ) GAME_CUSTOM( 199?, m4eaw__bd, m4eaw, "ertbd.p1", 0x0000, 0x010000, CRC(4365e267) SHA1(b1853c3ddb707cb114e6bb2d780b142b80f099b6), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 77)" ) @@ -979,8 +993,9 @@ GAME_CUSTOM( 199?, m4eaw__bg, m4eaw, "ertdr.p1", 0x0000, 0x0100 GAME_CUSTOM( 199?, m4eaw__bh, m4eaw, "ertdy.p1", 0x0000, 0x010000, CRC(5a7c77fa) SHA1(37c212db131b682fd8d293a8cf8efad2e80a8a18), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 81)" ) GAME_CUSTOM( 199?, m4eaw__bi, m4eaw, "ertk.p1", 0x0000, 0x010000, CRC(19959bd3) SHA1(617f7079b39b0ef41ebb0b5f89053d723a28824d), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 82)" ) GAME_CUSTOM( 199?, m4eaw__bj, m4eaw, "ertr.p1", 0x0000, 0x010000, CRC(3264f04a) SHA1(88d1f6857f3a0acd89db1563fd5f24582b578765), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 83)" ) -GAME_CUSTOM( 199?, m4eaw__bk, m4eaw, "erts.p1", 0x0000, 0x010000, CRC(185b47bb) SHA1(377cb42878572a3e94dd6be6fb106ecacb3c5059), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 84)" ) GAME_CUSTOM( 199?, m4eaw__bl, m4eaw, "erty.p1", 0x0000, 0x010000, CRC(38adc77e) SHA1(7a925e2aa946fdcf38df454ec733da1ce9bdc495), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 85)" ) +// "(C)1991 BARCREST" and "ER4 0.1" (startup is EUN 0.1) +GAME_CUSTOM( 199?, m4eaw__bw, m4eaw, "eun01s.p1", 0x0000, 0x010000, CRC(d0b49fc6) SHA1(4062d9763010d42666660e383e52818d572b61b9), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 / ER4 0.1)" ) GAME_CUSTOM( 199?, m4eaw__bm, m4eaw, "eun01ad.p1", 0x0000, 0x010000, CRC(0148eb57) SHA1(7ebf73402ffe68cfb045a906ed039407bd173b88), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 86)" ) GAME_CUSTOM( 199?, m4eaw__bn, m4eaw, "eun01b.p1", 0x0000, 0x010000, CRC(ad152cda) SHA1(ca5c72a54e14f8b44fddfbc5c38c4e149432f593), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 87)" ) GAME_CUSTOM( 199?, m4eaw__bo, m4eaw, "eun01bd.p1", 0x0000, 0x010000, CRC(6b0abd7c) SHA1(a6f74096bfffa082a441c094b5acadd5929ac36a), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 88)" ) @@ -991,9 +1006,9 @@ GAME_CUSTOM( 199?, m4eaw__bs, m4eaw, "eun01dr.p1", 0x0000, 0x0100 GAME_CUSTOM( 199?, m4eaw__bt, m4eaw, "eun01dy.p1", 0x0000, 0x010000, CRC(93db5d3a) SHA1(ddd209b22ed396d3329b9522649db6dda64958b7), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 93)" ) GAME_CUSTOM( 199?, m4eaw__bu, m4eaw, "eun01k.p1", 0x0000, 0x010000, CRC(9fca43fd) SHA1(f7626f122dedb217002888971100d8a34910b48d), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 94)" ) GAME_CUSTOM( 199?, m4eaw__bv, m4eaw, "eun01r.p1", 0x0000, 0x010000, CRC(15b8eb9e) SHA1(e4babaf526e6dd45bb4b7f7441a08cfbec12c661), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 95)" ) -GAME_CUSTOM( 199?, m4eaw__bw, m4eaw, "eun01s.p1", 0x0000, 0x010000, CRC(d0b49fc6) SHA1(4062d9763010d42666660e383e52818d572b61b9), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 96)" ) GAME_CUSTOM( 199?, m4eaw__bx, m4eaw, "eun01y.p1", 0x0000, 0x010000, CRC(88d3c370) SHA1(6c3839a9c89ae67f80ab932ec70ebaf1240de9bb), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (set 97)" ) +// bad dump? wrong size ROM_START( m4eaw__bz ) \ ROM_REGION( 0x010000, "maincpu", 0 ) ROM_LOAD( "everyones a winner v2-5p", 0x8000, 0x008000, CRC(eb8f2fc5) SHA1(0d3614bd5ff561d17bef0d1e620f2f812b8fed5b)) @@ -1017,48 +1032,59 @@ GAME(199?, m4eaw__bz, m4eaw ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,"Bar ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4wta, 0, "wta55", 0x0000, 0x010000, CRC(df3e66cd) SHA1(68e769816cb1a71dea8a3ccf4636414c45c01646), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4wta__b, m4wta, "windy.p1", 0x0000, 0x010000, CRC(d8b78c2d) SHA1(d8c2a2ac30a9b876acfbe99e3c540ba0e82cde33), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4wta__d, m4wta, "wins.p1", 0x0000, 0x010000, CRC(d79d1e5b) SHA1(722657423a605d6d272d61e4e00b4055ed05f98d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4wta__e, m4wta, "winy.p1", 0x0000, 0x010000, CRC(5ff8ed08) SHA1(9567db64e8ebf25ecb22236598cc88a3106f0e36), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4wta__f, m4wta, "wn5ad.p1", 0x0000, 0x010000, CRC(0eb0845d) SHA1(57a2ca27672119e71af3b990cedcf52dd89e24cc), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4wta__g, m4wta, "wn5b.p1", 0x0000, 0x010000, CRC(82cefba2) SHA1(07753a5f0d455422f33495a6f050c8e16a92e087), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4wta__h, m4wta, "wn5bd.p1", 0x0000, 0x010000, CRC(19d25b26) SHA1(91459c87e95d9800c5f77fd0c7f72f8a1488dc37), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4wta__i, m4wta, "wn5d.p1", 0x0000, 0x010000, CRC(8a3d6bed) SHA1(a20f24cd5216976913c0405f54883d6080986867), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4wta__j, m4wta, "wn5dk.p1", 0x0000, 0x010000, CRC(1dfcb2bc) SHA1(b1a73a7758c3126f7b13156835c91a4900cbe6e0), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4wta__k, m4wta, "wn5dy.p1", 0x0000, 0x010000, CRC(d45e1db0) SHA1(2524c4b60a89ea0ca15cf999fbd1f8d9029dfbb6), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4wta__l, m4wta, "wn5k.p1", 0x0000, 0x010000, CRC(71c34cb4) SHA1(e1b96dd30d8ab680128d76886691d06fcd2d48c0), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4wta__m, m4wta, "wn5s.p1", 0x0000, 0x010000, CRC(f6e925c1) SHA1(963f06462c73300757aad2371df4ebe28afca521), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4wta__n, m4wta, "wn5y.p1", 0x0000, 0x010000, CRC(7155f8b5) SHA1(f55f88fd7b0144cb7b64640d529b179dd056f5ec), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4wta__o, m4wta, "wn8b.p1", 0x0000, 0x010000, CRC(7e84f99c) SHA1(bef41b3e7906bdaadfa5741e9ae40028f4fd360f), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4wta__p, m4wta, "wn8c.p1", 0x0000, 0x010000, CRC(471ba65a) SHA1(6ede860bcf323ee75dd7f75a51e5d1166ee72abc), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4wta__q, m4wta, "wn8d.p1", 0x0000, 0x010000, CRC(eb2bd01e) SHA1(df74f8eb8fa411bab20ab522fd7c511a1370fe90), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4wta__r, m4wta, "wn8dk.p1", 0x0000, 0x010000, CRC(ec20a0bc) SHA1(61b615165a6e77cd85e1fa6aeb955307ec48d1b6), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4wta__s, m4wta, "wn8dy.p1", 0x0000, 0x010000, CRC(d2a1513c) SHA1(e4d2ad88846cbb6b393d3615bf10e1dea01de219), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4wta__t, m4wta, "wn8k.p1", 0x0000, 0x010000, CRC(3e15c690) SHA1(2fc1cca91ac5cc9abeac112e4d60e8fd57b07b94), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4wta__u, m4wta, "wn8s.p1", 0x0000, 0x010000, CRC(5c5a0f31) SHA1(301e595141dd6eb9250d71e591780e15a7d36423), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4wta__v, m4wta, "wn8y.p1", 0x0000, 0x010000, CRC(993cee6a) SHA1(26b2d5d3aa3465f90fe74960f183b8580ea2fbb1), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4wta__w, m4wta, "wnta2010", 0x0000, 0x010000, CRC(5b08faf8) SHA1(f4657041562044e17febfe77ad1f849545dcdaec), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4wta__x, m4wta, "wntad.p1", 0x0000, 0x010000, CRC(8502766e) SHA1(2a47c8f8ce8711b30962c5e8ef9093bdd3543551), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4wta__y, m4wta, "wntb.p1", 0x0000, 0x010000, CRC(1e3159f0) SHA1(ab9d0e9e6731b40c66c358d98c6481f31d9a0b0c), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4wta__z, m4wta, "wntbd.p1", 0x0000, 0x010000, CRC(91cc8978) SHA1(570ad4092bb148106fb2600f1e22b6cb6f57002a), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4wta__0, m4wta, "wntd.p1", 0x0000, 0x010000, CRC(ad68d804) SHA1(f301d0d267dd0020903f06b67ee6494b71258c68), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4wta__1, m4wta, "wntdk.p1", 0x0000, 0x010000, CRC(3a6b65b8) SHA1(1da0448e53a45fa249c14b5655cd0dc957ebb646), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4wta__2, m4wta, "wntdy.p1", 0x0000, 0x010000, CRC(2420634f) SHA1(5c6e891c34a6e2b3a6acb3856c1554145bb24d0d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4wta__3, m4wta, "wntk.p1", 0x0000, 0x010000, CRC(3d8d07c7) SHA1(4659e2459d956bbcf5ef2a605527317ccdafcccb), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4wta__4, m4wta, "wnts.p1", 0x0000, 0x010000, CRC(3a9b0878) SHA1(85e86cca1a3a079746cd4401767ba1d9fc31a938), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4wta__5, m4wta, "wnty.p1", 0x0000, 0x010000, CRC(edaa5ae7) SHA1(d24b9f37d75f13f16718374e48e6c003b0b3333f), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4wta__6, m4wta, "wta20p10.bin", 0x0000, 0x010000, CRC(c7f235b8) SHA1(a25f6f755140d70b0392985839b1729640cf5d5d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4wta__7, m4wta, "wta510l", 0x0000, 0x010000, CRC(9ce140ae) SHA1(01d53a5da0161ac4ecc861309f645d6eb47b4af5), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4wta__8, m4wta, "wta58tl", 0x0000, 0x010000, CRC(7275e865) SHA1(d5550646a062609cfc052fab81c533ca69171875), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4wta__9, m4wta, "wta_5p_4c.bin", 0x0000, 0x010000, CRC(54c51976) SHA1(70cae1f931615b993ac6a9e7ce2e529ad6d27da8), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4wta__aa, m4wta, "wtall20a", 0x0000, 0x010000, CRC(b53c951e) SHA1(24f96d16852a4fbaf49fbdf29a26d15877f07b18), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4wta__ab, m4wta, "wt_05__4.1_1", 0x0000, 0x010000, CRC(5e05485e) SHA1(062f16ca92518f746f5410a2b9b551542e1a68e3), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4wta__ac, m4wta, "wt_05__5.3_1", 0x0000, 0x010000, CRC(8a289bbd) SHA1(8ae0858716ed6aa02f6b4f93fd367c7cee85d13a), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4wta__ad, m4wta, "wta5.10", 0x0000, 0x010000, CRC(c1ae8e9a) SHA1(66c0b200202386a10b96b7141517a52921266950), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4wta__ae, m4wta, "wta5.4", 0x0000, 0x010000, CRC(00c64637) SHA1(54214edb107b28852a1bd3e095787bf9241e4fe3), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4wta__af, m4wta, "wta5.5n", 0x0000, 0x010000, CRC(85eed9b5) SHA1(6a11ff6a031b788524d23018e3af44767176246a), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 43)" ) -GAME_CUSTOM( 199?, m4wta__ag, m4wta, "wta5.8t", 0x0000, 0x010000, CRC(548122ab) SHA1(c611084e8a08d5556e458daf9cc721c0e5ba1948), "Barcrest","Winner Takes All (Barcrest) (MPU4) (set 44)" ) +// (C)1993 BARCREST and "WIN 0.6" +GAME_CUSTOM( 199?, m4wta, 0, "wins.p1", 0x0000, 0x010000, CRC(d79d1e5b) SHA1(722657423a605d6d272d61e4e00b4055ed05f98d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6)" ) +GAME_CUSTOM( 199?, m4wta__b, m4wta, "windy.p1", 0x0000, 0x010000, CRC(d8b78c2d) SHA1(d8c2a2ac30a9b876acfbe99e3c540ba0e82cde33), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6YD)" ) +GAME_CUSTOM( 199?, m4wta__e, m4wta, "winy.p1", 0x0000, 0x010000, CRC(5ff8ed08) SHA1(9567db64e8ebf25ecb22236598cc88a3106f0e36), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6Y)" ) +GAME_CUSTOM( 199?, m4wta__aa, m4wta, "wtall20a", 0x0000, 0x010000, CRC(b53c951e) SHA1(24f96d16852a4fbaf49fbdf29a26d15877f07b18), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6K)" ) +// (C)1993 BARCREST and "WN5 0.1" +GAME_CUSTOM( 199?, m4wta__f, m4wta, "wn5ad.p1", 0x0000, 0x010000, CRC(0eb0845d) SHA1(57a2ca27672119e71af3b990cedcf52dd89e24cc), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1AD)" ) +GAME_CUSTOM( 199?, m4wta__g, m4wta, "wn5b.p1", 0x0000, 0x010000, CRC(82cefba2) SHA1(07753a5f0d455422f33495a6f050c8e16a92e087), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1B)" ) +GAME_CUSTOM( 199?, m4wta__h, m4wta, "wn5bd.p1", 0x0000, 0x010000, CRC(19d25b26) SHA1(91459c87e95d9800c5f77fd0c7f72f8a1488dc37), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1BD)" ) +GAME_CUSTOM( 199?, m4wta__i, m4wta, "wn5d.p1", 0x0000, 0x010000, CRC(8a3d6bed) SHA1(a20f24cd5216976913c0405f54883d6080986867), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1D)" ) +GAME_CUSTOM( 199?, m4wta__j, m4wta, "wn5dk.p1", 0x0000, 0x010000, CRC(1dfcb2bc) SHA1(b1a73a7758c3126f7b13156835c91a4900cbe6e0), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1KD)" ) +GAME_CUSTOM( 199?, m4wta__k, m4wta, "wn5dy.p1", 0x0000, 0x010000, CRC(d45e1db0) SHA1(2524c4b60a89ea0ca15cf999fbd1f8d9029dfbb6), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1YD)" ) +GAME_CUSTOM( 199?, m4wta__l, m4wta, "wn5k.p1", 0x0000, 0x010000, CRC(71c34cb4) SHA1(e1b96dd30d8ab680128d76886691d06fcd2d48c0), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1K)" ) +GAME_CUSTOM( 199?, m4wta__m, m4wta, "wn5s.p1", 0x0000, 0x010000, CRC(f6e925c1) SHA1(963f06462c73300757aad2371df4ebe28afca521), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1)" ) +GAME_CUSTOM( 199?, m4wta__n, m4wta, "wn5y.p1", 0x0000, 0x010000, CRC(7155f8b5) SHA1(f55f88fd7b0144cb7b64640d529b179dd056f5ec), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1Y)" ) +// (C)1993 BARCREST and "WN8 0.1" +GAME_CUSTOM( 199?, m4wta__o, m4wta, "wn8b.p1", 0x0000, 0x010000, CRC(7e84f99c) SHA1(bef41b3e7906bdaadfa5741e9ae40028f4fd360f), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1B)" ) +GAME_CUSTOM( 199?, m4wta__p, m4wta, "wn8c.p1", 0x0000, 0x010000, CRC(471ba65a) SHA1(6ede860bcf323ee75dd7f75a51e5d1166ee72abc), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1C)" ) +GAME_CUSTOM( 199?, m4wta__q, m4wta, "wn8d.p1", 0x0000, 0x010000, CRC(eb2bd01e) SHA1(df74f8eb8fa411bab20ab522fd7c511a1370fe90), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1D)" ) +GAME_CUSTOM( 199?, m4wta__r, m4wta, "wn8dk.p1", 0x0000, 0x010000, CRC(ec20a0bc) SHA1(61b615165a6e77cd85e1fa6aeb955307ec48d1b6), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1KD)" ) +GAME_CUSTOM( 199?, m4wta__s, m4wta, "wn8dy.p1", 0x0000, 0x010000, CRC(d2a1513c) SHA1(e4d2ad88846cbb6b393d3615bf10e1dea01de219), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1YD)" ) +GAME_CUSTOM( 199?, m4wta__t, m4wta, "wn8k.p1", 0x0000, 0x010000, CRC(3e15c690) SHA1(2fc1cca91ac5cc9abeac112e4d60e8fd57b07b94), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1K)" ) +GAME_CUSTOM( 199?, m4wta__u, m4wta, "wn8s.p1", 0x0000, 0x010000, CRC(5c5a0f31) SHA1(301e595141dd6eb9250d71e591780e15a7d36423), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1)" ) +GAME_CUSTOM( 199?, m4wta__v, m4wta, "wn8y.p1", 0x0000, 0x010000, CRC(993cee6a) SHA1(26b2d5d3aa3465f90fe74960f183b8580ea2fbb1), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1Y)" ) +// "(C)1993 BARCREST" and "WNT 0.1" // bad char alarm, hack? +GAME_CUSTOM( 199?, m4wta__w, m4wta, "wnta2010", 0x0000, 0x010000, CRC(5b08faf8) SHA1(f4657041562044e17febfe77ad1f849545dcdaec), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1, hack?)" ) +// "(C)1993 BARCREST" and "WNT 0.1" +GAME_CUSTOM( 199?, m4wta__x, m4wta, "wntad.p1", 0x0000, 0x010000, CRC(8502766e) SHA1(2a47c8f8ce8711b30962c5e8ef9093bdd3543551), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1AD)" ) +GAME_CUSTOM( 199?, m4wta__y, m4wta, "wntb.p1", 0x0000, 0x010000, CRC(1e3159f0) SHA1(ab9d0e9e6731b40c66c358d98c6481f31d9a0b0c), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1B)" ) +GAME_CUSTOM( 199?, m4wta__z, m4wta, "wntbd.p1", 0x0000, 0x010000, CRC(91cc8978) SHA1(570ad4092bb148106fb2600f1e22b6cb6f57002a), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1BD)" ) +GAME_CUSTOM( 199?, m4wta__0, m4wta, "wntd.p1", 0x0000, 0x010000, CRC(ad68d804) SHA1(f301d0d267dd0020903f06b67ee6494b71258c68), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1D)" ) +GAME_CUSTOM( 199?, m4wta__1, m4wta, "wntdk.p1", 0x0000, 0x010000, CRC(3a6b65b8) SHA1(1da0448e53a45fa249c14b5655cd0dc957ebb646), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1KD)" ) +GAME_CUSTOM( 199?, m4wta__2, m4wta, "wntdy.p1", 0x0000, 0x010000, CRC(2420634f) SHA1(5c6e891c34a6e2b3a6acb3856c1554145bb24d0d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1YD)" ) +GAME_CUSTOM( 199?, m4wta__3, m4wta, "wntk.p1", 0x0000, 0x010000, CRC(3d8d07c7) SHA1(4659e2459d956bbcf5ef2a605527317ccdafcccb), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1K)" ) +GAME_CUSTOM( 199?, m4wta__4, m4wta, "wnts.p1", 0x0000, 0x010000, CRC(3a9b0878) SHA1(85e86cca1a3a079746cd4401767ba1d9fc31a938), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1)" ) +GAME_CUSTOM( 199?, m4wta__5, m4wta, "wnty.p1", 0x0000, 0x010000, CRC(edaa5ae7) SHA1(d24b9f37d75f13f16718374e48e6c003b0b3333f), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1Y)" ) +// "(C)1996 B.W.B." and "WNC 1.3" // bad char alarm +GAME_CUSTOM( 199?, m4wta__7, m4wta, "wta510l", 0x0000, 0x010000, CRC(9ce140ae) SHA1(01d53a5da0161ac4ecc861309f645d6eb47b4af5), "Bwb / hack?","Winner Takes All (Barcrest) (MPU4) (WNC 1.3, set 1)" ) +GAME_CUSTOM( 199?, m4wta__ad, m4wta, "wta5.10", 0x0000, 0x010000, CRC(c1ae8e9a) SHA1(66c0b200202386a10b96b7141517a52921266950), "Bwb / hack?","Winner Takes All (Barcrest) (MPU4) (WNC 1.3, set 2)" ) +// "(C)1996 B.W.B." and "WN8 2.2" // bad char alarm +GAME_CUSTOM( 199?, m4wta__8, m4wta, "wta58tl", 0x0000, 0x010000, CRC(7275e865) SHA1(d5550646a062609cfc052fab81c533ca69171875), "Bwb / hack?","Winner Takes All (Barcrest) (MPU4) (WN8 2.2, set 1)" ) +GAME_CUSTOM( 199?, m4wta__ag, m4wta, "wta5.8t", 0x0000, 0x010000, CRC(548122ab) SHA1(c611084e8a08d5556e458daf9cc721c0e5ba1948), "Bwb / hack?","Winner Takes All (Barcrest) (MPU4) (WN8 2.2, set 2)" ) +// "(C)1996 B.W.B." and "WN4 1.1" +GAME_CUSTOM( 199?, m4wta__9, m4wta, "wta_5p_4c.bin", 0x0000, 0x010000, CRC(54c51976) SHA1(70cae1f931615b993ac6a9e7ce2e529ad6d27da8), "Bwb / hack?","Winner Takes All (Barcrest) (MPU4) (WN4 1.1 K5)" ) +GAME_CUSTOM( 199?, m4wta__ab, m4wta, "wt_05__4.1_1", 0x0000, 0x010000, CRC(5e05485e) SHA1(062f16ca92518f746f5410a2b9b551542e1a68e3), "Bwb / hack?","Winner Takes All (Barcrest) (MPU4) (WN4 1.1 5)" ) +GAME_CUSTOM( 199?, m4wta__ae, m4wta, "wta5.4", 0x0000, 0x010000, CRC(00c64637) SHA1(54214edb107b28852a1bd3e095787bf9241e4fe3), "Bwb / hack?","Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack?)" ) // bad char alarm +// "(C)1996 B.W.B." and "WN5 3.0" +GAME_CUSTOM( 199?, m4wta__ac, m4wta, "wt_05__5.3_1", 0x0000, 0x010000, CRC(8a289bbd) SHA1(8ae0858716ed6aa02f6b4f93fd367c7cee85d13a), "Bwb / hack?","Winner Takes All (Barcrest) (MPU4) (WN5 3.0 5)" ) +// "BILLY WHIZZ" and "V1 0.1" +GAME_CUSTOM( 199?, m4wta__6, m4wta, "wta20p10.bin", 0x0000, 0x010000, CRC(c7f235b8) SHA1(a25f6f755140d70b0392985839b1729640cf5d5d), "hack","Winner Takes All (Barcrest) (MPU4) (V1 0.1, hack)" ) +// "197 COCO" and "WN4 1.1" (hack) +GAME_CUSTOM( 199?, m4wta__d, m4wta, "wta55", 0x0000, 0x010000, CRC(df3e66cd) SHA1(68e769816cb1a71dea8a3ccf4636414c45c01646), "hack","Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack, set 1)" ) +GAME_CUSTOM( 199?, m4wta__af, m4wta, "wta5.5n", 0x0000, 0x010000, CRC(85eed9b5) SHA1(6a11ff6a031b788524d23018e3af44767176246a), "hack","Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack, set 2)" ) #define M4GOODTM_EXTRA_ROMS \ @@ -1152,7 +1178,7 @@ GAME_CUSTOM( 199?, m4goodtm__a6, m4goodtm, "gts10y.p1", 0x0000, 0x020000, ROM_REGION( 0x48, "fakechr", 0 ) \ ROM_LOAD( "tri98.chr", 0x0000, 0x000048, CRC(8a4532a8) SHA1(c128fd513bbcba68a1c75a11e09a54ba1d23d6f4) ) \ ROM_REGION( 0x100000, "msm6376", 0 ) \ - ROM_LOAD( "jagsnd.p1", 0x080000, 0x080000, CRC(7488f7a7) SHA1(d581e9d6b5052ee8fee353a83e9d9031443d060a) ) + ROM_LOAD( "jagsnd.p1", 0x000000, 0x080000, CRC(7488f7a7) SHA1(d581e9d6b5052ee8fee353a83e9d9031443d060a) ) #undef GAME_CUSTOM #define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ @@ -1162,16 +1188,20 @@ GAME_CUSTOM( 199?, m4goodtm__a6, m4goodtm, "gts10y.p1", 0x0000, 0x020000, M4JPGEM_EXTRA_ROMS \ ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4jpgem, 0, "cg4ad.p1", 0x0000, 0x010000, CRC(417c98c1) SHA1(2ce23e27742c418d5ebaa0f4f0597e29955ea57d), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 1)" ) + +// sets below give a hopper sense error (casino / club sets?) +// "(C)1991 BARCREST" and "CG4 0.7" +GAME_CUSTOM( 199?, m4jpgem, 0, "cg4s.p1", 0x0000, 0x010000, CRC(f25eba0b) SHA1(250189b7fb8aa82a8696c3a0099eb13ec74eeb10), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (CG4 0.7)" ) +GAME_CUSTOM( 199?, m4jpgem__g, m4jpgem, "cg4ad.p1", 0x0000, 0x010000, CRC(417c98c1) SHA1(2ce23e27742c418d5ebaa0f4f0597e29955ea57d), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (CG4 0.7AD)" ) GAME_CUSTOM( 199?, m4jpgem__a, m4jpgem, "cg4b.p1", 0x0000, 0x010000, CRC(c57cca63) SHA1(80a440912362d55cac6bc77b6ff6d6672af378c6), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4jpgem__b, m4jpgem, "cg4bd.p1", 0x0000, 0x010000, CRC(7604ea50) SHA1(3d6eee763bd21119ab52a2388229da076caf78a4), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4jpgem__c, m4jpgem, "cg4d.p1", 0x0000, 0x010000, CRC(87ea1087) SHA1(47f7c17fa3611745c881669ff50559e4b4386fd9), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4jpgem__d, m4jpgem, "cg4dk.p1", 0x0000, 0x010000, CRC(230284fb) SHA1(39ab2abdd8d3af4818e4e3738529f020055ba659), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4jpgem__e, m4jpgem, "cg4dy.p1", 0x0000, 0x010000, CRC(7d02342d) SHA1(097c9c9dc84bd00f1ddd64b1f9564f0cf7a9023f), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4jpgem__f, m4jpgem, "cg4k.p1", 0x0000, 0x010000, CRC(ba4ef5a8) SHA1(1673985aee634aa5c8129cc1239ce08fb9f5da2c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4jpgem__g, m4jpgem, "cg4s.p1", 0x0000, 0x010000, CRC(f25eba0b) SHA1(250189b7fb8aa82a8696c3a0099eb13ec74eeb10), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4jpgem__h, m4jpgem, "cg4y.p1", 0x0000, 0x010000, CRC(237098d3) SHA1(9f54ed0d9ce37f3b4e6dca136fe4a12ba79c89f9), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4jpgem__i, m4jpgem, "cgt03ad.p1", 0x0000, 0x010000, CRC(88842c4a) SHA1(c86987b44f04cf28a6f68300e4345f635455d4bf), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 10)" ) +// "(C)1991 BARCREST" and "CG4 0.3" (startup shows CGT 0.3) +GAME_CUSTOM( 199?, m4jpgem__i, m4jpgem, "cgt03ad.p1", 0x0000, 0x010000, CRC(88842c4a) SHA1(c86987b44f04cf28a6f68300e4345f635455d4bf), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (CGT 0.3AD / CG4 0.3)" ) GAME_CUSTOM( 199?, m4jpgem__j, m4jpgem, "cgt03b.p1", 0x0000, 0x010000, CRC(99634ce1) SHA1(9fe867b0619070f563fb72b4415e4a9263c808e7), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4jpgem__k, m4jpgem, "cgt03bd.p1", 0x0000, 0x010000, CRC(be984100) SHA1(dfa7d97f02dc988b7743a1f57ab08c406f712559), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4jpgem__l, m4jpgem, "cgt03d.p1", 0x0000, 0x010000, CRC(aba3a305) SHA1(9a0203f830a0a8c6013eb5824bd48373c589dcb5), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 13)" ) @@ -1182,8 +1212,11 @@ GAME_CUSTOM( 199?, m4jpgem__p, m4jpgem, "cgt03k.p1", 0x0000, 0x010000, CR GAME_CUSTOM( 199?, m4jpgem__q, m4jpgem, "cgt03r.p1", 0x0000, 0x010000, CRC(85dd3733) SHA1(10b8c4d147d4b534ce31394d5ba69806b83a297e), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4jpgem__r, m4jpgem, "cgt03s.p1", 0x0000, 0x010000, CRC(b516cbcd) SHA1(c04d32818f9f8772b2a945cf40075ce7844b936e), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4jpgem__s, m4jpgem, "cgt03y.p1", 0x0000, 0x010000, CRC(57937087) SHA1(489bcbe5598020c24357f4c7b4e9096bc6332aa3), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4jpgem__t, m4jpgem, "cgts.p1", 0x0000, 0x010000, CRC(2a6f4489) SHA1(e410dd49cca50b3c051815a1b4be4bf2dc55f1af), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4jpgem__u, m4jpgem, "cgu02ad.p1", 0x0000, 0x010000, CRC(eee268a6) SHA1(ebc0d1e14ff27c5497b7c4e90e6fafa58916c83b), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 22)" ) +// "(C)1991 BARCREST" and "CG4 0.1" (startup shows CGT 0.1) +GAME_CUSTOM( 199?, m4jpgem__t, m4jpgem, "cgts.p1", 0x0000, 0x010000, CRC(2a6f4489) SHA1(e410dd49cca50b3c051815a1b4be4bf2dc55f1af), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (CGT 0.1 / CG4 0.1)" ) +// "(C)1991 BARCREST" and "CG4 0.2" (startup shows CGU 0.2) +GAME_CUSTOM( 199?, m4jpgem__3, m4jpgem, "cgu02s.p1", 0x0000, 0x010000, CRC(1cff0517) SHA1(162651a1af6273ea49490d0809a30ee9b13c728e), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 / CG4 0.2)" ) +GAME_CUSTOM( 199?, m4jpgem__u, m4jpgem, "cgu02ad.p1", 0x0000, 0x010000, CRC(eee268a6) SHA1(ebc0d1e14ff27c5497b7c4e90e6fafa58916c83b), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (CGU 0.2AD / CG4 0.2)" ) GAME_CUSTOM( 199?, m4jpgem__v, m4jpgem, "cgu02b.p1", 0x0000, 0x010000, CRC(7d05d069) SHA1(2a94b121528bf39939f5a8b36318c0073171997d), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 23)" ) GAME_CUSTOM( 199?, m4jpgem__w, m4jpgem, "cgu02bd.p1", 0x0000, 0x010000, CRC(d8fe05ec) SHA1(7e2de5c6ece6779d09daf23f3ab4b61817fad103), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4jpgem__x, m4jpgem, "cgu02d.p1", 0x0000, 0x010000, CRC(daaf1fe1) SHA1(f2606c454e191166d217c5f5c82e91794977384b), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 25)" ) @@ -1192,54 +1225,10 @@ GAME_CUSTOM( 199?, m4jpgem__z, m4jpgem, "cgu02dr.p1", 0x0000, 0x010000, CR GAME_CUSTOM( 199?, m4jpgem__0, m4jpgem, "cgu02dy.p1", 0x0000, 0x010000, CRC(5f1709d1) SHA1(36ae3cd57e5db956b8ef362043d5c63aea0da06a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4jpgem__1, m4jpgem, "cgu02k.p1", 0x0000, 0x010000, CRC(90058f14) SHA1(0e73410253e422ff2d4182b034624ab8dd996cb8), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 29)" ) GAME_CUSTOM( 199?, m4jpgem__2, m4jpgem, "cgu02r.p1", 0x0000, 0x010000, CRC(8f1d071b) SHA1(caa05465a12ca7ab6df0dce458caefb40dad818a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4jpgem__3, m4jpgem, "cgu02s.p1", 0x0000, 0x010000, CRC(1cff0517) SHA1(162651a1af6273ea49490d0809a30ee9b13c728e), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 31)" ) GAME_CUSTOM( 199?, m4jpgem__4, m4jpgem, "cgu02y.p1", 0x0000, 0x010000, CRC(a2468782) SHA1(5f9161cffc6d9ffe8c30c41434ab012c16a48dfd), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4jpgem__5, m4jpgem, "jagb.p1", 0x0000, 0x010000, CRC(75b9a4b6) SHA1(ecade0921cd535ee7f1b67767fa7d5ab3cd45b2c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4jpgem__6, m4jpgem, "jagd.p1", 0x0000, 0x010000, CRC(c7546004) SHA1(31bdbd6b681a3a2b13f380f2807691c0b0fec83e), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4jpgem__7, m4jpgem, "jagdk.p1", 0x0000, 0x010000, CRC(313f7a1f) SHA1(358a33878ca70f2bcdb1d5d79c39e357586ebe8b), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4jpgem__8, m4jpgem, "jagdy.p1", 0x0000, 0x010000, CRC(d105a41e) SHA1(365e382683362c815461801753fb03e2f084de65), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4jpgem__9, m4jpgem, "jags.p1", 0x0000, 0x010000, CRC(dd93f084) SHA1(5cb25b3beb6d7a7b83227a6bb8382cfbcc285887), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4jpgem__aa, m4jpgem, "jagy.p1", 0x0000, 0x010000, CRC(08d510ca) SHA1(b79c9fe8dc17152f3e8c601c27515beff1d67219), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4jpgem__ab, m4jpgem, "jg3ad.p1", 0x0000, 0x010000, CRC(501bb879) SHA1(a97519042b4a4ed03efbcad9f11f279184dec847), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4jpgem__ac, m4jpgem, "jg3b.p1", 0x0000, 0x010000, CRC(e568ae84) SHA1(9126f9b45633e7eb44626aa0ab40784c62870c8a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4jpgem__ad, m4jpgem, "jg3bd.p1", 0x0000, 0x010000, CRC(435d5d28) SHA1(1ea48323f48edc20ce1c28e4e7080e0824e73d3c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4jpgem__ae, m4jpgem, "jg3d.p1", 0x0000, 0x010000, CRC(774f9d41) SHA1(c99e9a46b1216f430007b5ebbf942899b5e691f9), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4jpgem__af, m4jpgem, "jg3dk.p1", 0x0000, 0x010000, CRC(c422e514) SHA1(172b25bf75a529b555e328cef77a3340609d818b), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 43)" ) -GAME_CUSTOM( 199?, m4jpgem__ag, m4jpgem, "jg3dy.p1", 0x0000, 0x010000, CRC(5d1c886f) SHA1(b49ab97ba6cdc810e7baa520ffad25f54c0d8412), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 44)" ) -GAME_CUSTOM( 199?, m4jpgem__ah, m4jpgem, "jg3k.p1", 0x0000, 0x010000, CRC(8e7985ae) SHA1(8c8de22aab2508b2317d5edde779d54ebe67ac92), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 45)" ) -GAME_CUSTOM( 199?, m4jpgem__ai, m4jpgem, "jg3s.p1", 0x0000, 0x010000, CRC(91945adc) SHA1(d80321fc4c2e67461d69df2164e3e290caa905bc), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 46)" ) -GAME_CUSTOM( 199?, m4jpgem__aj, m4jpgem, "jg3y.p1", 0x0000, 0x010000, CRC(bf96ad55) SHA1(48d828398f32c3ddfafeb84cfd777f8e668df1b3), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 47)" ) -GAME_CUSTOM( 199?, m4jpgem__ak, m4jpgem, "jg8b.p1", 0x0000, 0x010000, CRC(f2e3d009) SHA1(90c85f9a300d157d560b08ccabfe79f826780d74), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 48)" ) -GAME_CUSTOM( 199?, m4jpgem__al, m4jpgem, "jg8c.p1", 0x0000, 0x010000, CRC(cc24cf15) SHA1(0c4c28633f33c78570f5da17c64c2e90bf3d5cd0), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 49)" ) -GAME_CUSTOM( 199?, m4jpgem__am, m4jpgem, "jg8d.p1", 0x0000, 0x010000, CRC(58eff94c) SHA1(9acde535ad808789233876dd8076c03a8d56a9e7), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 50)" ) -GAME_CUSTOM( 199?, m4jpgem__an, m4jpgem, "jg8db.p1", 0x0000, 0x010000, CRC(3006a36a) SHA1(37297cae02c1fd5308ba9935537b35c565374a07), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 51)" ) -GAME_CUSTOM( 199?, m4jpgem__ao, m4jpgem, "jg8dk.p1", 0x0000, 0x010000, CRC(199401d7) SHA1(33eef070e437386c7ad0d834b40353047f1a6a6f), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 52)" ) -GAME_CUSTOM( 199?, m4jpgem__ap, m4jpgem, "jg8dy.p1", 0x0000, 0x010000, CRC(ead58bed) SHA1(cd0e151c843f5268edddb2f82555201deccac65a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 53)" ) -GAME_CUSTOM( 199?, m4jpgem__aq, m4jpgem, "jg8k.p1", 0x0000, 0x010000, CRC(f5b14363) SHA1(f0ace838cc0d0c262006bb514eff75903d92d679), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 54)" ) -GAME_CUSTOM( 199?, m4jpgem__ar, m4jpgem, "jg8s.p1", 0x0000, 0x010000, CRC(8cdd650a) SHA1(c4cb87513f0d7986e158b3c5ab1f034c8ba933a9), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 55)" ) -GAME_CUSTOM( 199?, m4jpgem__as, m4jpgem, "jgtad.p1", 0x0000, 0x010000, CRC(90e10b6c) SHA1(548c7537829ca9395cac460ccf76e0d566898e44), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 56)" ) -GAME_CUSTOM( 199?, m4jpgem__at, m4jpgem, "jgtb.p1", 0x0000, 0x010000, CRC(5f343a43) SHA1(033824e93b1fcd2f7c5f27a573a728747ef7b21a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 57)" ) -GAME_CUSTOM( 199?, m4jpgem__au, m4jpgem, "jgtbd.p1", 0x0000, 0x010000, CRC(50ba2771) SHA1(f487ed2eeff0369e3fa718de68e3ba4912fd7576), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 58)" ) -GAME_CUSTOM( 199?, m4jpgem__av, m4jpgem, "jgtd.p1", 0x0000, 0x010000, CRC(2625da4a) SHA1(b1f9d22a46bf20283c5735fce5768d9cef299f59), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4jpgem__aw, m4jpgem, "jgtdk.p1", 0x0000, 0x010000, CRC(94220901) SHA1(f62c9a59bb419e98f7de358f7fee072b08aab3f5), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 60)" ) -GAME_CUSTOM( 199?, m4jpgem__ax, m4jpgem, "jgtdr.p1", 0x0000, 0x010000, CRC(5011d1e3) SHA1(85e5d28d26449a951704698a4419cd2c0f7dd9c4), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4jpgem__ay, m4jpgem, "jgtdy.p1", 0x0000, 0x010000, CRC(6397e38c) SHA1(ed0c165a5ab27524374c540fd9bdcfd41ce8096c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4jpgem__az, m4jpgem, "jgtk.p1", 0x0000, 0x010000, CRC(cb30d644) SHA1(751fc5c7ae07e64c07a3e89e74ace09dd2b99a02), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4jpgem__a0, m4jpgem, "jgtr.p1", 0x0000, 0x010000, CRC(6224a93d) SHA1(6d36b64c2eaddf122a6a7e798b5efb44ec2e5b45), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 64)" ) -GAME_CUSTOM( 199?, m4jpgem__a1, m4jpgem, "jgts.p1", 0x0000, 0x010000, CRC(0e3810a7) SHA1(cf840bd84eba65d9dec2d6821a48112b6f2f9bca), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4jpgem__a2, m4jpgem, "jgty.p1", 0x0000, 0x010000, CRC(84830d1f) SHA1(a4184a5bd08393c35f22bc05315377bff74f666c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4jpgem__a3, m4jpgem, "jgu02ad.p1", 0x0000, 0x010000, CRC(ccec7d40) SHA1(75cc1a0dfda9592e35c24c030e04a768871a9e41), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 67)" ) -GAME_CUSTOM( 199?, m4jpgem__a4, m4jpgem, "jgu02b.p1", 0x0000, 0x010000, CRC(daf0ebe3) SHA1(2e73f7b8171c0be7d06bf6da22e0395d5241b043), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 68)" ) -GAME_CUSTOM( 199?, m4jpgem__a5, m4jpgem, "jgu02bd.p1", 0x0000, 0x010000, CRC(faf0100a) SHA1(c97b8eadfd473650ec497c7caa98e8efc59ecb6f), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 69)" ) -GAME_CUSTOM( 199?, m4jpgem__a6, m4jpgem, "jgu02d.p1", 0x0000, 0x010000, CRC(b46e3f66) SHA1(1ede9d794effbc8cc9f097a06b7df4023d3d47ba), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 70)" ) -GAME_CUSTOM( 199?, m4jpgem__a7, m4jpgem, "jgu02dk.p1", 0x0000, 0x010000, CRC(cdbf0041) SHA1(fb90d4f8112e169dab16f78fdea9d1b5306e05d6), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 71)" ) -GAME_CUSTOM( 199?, m4jpgem__a8, m4jpgem, "jgu02dr.p1", 0x0000, 0x010000, CRC(41f1f723) SHA1(96623358e6dc450dbdc769d176703917f67e767a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 72)" ) -GAME_CUSTOM( 199?, m4jpgem__a9, m4jpgem, "jgu02dy.p1", 0x0000, 0x010000, CRC(2023388d) SHA1(c9f1abaa12c78ac61304966b46044b82ea2ea3ff), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 73)" ) -GAME_CUSTOM( 199?, m4jpgem__ba, m4jpgem, "jgu02k.p1", 0x0000, 0x010000, CRC(615029e8) SHA1(aecba0fad8c74fef9a4d04e95df961432ac999b7), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 74)" ) -GAME_CUSTOM( 199?, m4jpgem__bb, m4jpgem, "jgu02r.p1", 0x0000, 0x010000, CRC(4bc55daa) SHA1(996f23bd66a4ef6ad8f77a28dc6ee67d9a293248), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 75)" ) -GAME_CUSTOM( 199?, m4jpgem__bc, m4jpgem, "jgu02s.p1", 0x0000, 0x010000, CRC(f8abd287) SHA1(906d2817f73ea21cf830b0bd9a1938d344cc0341), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 76)" ) -GAME_CUSTOM( 199?, m4jpgem__bd, m4jpgem, "jgu02y.p1", 0x0000, 0x010000, CRC(9b4325a8) SHA1(3d7c54691ed4d596acacec97e452a66b324957db), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 77)" ) -GAME_CUSTOM( 199?, m4jpgem__be, m4jpgem, "rrh01ad.p1", 0x0000, 0x010000, CRC(d4f21930) SHA1(cba034b42a3587c0e173bc06d80142d7e494c849), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 78)" ) +// "(C)1991 BARCREST" and "CG4 0.1" (startup shows RRH 0.1) +GAME_CUSTOM( 199?, m4jpgem__bo, m4jpgem, "rrh01s.p1", 0x0000, 0x010000, CRC(dea2f376) SHA1(92f43c75950553d9b76af8179192d106de95fc03), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 / CG4 0.1)" ) +GAME_CUSTOM( 199?, m4jpgem__be, m4jpgem, "rrh01ad.p1", 0x0000, 0x010000, CRC(d4f21930) SHA1(cba034b42a3587c0e173bc06d80142d7e494c849), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (RRH 0.1AD / CG4 0.1)" ) GAME_CUSTOM( 199?, m4jpgem__bf, m4jpgem, "rrh01b.p1", 0x0000, 0x010000, CRC(c85f9099) SHA1(f3c8f79c2e0cc58024202564761f4935f5d241b1), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 79)" ) GAME_CUSTOM( 199?, m4jpgem__bg, m4jpgem, "rrh01bd.p1", 0x0000, 0x010000, CRC(e2ee747a) SHA1(7f6cb93e3cbe4a2dd97d1ad15d17fa4f2f0a4b12), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 80)" ) GAME_CUSTOM( 199?, m4jpgem__bh, m4jpgem, "rrh01c.p1", 0x0000, 0x010000, CRC(00dfced2) SHA1(c497cb9835dca0d67f5ec6b6b1321a7b92612c9a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 81)" ) @@ -1249,8 +1238,58 @@ GAME_CUSTOM( 199?, m4jpgem__bk, m4jpgem, "rrh01dr.p1", 0x0000, 0x010000, CR GAME_CUSTOM( 199?, m4jpgem__bl, m4jpgem, "rrh01dy.p1", 0x0000, 0x010000, CRC(d89136fd) SHA1(40fd0978bc76d81bfb5dc2f1e4a0c1c95b7c4e00), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 85)" ) GAME_CUSTOM( 199?, m4jpgem__bm, m4jpgem, "rrh01k.p1", 0x0000, 0x010000, CRC(da4a08c9) SHA1(3a86c0a543a7192680663b465ddfd1fa338cfec5), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 86)" ) GAME_CUSTOM( 199?, m4jpgem__bn, m4jpgem, "rrh01r.p1", 0x0000, 0x010000, CRC(fb45c547) SHA1(8d9c35c47c0f03c9dc6727fc5f952d64e25336f7), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 87)" ) -GAME_CUSTOM( 199?, m4jpgem__bo, m4jpgem, "rrh01s.p1", 0x0000, 0x010000, CRC(dea2f376) SHA1(92f43c75950553d9b76af8179192d106de95fc03), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 88)" ) GAME_CUSTOM( 199?, m4jpgem__bp, m4jpgem, "rrh01y.p1", 0x0000, 0x010000, CRC(27014453) SHA1(febc118fcb8f048806237b38958c02d02b9f2874), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 89)" ) +// sets below boot (regular arcade sets?) +// "(C)1991 BARCREST" and "JAG 0.4" +GAME_CUSTOM( 199?, m4jpgem__9, m4jpgem, "jags.p1", 0x0000, 0x010000, CRC(dd93f084) SHA1(5cb25b3beb6d7a7b83227a6bb8382cfbcc285887), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JAG 0.4)" ) +GAME_CUSTOM( 199?, m4jpgem__5, m4jpgem, "jagb.p1", 0x0000, 0x010000, CRC(75b9a4b6) SHA1(ecade0921cd535ee7f1b67767fa7d5ab3cd45b2c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JAG 0.4B)" ) +GAME_CUSTOM( 199?, m4jpgem__6, m4jpgem, "jagd.p1", 0x0000, 0x010000, CRC(c7546004) SHA1(31bdbd6b681a3a2b13f380f2807691c0b0fec83e), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 34)" ) +GAME_CUSTOM( 199?, m4jpgem__7, m4jpgem, "jagdk.p1", 0x0000, 0x010000, CRC(313f7a1f) SHA1(358a33878ca70f2bcdb1d5d79c39e357586ebe8b), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 35)" ) +GAME_CUSTOM( 199?, m4jpgem__8, m4jpgem, "jagdy.p1", 0x0000, 0x010000, CRC(d105a41e) SHA1(365e382683362c815461801753fb03e2f084de65), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 36)" ) +GAME_CUSTOM( 199?, m4jpgem__aa, m4jpgem, "jagy.p1", 0x0000, 0x010000, CRC(08d510ca) SHA1(b79c9fe8dc17152f3e8c601c27515beff1d67219), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 38)" ) +// "(C)1991 BARCREST" and "JG3 0.1" +GAME_CUSTOM( 199?, m4jpgem__ai, m4jpgem, "jg3s.p1", 0x0000, 0x010000, CRC(91945adc) SHA1(d80321fc4c2e67461d69df2164e3e290caa905bc), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JG3 0.1)" ) +GAME_CUSTOM( 199?, m4jpgem__ab, m4jpgem, "jg3ad.p1", 0x0000, 0x010000, CRC(501bb879) SHA1(a97519042b4a4ed03efbcad9f11f279184dec847), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JG3 0.1AD)" ) +GAME_CUSTOM( 199?, m4jpgem__ac, m4jpgem, "jg3b.p1", 0x0000, 0x010000, CRC(e568ae84) SHA1(9126f9b45633e7eb44626aa0ab40784c62870c8a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 40)" ) +GAME_CUSTOM( 199?, m4jpgem__ad, m4jpgem, "jg3bd.p1", 0x0000, 0x010000, CRC(435d5d28) SHA1(1ea48323f48edc20ce1c28e4e7080e0824e73d3c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 41)" ) +GAME_CUSTOM( 199?, m4jpgem__ae, m4jpgem, "jg3d.p1", 0x0000, 0x010000, CRC(774f9d41) SHA1(c99e9a46b1216f430007b5ebbf942899b5e691f9), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 42)" ) +GAME_CUSTOM( 199?, m4jpgem__af, m4jpgem, "jg3dk.p1", 0x0000, 0x010000, CRC(c422e514) SHA1(172b25bf75a529b555e328cef77a3340609d818b), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 43)" ) +GAME_CUSTOM( 199?, m4jpgem__ag, m4jpgem, "jg3dy.p1", 0x0000, 0x010000, CRC(5d1c886f) SHA1(b49ab97ba6cdc810e7baa520ffad25f54c0d8412), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 44)" ) +GAME_CUSTOM( 199?, m4jpgem__ah, m4jpgem, "jg3k.p1", 0x0000, 0x010000, CRC(8e7985ae) SHA1(8c8de22aab2508b2317d5edde779d54ebe67ac92), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 45)" ) +GAME_CUSTOM( 199?, m4jpgem__aj, m4jpgem, "jg3y.p1", 0x0000, 0x010000, CRC(bf96ad55) SHA1(48d828398f32c3ddfafeb84cfd777f8e668df1b3), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 47)" ) +// "(C)1991 BARCREST" and "JG8 0.1" +GAME_CUSTOM( 199?, m4jpgem__ar, m4jpgem, "jg8s.p1", 0x0000, 0x010000, CRC(8cdd650a) SHA1(c4cb87513f0d7986e158b3c5ab1f034c8ba933a9), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JG8 0.1)" ) +GAME_CUSTOM( 199?, m4jpgem__ak, m4jpgem, "jg8b.p1", 0x0000, 0x010000, CRC(f2e3d009) SHA1(90c85f9a300d157d560b08ccabfe79f826780d74), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JG8 0.1B)" ) +GAME_CUSTOM( 199?, m4jpgem__al, m4jpgem, "jg8c.p1", 0x0000, 0x010000, CRC(cc24cf15) SHA1(0c4c28633f33c78570f5da17c64c2e90bf3d5cd0), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 49)" ) +GAME_CUSTOM( 199?, m4jpgem__am, m4jpgem, "jg8d.p1", 0x0000, 0x010000, CRC(58eff94c) SHA1(9acde535ad808789233876dd8076c03a8d56a9e7), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 50)" ) +GAME_CUSTOM( 199?, m4jpgem__an, m4jpgem, "jg8db.p1", 0x0000, 0x010000, CRC(3006a36a) SHA1(37297cae02c1fd5308ba9935537b35c565374a07), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 51)" ) +GAME_CUSTOM( 199?, m4jpgem__ao, m4jpgem, "jg8dk.p1", 0x0000, 0x010000, CRC(199401d7) SHA1(33eef070e437386c7ad0d834b40353047f1a6a6f), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 52)" ) +GAME_CUSTOM( 199?, m4jpgem__ap, m4jpgem, "jg8dy.p1", 0x0000, 0x010000, CRC(ead58bed) SHA1(cd0e151c843f5268edddb2f82555201deccac65a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 53)" ) +GAME_CUSTOM( 199?, m4jpgem__aq, m4jpgem, "jg8k.p1", 0x0000, 0x010000, CRC(f5b14363) SHA1(f0ace838cc0d0c262006bb514eff75903d92d679), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 54)" ) +// "(C)1991 BARCREST" and "JGT 0.3" +GAME_CUSTOM( 199?, m4jpgem__a1, m4jpgem, "jgts.p1", 0x0000, 0x010000, CRC(0e3810a7) SHA1(cf840bd84eba65d9dec2d6821a48112b6f2f9bca), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JGT 0.3)" ) +GAME_CUSTOM( 199?, m4jpgem__as, m4jpgem, "jgtad.p1", 0x0000, 0x010000, CRC(90e10b6c) SHA1(548c7537829ca9395cac460ccf76e0d566898e44), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JGT 0.3AD)" ) +GAME_CUSTOM( 199?, m4jpgem__at, m4jpgem, "jgtb.p1", 0x0000, 0x010000, CRC(5f343a43) SHA1(033824e93b1fcd2f7c5f27a573a728747ef7b21a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 57)" ) +GAME_CUSTOM( 199?, m4jpgem__au, m4jpgem, "jgtbd.p1", 0x0000, 0x010000, CRC(50ba2771) SHA1(f487ed2eeff0369e3fa718de68e3ba4912fd7576), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 58)" ) +GAME_CUSTOM( 199?, m4jpgem__av, m4jpgem, "jgtd.p1", 0x0000, 0x010000, CRC(2625da4a) SHA1(b1f9d22a46bf20283c5735fce5768d9cef299f59), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 59)" ) +GAME_CUSTOM( 199?, m4jpgem__aw, m4jpgem, "jgtdk.p1", 0x0000, 0x010000, CRC(94220901) SHA1(f62c9a59bb419e98f7de358f7fee072b08aab3f5), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 60)" ) +GAME_CUSTOM( 199?, m4jpgem__ax, m4jpgem, "jgtdr.p1", 0x0000, 0x010000, CRC(5011d1e3) SHA1(85e5d28d26449a951704698a4419cd2c0f7dd9c4), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 61)" ) +GAME_CUSTOM( 199?, m4jpgem__ay, m4jpgem, "jgtdy.p1", 0x0000, 0x010000, CRC(6397e38c) SHA1(ed0c165a5ab27524374c540fd9bdcfd41ce8096c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 62)" ) +GAME_CUSTOM( 199?, m4jpgem__az, m4jpgem, "jgtk.p1", 0x0000, 0x010000, CRC(cb30d644) SHA1(751fc5c7ae07e64c07a3e89e74ace09dd2b99a02), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 63)" ) +GAME_CUSTOM( 199?, m4jpgem__a0, m4jpgem, "jgtr.p1", 0x0000, 0x010000, CRC(6224a93d) SHA1(6d36b64c2eaddf122a6a7e798b5efb44ec2e5b45), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 64)" ) +GAME_CUSTOM( 199?, m4jpgem__a2, m4jpgem, "jgty.p1", 0x0000, 0x010000, CRC(84830d1f) SHA1(a4184a5bd08393c35f22bc05315377bff74f666c), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 66)" ) +// "(C)1991 BARCREST" and "JGU 0.2" +GAME_CUSTOM( 199?, m4jpgem__bc, m4jpgem, "jgu02s.p1", 0x0000, 0x010000, CRC(f8abd287) SHA1(906d2817f73ea21cf830b0bd9a1938d344cc0341), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JGU 0.2)" ) +GAME_CUSTOM( 199?, m4jpgem__a3, m4jpgem, "jgu02ad.p1", 0x0000, 0x010000, CRC(ccec7d40) SHA1(75cc1a0dfda9592e35c24c030e04a768871a9e41), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JGU 0.2AD)" ) +GAME_CUSTOM( 199?, m4jpgem__a4, m4jpgem, "jgu02b.p1", 0x0000, 0x010000, CRC(daf0ebe3) SHA1(2e73f7b8171c0be7d06bf6da22e0395d5241b043), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 68)" ) +GAME_CUSTOM( 199?, m4jpgem__a5, m4jpgem, "jgu02bd.p1", 0x0000, 0x010000, CRC(faf0100a) SHA1(c97b8eadfd473650ec497c7caa98e8efc59ecb6f), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 69)" ) +GAME_CUSTOM( 199?, m4jpgem__a6, m4jpgem, "jgu02d.p1", 0x0000, 0x010000, CRC(b46e3f66) SHA1(1ede9d794effbc8cc9f097a06b7df4023d3d47ba), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 70)" ) +GAME_CUSTOM( 199?, m4jpgem__a7, m4jpgem, "jgu02dk.p1", 0x0000, 0x010000, CRC(cdbf0041) SHA1(fb90d4f8112e169dab16f78fdea9d1b5306e05d6), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 71)" ) +GAME_CUSTOM( 199?, m4jpgem__a8, m4jpgem, "jgu02dr.p1", 0x0000, 0x010000, CRC(41f1f723) SHA1(96623358e6dc450dbdc769d176703917f67e767a), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 72)" ) +GAME_CUSTOM( 199?, m4jpgem__a9, m4jpgem, "jgu02dy.p1", 0x0000, 0x010000, CRC(2023388d) SHA1(c9f1abaa12c78ac61304966b46044b82ea2ea3ff), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 73)" ) +GAME_CUSTOM( 199?, m4jpgem__ba, m4jpgem, "jgu02k.p1", 0x0000, 0x010000, CRC(615029e8) SHA1(aecba0fad8c74fef9a4d04e95df961432ac999b7), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 74)" ) +GAME_CUSTOM( 199?, m4jpgem__bb, m4jpgem, "jgu02r.p1", 0x0000, 0x010000, CRC(4bc55daa) SHA1(996f23bd66a4ef6ad8f77a28dc6ee67d9a293248), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 75)" ) +GAME_CUSTOM( 199?, m4jpgem__bd, m4jpgem, "jgu02y.p1", 0x0000, 0x010000, CRC(9b4325a8) SHA1(3d7c54691ed4d596acacec97e452a66b324957db), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (set 77)" ) #define M4JPGEMC_EXTRA_ROMS \ ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ @@ -1265,7 +1304,9 @@ GAME_CUSTOM( 199?, m4jpgem__bp, m4jpgem, "rrh01y.p1", 0x0000, 0x010000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4jpgemc, 0, "gtc01ad.p1", 0x0000, 0x010000, CRC(e4f61afd) SHA1(36e007275cce0565c50b150dba4c8df272cd4c2e), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "CG4 0.1" (startup shows GTC) +GAME_CUSTOM( 199?, m4jpgemc, 0, "gtc01s.p1", 0x0000, 0x010000, CRC(af33337b) SHA1(97d28e224b73baa9d6d7b0c309385f57b6dd5d9b), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 / CG4 0.1)" ) +GAME_CUSTOM( 199?, m4jpgemc__j, m4jpgemc, "gtc01ad.p1", 0x0000, 0x010000, CRC(e4f61afd) SHA1(36e007275cce0565c50b150dba4c8df272cd4c2e), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1AD / CG4 0.1)" ) GAME_CUSTOM( 199?, m4jpgemc__a, m4jpgemc, "gtc01b.p1", 0x0000, 0x010000, CRC(e4e27c71) SHA1(b46da3f00134d3a2f17ceb35529adb598c75ee4e), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4jpgemc__b, m4jpgemc, "gtc01bd.p1", 0x0000, 0x010000, CRC(d2ea77b7) SHA1(4f66fa8d692f26ffa92ae3aff4f43257fc573e93), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4jpgemc__c, m4jpgemc, "gtc01c.p1", 0x0000, 0x010000, CRC(21c4c4f7) SHA1(f8a2de8453c095db80ff19018a72b15b949bace9), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 4)" ) @@ -1275,9 +1316,10 @@ GAME_CUSTOM( 199?, m4jpgemc__f, m4jpgemc, "gtc01dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4jpgemc__g, m4jpgemc, "gtc01dy.p1", 0x0000, 0x010000, CRC(713dec4a) SHA1(3cb1e3f5299a5145addaa677022e7d9a164072d9), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4jpgemc__h, m4jpgemc, "gtc01k.p1", 0x0000, 0x010000, CRC(fb5102ec) SHA1(36c9c50c8266707542b00cfc55f57ec454401f70), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4jpgemc__i, m4jpgemc, "gtc01r.p1", 0x0000, 0x010000, CRC(e311ca39) SHA1(602aee41400793f46f47ac9c8a9e6ce7f2d5f203), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4jpgemc__j, m4jpgemc, "gtc01s.p1", 0x0000, 0x010000, CRC(af33337b) SHA1(97d28e224b73baa9d6d7b0c309385f57b6dd5d9b), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4jpgemc__k, m4jpgemc, "gtc01y.p1", 0x0000, 0x010000, CRC(59e8557a) SHA1(8493b160427c21bbb2834c01b39f8a6a8b221bb3), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4jpgemc__l, m4jpgemc, "hge01ad.p1", 0x0000, 0x010000, CRC(bb201074) SHA1(eb954d165c2d96f952439277d255e3ec3326ada3), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 13)" ) +// "(C)1991 BARCREST" and "CG4 0.1" (startup shows HGE) +GAME_CUSTOM( 199?, m4jpgemc__v, m4jpgemc, "hge01s.p1", 0x0000, 0x010000, CRC(b79f8c42) SHA1(7d8b3352fbd9a80b86f5a8b22833d6f5c4b9854b), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 / CG4 0.1)" ) +GAME_CUSTOM( 199?, m4jpgemc__l, m4jpgemc, "hge01ad.p1", 0x0000, 0x010000, CRC(bb201074) SHA1(eb954d165c2d96f952439277d255e3ec3326ada3), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1AD / CG4 0.1)" ) GAME_CUSTOM( 199?, m4jpgemc__m, m4jpgemc, "hge01b.p1", 0x0000, 0x010000, CRC(d7ad2482) SHA1(ed90c4531608e66b14eb1079e85ea59573adf451), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4jpgemc__n, m4jpgemc, "hge01bd.p1", 0x0000, 0x010000, CRC(3ea0f524) SHA1(1967e5ec14c41c4140c7c39b07085f740c2d1f01), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 15)" ) GAME_CUSTOM( 199?, m4jpgemc__o, m4jpgemc, "hge01c.p1", 0x0000, 0x010000, CRC(498de7bf) SHA1(32dc31852fa69f7d2dd47bbcef695fcf5337f01f), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 16)" ) @@ -1287,7 +1329,6 @@ GAME_CUSTOM( 199?, m4jpgemc__r, m4jpgemc, "hge01dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4jpgemc__s, m4jpgemc, "hge01dy.p1", 0x0000, 0x010000, CRC(18ca3ae3) SHA1(ebb434a060564d3a1bc51876257729650e2903a6), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 20)" ) GAME_CUSTOM( 199?, m4jpgemc__t, m4jpgemc, "hge01k.p1", 0x0000, 0x010000, CRC(4161f733) SHA1(b551bb278666790f0c293c76d5c3fabf8f4d368e), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4jpgemc__u, m4jpgemc, "hge01r.p1", 0x0000, 0x010000, CRC(6dc8dc70) SHA1(e96fc4284ece65f76d5e9bd06c4a002de65bf4da), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4jpgemc__v, m4jpgemc, "hge01s.p1", 0x0000, 0x010000, CRC(b79f8c42) SHA1(7d8b3352fbd9a80b86f5a8b22833d6f5c4b9854b), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 23)" ) GAME_CUSTOM( 199?, m4jpgemc__w, m4jpgemc, "hge01y.p1", 0x0000, 0x010000, CRC(a96db093) SHA1(17520306112cee6f082829811e1f8c432c6aa354), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (set 24)" ) @@ -1306,6 +1347,8 @@ GAME_CUSTOM( 199?, m4jpgemc__w, m4jpgemc, "hge01y.p1", 0x0000, 0x010000, M4JOLGEM_EXTRA_ROMS \ ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) + + GAME_CUSTOM( 199?, m4jolgem, 0, "gem07s.p1", 0x0000, 0x020000, CRC(945ad0d2) SHA1(d636bc41a4f887d24affc0f5b644c5d5351cf0df), "Barcrest","Jolly Gems (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4jolgem__a, m4jolgem, "gem05s", 0x0000, 0x020000, CRC(b7ceafc2) SHA1(b66d846da5ff20df912d31695eaef146dbbe759e), "Barcrest","Jolly Gems (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4jolgem__b, m4jolgem, "gem06ad.p1", 0x0000, 0x020000, CRC(a3270974) SHA1(59992779415ff20b8589843510099b77c9b157fd), "Barcrest","Jolly Gems (Barcrest) (MPU4) (set 3)" ) @@ -1377,17 +1420,8 @@ GAME_CUSTOM( 199?, m4jolgem__ap, m4jolgem, "jgs_xa_x.1_0", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4hittop, 0, "hi4s.p1", 0x0000, 0x010000, CRC(3a04ee7a) SHA1(d23e9da2c22f6983a855bc519597ea9cea84f2dd), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4hittop__a, m4hittop, "chuad.p1", 0x0000, 0x010000, CRC(01d3b86c) SHA1(27af0e76661495d5b91ee6a53507f9a5d4e5ab85), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4hittop__b, m4hittop, "chub.p1", 0x0000, 0x010000, CRC(17ff4ed4) SHA1(f193a00a46c82d4989af18055f9f69d93df79ec6), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4hittop__c, m4hittop, "chubd.p1", 0x0000, 0x010000, CRC(3e7a6b1b) SHA1(8939a0cac8578ff5e1d1ab2b3a64b3809793c44a), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4hittop__d, m4hittop, "chud.p1", 0x0000, 0x010000, CRC(26875ed3) SHA1(06dbf594e2c5202ee624f4202f634281a89a3870), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4hittop__e, m4hittop, "chudk.p1", 0x0000, 0x010000, CRC(10c1f6c3) SHA1(e6ff6ea40f35cfd9ed7643e69eca62775f20b3a2), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4hittop__f, m4hittop, "chudy.p1", 0x0000, 0x010000, CRC(65302d8c) SHA1(de340cc182212b576cae46669492d0d760d2f288), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4hittop__g, m4hittop, "chuk.p1", 0x0000, 0x010000, CRC(7f333a2c) SHA1(73719997c200ec5291ceaa12f8667979a731212e), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4hittop__h, m4hittop, "chur.p1", 0x0000, 0x010000, CRC(dbb89a00) SHA1(70b2f2c78011b8b470aa58153d524f920d553b28), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4hittop__i, m4hittop, "chus.p1", 0x0000, 0x010000, CRC(8a39816e) SHA1(3869f7ae0c9b681cfb07e2f6c1a94fc81fa13fe3), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4hittop__j, m4hittop, "chuy.p1", 0x0000, 0x010000, CRC(e0902d74) SHA1(a34db63f1354853ad5a1026e4402ccd2e564c7d7), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 11)" ) +// "(C)1991 BARCREST" and "HI4 0.3" +GAME_CUSTOM( 199?, m4hittop, 0, "hi4s.p1", 0x0000, 0x010000, CRC(3a04ee7a) SHA1(d23e9da2c22f6983a855bc519597ea9cea84f2dd), "Barcrest","Hit The Top (Barcrest) (MPU4) (HI4 0.3)" ) GAME_CUSTOM( 199?, m4hittop__k, m4hittop, "hi4ad.p1", 0x0000, 0x010000, CRC(eeb958f3) SHA1(ee7f7615df2141ad5183288101949b74c4543de9), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4hittop__l, m4hittop, "hi4b.p1", 0x0000, 0x010000, CRC(68af264b) SHA1(e7f75b5294cc7541f9397c492c171c79b7a21a36), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4hittop__m, m4hittop, "hi4bd.p1", 0x0000, 0x010000, CRC(d72cd485) SHA1(d0d38cbb518c824d4a8107e1711f85120c39bc4c), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 14)" ) @@ -1396,7 +1430,20 @@ GAME_CUSTOM( 199?, m4hittop__o, m4hittop, "hi4dk.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4hittop__p, m4hittop, "hi4dy.p1", 0x0000, 0x010000, CRC(b1ddf7fe) SHA1(a334619b5dfc7a44e9082cc37cb5187413adb29f), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4hittop__q, m4hittop, "hi4k.p1", 0x0000, 0x010000, CRC(99cb8bc9) SHA1(106bf6e327643c49024f9422d6b87f5b157b452f), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4hittop__r, m4hittop, "hi4y.p1", 0x0000, 0x010000, CRC(c60e01e6) SHA1(c4a7ea44c36c78401cab3ef87d7e02add0b48ab5), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4hittop__s, m4hittop, "hit04ad.p1", 0x0000, 0x010000, CRC(cc9d10fa) SHA1(b7ce14fecfd8142fa7127c23f152c749dae74701), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 20)" ) +// "(C)1991 BARCREST" and "CHU 0.1" +GAME_CUSTOM( 199?, m4hittop__i, m4hittop, "chus.p1", 0x0000, 0x010000, CRC(8a39816e) SHA1(3869f7ae0c9b681cfb07e2f6c1a94fc81fa13fe3), "Barcrest","Hit The Top (Barcrest) (MPU4) (CHU 0.1)" ) +GAME_CUSTOM( 199?, m4hittop__a, m4hittop, "chuad.p1", 0x0000, 0x010000, CRC(01d3b86c) SHA1(27af0e76661495d5b91ee6a53507f9a5d4e5ab85), "Barcrest","Hit The Top (Barcrest) (MPU4) (CHU 0.1AD)" ) +GAME_CUSTOM( 199?, m4hittop__b, m4hittop, "chub.p1", 0x0000, 0x010000, CRC(17ff4ed4) SHA1(f193a00a46c82d4989af18055f9f69d93df79ec6), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4hittop__c, m4hittop, "chubd.p1", 0x0000, 0x010000, CRC(3e7a6b1b) SHA1(8939a0cac8578ff5e1d1ab2b3a64b3809793c44a), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4hittop__d, m4hittop, "chud.p1", 0x0000, 0x010000, CRC(26875ed3) SHA1(06dbf594e2c5202ee624f4202f634281a89a3870), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4hittop__e, m4hittop, "chudk.p1", 0x0000, 0x010000, CRC(10c1f6c3) SHA1(e6ff6ea40f35cfd9ed7643e69eca62775f20b3a2), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4hittop__f, m4hittop, "chudy.p1", 0x0000, 0x010000, CRC(65302d8c) SHA1(de340cc182212b576cae46669492d0d760d2f288), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4hittop__g, m4hittop, "chuk.p1", 0x0000, 0x010000, CRC(7f333a2c) SHA1(73719997c200ec5291ceaa12f8667979a731212e), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4hittop__h, m4hittop, "chur.p1", 0x0000, 0x010000, CRC(dbb89a00) SHA1(70b2f2c78011b8b470aa58153d524f920d553b28), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4hittop__j, m4hittop, "chuy.p1", 0x0000, 0x010000, CRC(e0902d74) SHA1(a34db63f1354853ad5a1026e4402ccd2e564c7d7), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 11)" ) +// "(C)1991 BARCREST" and "HIT 0.4" +GAME_CUSTOM( 199?, m4hittop__1, m4hittop, "hit04s.p1", 0x0000, 0x010000, CRC(05376f9f) SHA1(e59bdd6541669b150bb68eb97ea316c3fe451778), "Barcrest","Hit The Top (Barcrest) (MPU4) (HIT 0.4)" ) +GAME_CUSTOM( 199?, m4hittop__s, m4hittop, "hit04ad.p1", 0x0000, 0x010000, CRC(cc9d10fa) SHA1(b7ce14fecfd8142fa7127c23f152c749dae74701), "Barcrest","Hit The Top (Barcrest) (MPU4) (HIT 0.4AD)" ) GAME_CUSTOM( 199?, m4hittop__t, m4hittop, "hit04b.p1", 0x0000, 0x010000, CRC(da511063) SHA1(3f4fb8518cb2057ec4c2bb13fd3e61ee73bfa457), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4hittop__u, m4hittop, "hit04bd.p1", 0x0000, 0x010000, CRC(40a84b97) SHA1(416f78c19e08f405a3b36f886f69e7b88e5aa90a), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 22)" ) GAME_CUSTOM( 199?, m4hittop__v, m4hittop, "hit04d.p1", 0x0000, 0x010000, CRC(89607e84) SHA1(280209ca3030383547cc91eee2f71a810768353f), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 23)" ) @@ -1405,9 +1452,10 @@ GAME_CUSTOM( 199?, m4hittop__x, m4hittop, "hit04dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4hittop__y, m4hittop, "hit04dy.p1", 0x0000, 0x010000, CRC(25f54881) SHA1(9f4ae52295df5810cbe6c18cae66877bec006a28), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 26)" ) GAME_CUSTOM( 199?, m4hittop__z, m4hittop, "hit04k.p1", 0x0000, 0x010000, CRC(5ef3f78d) SHA1(e72727b3dc7793c36f182b3e7d363741254c0be7), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 27)" ) GAME_CUSTOM( 199?, m4hittop__0, m4hittop, "hit04r.p1", 0x0000, 0x010000, CRC(d87a9f60) SHA1(614224b80afaa6e407f9b40b45b8aecdf999e13a), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4hittop__1, m4hittop, "hit04s.p1", 0x0000, 0x010000, CRC(05376f9f) SHA1(e59bdd6541669b150bb68eb97ea316c3fe451778), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 29)" ) GAME_CUSTOM( 199?, m4hittop__2, m4hittop, "hit04y.p1", 0x0000, 0x010000, CRC(c398df63) SHA1(5e93cb95da37b1593d030e99e97996252ad6cda1), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4hittop__3, m4hittop, "ht201ad.p1", 0x0000, 0x010000, CRC(b0f3873b) SHA1(6e7d1b20dff4b81ebd171d6d92c95e46817bdf90), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 31)" ) +// "(C)1991 BARCREST" and "HT2 0.1" +GAME_CUSTOM( 199?, m4hittop__ac, m4hittop, "ht201s.p1", 0x0000, 0x010000, CRC(37b20464) SHA1(e87b0a2023416fa7b63201e19850319723eb6c10), "Barcrest","Hit The Top (Barcrest) (MPU4) (HT2 0.1)" ) +GAME_CUSTOM( 199?, m4hittop__3, m4hittop, "ht201ad.p1", 0x0000, 0x010000, CRC(b0f3873b) SHA1(6e7d1b20dff4b81ebd171d6d92c95e46817bdf90), "Barcrest","Hit The Top (Barcrest) (MPU4) (HT2 0.1AD)" ) GAME_CUSTOM( 199?, m4hittop__4, m4hittop, "ht201b.p1", 0x0000, 0x010000, CRC(9dbe41fc) SHA1(ce5ed2707ab63057a2f66a1098e3752acaa72dac), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4hittop__5, m4hittop, "ht201bd.p1", 0x0000, 0x010000, CRC(be23c8b6) SHA1(0d4ab2d3c7ac063ec1ce10b2af28c8770d8bd818), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 33)" ) GAME_CUSTOM( 199?, m4hittop__6, m4hittop, "ht201d.p1", 0x0000, 0x010000, CRC(25b9fcd7) SHA1(8bebbf0b621a704ed9811e67eab003f4ddebcde2), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 34)" ) @@ -1416,9 +1464,10 @@ GAME_CUSTOM( 199?, m4hittop__8, m4hittop, "ht201dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4hittop__9, m4hittop, "ht201dy.p1", 0x0000, 0x010000, CRC(811cafc0) SHA1(e31ad353ee8ce4ea059d6a469baaa14357b738c9), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 37)" ) GAME_CUSTOM( 199?, m4hittop__aa, m4hittop, "ht201k.p1", 0x0000, 0x010000, CRC(191ca612) SHA1(a2a80b64cc04aa590046413f1474340cd3a5b03a), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 38)" ) GAME_CUSTOM( 199?, m4hittop__ab, m4hittop, "ht201r.p1", 0x0000, 0x010000, CRC(154643be) SHA1(280ae761c434bbed84317d85aef2ad4a78c61d1d), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4hittop__ac, m4hittop, "ht201s.p1", 0x0000, 0x010000, CRC(37b20464) SHA1(e87b0a2023416fa7b63201e19850319723eb6c10), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4hittop__ad, m4hittop, "ht201y.p1", 0x0000, 0x010000, CRC(84778efc) SHA1(bdc43973913d0e8be0e16ee89da01b1bcdc2da6f), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4hittop__ae, m4hittop, "ht501ad.p1", 0x0000, 0x010000, CRC(7bf00848) SHA1(700d90218d0bd31860dc905c00d0afbf3a1e8704), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 42)" ) +// "(C)1991 BARCREST" and "HT5 0.1" +GAME_CUSTOM( 199?, m4hittop__an, m4hittop, "ht501s.p1", 0x0000, 0x010000, CRC(ac440a2b) SHA1(f3f3d0c9c8dcb41509307c970f0776ebcfffdeb0), "Barcrest","Hit The Top (Barcrest) (MPU4) (HT5 0.1)" ) +GAME_CUSTOM( 199?, m4hittop__ae, m4hittop, "ht501ad.p1", 0x0000, 0x010000, CRC(7bf00848) SHA1(700d90218d0bd31860dc905c00d0afbf3a1e8704), "Barcrest","Hit The Top (Barcrest) (MPU4) (HT5 0.1AD)" ) GAME_CUSTOM( 199?, m4hittop__af, m4hittop, "ht501b.p1", 0x0000, 0x010000, CRC(c06dd046) SHA1(a47c62fc299842e66694f34844b43a55d6f20c3d), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4hittop__ag, m4hittop, "ht501bd.p1", 0x0000, 0x010000, CRC(d4a3843f) SHA1(cc66ebaa334bab86b9bcb1623316c31318e84d2a), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 44)" ) GAME_CUSTOM( 199?, m4hittop__ah, m4hittop, "ht501d.p1", 0x0000, 0x010000, CRC(67d3c040) SHA1(beec134c53715544080327319b5d6231b625fbb4), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 45)" ) @@ -1427,16 +1476,16 @@ GAME_CUSTOM( 199?, m4hittop__aj, m4hittop, "ht501dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4hittop__ak, m4hittop, "ht501dy.p1", 0x0000, 0x010000, CRC(756c7ae9) SHA1(42a731e472f073845b98d7fcc47fe70f57181ce6), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 48)" ) GAME_CUSTOM( 199?, m4hittop__al, m4hittop, "ht501k.p1", 0x0000, 0x010000, CRC(93269e53) SHA1(7e40ac4e9f4b26755867353fdccadf0f976402b4), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 49)" ) GAME_CUSTOM( 199?, m4hittop__am, m4hittop, "ht501r.p1", 0x0000, 0x010000, CRC(9aec0493) SHA1(6b0b7e5f4a988ff4d2bc123978adc09195eb4232), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 50)" ) -GAME_CUSTOM( 199?, m4hittop__an, m4hittop, "ht501s.p1", 0x0000, 0x010000, CRC(ac440a2b) SHA1(f3f3d0c9c8dcb41509307c970f0776ebcfffdeb0), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 51)" ) GAME_CUSTOM( 199?, m4hittop__ao, m4hittop, "ht501y.p1", 0x0000, 0x010000, CRC(a7f8ece6) SHA1(f4472c040c9255eaef5b1109c3bec44f4978b600), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 52)" ) -GAME_CUSTOM( 199?, m4hittop__ap, m4hittop, "httad.p1", 0x0000, 0x010000, CRC(e5a3df45) SHA1(70bebb33cbe466c379f278347d0b47862b1d01a8), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 53)" ) +// "(C)1991 BARCREST" and "HTT 0.5" +GAME_CUSTOM( 199?, m4hittop__aw, m4hittop, "htts.p1", 0x0000, 0x010000, CRC(6c794eb2) SHA1(347a7c74b1fd7631fbcd398bf5e7c36af088109e), "Barcrest","Hit The Top (Barcrest) (MPU4) (HTT 0.5)" ) +GAME_CUSTOM( 199?, m4hittop__ap, m4hittop, "httad.p1", 0x0000, 0x010000, CRC(e5a3df45) SHA1(70bebb33cbe466c379f278347d0b47862b1d01a8), "Barcrest","Hit The Top (Barcrest) (MPU4) (HTT 0.5AD)" ) GAME_CUSTOM( 199?, m4hittop__aq, m4hittop, "httb.p1", 0x0000, 0x010000, CRC(5c921ff2) SHA1(a9184e4e3916c1ab92761d0e33b42cce4a58e7b1), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 54)" ) GAME_CUSTOM( 199?, m4hittop__ar, m4hittop, "httbd.p1", 0x0000, 0x010000, CRC(9d19fac9) SHA1(17072ac5b49cd947bf397dfbe9b6b0bd269dd1b4), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 55)" ) GAME_CUSTOM( 199?, m4hittop__as, m4hittop, "httd.p1", 0x0000, 0x010000, CRC(5e5bacb9) SHA1(d673010cdf2fb9352fc510409deade42b5508b29), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 56)" ) GAME_CUSTOM( 199?, m4hittop__at, m4hittop, "httdk.p1", 0x0000, 0x010000, CRC(17b1db87) SHA1(196163f68c82c4600ecacee52ee8044739568fbf), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 57)" ) GAME_CUSTOM( 199?, m4hittop__au, m4hittop, "httdy.p1", 0x0000, 0x010000, CRC(428af7bf) SHA1(954a512105d1a5998d4ffcbf21be0c9d9a65bbeb), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 58)" ) GAME_CUSTOM( 199?, m4hittop__av, m4hittop, "httk.p1", 0x0000, 0x010000, CRC(581dd34a) SHA1(00cad1860f5edf056b8f9397ca46165593be4755), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4hittop__aw, m4hittop, "htts.p1", 0x0000, 0x010000, CRC(6c794eb2) SHA1(347a7c74b1fd7631fbcd398bf5e7c36af088109e), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 60)" ) GAME_CUSTOM( 199?, m4hittop__ax, m4hittop, "htty.p1", 0x0000, 0x010000, CRC(c9b402b2) SHA1(2165c1892fc1f0b9b0c39127f322f15c9e1912b1), "Barcrest","Hit The Top (Barcrest) (MPU4) (set 61)" ) @@ -1454,9 +1503,22 @@ GAME_CUSTOM( 199?, m4hittop__ax, m4hittop, "htty.p1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4nnww, 0, "nn5bd.p1", 0x0000, 0x010000, CRC(56cc9559) SHA1(53e109a579e422932dd25c52cf2beca51d3a53e3), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4nnww__a, m4nnww, "cf301s", 0x0000, 0x010000, CRC(1d8abf59) SHA1(81e47797baddd777fbbb1b1e044df1bfe3d49cb2), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4nnww__b, m4nnww, "cni01ad.p1", 0x0000, 0x010000, CRC(788e47b1) SHA1(6d07500a38b54e1a9038e35d82fdb4a0f22d23ba), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 3)" ) +// the rom codes, and startup message differ in several of these, I've put the startup display code first (which seems to match the rom label) followed by the code stored in the ROM header +// I think the code in the header was just not updated properly. +// "(C)1991 BARCREST" and "NN4 0.2" +GAME_CUSTOM( 199?, m4nnww, 0, "nn5s.p1", 0x0000, 0x010000, CRC(459e5663) SHA1(66ae821e5202d6d3ba05be44d0c1f26da60a3a32), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (NN5 0.2 / NN4 0.2)" ) +GAME_CUSTOM( 199?, m4nnww__aq, m4nnww, "nn5bd.p1", 0x0000, 0x010000, CRC(56cc9559) SHA1(53e109a579e422932dd25c52cf2beca51d3a53e3), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (NN5 0.2BD / NN4 0.2)" ) +GAME_CUSTOM( 199?, m4nnww__ai, m4nnww, "nn5ad.p1", 0x0000, 0x010000, CRC(22537184) SHA1(aef542a34e2b14a5db624e42d1cd2682de237b52), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 46)" ) +GAME_CUSTOM( 199?, m4nnww__aj, m4nnww, "nn5b.p1", 0x0000, 0x010000, CRC(e2a99408) SHA1(a0868a38c290a84926089c60d1b5555706485bff), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 47)" ) +GAME_CUSTOM( 199?, m4nnww__ak, m4nnww, "nn5d.p1", 0x0000, 0x010000, CRC(ef1a21b6) SHA1(ba763b06583af1273e384b878fbacc68f88714dc), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 48)" ) +GAME_CUSTOM( 199?, m4nnww__al, m4nnww, "nn5dk.p1", 0x0000, 0x010000, CRC(74c48e28) SHA1(db6be2275b6122845c662dd5f12266b66e888221), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 49)" ) +GAME_CUSTOM( 199?, m4nnww__am, m4nnww, "nn5dr.p1", 0x0000, 0x010000, CRC(f52c9f87) SHA1(e8b1037c9ed5d9452abccb6b07bae46b45c4705e), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 50)" ) +GAME_CUSTOM( 199?, m4nnww__an, m4nnww, "nn5dy.p1", 0x0000, 0x010000, CRC(6847b769) SHA1(1b4d42774c72a3c7b40551c7181413ea1fca0b88), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 51)" ) +GAME_CUSTOM( 199?, m4nnww__ao, m4nnww, "nn5k.p1", 0x0000, 0x010000, CRC(ceab49d9) SHA1(633e7bab6a30176dbcea2bd3e7bab0f7833409ba), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 52)" ) +GAME_CUSTOM( 199?, m4nnww__ap, m4nnww, "nn5r.p1", 0x0000, 0x010000, CRC(144523cd) SHA1(d12586ccea659ecb75af944d87ddd480da917eaf), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 53)" ) +GAME_CUSTOM( 199?, m4nnww__ar, m4nnww, "nn5y.p1", 0x0000, 0x010000, CRC(892e0b23) SHA1(ff3f550e20e71e868d52b60740f743a7d2d6c645), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 55)" ) +// "(C)1991 BARCREST" and "NN4 0.1" (startup CN1 0.1) +GAME_CUSTOM( 199?, m4nnww__b, m4nnww, "cni01ad.p1", 0x0000, 0x010000, CRC(788e47b1) SHA1(6d07500a38b54e1a9038e35d82fdb4a0f22d23ba), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (CN1 0.1 / NN4 0.1)" ) GAME_CUSTOM( 199?, m4nnww__c, m4nnww, "cni01b.p1", 0x0000, 0x010000, CRC(33512643) SHA1(865ed3b68fe3b737833734513b5045c5db97791e), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4nnww__d, m4nnww, "cni01bd.p1", 0x0000, 0x010000, CRC(8a00d73b) SHA1(702579ea1bc586aacd5cba889919f3e86ea05771), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4nnww__e, m4nnww, "cni01c.p1", 0x0000, 0x010000, CRC(b836ee44) SHA1(832914461492f120894ec7e63f6aa1ad00b89b41), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 6)" ) @@ -1468,7 +1530,8 @@ GAME_CUSTOM( 199?, m4nnww__j, m4nnww, "cni01k.p1", 0x0000, 0x010000, CRC(f GAME_CUSTOM( 199?, m4nnww__k, m4nnww, "cni01r.p1", 0x0000, 0x010000, CRC(c611b1eb) SHA1(524ee18da8a086d15277d9fb0ea383ee3d49d47a), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4nnww__l, m4nnww, "cni01s.p1", 0x0000, 0x010000, CRC(5ed6a396) SHA1(299767467b56d1aa93602f98cc387e7ff18bda9d), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4nnww__m, m4nnww, "cni01y.p1", 0x0000, 0x010000, CRC(d3612bf2) SHA1(40a8ff08a38c4411946a67f380891945d166d199), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4nnww__n, m4nnww, "cnuad.p1", 0x0000, 0x010000, CRC(f4b28628) SHA1(7323525a44477e2a3f89562f6094ed7bb47a16cc), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 15)" ) +// "(C)1991 BARCREST" and "NN4 0.2" (startup CNU 0.2) +GAME_CUSTOM( 199?, m4nnww__n, m4nnww, "cnuad.p1", 0x0000, 0x010000, CRC(f4b28628) SHA1(7323525a44477e2a3f89562f6094ed7bb47a16cc), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (CNU 0.2AD / NN4 0.2)" ) GAME_CUSTOM( 199?, m4nnww__o, m4nnww, "cnub.p1", 0x0000, 0x010000, CRC(735260a3) SHA1(e08fff6314d7cb4e396107366fdc16dcbf7f5d67), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 16)" ) GAME_CUSTOM( 199?, m4nnww__p, m4nnww, "cnubd.p1", 0x0000, 0x010000, CRC(fbe1ee39) SHA1(21bdaa6f9af686b4e44958ee09a131d0e12c2c53), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4nnww__q, m4nnww, "cnud.p1", 0x0000, 0x010000, CRC(d3a0eff1) SHA1(2b18c3e14a43d072ae5702bc77fcac65dbd8305c), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 18)" ) @@ -1479,7 +1542,8 @@ GAME_CUSTOM( 199?, m4nnww__u, m4nnww, "cnuk.p1", 0x0000, 0x010000, CRC(b GAME_CUSTOM( 199?, m4nnww__v, m4nnww, "cnur.p1", 0x0000, 0x010000, CRC(729d89ea) SHA1(c98a89dd8f85dde7ab005bcb7eba1fcc31162e08), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 23)" ) GAME_CUSTOM( 199?, m4nnww__w, m4nnww, "cnus.p1", 0x0000, 0x010000, CRC(6afee8e1) SHA1(35464eef29a5a66b8efea890987ff120ca5b7409), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4nnww__x, m4nnww, "cnuy.p1", 0x0000, 0x010000, CRC(eff6a104) SHA1(021baf5fe88defca05627a85501622d86e846233), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4nnww__y, m4nnww, "nn3xad.p1", 0x0000, 0x010000, CRC(8ccfceb8) SHA1(762ab26826d3d2a4dd7999a71724389344e9dafb), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 26)" ) +// "(C)1991 BARCREST" and "NN3 0.1" +GAME_CUSTOM( 199?, m4nnww__y, m4nnww, "nn3xad.p1", 0x0000, 0x010000, CRC(8ccfceb8) SHA1(762ab26826d3d2a4dd7999a71724389344e9dafb), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (NN3 0.1XAD)" ) GAME_CUSTOM( 199?, m4nnww__z, m4nnww, "nn3xb.p1", 0x0000, 0x010000, CRC(9b0dd473) SHA1(9975dafea8c7d6ccfc9f826adb1a0d3d0ed9740a), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 27)" ) GAME_CUSTOM( 199?, m4nnww__0, m4nnww, "nn3xbd.p1", 0x0000, 0x010000, CRC(21bf4a89) SHA1(200c9ccc4bc2a93fcd0f68bb00ad4391bdeecda1), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4nnww__1, m4nnww, "nn3xd.p1", 0x0000, 0x010000, CRC(11e22c45) SHA1(6da31eea7b25612d99cc79f6f9579622f105c862), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 29)" ) @@ -1490,7 +1554,8 @@ GAME_CUSTOM( 199?, m4nnww__5, m4nnww, "nn3xr.p1", 0x0000, 0x010000, CRC(6 GAME_CUSTOM( 199?, m4nnww__6, m4nnww, "nn3xrd.p1", 0x0000, 0x010000, CRC(0fd3f9b9) SHA1(99115b217cfc54b52469ffc77e7a7592907c53ea), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 34)" ) GAME_CUSTOM( 199?, m4nnww__7, m4nnww, "nn3xs.p1", 0x0000, 0x010000, CRC(13d02d21) SHA1(8e4dac8e60538884d3f3a92fc1bb9f41276be4c8), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 35)" ) GAME_CUSTOM( 199?, m4nnww__8, m4nnww, "nn3xy.p1", 0x0000, 0x010000, CRC(8a5d0f4b) SHA1(ef727e7ee8bb20d1b201927186a1a4f83e1e7497), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4nnww__9, m4nnww, "nn4ad.p1", 0x0000, 0x010000, CRC(827b832f) SHA1(4448ccb03282b9d39c6a00d02cea4d8ce2225b0e), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 37)" ) +// "(C)1991 BARCREST" and "NN4 0.2" +GAME_CUSTOM( 199?, m4nnww__9, m4nnww, "nn4ad.p1", 0x0000, 0x010000, CRC(827b832f) SHA1(4448ccb03282b9d39c6a00d02cea4d8ce2225b0e), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (NN4 0.2AD)" ) GAME_CUSTOM( 199?, m4nnww__aa, m4nnww, "nn4b.p1", 0x0000, 0x010000, CRC(65e16330) SHA1(cfd18693155b4b7c5692064a2f693eb198d02749), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 38)" ) GAME_CUSTOM( 199?, m4nnww__ab, m4nnww, "nn4bd.p1", 0x0000, 0x010000, CRC(b467ee65) SHA1(79030aa06ca8fd9c8becff62d56628939e9b5075), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 39)" ) GAME_CUSTOM( 199?, m4nnww__ac, m4nnww, "nn4d.p1", 0x0000, 0x010000, CRC(548dacb9) SHA1(55949910374fae419ba015b70780e3e9e269caa0), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 40)" ) @@ -1499,24 +1564,20 @@ GAME_CUSTOM( 199?, m4nnww__ae, m4nnww, "nn4dy.p1", 0x0000, 0x010000, CRC(5 GAME_CUSTOM( 199?, m4nnww__af, m4nnww, "nn4k.p1", 0x0000, 0x010000, CRC(09a808c0) SHA1(c74c3acb2c1f52fd1e83003fb1a022f80f55e0b8), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4nnww__ag, m4nnww, "nn4s.p1", 0x0000, 0x010000, CRC(ec4f01ee) SHA1(443da7ed359a3e208417f7bca0dc52a09594a927), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 44)" ) GAME_CUSTOM( 199?, m4nnww__ah, m4nnww, "nn4y.p1", 0x0000, 0x010000, CRC(a1eff941) SHA1(369ec89b82f97c3d8266d41e5eb27be7770bdca4), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 45)" ) -GAME_CUSTOM( 199?, m4nnww__ai, m4nnww, "nn5ad.p1", 0x0000, 0x010000, CRC(22537184) SHA1(aef542a34e2b14a5db624e42d1cd2682de237b52), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 46)" ) -GAME_CUSTOM( 199?, m4nnww__aj, m4nnww, "nn5b.p1", 0x0000, 0x010000, CRC(e2a99408) SHA1(a0868a38c290a84926089c60d1b5555706485bff), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 47)" ) -GAME_CUSTOM( 199?, m4nnww__ak, m4nnww, "nn5d.p1", 0x0000, 0x010000, CRC(ef1a21b6) SHA1(ba763b06583af1273e384b878fbacc68f88714dc), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 48)" ) -GAME_CUSTOM( 199?, m4nnww__al, m4nnww, "nn5dk.p1", 0x0000, 0x010000, CRC(74c48e28) SHA1(db6be2275b6122845c662dd5f12266b66e888221), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 49)" ) -GAME_CUSTOM( 199?, m4nnww__am, m4nnww, "nn5dr.p1", 0x0000, 0x010000, CRC(f52c9f87) SHA1(e8b1037c9ed5d9452abccb6b07bae46b45c4705e), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 50)" ) -GAME_CUSTOM( 199?, m4nnww__an, m4nnww, "nn5dy.p1", 0x0000, 0x010000, CRC(6847b769) SHA1(1b4d42774c72a3c7b40551c7181413ea1fca0b88), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 51)" ) -GAME_CUSTOM( 199?, m4nnww__ao, m4nnww, "nn5k.p1", 0x0000, 0x010000, CRC(ceab49d9) SHA1(633e7bab6a30176dbcea2bd3e7bab0f7833409ba), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 52)" ) -GAME_CUSTOM( 199?, m4nnww__ap, m4nnww, "nn5r.p1", 0x0000, 0x010000, CRC(144523cd) SHA1(d12586ccea659ecb75af944d87ddd480da917eaf), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 53)" ) -GAME_CUSTOM( 199?, m4nnww__aq, m4nnww, "nn5s.p1", 0x0000, 0x010000, CRC(459e5663) SHA1(66ae821e5202d6d3ba05be44d0c1f26da60a3a32), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 54)" ) -GAME_CUSTOM( 199?, m4nnww__ar, m4nnww, "nn5y.p1", 0x0000, 0x010000, CRC(892e0b23) SHA1(ff3f550e20e71e868d52b60740f743a7d2d6c645), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 55)" ) -GAME_CUSTOM( 199?, m4nnww__as, m4nnww, "nnu40x.bin", 0x0000, 0x010000, CRC(63e3d7df) SHA1(1a5a00185ec5150f5b05765f06297d7884540aaf), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 56)" ) +// "(C)1991 BARCREST" and "NNU 5.2" GAME_CUSTOM( 199?, m4nnww__at, m4nnww, "nnus.p1", 0x0000, 0x010000, CRC(3e3a829e) SHA1(5aa3a56e007bad4dacdc3c993c87569e4250eecd), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 57)" ) GAME_CUSTOM( 199?, m4nnww__au, m4nnww, "nnux.p1", 0x0000, 0x010000, CRC(38806ebf) SHA1(a897a33e3260de1b284b01a65d1da7cbe05d51f8), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 58)" ) GAME_CUSTOM( 199?, m4nnww__av, m4nnww, "nnuxb.p1", 0x0000, 0x010000, CRC(c4dba8df) SHA1(0f8516cc9b2f0be9d1c936667974cd8116018dad), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 59)" ) GAME_CUSTOM( 199?, m4nnww__aw, m4nnww, "nnuxc.p1", 0x0000, 0x010000, CRC(797e0c4d) SHA1(211b0a804643731275d0075461f8d94985fde1db), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 60)" ) -GAME_CUSTOM( 199?, m4nnww__ax, m4nnww, "nnwink.hex", 0x0000, 0x010000, CRC(f77bd6c4) SHA1(1631040fbfe3fc37c2cbd3145857c31d16b92bde), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4nnww__ay, m4nnww, "nnww2010", 0x0000, 0x010000, CRC(67b1c7b5) SHA1(495e25bc2051ab78e473cd0c36e0c1825c06db14), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4nnww__az, m4nnww, "wink2010", 0x0000, 0x010000, CRC(056a2ffa) SHA1(9da96d70ff850b6672ae7009253e179fa7159db4), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 63)" ) +// "(C)1991 BARCREST" and "NNU 4.0" +GAME_CUSTOM( 199?, m4nnww__as, m4nnww, "nnu40x.bin", 0x0000, 0x010000, CRC(63e3d7df) SHA1(1a5a00185ec5150f5b05765f06297d7884540aaf), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (NNU 4.0X)" ) +// "(C)1991 BARCREST" and "NN4 0.1" (startup CH3 0.1) +GAME_CUSTOM( 199?, m4nnww__ax, m4nnww, "nnwink.hex", 0x0000, 0x010000, CRC(f77bd6c4) SHA1(1631040fbfe3fc37c2cbd3145857c31d16b92bde), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (CH3 0.1B / NN4 0.1)" ) +// "(C)1991 BARCREST" and "NN4 0.1" (startup CF3 0.1) +GAME_CUSTOM( 199?, m4nnww__a, m4nnww, "cf301s", 0x0000, 0x010000, CRC(1d8abf59) SHA1(81e47797baddd777fbbb1b1e044df1bfe3d49cb2), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4) (CF3 0.1 / NN4 0.1)" ) +// no copyright string and "NNU 3.4" +GAME_CUSTOM( 199?, m4nnww__ay, m4nnww, "nnww2010", 0x0000, 0x010000, CRC(67b1c7b5) SHA1(495e25bc2051ab78e473cd0c36e0c1825c06db14), "hack","Nudge Nudge Wink Wink (Barcrest) (MPU4) (NNU 3.4, hack, set 1)" ) +GAME_CUSTOM( 199?, m4nnww__az, m4nnww, "wink2010", 0x0000, 0x010000, CRC(056a2ffa) SHA1(9da96d70ff850b6672ae7009253e179fa7159db4), "hack","Nudge Nudge Wink Wink (Barcrest) (MPU4) (NNU 3.4, hack, set 2)" ) #define M4RFYM_EXTRA_ROMS \ @@ -1534,17 +1595,26 @@ GAME_CUSTOM( 199?, m4nnww__az, m4nnww, "wink2010", 0x0000, 0x010000, CRC(0 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4rfym, 0, "rund.p1", 0x0000, 0x010000, CRC(2be2a66d) SHA1(a66d74ccf1783912673cfcb6c1ae7fbb6d70ca0e), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4rfym__a, m4rfym, "ap1ad.p1", 0x0000, 0x010000, CRC(d1adbf80) SHA1(08801f38b8ba5034fd83b53b6cfff864104525b4), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 2)" ) +// "(C)1993 BARCREST" and "RUN 0.5" +GAME_CUSTOM( 199?, m4rfym, 0, "runs.p1", 0x0000, 0x010000, CRC(e20f5a06) SHA1(f0f71f8870db7003fce96f1dfe09804cf17c3ab3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5)" ) +GAME_CUSTOM( 199?, m4rfym__ar, m4rfym, "rund.p1", 0x0000, 0x010000, CRC(2be2a66d) SHA1(a66d74ccf1783912673cfcb6c1ae7fbb6d70ca0e), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5D)" ) +GAME_CUSTOM( 199?, m4rfym__ao, m4rfym, "runc.p1", 0x0000, 0x010000, CRC(09f53ddf) SHA1(f46be95bfacac751102a5f4d4a0917a5e51a653e), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5C)" ) +GAME_CUSTOM( 199?, m4rfym__ap, m4rfym, "rundy.p1", 0x0000, 0x010000, CRC(a6f69a24) SHA1(8370287dcc890fcb7529d3d4c7a3c2e2e688f6a8), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5YD)" ) +GAME_CUSTOM( 199?, m4rfym__aq, m4rfym, "runk.p1", 0x0000, 0x010000, CRC(a2828b82) SHA1(0ae371a441df679fd9c699771ae9f58ce960d4a1), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5K)" ) +GAME_CUSTOM( 199?, m4rfym__as, m4rfym, "runy.p1", 0x0000, 0x010000, CRC(0e311ab4) SHA1(c98540c07e9cc23ec70ecfbcb2f4d66f2c716fc3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5Y)" ) +// "(C)1993 BARCREST" and "AP1 0.1" +GAME_CUSTOM( 199?, m4rfym__h, m4rfym, "ap1s.p1", 0x0000, 0x010000, CRC(7474509c) SHA1(c87e20f10806ec87fd33f97b43b8378d304f7d67), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1)" ) +GAME_CUSTOM( 199?, m4rfym__a, m4rfym, "ap1ad.p1", 0x0000, 0x010000, CRC(d1adbf80) SHA1(08801f38b8ba5034fd83b53b6cfff864104525b4), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1AD)" ) GAME_CUSTOM( 199?, m4rfym__b, m4rfym, "ap1b.p1", 0x0000, 0x010000, CRC(4939f186) SHA1(389d46d603e75d3aaeeca990f4e1143c61f1565f), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4rfym__c, m4rfym, "ap1bd.p1", 0x0000, 0x010000, CRC(08a33b2c) SHA1(ef38e9cd0c9bc8393530e36060c803d1250c46a6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4rfym__d, m4rfym, "ap1d.p1", 0x0000, 0x010000, CRC(edef44fe) SHA1(4907804c1bebc1f13aa3eb9dad0e9189de8e9601), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4rfym__e, m4rfym, "ap1dk.p1", 0x0000, 0x010000, CRC(873a402c) SHA1(1315a4ad18544ca5d65526ea0f620cac528e4cad), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4rfym__f, m4rfym, "ap1dy.p1", 0x0000, 0x010000, CRC(e8436c00) SHA1(1c2f171e55c3519d63d6c4dd0d56df4e1daad6af), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4rfym__g, m4rfym, "ap1k.p1", 0x0000, 0x010000, CRC(9afeb1e7) SHA1(5fc5d73a2c976d227a0598fb1dd802c6336415d1), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4rfym__h, m4rfym, "ap1s.p1", 0x0000, 0x010000, CRC(7474509c) SHA1(c87e20f10806ec87fd33f97b43b8378d304f7d67), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4rfym__i, m4rfym, "ap1y.p1", 0x0000, 0x010000, CRC(152bf7cb) SHA1(8dd8b621f9dac430c293b29ca03814fc21a148b9), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4rfym__j, m4rfym, "ap502ad.p1", 0x0000, 0x010000, CRC(ab059e57) SHA1(45ba91989b0fd1a44628f696b78eae2a349e3e4a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 11)" ) +// "(C)1993 BARCREST" and "AP5 0.2" +GAME_CUSTOM( 199?, m4rfym__s, m4rfym, "ap502s.p1", 0x0000, 0x010000, CRC(8502a09a) SHA1(e635552b7f0c7b2e142d7f4d0f1fd93edac6132d), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2)" ) +GAME_CUSTOM( 199?, m4rfym__j, m4rfym, "ap502ad.p1", 0x0000, 0x010000, CRC(ab059e57) SHA1(45ba91989b0fd1a44628f696b78eae2a349e3e4a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2AD)" ) GAME_CUSTOM( 199?, m4rfym__k, m4rfym, "ap502b.p1", 0x0000, 0x010000, CRC(9ed27a6e) SHA1(2d655305a178e4ebe43f3d429dfec5a2ef6b9873), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4rfym__l, m4rfym, "ap502bd.p1", 0x0000, 0x010000, CRC(48e83fcd) SHA1(3e2de0416722df5004f00baae2d3f6846ff596e5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4rfym__m, m4rfym, "ap502d.p1", 0x0000, 0x010000, CRC(d0560301) SHA1(c35e97391c588f6567eeb253eb9de59bec9e1724), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 14)" ) @@ -1553,9 +1623,10 @@ GAME_CUSTOM( 199?, m4rfym__o, m4rfym, "ap502dr.p1", 0x0000, 0x010000, CRC(1 GAME_CUSTOM( 199?, m4rfym__p, m4rfym, "ap502dy.p1", 0x0000, 0x010000, CRC(819019ec) SHA1(36d2093a7a592850533d4206e0c9dd28cdc17568), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4rfym__q, m4rfym, "ap502k.p1", 0x0000, 0x010000, CRC(5064a894) SHA1(3e67358fe5ed9bfac05f621d7e72e5be7aae67df), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4rfym__r, m4rfym, "ap502r.p1", 0x0000, 0x010000, CRC(2503c7da) SHA1(2478bab8b19ab68ff01be8fae2e86e47894b3d7c), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4rfym__s, m4rfym, "ap502s.p1", 0x0000, 0x010000, CRC(8502a09a) SHA1(e635552b7f0c7b2e142d7f4d0f1fd93edac6132d), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 20)" ) GAME_CUSTOM( 199?, m4rfym__t, m4rfym, "ap502y.p1", 0x0000, 0x010000, CRC(b868ef34) SHA1(a773503afd2f59b71e0b9a7e202d3e7120ec88ff), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4rfym__u, m4rfym, "aprad.p1", 0x0000, 0x010000, CRC(936f59ac) SHA1(325708d965d56a9a7482dbeaa089ca871d5c01b5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 22)" ) +// "(C)1993 BARCREST" and "APR 0.1" +GAME_CUSTOM( 199?, m4rfym__2, m4rfym, "aprs.p1", 0x0000, 0x010000, CRC(a114a96a) SHA1(b0a9091cac86750329513a0927dd39b76995b2f2), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1)" ) +GAME_CUSTOM( 199?, m4rfym__u, m4rfym, "aprad.p1", 0x0000, 0x010000, CRC(936f59ac) SHA1(325708d965d56a9a7482dbeaa089ca871d5c01b5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1AD)" ) GAME_CUSTOM( 199?, m4rfym__v, m4rfym, "aprb.p1", 0x0000, 0x010000, CRC(72ad662a) SHA1(11f1695e05ecf34a58f8df3ffbc72ab2dd7d02c9), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 23)" ) GAME_CUSTOM( 199?, m4rfym__w, m4rfym, "aprbd.p1", 0x0000, 0x010000, CRC(13af990d) SHA1(604d2173e3d6d25252b30b5bf386b53470c35581), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4rfym__x, m4rfym, "aprc.p1", 0x0000, 0x010000, CRC(fd3ece9a) SHA1(e11d1d258a415865f7477cdfddcd47e9bdb1c9b5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 25)" ) @@ -1563,47 +1634,48 @@ GAME_CUSTOM( 199?, m4rfym__y, m4rfym, "aprd.p1", 0x0000, 0x010000, CRC(8 GAME_CUSTOM( 199?, m4rfym__z, m4rfym, "aprdk.p1", 0x0000, 0x010000, CRC(58a41fcd) SHA1(e8c92dfb5c9662c90d363b5b7a7e0a4b4894d4cb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 27)" ) GAME_CUSTOM( 199?, m4rfym__0, m4rfym, "aprdy.p1", 0x0000, 0x010000, CRC(9496cfad) SHA1(cb24779db99d283f1df86864886f21ad333cb98b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4rfym__1, m4rfym, "aprk.p1", 0x0000, 0x010000, CRC(7277ef07) SHA1(dc509d125f8d377d4b2cb011d32be5bdba1daa17), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4rfym__2, m4rfym, "aprs.p1", 0x0000, 0x010000, CRC(a114a96a) SHA1(b0a9091cac86750329513a0927dd39b76995b2f2), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 30)" ) GAME_CUSTOM( 199?, m4rfym__3, m4rfym, "apry.p1", 0x0000, 0x010000, CRC(bf2120bc) SHA1(473374a9510dd53e39b94bfcf1369e13647239e6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4rfym__4, m4rfym, "rfym20", 0x0000, 0x010000, CRC(5e1d70e2) SHA1(2da1b8033a77d367c4b5c3d83a0e5def4e5e5d78), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4rfym__5, m4rfym, "rfym2010", 0x0000, 0x010000, CRC(ec440e7e) SHA1(21f8d4708b5d779dcefcc1e921a5efe17dd6f8c7), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4rfym__6, m4rfym, "rfym510l", 0x0000, 0x010000, CRC(24af47f3) SHA1(3d1ec9b013f3f7b497cfb62b42fbb2fa914b24b6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4rfym__7, m4rfym, "rfym55", 0x0000, 0x010000, CRC(b7d638d8) SHA1(6064ceffd94ff149d8bcb117fd823de52030ac64), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4rfym__8, m4rfym, "ru5ad.p1", 0x0000, 0x010000, CRC(1c3e1f39) SHA1(a45cdaaa875e52cf5cd5adf986c98f4a22a14785), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 36)" ) +// "(C)1993 BARCREST" and "RU5 0.1" +GAME_CUSTOM( 199?, m4rfym__af, m4rfym, "ru5s.p1", 0x0000, 0x010000, CRC(41795ea3) SHA1(6bfb6da6c0f7e762d628ce8a9dcdcbc3c0326ca6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1)" ) +GAME_CUSTOM( 199?, m4rfym__8, m4rfym, "ru5ad.p1", 0x0000, 0x010000, CRC(1c3e1f39) SHA1(a45cdaaa875e52cf5cd5adf986c98f4a22a14785), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1AD)" ) GAME_CUSTOM( 199?, m4rfym__9, m4rfym, "ru5b.p1", 0x0000, 0x010000, CRC(41e44d37) SHA1(8eb409b96864fb0f7c3bf5c66a20a63c8cbc68af), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 37)" ) GAME_CUSTOM( 199?, m4rfym__aa, m4rfym, "ru5bd.p1", 0x0000, 0x010000, CRC(8d4db415) SHA1(b023a13f89b7e5c2f72fd213179f723621871faf), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 38)" ) GAME_CUSTOM( 199?, m4rfym__ab, m4rfym, "ru5d.p1", 0x0000, 0x010000, CRC(fcb70a63) SHA1(df81c3c26c066c1326b20b9e0dda2863ee9635a6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 39)" ) GAME_CUSTOM( 199?, m4rfym__ac, m4rfym, "ru5dk.p1", 0x0000, 0x010000, CRC(b4d83863) SHA1(02aebf94773d0a9454119b4ad663b6d8475fc8d3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4rfym__ad, m4rfym, "ru5dy.p1", 0x0000, 0x010000, CRC(66375af5) SHA1(0a6d10357c163e5e27e7436f8190070e36e3ef90), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 41)" ) GAME_CUSTOM( 199?, m4rfym__ae, m4rfym, "ru5k.p1", 0x0000, 0x010000, CRC(7871c141) SHA1(e1e9d2972c87d2835b1e5a62502160cb4abb7736), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4rfym__af, m4rfym, "ru5s.p1", 0x0000, 0x010000, CRC(41795ea3) SHA1(6bfb6da6c0f7e762d628ce8a9dcdcbc3c0326ca6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4rfym__ag, m4rfym, "ru5y.p1", 0x0000, 0x010000, CRC(ee217541) SHA1(68474c2e430d95ded2856183b9a02be917d092d6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 44)" ) -GAME_CUSTOM( 199?, m4rfym__ah, m4rfym, "ru8c.p1", 0x0000, 0x010000, CRC(93290724) SHA1(37b17b08f77b308289d4392900576dc66a0377eb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 45)" ) +// "(C)1993 BARCREST" and "RU8 0.1" +GAME_CUSTOM( 199?, m4rfym__am, m4rfym, "ru8s.p1", 0x0000, 0x010000, CRC(d6ce5891) SHA1(c130e7bf614c67767c9af6f38e3cd41ce63d11ef), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1)" ) +GAME_CUSTOM( 199?, m4rfym__ah, m4rfym, "ru8c.p1", 0x0000, 0x010000, CRC(93290724) SHA1(37b17b08f77b308289d4392900576dc66a0377eb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1C)" ) GAME_CUSTOM( 199?, m4rfym__ai, m4rfym, "ru8d.p1", 0x0000, 0x010000, CRC(3e7d6ebb) SHA1(a836a52aef9fe4a9021835e99109b7fefb4ead76), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 46)" ) GAME_CUSTOM( 199?, m4rfym__aj, m4rfym, "ru8dk.p1", 0x0000, 0x010000, CRC(b2983dc1) SHA1(412bf4a643c807371fa465fb5f9a85bc3e46623d), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 47)" ) GAME_CUSTOM( 199?, m4rfym__ak, m4rfym, "ru8dy.p1", 0x0000, 0x010000, CRC(7d06cdcc) SHA1(d68f6ee59eb7689df30412288db4e9ee6c4bf178), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 48)" ) GAME_CUSTOM( 199?, m4rfym__al, m4rfym, "ru8k.p1", 0x0000, 0x010000, CRC(42f6226e) SHA1(c4bac8efd9c17f96dd9d973e9f64c85ceeacb36b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 49)" ) -GAME_CUSTOM( 199?, m4rfym__am, m4rfym, "ru8s.p1", 0x0000, 0x010000, CRC(d6ce5891) SHA1(c130e7bf614c67767c9af6f38e3cd41ce63d11ef), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 50)" ) GAME_CUSTOM( 199?, m4rfym__an, m4rfym, "ru8y.p1", 0x0000, 0x010000, CRC(f1fc1e75) SHA1(f6f1008349505ee0c494fcdde27db2a15147b6cb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 51)" ) -GAME_CUSTOM( 199?, m4rfym__ao, m4rfym, "runc.p1", 0x0000, 0x010000, CRC(09f53ddf) SHA1(f46be95bfacac751102a5f4d4a0917a5e51a653e), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 52)" ) -GAME_CUSTOM( 199?, m4rfym__ap, m4rfym, "rundy.p1", 0x0000, 0x010000, CRC(a6f69a24) SHA1(8370287dcc890fcb7529d3d4c7a3c2e2e688f6a8), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 53)" ) -GAME_CUSTOM( 199?, m4rfym__aq, m4rfym, "runk.p1", 0x0000, 0x010000, CRC(a2828b82) SHA1(0ae371a441df679fd9c699771ae9f58ce960d4a1), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 54)" ) -GAME_CUSTOM( 199?, m4rfym__ar, m4rfym, "runs.p1", 0x0000, 0x010000, CRC(e20f5a06) SHA1(f0f71f8870db7003fce96f1dfe09804cf17c3ab3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 55)" ) -GAME_CUSTOM( 199?, m4rfym__as, m4rfym, "runy.p1", 0x0000, 0x010000, CRC(0e311ab4) SHA1(c98540c07e9cc23ec70ecfbcb2f4d66f2c716fc3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 56)" ) -GAME_CUSTOM( 199?, m4rfym__at, m4rfym, "rutad.p1", 0x0000, 0x010000, CRC(f27090c9) SHA1(28b7bb8046f67a3f8b90069de845b0b791b57078), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 57)" ) +// "(C)1993 BARCREST" and "RUT 0.1" +GAME_CUSTOM( 199?, m4rfym__a0, m4rfym, "ruts.p1", 0x0000, 0x010000, CRC(efaf4e03) SHA1(da19d6e28a6727eb9afb69c23fd5685f0dbcc31a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1)" ) +GAME_CUSTOM( 199?, m4rfym__at, m4rfym, "rutad.p1", 0x0000, 0x010000, CRC(f27090c9) SHA1(28b7bb8046f67a3f8b90069de845b0b791b57078), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1AD)" ) GAME_CUSTOM( 199?, m4rfym__au, m4rfym, "rutb.p1", 0x0000, 0x010000, CRC(cb7a74bf) SHA1(24274c7e3b40642d698f5c3a9a10cfeb23faaf1b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 58)" ) GAME_CUSTOM( 199?, m4rfym__av, m4rfym, "rutbd.p1", 0x0000, 0x010000, CRC(19aba8f2) SHA1(cb726130837149c25adb5d87718b72259cb63a63), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 59)" ) GAME_CUSTOM( 199?, m4rfym__aw, m4rfym, "rutd.p1", 0x0000, 0x010000, CRC(16a872bd) SHA1(47ad5eb9b473805e2eb86e0d4d9ef4b2e6e3c926), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 60)" ) GAME_CUSTOM( 199?, m4rfym__ax, m4rfym, "rutdk.p1", 0x0000, 0x010000, CRC(a8259673) SHA1(443081395ea0c1b0a07e6cd4b17670b3e01bb50f), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 61)" ) GAME_CUSTOM( 199?, m4rfym__ay, m4rfym, "rutdy.p1", 0x0000, 0x010000, CRC(6b799f68) SHA1(87482236f1116983e80a7f190710524d3809cd3a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 62)" ) GAME_CUSTOM( 199?, m4rfym__az, m4rfym, "rutk.p1", 0x0000, 0x010000, CRC(20962e5e) SHA1(0be43050d403750b67c796a007b503e132014f4c), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4rfym__a0, m4rfym, "ruts.p1", 0x0000, 0x010000, CRC(efaf4e03) SHA1(da19d6e28a6727eb9afb69c23fd5685f0dbcc31a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 64)" ) GAME_CUSTOM( 199?, m4rfym__a1, m4rfym, "ruty.p1", 0x0000, 0x010000, CRC(abb708c5) SHA1(6fe3b52a0ba484576fc83ed35aefeda01d275aec), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4rfym__a2, m4rfym, "rfym20.10", 0x0000, 0x010000, CRC(947d00d2) SHA1(2c99da689541de247e35ac39eadfe070ac3196b5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4rfym__a3, m4rfym, "rfym5.10", 0x0000, 0x010000, CRC(c2ce2cc2) SHA1(d5633e01f669ee8772ed77befa90180c6aa0111c), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 67)" ) -GAME_CUSTOM( 199?, m4rfym__a4, m4rfym, "rfym5.4", 0x0000, 0x010000, CRC(fe613006) SHA1(898b90893bfcb121575952c22c16570a27948bce), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 68)" ) -GAME_CUSTOM( 199?, m4rfym__a5, m4rfym, "rfym5.8t", 0x0000, 0x010000, CRC(c600718a) SHA1(168fa558f1b5b91fb805d483f3f4351ac80f90ff), "Barcrest","Run For Your Money (Barcrest) (MPU4) (set 69)" ) - +// "(C)1996 B.W.B." and "RUC 1.3" (hack?) +GAME_CUSTOM( 199?, m4rfym__6, m4rfym, "rfym510l", 0x0000, 0x010000, CRC(24af47f3) SHA1(3d1ec9b013f3f7b497cfb62b42fbb2fa914b24b6), "Bwb","Run For Your Money (Barcrest) (MPU4) (RUC 1.3, hack?, set 1)" ) +GAME_CUSTOM( 199?, m4rfym__a3, m4rfym, "rfym5.10", 0x0000, 0x010000, CRC(c2ce2cc2) SHA1(d5633e01f669ee8772ed77befa90180c6aa0111c), "Bwb","Run For Your Money (Barcrest) (MPU4) (RUC 1.3, hack?, set 2)" ) +// "(C)1996 B.W.B." and "RU4 1.1" (hack?) +GAME_CUSTOM( 199?, m4rfym__a4, m4rfym, "rfym5.4", 0x0000, 0x010000, CRC(fe613006) SHA1(898b90893bfcb121575952c22c16570a27948bce), "Bwb","Run For Your Money (Barcrest) (MPU4) (RU4 1.1, hack?)" ) +// "(C)1996 B.W.B." and "RU8 1.2" (hack?) +GAME_CUSTOM( 199?, m4rfym__a5, m4rfym, "rfym5.8t", 0x0000, 0x010000, CRC(c600718a) SHA1(168fa558f1b5b91fb805d483f3f4351ac80f90ff), "Bwb","Run For Your Money (Barcrest) (MPU4) (RU8 1.2, hack?)" ) +// "BILL AND BEN" and "V1 8 0.1" (hack) +GAME_CUSTOM( 199?, m4rfym__4, m4rfym, "rfym20", 0x0000, 0x010000, CRC(5e1d70e2) SHA1(2da1b8033a77d367c4b5c3d83a0e5def4e5e5d78), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1, hack, set 1)" ) +GAME_CUSTOM( 199?, m4rfym__5, m4rfym, "rfym2010", 0x0000, 0x010000, CRC(ec440e7e) SHA1(21f8d4708b5d779dcefcc1e921a5efe17dd6f8c7), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1, hack, set 2)" ) +GAME_CUSTOM( 199?, m4rfym__a2, m4rfym, "rfym20.10", 0x0000, 0x010000, CRC(947d00d2) SHA1(2c99da689541de247e35ac39eadfe070ac3196b5), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1, hack, set 3)" ) +// "1997 COCO" and "RU4 1.1" (hack) +GAME_CUSTOM( 199?, m4rfym__7, m4rfym, "rfym55", 0x0000, 0x010000, CRC(b7d638d8) SHA1(6064ceffd94ff149d8bcb117fd823de52030ac64), "hack","Run For Your Money (Barcrest) (MPU4) (RU4 1.1, hack)" ) #define M4READY_EXTRA_ROMS \ ROM_REGION( 0x48, "fakechr", 0 ) \ @@ -1620,75 +1692,88 @@ GAME_CUSTOM( 199?, m4rfym__a5, m4rfym, "rfym5.8t", 0x0000, 0x010000, CRC(c ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4ready, 0, "rgob.p1", 0x0000, 0x010000, CRC(43ac7b73) SHA1(994d6256432543e1353521359f8faaea671a7bea), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4ready__a, m4ready, "cgo11ad.p1", 0x0000, 0x010000, CRC(9f8bbdaf) SHA1(210cdc9ce493edbf55d43a3127b10931e3ce2fee), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4ready__b, m4ready, "cgo11b.p1", 0x0000, 0x010000, CRC(2ea96acb) SHA1(ffcf1fcb2b769b29b53b00c9ce80af061cc21b9d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4ready__c, m4ready, "cgo11bd.p1", 0x0000, 0x010000, CRC(4cabc589) SHA1(2b0b91f4ac6ebd18edb7a913b8079acc9f026e7d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4ready__d, m4ready, "cgo11c.p1", 0x0000, 0x010000, CRC(76d36b80) SHA1(2699982fed3c2116ff0187d24059f59d3b6c1cae), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4ready__e, m4ready, "cgo11d.p1", 0x0000, 0x010000, CRC(63516954) SHA1(abefafe43e3386a5c916e55503bcb623d74840e1), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4ready__f, m4ready, "cgo11dk.p1", 0x0000, 0x010000, CRC(84f112ef) SHA1(85fa44c7b25aeb83fa2c199abafe099a8ae92bf8), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4ready__g, m4ready, "cgo11dr.p1", 0x0000, 0x010000, CRC(07d13cf6) SHA1(11685efebf9c7091191654fec1f2ac6ad3d05ce1), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4ready__h, m4ready, "cgo11dy.p1", 0x0000, 0x010000, CRC(13c5b934) SHA1(3212ba2534726c8fca9a70325acff3f6e85dd1f7), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4ready__i, m4ready, "cgo11k.p1", 0x0000, 0x010000, CRC(4f46e7f6) SHA1(9485edbcbb3a81b1a335a7c420aa676af8b14050), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4ready__j, m4ready, "cgo11r.p1", 0x0000, 0x010000, CRC(f44dd36f) SHA1(6623daaa237e97b9d63815393562fe8abdb8d732), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4ready__k, m4ready, "cgo11s.p1", 0x0000, 0x010000, CRC(a6b9ddd4) SHA1(b06d5d19b165b82c76b29f7925e0936aeccedb8c), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4ready__l, m4ready, "cgo11y.p1", 0x0000, 0x010000, CRC(d91653f6) SHA1(6445958cd07088fbf08c37a8b5540e3eb561d021), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4ready__m, m4ready, "drr02ad.p1", 0x0000, 0x010000, CRC(5acc5189) SHA1(abf66b90f4a64c3fb9ac4bf16f3bba2758f54482), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4ready__n, m4ready, "drr02b.p1", 0x0000, 0x010000, CRC(729e13c9) SHA1(dcefdd44592464616570101a5e05db31289fc66c), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4ready__o, m4ready, "drr02bd.p1", 0x0000, 0x010000, CRC(70c5b183) SHA1(b1431d0c2c48941d1ff6d6115c8d1ab026d71f63), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4ready__p, m4ready, "drr02c.p1", 0x0000, 0x010000, CRC(258acbf9) SHA1(ced9dbef9162ddadb4838ad430d50aa14574e97d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4ready__q, m4ready, "drr02d.p1", 0x0000, 0x010000, CRC(60940b5a) SHA1(a4d293944e0e65f99dea9391d9d7e1066aa7b83d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4ready__r, m4ready, "drr02dk.p1", 0x0000, 0x010000, CRC(0335775e) SHA1(4d943c3e522f5c42ddd2104c316f75eec90f494f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4ready__s, m4ready, "drr02dr.p1", 0x0000, 0x010000, CRC(c05eef66) SHA1(ac5966ea0ff036d9c9179df6bc7aabd149f41d6c), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4ready__t, m4ready, "drr02dy.p1", 0x0000, 0x010000, CRC(6a700473) SHA1(4025a99aa9e87a80875d150e965650d339d2a143), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4ready__u, m4ready, "drr02k.p1", 0x0000, 0x010000, CRC(525e370e) SHA1(9849399643731beb31b7163b7eebd8774caf9289), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4ready__v, m4ready, "drr02r.p1", 0x0000, 0x010000, CRC(352613a0) SHA1(052e7770d55dd379d1bf3501e46d973bc4fc48d8), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4ready__w, m4ready, "drr02s.p1", 0x0000, 0x010000, CRC(67b03b7f) SHA1(61e09db8b7622e6e094c4e585dbcfea724155829), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4ready__x, m4ready, "drr02y.p1", 0x0000, 0x010000, CRC(009c7ece) SHA1(48463d7d0e521d51bad83ac5ddaaffabc68bf610), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4ready__y, m4ready, "hjj.hex", 0x0000, 0x010000, CRC(48ab2375) SHA1(4d9360a89e97a6bb7bdb099940d73f425eadd63d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4ready__z, m4ready, "hjj02ad.p1", 0x0000, 0x010000, CRC(9f787e01) SHA1(d6cae1c1ae15b74285076e87c7fd8105f6a114ae), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4ready__0, m4ready, "hjj02b.p1", 0x0000, 0x010000, CRC(778ec121) SHA1(98454562da1da56d57ce3e6279805207671d7337), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4ready__1, m4ready, "hjj02bd.p1", 0x0000, 0x010000, CRC(7e8dbab0) SHA1(5b40536503b2d62792f874535367f5658acf8d2e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4ready__2, m4ready, "hjj02c.p1", 0x0000, 0x010000, CRC(fbb149fc) SHA1(6a8305a3ef4a1818a12dab3d380e79b7e642a904), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4ready__3, m4ready, "hjj02d.p1", 0x0000, 0x010000, CRC(9e657e28) SHA1(3eaf9f8a0511f4533e9b47105d4417c71248fab2), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4ready__4, m4ready, "hjj02dk.p1", 0x0000, 0x010000, CRC(2e1bab77) SHA1(76a2784bc183c6d79a845bb7306eae687ced82a0), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4ready__5, m4ready, "hjj02dr.p1", 0x0000, 0x010000, CRC(9d26064f) SHA1(6596b3a671ab8e38b8357023f8994948ef1c1f0f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4ready__6, m4ready, "hjj02dy.p1", 0x0000, 0x010000, CRC(0ab388b6) SHA1(cc8f157a8a91e3fb8bd1fbdd35989d72c8684c50), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4ready__7, m4ready, "hjj02k.p1", 0x0000, 0x010000, CRC(c224c58a) SHA1(5f9b5ff92e2f1b0438380d635b255ec8b4fc080f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4ready__8, m4ready, "hjj02r.p1", 0x0000, 0x010000, CRC(32fefefe) SHA1(f58e228a1496b0858903c2d850c8453835b6f24b), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4ready__9, m4ready, "hjj02s.p1", 0x0000, 0x010000, CRC(39de9801) SHA1(c29e883c45ed6b272d65c7922b1871199a424244), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4ready__aa, m4ready, "hjj02y.p1", 0x0000, 0x010000, CRC(0178cc91) SHA1(d618ff2eb0a1992b88f3b5427ffc54d34bf8c124), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4ready__ab, m4ready, "ppl02ad.p1", 0x0000, 0x010000, CRC(d8b3be27) SHA1(95d1d979b439303817670fd686b5df324feb618f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4ready__ac, m4ready, "ppl02b.p1", 0x0000, 0x010000, CRC(dbd56cf1) SHA1(968c1d09626e493c51d7637e19a7f092047b283f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4ready__ad, m4ready, "ppl02bd.p1", 0x0000, 0x010000, CRC(eeafd36d) SHA1(68c314e937d24a59ca305facc409218c63bef24e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4ready__ae, m4ready, "ppl02c.p1", 0x0000, 0x010000, CRC(ad6f5c6d) SHA1(91f3d7bad3cdb7014ff3caa1631e6567cb95f47e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4ready__af, m4ready, "ppl02d.p1", 0x0000, 0x010000, CRC(041f0fd8) SHA1(8e32c88f7b0a541a9460926a2fec0318a7239279), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 43)" ) -GAME_CUSTOM( 199?, m4ready__ag, m4ready, "ppl02dk.p1", 0x0000, 0x010000, CRC(632ecd46) SHA1(9e90279db99aa22923a79e309b053b35b70c9f8e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 44)" ) -GAME_CUSTOM( 199?, m4ready__ah, m4ready, "ppl02dy.p1", 0x0000, 0x010000, CRC(4fb07726) SHA1(f234018ea18511217d176023b489254cf5a5a15e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 45)" ) -GAME_CUSTOM( 199?, m4ready__ai, m4ready, "ppl02k.p1", 0x0000, 0x010000, CRC(7fcc03d7) SHA1(359743edec7ca54bd9a780f81ac25d314ada2d7e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 46)" ) -GAME_CUSTOM( 199?, m4ready__aj, m4ready, "ppl02r.p1", 0x0000, 0x010000, CRC(e35580e3) SHA1(397bd2ce068aa45f3c55a3ddd97ae3e09391a7da), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 47)" ) -GAME_CUSTOM( 199?, m4ready__ak, m4ready, "ppl02s.p1", 0x0000, 0x010000, CRC(40c1d256) SHA1(abd55dcc06b49d54976743c610ad3de21278ac2d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 48)" ) -GAME_CUSTOM( 199?, m4ready__al, m4ready, "ppl02y.p1", 0x0000, 0x010000, CRC(7802f70c) SHA1(c96758c02bebff4b85436a93ae012c80c6cb2963), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 49)" ) -GAME_CUSTOM( 199?, m4ready__am, m4ready, "rgoad.p1", 0x0000, 0x010000, CRC(d4ed739c) SHA1(6a7d5f63eaf59f08a8f870aba8523e2dc59d20cd), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 50)" ) -GAME_CUSTOM( 199?, m4ready__an, m4ready, "rgobd.p1", 0x0000, 0x010000, CRC(0505340c) SHA1(e61b007dc50beb22bf3efa2c3cfab595880d3248), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 51)" ) -GAME_CUSTOM( 199?, m4ready__ao, m4ready, "rgod.p1", 0x0000, 0x010000, CRC(f3898077) SHA1(4d2f32b4c3f01a0b54966dd0558dcadcf89fd229), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 52)" ) -GAME_CUSTOM( 199?, m4ready__ap, m4ready, "rgodk.p1", 0x0000, 0x010000, CRC(9a9b61c7) SHA1(756ed419451d1e070809303467789e01949dea2b), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 53)" ) -GAME_CUSTOM( 199?, m4ready__aq, m4ready, "rgody.p1", 0x0000, 0x010000, CRC(a0eef0f0) SHA1(781de603d19eab0ee771b10374f53c149432c877), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 54)" ) -GAME_CUSTOM( 199?, m4ready__ar, m4ready, "rgok.p1", 0x0000, 0x010000, CRC(00413e8f) SHA1(580efbdf3ba092978648d83b6d21b5a4966d57e3), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 55)" ) -GAME_CUSTOM( 199?, m4ready__as, m4ready, "rgos.p1", 0x0000, 0x010000, CRC(d00d3540) SHA1(0fd6a08477d05d1c129038c8de47de68a28c0a56), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 56)" ) -GAME_CUSTOM( 199?, m4ready__at, m4ready, "rgoy.p1", 0x0000, 0x010000, CRC(cfdfce82) SHA1(68464381f658f08efb3f790eea1e7dd61086f936), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 57)" ) -GAME_CUSTOM( 199?, m4ready__au, m4ready, "rgt10ad.p1", 0x0000, 0x010000, CRC(22f65e05) SHA1(d488e4c65059b3b7e8e88e39a05e0cc9eae2d836), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 58)" ) -GAME_CUSTOM( 199?, m4ready__av, m4ready, "rgt10b.p1", 0x0000, 0x010000, CRC(5d86b45a) SHA1(a7553848a1e4304acaf72f9d293123ca2af629f0), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4ready__aw, m4ready, "rgt10bd.p1", 0x0000, 0x010000, CRC(6280594e) SHA1(d2b666aaac8ebe94bfab1c4404d0e42bd6c8b176), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 60)" ) -GAME_CUSTOM( 199?, m4ready__ax, m4ready, "rgt10c.p1", 0x0000, 0x010000, CRC(91f28aa6) SHA1(42c21d11df3145a0919f7aef53a5621b2beca353), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4ready__ay, m4ready, "rgt10d.p1", 0x0000, 0x010000, CRC(abd4a67e) SHA1(183746cd2cd661587854a80ad5455074fcf143cc), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4ready__az, m4ready, "rgt10dk.p1", 0x0000, 0x010000, CRC(63ee9525) SHA1(e1fa5348672d05149e6ab26f31af047e38192f2c), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4ready__a0, m4ready, "rgt10dr.p1", 0x0000, 0x010000, CRC(481ffebc) SHA1(3608faa929b703d2e45ea37b4f7051d5bb37f073), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 64)" ) -GAME_CUSTOM( 199?, m4ready__a1, m4ready, "rgt10dy.p1", 0x0000, 0x010000, CRC(fe2498e9) SHA1(bd81c775daf860c2484af88a8b11b75df00ccaaa), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4ready__a2, m4ready, "rgt10k.p1", 0x0000, 0x010000, CRC(78d6eff1) SHA1(d3172ffc9ef3a4f60680081d993e1487e4229625), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4ready__a3, m4ready, "rgt10r.p1", 0x0000, 0x010000, CRC(1992945e) SHA1(716b62ca8edc5523fd83355e650982b50b4f9458), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 67)" ) -GAME_CUSTOM( 199?, m4ready__a4, m4ready, "rgt10s.p1", 0x0000, 0x010000, CRC(dd289204) SHA1(431f73cb45d248c672c50dc8fbc579209e41207d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 68)" ) -GAME_CUSTOM( 199?, m4ready__a5, m4ready, "rgt10y.p1", 0x0000, 0x010000, CRC(8dab3aca) SHA1(0fe8f87a17acd8df0b7b75b852b58eb1e273eb27), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (set 69)" ) +// "(C)1991 BARCREST" and "RGO 0.8" +GAME_CUSTOM( 199?, m4ready, 0, "rgos.p1", 0x0000, 0x010000, CRC(d00d3540) SHA1(0fd6a08477d05d1c129038c8de47de68a28c0a56), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8)" ) +GAME_CUSTOM( 199?, m4ready__as, m4ready, "rgob.p1", 0x0000, 0x010000, CRC(43ac7b73) SHA1(994d6256432543e1353521359f8faaea671a7bea), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8B)" ) +GAME_CUSTOM( 199?, m4ready__ar, m4ready, "rgok.p1", 0x0000, 0x010000, CRC(00413e8f) SHA1(580efbdf3ba092978648d83b6d21b5a4966d57e3), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8K)" ) +GAME_CUSTOM( 199?, m4ready__at, m4ready, "rgoy.p1", 0x0000, 0x010000, CRC(cfdfce82) SHA1(68464381f658f08efb3f790eea1e7dd61086f936), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8Y)" ) +// datapak sets +GAME_CUSTOM( 199?, m4ready__ao, m4ready, "rgod.p1", 0x0000, 0x010000, CRC(f3898077) SHA1(4d2f32b4c3f01a0b54966dd0558dcadcf89fd229), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8D)" ) +GAME_CUSTOM( 199?, m4ready__am, m4ready, "rgoad.p1", 0x0000, 0x010000, CRC(d4ed739c) SHA1(6a7d5f63eaf59f08a8f870aba8523e2dc59d20cd), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8AD)" ) +GAME_CUSTOM( 199?, m4ready__an, m4ready, "rgobd.p1", 0x0000, 0x010000, CRC(0505340c) SHA1(e61b007dc50beb22bf3efa2c3cfab595880d3248), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8BD)" ) +GAME_CUSTOM( 199?, m4ready__ap, m4ready, "rgodk.p1", 0x0000, 0x010000, CRC(9a9b61c7) SHA1(756ed419451d1e070809303467789e01949dea2b), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8KD)" ) +GAME_CUSTOM( 199?, m4ready__aq, m4ready, "rgody.p1", 0x0000, 0x010000, CRC(a0eef0f0) SHA1(781de603d19eab0ee771b10374f53c149432c877), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8YD)" ) +// "(C)1991 BARCREST" and "CGO 1.1" +GAME_CUSTOM( 199?, m4ready__k, m4ready, "cgo11s.p1", 0x0000, 0x010000, CRC(a6b9ddd4) SHA1(b06d5d19b165b82c76b29f7925e0936aeccedb8c), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1)" ) +GAME_CUSTOM( 199?, m4ready__b, m4ready, "cgo11b.p1", 0x0000, 0x010000, CRC(2ea96acb) SHA1(ffcf1fcb2b769b29b53b00c9ce80af061cc21b9d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1B)" ) +GAME_CUSTOM( 199?, m4ready__d, m4ready, "cgo11c.p1", 0x0000, 0x010000, CRC(76d36b80) SHA1(2699982fed3c2116ff0187d24059f59d3b6c1cae), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1C)" ) +GAME_CUSTOM( 199?, m4ready__i, m4ready, "cgo11k.p1", 0x0000, 0x010000, CRC(4f46e7f6) SHA1(9485edbcbb3a81b1a335a7c420aa676af8b14050), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1K)" ) +GAME_CUSTOM( 199?, m4ready__j, m4ready, "cgo11r.p1", 0x0000, 0x010000, CRC(f44dd36f) SHA1(6623daaa237e97b9d63815393562fe8abdb8d732), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1R)" ) +GAME_CUSTOM( 199?, m4ready__l, m4ready, "cgo11y.p1", 0x0000, 0x010000, CRC(d91653f6) SHA1(6445958cd07088fbf08c37a8b5540e3eb561d021), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1Y)" ) +// datapak sets +GAME_CUSTOM( 199?, m4ready__e, m4ready, "cgo11d.p1", 0x0000, 0x010000, CRC(63516954) SHA1(abefafe43e3386a5c916e55503bcb623d74840e1), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1D)" ) +GAME_CUSTOM( 199?, m4ready__a, m4ready, "cgo11ad.p1", 0x0000, 0x010000, CRC(9f8bbdaf) SHA1(210cdc9ce493edbf55d43a3127b10931e3ce2fee), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1AD)" ) +GAME_CUSTOM( 199?, m4ready__c, m4ready, "cgo11bd.p1", 0x0000, 0x010000, CRC(4cabc589) SHA1(2b0b91f4ac6ebd18edb7a913b8079acc9f026e7d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1BD)" ) +GAME_CUSTOM( 199?, m4ready__f, m4ready, "cgo11dk.p1", 0x0000, 0x010000, CRC(84f112ef) SHA1(85fa44c7b25aeb83fa2c199abafe099a8ae92bf8), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1KD)" ) +GAME_CUSTOM( 199?, m4ready__g, m4ready, "cgo11dr.p1", 0x0000, 0x010000, CRC(07d13cf6) SHA1(11685efebf9c7091191654fec1f2ac6ad3d05ce1), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1RD)" ) +GAME_CUSTOM( 199?, m4ready__h, m4ready, "cgo11dy.p1", 0x0000, 0x010000, CRC(13c5b934) SHA1(3212ba2534726c8fca9a70325acff3f6e85dd1f7), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1YD)" ) +// "(C)1991 BARCREST" and "DRR 0.2" +GAME_CUSTOM( 199?, m4ready__w, m4ready, "drr02s.p1", 0x0000, 0x010000, CRC(67b03b7f) SHA1(61e09db8b7622e6e094c4e585dbcfea724155829), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2)" ) +GAME_CUSTOM( 199?, m4ready__n, m4ready, "drr02b.p1", 0x0000, 0x010000, CRC(729e13c9) SHA1(dcefdd44592464616570101a5e05db31289fc66c), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2B)" ) +GAME_CUSTOM( 199?, m4ready__p, m4ready, "drr02c.p1", 0x0000, 0x010000, CRC(258acbf9) SHA1(ced9dbef9162ddadb4838ad430d50aa14574e97d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2C)" ) +GAME_CUSTOM( 199?, m4ready__u, m4ready, "drr02k.p1", 0x0000, 0x010000, CRC(525e370e) SHA1(9849399643731beb31b7163b7eebd8774caf9289), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2K)" ) +GAME_CUSTOM( 199?, m4ready__v, m4ready, "drr02r.p1", 0x0000, 0x010000, CRC(352613a0) SHA1(052e7770d55dd379d1bf3501e46d973bc4fc48d8), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2R)" ) +GAME_CUSTOM( 199?, m4ready__x, m4ready, "drr02y.p1", 0x0000, 0x010000, CRC(009c7ece) SHA1(48463d7d0e521d51bad83ac5ddaaffabc68bf610), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2Y)" ) +// datapak sets +GAME_CUSTOM( 199?, m4ready__q, m4ready, "drr02d.p1", 0x0000, 0x010000, CRC(60940b5a) SHA1(a4d293944e0e65f99dea9391d9d7e1066aa7b83d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2D)" ) +GAME_CUSTOM( 199?, m4ready__m, m4ready, "drr02ad.p1", 0x0000, 0x010000, CRC(5acc5189) SHA1(abf66b90f4a64c3fb9ac4bf16f3bba2758f54482), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2AD)" ) +GAME_CUSTOM( 199?, m4ready__o, m4ready, "drr02bd.p1", 0x0000, 0x010000, CRC(70c5b183) SHA1(b1431d0c2c48941d1ff6d6115c8d1ab026d71f63), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2BD)" ) +GAME_CUSTOM( 199?, m4ready__r, m4ready, "drr02dk.p1", 0x0000, 0x010000, CRC(0335775e) SHA1(4d943c3e522f5c42ddd2104c316f75eec90f494f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2KD)" ) +GAME_CUSTOM( 199?, m4ready__s, m4ready, "drr02dr.p1", 0x0000, 0x010000, CRC(c05eef66) SHA1(ac5966ea0ff036d9c9179df6bc7aabd149f41d6c), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2RD)" ) +GAME_CUSTOM( 199?, m4ready__t, m4ready, "drr02dy.p1", 0x0000, 0x010000, CRC(6a700473) SHA1(4025a99aa9e87a80875d150e965650d339d2a143), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2YD)" ) +// "(C)1991 BARCREST" and "HJJ 0.1" +GAME_CUSTOM( 199?, m4ready__y, m4ready, "hjj.hex", 0x0000, 0x010000, CRC(48ab2375) SHA1(4d9360a89e97a6bb7bdb099940d73f425eadd63d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.1)" ) +// "(C)1991 BARCREST" and "HJJ 0.2" +GAME_CUSTOM( 199?, m4ready__9, m4ready, "hjj02s.p1", 0x0000, 0x010000, CRC(39de9801) SHA1(c29e883c45ed6b272d65c7922b1871199a424244), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2)" ) +GAME_CUSTOM( 199?, m4ready__0, m4ready, "hjj02b.p1", 0x0000, 0x010000, CRC(778ec121) SHA1(98454562da1da56d57ce3e6279805207671d7337), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2B)" ) +GAME_CUSTOM( 199?, m4ready__2, m4ready, "hjj02c.p1", 0x0000, 0x010000, CRC(fbb149fc) SHA1(6a8305a3ef4a1818a12dab3d380e79b7e642a904), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2C)" ) +GAME_CUSTOM( 199?, m4ready__7, m4ready, "hjj02k.p1", 0x0000, 0x010000, CRC(c224c58a) SHA1(5f9b5ff92e2f1b0438380d635b255ec8b4fc080f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2K)" ) +GAME_CUSTOM( 199?, m4ready__8, m4ready, "hjj02r.p1", 0x0000, 0x010000, CRC(32fefefe) SHA1(f58e228a1496b0858903c2d850c8453835b6f24b), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2R)" ) +GAME_CUSTOM( 199?, m4ready__aa, m4ready, "hjj02y.p1", 0x0000, 0x010000, CRC(0178cc91) SHA1(d618ff2eb0a1992b88f3b5427ffc54d34bf8c124), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2Y)" ) +// datapak sets +GAME_CUSTOM( 199?, m4ready__3, m4ready, "hjj02d.p1", 0x0000, 0x010000, CRC(9e657e28) SHA1(3eaf9f8a0511f4533e9b47105d4417c71248fab2), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2D)" ) +GAME_CUSTOM( 199?, m4ready__z, m4ready, "hjj02ad.p1", 0x0000, 0x010000, CRC(9f787e01) SHA1(d6cae1c1ae15b74285076e87c7fd8105f6a114ae), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2AD)" ) +GAME_CUSTOM( 199?, m4ready__1, m4ready, "hjj02bd.p1", 0x0000, 0x010000, CRC(7e8dbab0) SHA1(5b40536503b2d62792f874535367f5658acf8d2e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2BD)" ) +GAME_CUSTOM( 199?, m4ready__4, m4ready, "hjj02dk.p1", 0x0000, 0x010000, CRC(2e1bab77) SHA1(76a2784bc183c6d79a845bb7306eae687ced82a0), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2KD)" ) +GAME_CUSTOM( 199?, m4ready__5, m4ready, "hjj02dr.p1", 0x0000, 0x010000, CRC(9d26064f) SHA1(6596b3a671ab8e38b8357023f8994948ef1c1f0f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2RD)" ) +GAME_CUSTOM( 199?, m4ready__6, m4ready, "hjj02dy.p1", 0x0000, 0x010000, CRC(0ab388b6) SHA1(cc8f157a8a91e3fb8bd1fbdd35989d72c8684c50), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2YD)" ) +// "(C)1991 BARCREST" and "PPL 0.2" +GAME_CUSTOM( 199?, m4ready__ak, m4ready, "ppl02s.p1", 0x0000, 0x010000, CRC(40c1d256) SHA1(abd55dcc06b49d54976743c610ad3de21278ac2d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2)" ) +GAME_CUSTOM( 199?, m4ready__ac, m4ready, "ppl02b.p1", 0x0000, 0x010000, CRC(dbd56cf1) SHA1(968c1d09626e493c51d7637e19a7f092047b283f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2B)" ) +GAME_CUSTOM( 199?, m4ready__ae, m4ready, "ppl02c.p1", 0x0000, 0x010000, CRC(ad6f5c6d) SHA1(91f3d7bad3cdb7014ff3caa1631e6567cb95f47e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2C)" ) +GAME_CUSTOM( 199?, m4ready__ai, m4ready, "ppl02k.p1", 0x0000, 0x010000, CRC(7fcc03d7) SHA1(359743edec7ca54bd9a780f81ac25d314ada2d7e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2K)" ) +GAME_CUSTOM( 199?, m4ready__aj, m4ready, "ppl02r.p1", 0x0000, 0x010000, CRC(e35580e3) SHA1(397bd2ce068aa45f3c55a3ddd97ae3e09391a7da), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2R)" ) +GAME_CUSTOM( 199?, m4ready__al, m4ready, "ppl02y.p1", 0x0000, 0x010000, CRC(7802f70c) SHA1(c96758c02bebff4b85436a93ae012c80c6cb2963), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2Y)" ) +// datapak sets +GAME_CUSTOM( 199?, m4ready__af, m4ready, "ppl02d.p1", 0x0000, 0x010000, CRC(041f0fd8) SHA1(8e32c88f7b0a541a9460926a2fec0318a7239279), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2D)" ) +GAME_CUSTOM( 199?, m4ready__ab, m4ready, "ppl02ad.p1", 0x0000, 0x010000, CRC(d8b3be27) SHA1(95d1d979b439303817670fd686b5df324feb618f), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2AD)" ) +GAME_CUSTOM( 199?, m4ready__ad, m4ready, "ppl02bd.p1", 0x0000, 0x010000, CRC(eeafd36d) SHA1(68c314e937d24a59ca305facc409218c63bef24e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2BD)" ) +GAME_CUSTOM( 199?, m4ready__ag, m4ready, "ppl02dk.p1", 0x0000, 0x010000, CRC(632ecd46) SHA1(9e90279db99aa22923a79e309b053b35b70c9f8e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2KD)" ) +GAME_CUSTOM( 199?, m4ready__ah, m4ready, "ppl02dy.p1", 0x0000, 0x010000, CRC(4fb07726) SHA1(f234018ea18511217d176023b489254cf5a5a15e), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2YD)" ) +// "(C)1991 BARCREST" and "RGT 1.0" +GAME_CUSTOM( 199?, m4ready__a4, m4ready, "rgt10s.p1", 0x0000, 0x010000, CRC(dd289204) SHA1(431f73cb45d248c672c50dc8fbc579209e41207d), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0)" ) +GAME_CUSTOM( 199?, m4ready__av, m4ready, "rgt10b.p1", 0x0000, 0x010000, CRC(5d86b45a) SHA1(a7553848a1e4304acaf72f9d293123ca2af629f0), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0B)" ) +GAME_CUSTOM( 199?, m4ready__ax, m4ready, "rgt10c.p1", 0x0000, 0x010000, CRC(91f28aa6) SHA1(42c21d11df3145a0919f7aef53a5621b2beca353), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0C)" ) +GAME_CUSTOM( 199?, m4ready__a2, m4ready, "rgt10k.p1", 0x0000, 0x010000, CRC(78d6eff1) SHA1(d3172ffc9ef3a4f60680081d993e1487e4229625), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0K)" ) +GAME_CUSTOM( 199?, m4ready__a3, m4ready, "rgt10r.p1", 0x0000, 0x010000, CRC(1992945e) SHA1(716b62ca8edc5523fd83355e650982b50b4f9458), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0R)" ) +GAME_CUSTOM( 199?, m4ready__a5, m4ready, "rgt10y.p1", 0x0000, 0x010000, CRC(8dab3aca) SHA1(0fe8f87a17acd8df0b7b75b852b58eb1e273eb27), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0Y)" ) +// datapak sets +GAME_CUSTOM( 199?, m4ready__ay, m4ready, "rgt10d.p1", 0x0000, 0x010000, CRC(abd4a67e) SHA1(183746cd2cd661587854a80ad5455074fcf143cc), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0D)" ) +GAME_CUSTOM( 199?, m4ready__au, m4ready, "rgt10ad.p1", 0x0000, 0x010000, CRC(22f65e05) SHA1(d488e4c65059b3b7e8e88e39a05e0cc9eae2d836), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0AD)" ) +GAME_CUSTOM( 199?, m4ready__aw, m4ready, "rgt10bd.p1", 0x0000, 0x010000, CRC(6280594e) SHA1(d2b666aaac8ebe94bfab1c4404d0e42bd6c8b176), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0BD)" ) +GAME_CUSTOM( 199?, m4ready__az, m4ready, "rgt10dk.p1", 0x0000, 0x010000, CRC(63ee9525) SHA1(e1fa5348672d05149e6ab26f31af047e38192f2c), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0KD)" ) +GAME_CUSTOM( 199?, m4ready__a0, m4ready, "rgt10dr.p1", 0x0000, 0x010000, CRC(481ffebc) SHA1(3608faa929b703d2e45ea37b4f7051d5bb37f073), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0RD)" ) +GAME_CUSTOM( 199?, m4ready__a1, m4ready, "rgt10dy.p1", 0x0000, 0x010000, CRC(fe2498e9) SHA1(bd81c775daf860c2484af88a8b11b75df00ccaaa), "Barcrest","Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0YD)" ) #define M4MAG7S_EXTRA_ROMS \ @@ -1856,59 +1941,73 @@ GAME_CUSTOM( 199?, m4makmnt__as, m4makmnt, "ma_x6a_c.3_1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4vivaes, 0, "5p5vivaespana6-0.bin", 0x0000, 0x010000, CRC(adf02a7b) SHA1(2c61e175b920a67098503eb4d80b07b828c9f91d), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4vivaes__a, m4vivaes, "ep8ad.p1", 0x0000, 0x010000, CRC(1591cc9b) SHA1(b7574b71955d7780f3f127670e458befad951383), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4vivaes__b, m4vivaes, "ep8b.p1", 0x0000, 0x010000, CRC(33b085b3) SHA1(5fc22ee8ae2d597392c82b09a830893bb04e1014), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4vivaes__c, m4vivaes, "ep8bd.p1", 0x0000, 0x010000, CRC(d1eedaac) SHA1(9773fbb9b15dbbe313d76b0746698fbc12e26dd2), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4vivaes__d, m4vivaes, "ep8c.p1", 0x0000, 0x010000, CRC(d2a8aaf5) SHA1(7aabe3e0522877700453068c30c74cbe2c058e9a), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4vivaes__e, m4vivaes, "ep8d.p1", 0x0000, 0x010000, CRC(06f87010) SHA1(636707d4077bee0ea2f221904fa0e187ea4a1e31), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4vivaes__f, m4vivaes, "ep8dk.p1", 0x0000, 0x010000, CRC(e87b56da) SHA1(f3de0ab0badc9bd14505822c63f110b9b2521d55), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4vivaes__g, m4vivaes, "ep8dy.p1", 0x0000, 0x010000, CRC(d20ec7ed) SHA1(dffd4fcaf360b2b9f4b7241fe80bb6ee983b6d57), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4vivaes__h, m4vivaes, "ep8k.p1", 0x0000, 0x010000, CRC(0a2509c5) SHA1(d0fd30953cbc36363a6d4941b4a0805f9663aebb), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4vivaes__i, m4vivaes, "ep8s.p1", 0x0000, 0x010000, CRC(51537f2d) SHA1(a837a525cd7da724f338c47e716be175c37070b0), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4vivaes__j, m4vivaes, "ep8y.p1", 0x0000, 0x010000, CRC(4cc454e4) SHA1(a08ec2a4a17600eba86300dcb6b150b1b5a7fc74), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4vivaes__k, m4vivaes, "espc.p1", 0x0000, 0x010000, CRC(9534d0d0) SHA1(8e4a1081821d472eb4d9aa01e38b6956a1388d28), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4vivaes__l, m4vivaes, "espd.p1", 0x0000, 0x010000, CRC(012fbc14) SHA1(5e4a1cd7989f804ac52c7cbf46d7f9c1d7200336), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4vivaes__m, m4vivaes, "espdy.p1", 0x0000, 0x010000, CRC(90efbb8e) SHA1(a7338c5d71719b86f524f35d7edd176f41383f15), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4vivaes__n, m4vivaes, "espk.p1", 0x0000, 0x010000, CRC(775a56d6) SHA1(b0e47b56315948a7162ae00c3f5197fbb7b81ec5), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4vivaes__o, m4vivaes, "esps.p1", 0x0000, 0x010000, CRC(0c83b014) SHA1(e7cc513b66534b4fec89170d7b739c99a1ba3831), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4vivaes__p, m4vivaes, "espy.p1", 0x0000, 0x010000, CRC(020aa8bb) SHA1(497dae13fe9f9eba624db907e9f4a5bef1584a64), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4vivaes__q, m4vivaes, "ve5ad.p1", 0x0000, 0x010000, CRC(c545d5f0) SHA1(6ad168d2c1f2da2fff85fe0e21a3191cba8f5838), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4vivaes__r, m4vivaes, "ve5b.p1", 0x0000, 0x010000, CRC(ed02fa94) SHA1(9980b2f78ea8f40715e77fd8fafe883739ac1165), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4vivaes__s, m4vivaes, "ve5bd.p1", 0x0000, 0x010000, CRC(fce73b5c) SHA1(35e635ade9b4a7a992c568e317190d12576f78c9), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4vivaes__t, m4vivaes, "ve5d.p1", 0x0000, 0x010000, CRC(e739556d) SHA1(0816aa256cf8ac253ff37999595e981e90874d39), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4vivaes__u, m4vivaes, "ve5dk.p1", 0x0000, 0x010000, CRC(64f174d0) SHA1(f51b28607715931a9d4c1c14fc71b4f8bb8e56fb), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4vivaes__v, m4vivaes, "ve5dy.p1", 0x0000, 0x010000, CRC(fe6339c6) SHA1(82f14d80e96b65eeea08f1029ffaebf2e505091e), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4vivaes__w, m4vivaes, "ve5k.p1", 0x0000, 0x010000, CRC(05428018) SHA1(b6884a1bfd2cf8268258d3d9a8d2c482ba92e5af), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4vivaes__x, m4vivaes, "ve5s.p1", 0x0000, 0x010000, CRC(65df6cf1) SHA1(26eadbad30b93df6dfd37f984be2dec77f1d6442), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4vivaes__y, m4vivaes, "ve5y.p1", 0x0000, 0x010000, CRC(2fe06579) SHA1(9e11b371edd8fab78e9594ed864f8eb487112150), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4vivaes__z, m4vivaes, "vesp05_11", 0x0000, 0x010000, CRC(32100a2e) SHA1(bb7324267708a0c0850fb77885df9868954d86cd), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4vivaes__0, m4vivaes, "vesp10_11", 0x0000, 0x010000, CRC(2a1dfcb2) SHA1(7d4ef072c41779554a2b8046688957585821e356), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4vivaes__1, m4vivaes, "vesp20_11", 0x0000, 0x010000, CRC(06233420) SHA1(06101dbe871617ae6ff098e070316ec98a15b704), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4vivaes__2, m4vivaes, "vetad.p1", 0x0000, 0x010000, CRC(fb9564dc) SHA1(9782d04eaec7d9c19138abf4f2dd3daa6c745c2a), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4vivaes__3, m4vivaes, "vetb.p1", 0x0000, 0x010000, CRC(2a8d7beb) SHA1(e503bdc388c2ab7551cc84dd9e45b85bd2420ef8), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4vivaes__4, m4vivaes, "vetbd.p1", 0x0000, 0x010000, CRC(ebaffb7d) SHA1(b54a581927fc28ce14ab9efe6fe62e074831a42a), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4vivaes__5, m4vivaes, "vetd.p1", 0x0000, 0x010000, CRC(365dff45) SHA1(6ce756f1d6133e05c46e8e7b7ad554f9f512b722), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4vivaes__6, m4vivaes, "vetdk.p1", 0x0000, 0x010000, CRC(5fb1ba90) SHA1(57a7f225d7bd8ed78c2ebf5d363e06b7694efc5f), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4vivaes__7, m4vivaes, "vetdy.p1", 0x0000, 0x010000, CRC(100261cb) SHA1(f834c5b848059673b9e9824854e6600dae6c4499), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4vivaes__8, m4vivaes, "vetk.p1", 0x0000, 0x010000, CRC(db48f34b) SHA1(013d84b27c4ea6d7b538011c22a3cd573f1d12cc), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4vivaes__9, m4vivaes, "vets.p1", 0x0000, 0x010000, CRC(d7e00f9d) SHA1(df2d85ff9eae7adf662b7d8a9c6f874ec8c07183), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4vivaes__aa, m4vivaes, "vety.p1", 0x0000, 0x010000, CRC(ba3b19c7) SHA1(6e9ee238ec6a272ef16ebfba0dc49bc076e741de), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4vivaes__ab, m4vivaes, "viva206", 0x0000, 0x010000, CRC(76ab9a5d) SHA1(455699cbc05f744eafe58881a8fb120b24cfe5c8), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4vivaes__ac, m4vivaes, "ve_05a__.3_1", 0x0000, 0x010000, CRC(92e0e121) SHA1(f32c8f1c8008794283bd32f9440e0a580f77b5b3), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4vivaes__ad, m4vivaes, "ve_10a__.5_1", 0x0000, 0x010000, CRC(afdc0a2f) SHA1(ab8fec2c48db07c0aba31930893fe7211b306468), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4vivaes__ae, m4vivaes, "vei05___.4_1", 0x0000, 0x010000, CRC(687a511b) SHA1(362e1d5557b6b7d551c9b9c5ef70d7944b44a3ce), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4vivaes__af, m4vivaes, "vei10___.4_1", 0x0000, 0x010000, CRC(b9e2471f) SHA1(3fa561466332ed14e233d97bf9170ec08a019bd0), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 43)" ) -GAME_CUSTOM( 199?, m4vivaes__ag, m4vivaes, "vesp5.8c", 0x0000, 0x010000, CRC(266d42cf) SHA1(b1e583652d6184db2a5f03cb7ae3f694627591c8), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 44)" ) -GAME_CUSTOM( 199?, m4vivaes__ah, m4vivaes, "vesp5.8t", 0x0000, 0x010000, CRC(bf8c9dfa) SHA1(69f28d3ce04efdb89db688dbc2341d19c27c5ba8), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 45)" ) -GAME_CUSTOM( 199?, m4vivaes__ai, m4vivaes, "vesp510l", 0x0000, 0x010000, CRC(15c33530) SHA1(888625c383e52825c06cbf1e7022cd8b02bf549c), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 46)" ) -GAME_CUSTOM( 199?, m4vivaes__aj, m4vivaes, "vesp55", 0x0000, 0x010000, CRC(9cc395ef) SHA1(d62cb55664246e3fada3d971ee317eef51739018), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 47)" ) -GAME_CUSTOM( 199?, m4vivaes__ak, m4vivaes, "vesp58c", 0x0000, 0x010000, CRC(d8cc868d) SHA1(0b9fa8b61998badbd870827e32af4937548b583e), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 48)" ) -GAME_CUSTOM( 199?, m4vivaes__al, m4vivaes, "vesp_10.4", 0x0000, 0x010000, CRC(95e95339) SHA1(59633b7c01da25237342bce7e989259bf723ba6f), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 49)" ) -GAME_CUSTOM( 199?, m4vivaes__am, m4vivaes, "vesp_10.8", 0x0000, 0x010000, CRC(8054766d) SHA1(8e7fd6f8cd74d2760e2923af32813ca93fbf98e6), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 50)" ) -GAME_CUSTOM( 199?, m4vivaes__an, m4vivaes, "vesp_20_.8", 0x0000, 0x010000, CRC(35f90f05) SHA1(0013ff32c809603efdad782306140bd7086be965), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 51)" ) -GAME_CUSTOM( 199?, m4vivaes__ao, m4vivaes, "vesp_5.4", 0x0000, 0x010000, CRC(3b6762ce) SHA1(9dc53dce453a7b124ea2b65a590aff6c7d05831f), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 52)" ) -GAME_CUSTOM( 199?, m4vivaes__ap, m4vivaes, "vesp_5.8", 0x0000, 0x010000, CRC(63abf642) SHA1(6b585147a771e4bd445b525aafc25293845f660b), "Barcrest","Viva Espana (Barcrest) (MPU4) (set 53)" ) +// "(C)1993 BARCREST" and "EP8 0.1" +GAME_CUSTOM( 199?, m4vivaes, 0, "ep8s.p1", 0x0000, 0x010000, CRC(51537f2d) SHA1(a837a525cd7da724f338c47e716be175c37070b0), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1)" ) +GAME_CUSTOM( 199?, m4vivaes__a, m4vivaes, "ep8ad.p1", 0x0000, 0x010000, CRC(1591cc9b) SHA1(b7574b71955d7780f3f127670e458befad951383), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1AD)" ) +GAME_CUSTOM( 199?, m4vivaes__b, m4vivaes, "ep8b.p1", 0x0000, 0x010000, CRC(33b085b3) SHA1(5fc22ee8ae2d597392c82b09a830893bb04e1014), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1B)" ) +GAME_CUSTOM( 199?, m4vivaes__c, m4vivaes, "ep8bd.p1", 0x0000, 0x010000, CRC(d1eedaac) SHA1(9773fbb9b15dbbe313d76b0746698fbc12e26dd2), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1BD)" ) +GAME_CUSTOM( 199?, m4vivaes__d, m4vivaes, "ep8c.p1", 0x0000, 0x010000, CRC(d2a8aaf5) SHA1(7aabe3e0522877700453068c30c74cbe2c058e9a), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1C)" ) +GAME_CUSTOM( 199?, m4vivaes__e, m4vivaes, "ep8d.p1", 0x0000, 0x010000, CRC(06f87010) SHA1(636707d4077bee0ea2f221904fa0e187ea4a1e31), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1D)" ) +GAME_CUSTOM( 199?, m4vivaes__f, m4vivaes, "ep8dk.p1", 0x0000, 0x010000, CRC(e87b56da) SHA1(f3de0ab0badc9bd14505822c63f110b9b2521d55), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1KD)" ) +GAME_CUSTOM( 199?, m4vivaes__g, m4vivaes, "ep8dy.p1", 0x0000, 0x010000, CRC(d20ec7ed) SHA1(dffd4fcaf360b2b9f4b7241fe80bb6ee983b6d57), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1YD)" ) +GAME_CUSTOM( 199?, m4vivaes__h, m4vivaes, "ep8k.p1", 0x0000, 0x010000, CRC(0a2509c5) SHA1(d0fd30953cbc36363a6d4941b4a0805f9663aebb), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1K)" ) +GAME_CUSTOM( 199?, m4vivaes__i, m4vivaes, "ep8y.p1", 0x0000, 0x010000, CRC(4cc454e4) SHA1(a08ec2a4a17600eba86300dcb6b150b1b5a7fc74), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1Y)" ) +// "(C)1993 BARCREST" and "ESP 0.3" +GAME_CUSTOM( 199?, m4vivaes__k, m4vivaes, "espc.p1", 0x0000, 0x010000, CRC(9534d0d0) SHA1(8e4a1081821d472eb4d9aa01e38b6956a1388d28), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3C)" ) +GAME_CUSTOM( 199?, m4vivaes__l, m4vivaes, "espd.p1", 0x0000, 0x010000, CRC(012fbc14) SHA1(5e4a1cd7989f804ac52c7cbf46d7f9c1d7200336), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3D)" ) +GAME_CUSTOM( 199?, m4vivaes__m, m4vivaes, "espdy.p1", 0x0000, 0x010000, CRC(90efbb8e) SHA1(a7338c5d71719b86f524f35d7edd176f41383f15), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3YD)" ) +GAME_CUSTOM( 199?, m4vivaes__n, m4vivaes, "espk.p1", 0x0000, 0x010000, CRC(775a56d6) SHA1(b0e47b56315948a7162ae00c3f5197fbb7b81ec5), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3K)" ) +GAME_CUSTOM( 199?, m4vivaes__o, m4vivaes, "esps.p1", 0x0000, 0x010000, CRC(0c83b014) SHA1(e7cc513b66534b4fec89170d7b739c99a1ba3831), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3)" ) +GAME_CUSTOM( 199?, m4vivaes__p, m4vivaes, "espy.p1", 0x0000, 0x010000, CRC(020aa8bb) SHA1(497dae13fe9f9eba624db907e9f4a5bef1584a64), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3Y)" ) +// "(C)1993 BARCREST" and "ESP 0.2" +GAME_CUSTOM( 199?, m4vivaes__aq, m4vivaes, "vspa20st", 0x0000, 0x010000, CRC(267388eb) SHA1(2621724ebdd5031fc513692ff90989bf3b6115d1), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.2)" ) +// "(C)1993 BARCREST" and "VE5 0.2" +GAME_CUSTOM( 199?, m4vivaes__q, m4vivaes, "ve5ad.p1", 0x0000, 0x010000, CRC(c545d5f0) SHA1(6ad168d2c1f2da2fff85fe0e21a3191cba8f5838), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2AD)" ) +GAME_CUSTOM( 199?, m4vivaes__r, m4vivaes, "ve5b.p1", 0x0000, 0x010000, CRC(ed02fa94) SHA1(9980b2f78ea8f40715e77fd8fafe883739ac1165), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2B)" ) +GAME_CUSTOM( 199?, m4vivaes__s, m4vivaes, "ve5bd.p1", 0x0000, 0x010000, CRC(fce73b5c) SHA1(35e635ade9b4a7a992c568e317190d12576f78c9), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2BD)" ) +GAME_CUSTOM( 199?, m4vivaes__t, m4vivaes, "ve5d.p1", 0x0000, 0x010000, CRC(e739556d) SHA1(0816aa256cf8ac253ff37999595e981e90874d39), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2D)" ) +GAME_CUSTOM( 199?, m4vivaes__u, m4vivaes, "ve5dk.p1", 0x0000, 0x010000, CRC(64f174d0) SHA1(f51b28607715931a9d4c1c14fc71b4f8bb8e56fb), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2KD)" ) +GAME_CUSTOM( 199?, m4vivaes__v, m4vivaes, "ve5dy.p1", 0x0000, 0x010000, CRC(fe6339c6) SHA1(82f14d80e96b65eeea08f1029ffaebf2e505091e), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2YD)" ) +GAME_CUSTOM( 199?, m4vivaes__w, m4vivaes, "ve5k.p1", 0x0000, 0x010000, CRC(05428018) SHA1(b6884a1bfd2cf8268258d3d9a8d2c482ba92e5af), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2K)" ) +GAME_CUSTOM( 199?, m4vivaes__x, m4vivaes, "ve5s.p1", 0x0000, 0x010000, CRC(65df6cf1) SHA1(26eadbad30b93df6dfd37f984be2dec77f1d6442), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2)" ) +GAME_CUSTOM( 199?, m4vivaes__y, m4vivaes, "ve5y.p1", 0x0000, 0x010000, CRC(2fe06579) SHA1(9e11b371edd8fab78e9594ed864f8eb487112150), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2Y)" ) +// "(C)1993 BARCREST" and "VET 0.2" +GAME_CUSTOM( 199?, m4vivaes__2, m4vivaes, "vetad.p1", 0x0000, 0x010000, CRC(fb9564dc) SHA1(9782d04eaec7d9c19138abf4f2dd3daa6c745c2a), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2AD)" ) +GAME_CUSTOM( 199?, m4vivaes__3, m4vivaes, "vetb.p1", 0x0000, 0x010000, CRC(2a8d7beb) SHA1(e503bdc388c2ab7551cc84dd9e45b85bd2420ef8), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2B)" ) +GAME_CUSTOM( 199?, m4vivaes__4, m4vivaes, "vetbd.p1", 0x0000, 0x010000, CRC(ebaffb7d) SHA1(b54a581927fc28ce14ab9efe6fe62e074831a42a), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2BD)" ) +GAME_CUSTOM( 199?, m4vivaes__5, m4vivaes, "vetd.p1", 0x0000, 0x010000, CRC(365dff45) SHA1(6ce756f1d6133e05c46e8e7b7ad554f9f512b722), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2D)" ) +GAME_CUSTOM( 199?, m4vivaes__6, m4vivaes, "vetdk.p1", 0x0000, 0x010000, CRC(5fb1ba90) SHA1(57a7f225d7bd8ed78c2ebf5d363e06b7694efc5f), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2KD)" ) +GAME_CUSTOM( 199?, m4vivaes__7, m4vivaes, "vetdy.p1", 0x0000, 0x010000, CRC(100261cb) SHA1(f834c5b848059673b9e9824854e6600dae6c4499), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2YD)" ) +GAME_CUSTOM( 199?, m4vivaes__8, m4vivaes, "vetk.p1", 0x0000, 0x010000, CRC(db48f34b) SHA1(013d84b27c4ea6d7b538011c22a3cd573f1d12cc), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2K)" ) +GAME_CUSTOM( 199?, m4vivaes__9, m4vivaes, "vets.p1", 0x0000, 0x010000, CRC(d7e00f9d) SHA1(df2d85ff9eae7adf662b7d8a9c6f874ec8c07183), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2)" ) +GAME_CUSTOM( 199?, m4vivaes__aa, m4vivaes, "vety.p1", 0x0000, 0x010000, CRC(ba3b19c7) SHA1(6e9ee238ec6a272ef16ebfba0dc49bc076e741de), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2Y)" ) +// a lot of the Bwb sets just give characterizer alarm (different protection? hacks?) some boot, 2 boot without scrambled reels, so are probably hacked to not use the characterizer +// "(C)1995 B.W.B." and "VE5 6.0" +GAME_CUSTOM( 199?, m4vivaes__ai, m4vivaes, "vesp510l", 0x0000, 0x010000, CRC(15c33530) SHA1(888625c383e52825c06cbf1e7022cd8b02bf549c), "Bwb","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 1)" ) +GAME_CUSTOM( 199?, m4vivaes__aj, m4vivaes, "vesp55", 0x0000, 0x010000, CRC(9cc395ef) SHA1(d62cb55664246e3fada3d971ee317eef51739018), "Bwb","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 2)" ) +GAME_CUSTOM( 199?, m4vivaes__ag, m4vivaes, "vesp5.8c", 0x0000, 0x010000, CRC(266d42cf) SHA1(b1e583652d6184db2a5f03cb7ae3f694627591c8), "Bwb / hack?","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 3)" ) // reels don't seem scrambled on this, hack / bootleg? +GAME_CUSTOM( 199?, m4vivaes__ah, m4vivaes, "vesp5.8t", 0x0000, 0x010000, CRC(bf8c9dfa) SHA1(69f28d3ce04efdb89db688dbc2341d19c27c5ba8), "Bwb / hack?","Viva Espana (Barcrest) (MPU4) (VE5 6.0)" ) // reels don't seem scrambled on this, hack / bootleg? +// "(C)1995 B.W.B." and "VE5 5.0" +GAME_CUSTOM( 199?, m4vivaes__z, m4vivaes, "vesp05_11", 0x0000, 0x010000, CRC(32100a2e) SHA1(bb7324267708a0c0850fb77885df9868954d86cd), "Bwb","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 1)" ) +GAME_CUSTOM( 199?, m4vivaes__ao, m4vivaes, "vesp_5.4", 0x0000, 0x010000, CRC(3b6762ce) SHA1(9dc53dce453a7b124ea2b65a590aff6c7d05831f), "Bwb","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 2)" ) +GAME_CUSTOM( 199?, m4vivaes__ap, m4vivaes, "vesp_5.8", 0x0000, 0x010000, CRC(63abf642) SHA1(6b585147a771e4bd445b525aafc25293845f660b), "Bwb","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 3)" ) +// "(C)1995 B.W.B." and "VE105.0" +GAME_CUSTOM( 199?, m4vivaes__am, m4vivaes, "vesp_10.8", 0x0000, 0x010000, CRC(8054766d) SHA1(8e7fd6f8cd74d2760e2923af32813ca93fbf98e6), "Bwb","Viva Espana (Barcrest) (MPU4) (VE105.0, set 1)" ) +GAME_CUSTOM( 199?, m4vivaes__al, m4vivaes, "vesp_10.4", 0x0000, 0x010000, CRC(95e95339) SHA1(59633b7c01da25237342bce7e989259bf723ba6f), "Bwb","Viva Espana (Barcrest) (MPU4) (VE105.0, set 2)" ) +GAME_CUSTOM( 199?, m4vivaes__0, m4vivaes, "vesp10_11", 0x0000, 0x010000, CRC(2a1dfcb2) SHA1(7d4ef072c41779554a2b8046688957585821e356), "Bwb","Viva Espana (Barcrest) (MPU4) (VE105.0, set 3)" ) +GAME_CUSTOM( 199?, m4vivaes__ad, m4vivaes, "ve_10a__.5_1", 0x0000, 0x010000, CRC(afdc0a2f) SHA1(ab8fec2c48db07c0aba31930893fe7211b306468), "Bwb","Viva Espana (Barcrest) (MPU4) (VE105.0, set 4)" ) // boots +// "(C)1995 B.W.B." and "VE5 3.0" +GAME_CUSTOM( 199?, m4vivaes__ac, m4vivaes, "ve_05a__.3_1", 0x0000, 0x010000, CRC(92e0e121) SHA1(f32c8f1c8008794283bd32f9440e0a580f77b5b3), "Bwb","Viva Espana (Barcrest) (MPU4) (VE5 3.0)" ) // boots +// "(C)1995 B.W.B." and "VE5 4.0" +GAME_CUSTOM( 199?, m4vivaes__ae, m4vivaes, "vei05___.4_1", 0x0000, 0x010000, CRC(687a511b) SHA1(362e1d5557b6b7d551c9b9c5ef70d7944b44a3ce), "Bwb","Viva Espana (Barcrest) (MPU4) (VE5 4.0C, set 1)" ) // boots +GAME_CUSTOM( 199?, m4vivaes__ak, m4vivaes, "vesp58c", 0x0000, 0x010000, CRC(d8cc868d) SHA1(0b9fa8b61998badbd870827e32af4937548b583e), "Bwb","Viva Espana (Barcrest) (MPU4) (VE5 4.0C, set 2)" ) // boots +// "(C)1995 B.W.B." and "VE104.0" +GAME_CUSTOM( 199?, m4vivaes__af, m4vivaes, "vei10___.4_1", 0x0000, 0x010000, CRC(b9e2471f) SHA1(3fa561466332ed14e233d97bf9170ec08a019bd0), "Bwb","Viva Espana (Barcrest) (MPU4) (VE104.0)" ) // boots +// no copyright string and "8V1 0.3" +GAME_CUSTOM( 199?, m4vivaes__1, m4vivaes, "vesp20_11", 0x0000, 0x010000, CRC(06233420) SHA1(06101dbe871617ae6ff098e070316ec98a15b704), "hack", "Viva Espana (Barcrest) (MPU4) (8V1 0.3, hack, set 1)" ) +GAME_CUSTOM( 199?, m4vivaes__an, m4vivaes, "vesp_20_.8", 0x0000, 0x010000, CRC(35f90f05) SHA1(0013ff32c809603efdad782306140bd7086be965), "hack", "Viva Espana (Barcrest) (MPU4) (8V1 0.3, hack, set 2)" ) +// "(C)1997 CUCKOO" and "VE5 6.0" (hack) +GAME_CUSTOM( 199?, m4vivaes__j, m4vivaes, "5p5vivaespana6-0.bin", 0x0000, 0x010000, CRC(adf02a7b) SHA1(2c61e175b920a67098503eb4d80b07b828c9f91d), "hack", "Viva Espana (Barcrest) (MPU4) (VE5 6.0, hack)" ) #define M4POTBLK_EXTRA_ROMS \ @@ -2076,21 +2175,8 @@ GAME_CUSTOM( 199?, m4placbt__ao, m4placbt, "pyh06y.p1", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4c9, 0, "c9211.p1", 0x0000, 0x010000, CRC(44e5cc87) SHA1(36fca9493d36ee6988d02da1b4c575278c43748c), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4c9__a, m4c9, "c915.hex", 0x0000, 0x010000, CRC(dabfa3f3) SHA1(f507c78e61cba74e9b776bebaf0cc4fa40b6de95), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4c9__b, m4c9, "c9210dk.p1", 0x0000, 0x010000, CRC(169a3ce4) SHA1(74d5d533c145908d17bb3e6ac6fea6e3c826ef1e), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4c9__c, m4c9, "c9510ad.p1", 0x0000, 0x010000, CRC(e1a6a573) SHA1(d653d8dce8d8df4151e2fcd8b93964e326bfbe7f), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4c9__d, m4c9, "c9510b.p1", 0x0000, 0x010000, CRC(80c1d5bb) SHA1(5928f58f7963710e4ec9043aae4f656d98888e5b), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4c9__e, m4c9, "c9510bd.p1", 0x0000, 0x010000, CRC(0aadc7d5) SHA1(143d937ef7b17d86d2e41065bb8f851b548ac8a3), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4c9__f, m4c9, "c9510d.p1", 0x0000, 0x010000, CRC(e669989f) SHA1(a9ee5e1d309585f21882681a06f064f6ed03951f), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4c9__g, m4c9, "c9510dk.p1", 0x0000, 0x010000, CRC(43be243e) SHA1(3974051fe47a192c135eceb2a7966e6a41b01a3d), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4c9__h, m4c9, "c9510dr.p1", 0x0000, 0x010000, CRC(8edf7aa6) SHA1(ac15a8c1d0e24cc99452b560b68a664e16e8d82f), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4c9__i, m4c9, "c9510dy.p1", 0x0000, 0x010000, CRC(b0ffae04) SHA1(81921a45a06c38a5391ed3edec57da74b220a181), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4c9__j, m4c9, "c9510k.p1", 0x0000, 0x010000, CRC(665b330a) SHA1(75fe5fbe6f3b11a21092f6d18f7f50980c92febe), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4c9__k, m4c9, "c9510r.p1", 0x0000, 0x010000, CRC(a9f25224) SHA1(3fe4091b27a2d789a8c5d00cb4fc00289639588f), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4c9__l, m4c9, "c9510s.p1", 0x0000, 0x010000, CRC(dc70433e) SHA1(86f158909fea49baf4239821ccf092d8ef1027b7), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4c9__m, m4c9, "c9510y.p1", 0x0000, 0x010000, CRC(3a93bc6a) SHA1(2832b48b6391746dbcea3484715dd6a169c081af), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4c9__n, m4c9, "clnv.p1", 0x0000, 0x010000, CRC(486097d8) SHA1(33e9eab0fb1c750160a8cb2b75eca73145d6956e), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 15)" ) +// "(C)1991 BARCREST" and "C92 1.1" +GAME_CUSTOM( 199?, m4c9, 0, "c9211.p1", 0x0000, 0x010000, CRC(44e5cc87) SHA1(36fca9493d36ee6988d02da1b4c575278c43748c), "Barcrest","Cloud Nine (Barcrest) (MPU4) (C92 1.1)" ) GAME_CUSTOM( 199?, m4c9__o, m4c9, "c9211ad.p1", 0x0000, 0x010000, CRC(dcabab11) SHA1(d73f33da37decfc403975a844916b49d527ee8f8), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 16)" ) GAME_CUSTOM( 199?, m4c9__p, m4c9, "c9211b.p1", 0x0000, 0x010000, CRC(2f10f98b) SHA1(4add53d98f31f4a8bedb621906e91e92622d2c95), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4c9__q, m4c9, "c9211bd.p1", 0x0000, 0x010000, CRC(6dc2add7) SHA1(26a2b9cd629132d7ba48c9ea3476c574006ad4af), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 18)" ) @@ -2102,18 +2188,8 @@ GAME_CUSTOM( 199?, m4c9__v, m4c9, "c9211dy.p1", 0x0000, 0x010000, CRC(a8a GAME_CUSTOM( 199?, m4c9__w, m4c9, "c9211k.p1", 0x0000, 0x010000, CRC(4f9b6b6d) SHA1(5722c0698c3915eb380b24468539dccad6978218), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4c9__x, m4c9, "c9211r.p1", 0x0000, 0x010000, CRC(43f8b759) SHA1(cb0f731f1584e4d23602d276c085b31be6966bb1), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 25)" ) GAME_CUSTOM( 199?, m4c9__y, m4c9, "c9211y.p1", 0x0000, 0x010000, CRC(de939fb7) SHA1(a305bdf247f498f86cd681fba7d0593a668067c7), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4c9__z, m4c9, "ct202ad.p1", 0x0000, 0x010000, CRC(c8484dfd) SHA1(778fc30597b942fd75f5230ef3193b9f599abd03), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4c9__0, m4c9, "ct202b.p1", 0x0000, 0x010000, CRC(b7c611aa) SHA1(d7d4e7d4d06e7198424206b8259ca66cc06062bb), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4c9__1, m4c9, "ct202bd.p1", 0x0000, 0x010000, CRC(fe5420b7) SHA1(f443f1669b4f263b678526e2890671ad4e5848be), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4c9__2, m4c9, "ct202c.p1", 0x0000, 0x010000, CRC(a0997fbb) SHA1(52d6172d6b737a65d24d6750847ccf2797eb54d4), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4c9__3, m4c9, "ct202d.p1", 0x0000, 0x010000, CRC(5811f1a2) SHA1(87614b915aa697869739026bf45f53574123c6f2), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4c9__4, m4c9, "ct202dk.p1", 0x0000, 0x010000, CRC(58857027) SHA1(bcb37032237c7542bfde915de815eb93b5def43e), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4c9__5, m4c9, "ct202dr.p1", 0x0000, 0x010000, CRC(b2769912) SHA1(b3030c07a07774462e956201b5843e366df39c47), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4c9__6, m4c9, "ct202dy.p1", 0x0000, 0x010000, CRC(47aa690b) SHA1(a3fd71dae7a94402641048b5e986f13347bc28ac), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4c9__7, m4c9, "ct202k.p1", 0x0000, 0x010000, CRC(990cf3cd) SHA1(13d29f3111d193e8cca45d8319f8657066b2ac8a), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4c9__8, m4c9, "ct202r.p1", 0x0000, 0x010000, CRC(0da3e958) SHA1(37760de8134e9298212ddebaebe79a08016da7e9), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4c9__9, m4c9, "ct202s.p1", 0x0000, 0x010000, CRC(19214c6e) SHA1(93c8c40fd7b3a8873715e7bee88a09a995b44b28), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4c9__aa, m4c9, "ct202y.p1", 0x0000, 0x010000, CRC(79362dcc) SHA1(80782ddb98f896101fa89f77ce76aa6f63391645), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 38)" ) +// "(C)1991 BARCREST" and "CT3 0.2" +GAME_CUSTOM( 199?, m4c9__a, m4c9, "c915.hex", 0x0000, 0x010000, CRC(dabfa3f3) SHA1(f507c78e61cba74e9b776bebaf0cc4fa40b6de95), "Barcrest","Cloud Nine (Barcrest) (MPU4) (CT3 0.2)" ) GAME_CUSTOM( 199?, m4c9__ab, m4c9, "ct302ad.p1", 0x0000, 0x010000, CRC(2f29a7e9) SHA1(059f73b6a9c2a1d8f9b8bbef9050c61c2d4f13bb), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 39)" ) GAME_CUSTOM( 199?, m4c9__ac, m4c9, "ct302b.p1", 0x0000, 0x010000, CRC(1e677623) SHA1(c6ee2686f853626e390f28a611e8861cc8f935b0), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4c9__ad, m4c9, "ct302bd.p1", 0x0000, 0x010000, CRC(70e60d8f) SHA1(139d92aa978df03af7b7913b6d4e56b211e9ddba), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 41)" ) @@ -2125,6 +2201,37 @@ GAME_CUSTOM( 199?, m4c9__ai, m4c9, "ct302dy.p1", 0x0000, 0x010000, CRC(8da GAME_CUSTOM( 199?, m4c9__aj, m4c9, "ct302k.p1", 0x0000, 0x010000, CRC(cfb85369) SHA1(c5726477aeea5a70e8eef74e57732fe85abea737), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 47)" ) GAME_CUSTOM( 199?, m4c9__ak, m4c9, "ct302r.p1", 0x0000, 0x010000, CRC(10c64611) SHA1(d85df4ca0fc13ddab219a5602019e54471b83aaf), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 48)" ) GAME_CUSTOM( 199?, m4c9__al, m4c9, "ct302y.p1", 0x0000, 0x010000, CRC(46514a44) SHA1(71e698c88488a67e94c322cb393f637c7e35d633), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 49)" ) +// "(C)1991 BARCREST" and "C92 1.0" +GAME_CUSTOM( 199?, m4c9__b, m4c9, "c9210dk.p1", 0x0000, 0x010000, CRC(169a3ce4) SHA1(74d5d533c145908d17bb3e6ac6fea6e3c826ef1e), "Barcrest","Cloud Nine (Barcrest) (MPU4) (C92 1.0KD)" ) +// "(C)1991 BARCREST" and "C95 1.0" +GAME_CUSTOM( 199?, m4c9__l, m4c9, "c9510s.p1", 0x0000, 0x010000, CRC(dc70433e) SHA1(86f158909fea49baf4239821ccf092d8ef1027b7), "Barcrest","Cloud Nine (Barcrest) (MPU4) (C95 1.0)" ) +GAME_CUSTOM( 199?, m4c9__c, m4c9, "c9510ad.p1", 0x0000, 0x010000, CRC(e1a6a573) SHA1(d653d8dce8d8df4151e2fcd8b93964e326bfbe7f), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4c9__d, m4c9, "c9510b.p1", 0x0000, 0x010000, CRC(80c1d5bb) SHA1(5928f58f7963710e4ec9043aae4f656d98888e5b), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4c9__e, m4c9, "c9510bd.p1", 0x0000, 0x010000, CRC(0aadc7d5) SHA1(143d937ef7b17d86d2e41065bb8f851b548ac8a3), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4c9__f, m4c9, "c9510d.p1", 0x0000, 0x010000, CRC(e669989f) SHA1(a9ee5e1d309585f21882681a06f064f6ed03951f), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4c9__g, m4c9, "c9510dk.p1", 0x0000, 0x010000, CRC(43be243e) SHA1(3974051fe47a192c135eceb2a7966e6a41b01a3d), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4c9__h, m4c9, "c9510dr.p1", 0x0000, 0x010000, CRC(8edf7aa6) SHA1(ac15a8c1d0e24cc99452b560b68a664e16e8d82f), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4c9__i, m4c9, "c9510dy.p1", 0x0000, 0x010000, CRC(b0ffae04) SHA1(81921a45a06c38a5391ed3edec57da74b220a181), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4c9__j, m4c9, "c9510k.p1", 0x0000, 0x010000, CRC(665b330a) SHA1(75fe5fbe6f3b11a21092f6d18f7f50980c92febe), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4c9__k, m4c9, "c9510r.p1", 0x0000, 0x010000, CRC(a9f25224) SHA1(3fe4091b27a2d789a8c5d00cb4fc00289639588f), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4c9__m, m4c9, "c9510y.p1", 0x0000, 0x010000, CRC(3a93bc6a) SHA1(2832b48b6391746dbcea3484715dd6a169c081af), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 14)" ) +// "(C)1991 BARCREST" and "CLN 4.0" +GAME_CUSTOM( 199?, m4c9__n, m4c9, "clnv.p1", 0x0000, 0x010000, CRC(486097d8) SHA1(33e9eab0fb1c750160a8cb2b75eca73145d6956e), "Barcrest","Cloud Nine (Barcrest) (MPU4) (CLN 4.0V)" ) +// "(C)1991 BARCREST" and "CT2 0.2" +GAME_CUSTOM( 199?, m4c9__9, m4c9, "ct202s.p1", 0x0000, 0x010000, CRC(19214c6e) SHA1(93c8c40fd7b3a8873715e7bee88a09a995b44b28), "Barcrest","Cloud Nine (Barcrest) (MPU4) (CT2 0.2)" ) +GAME_CUSTOM( 199?, m4c9__z, m4c9, "ct202ad.p1", 0x0000, 0x010000, CRC(c8484dfd) SHA1(778fc30597b942fd75f5230ef3193b9f599abd03), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4c9__0, m4c9, "ct202b.p1", 0x0000, 0x010000, CRC(b7c611aa) SHA1(d7d4e7d4d06e7198424206b8259ca66cc06062bb), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4c9__1, m4c9, "ct202bd.p1", 0x0000, 0x010000, CRC(fe5420b7) SHA1(f443f1669b4f263b678526e2890671ad4e5848be), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 29)" ) +GAME_CUSTOM( 199?, m4c9__2, m4c9, "ct202c.p1", 0x0000, 0x010000, CRC(a0997fbb) SHA1(52d6172d6b737a65d24d6750847ccf2797eb54d4), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 30)" ) +GAME_CUSTOM( 199?, m4c9__3, m4c9, "ct202d.p1", 0x0000, 0x010000, CRC(5811f1a2) SHA1(87614b915aa697869739026bf45f53574123c6f2), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 31)" ) +GAME_CUSTOM( 199?, m4c9__4, m4c9, "ct202dk.p1", 0x0000, 0x010000, CRC(58857027) SHA1(bcb37032237c7542bfde915de815eb93b5def43e), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 32)" ) +GAME_CUSTOM( 199?, m4c9__5, m4c9, "ct202dr.p1", 0x0000, 0x010000, CRC(b2769912) SHA1(b3030c07a07774462e956201b5843e366df39c47), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 33)" ) +GAME_CUSTOM( 199?, m4c9__6, m4c9, "ct202dy.p1", 0x0000, 0x010000, CRC(47aa690b) SHA1(a3fd71dae7a94402641048b5e986f13347bc28ac), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 34)" ) +GAME_CUSTOM( 199?, m4c9__7, m4c9, "ct202k.p1", 0x0000, 0x010000, CRC(990cf3cd) SHA1(13d29f3111d193e8cca45d8319f8657066b2ac8a), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 35)" ) +GAME_CUSTOM( 199?, m4c9__8, m4c9, "ct202r.p1", 0x0000, 0x010000, CRC(0da3e958) SHA1(37760de8134e9298212ddebaebe79a08016da7e9), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 36)" ) +GAME_CUSTOM( 199?, m4c9__aa, m4c9, "ct202y.p1", 0x0000, 0x010000, CRC(79362dcc) SHA1(80782ddb98f896101fa89f77ce76aa6f63391645), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 38)" ) +// "(C)1991 BARCREST" and "CT5 0.2" +GAME_CUSTOM( 199?, m4c9__aw, m4c9, "ct502s.p1", 0x0000, 0x010000, CRC(cb02b9e7) SHA1(786c64abd0b9c5dc23b1508a2527e87e385acfa9), "Barcrest","Cloud Nine (Barcrest) (MPU4) (CT5 0.2)" ) GAME_CUSTOM( 199?, m4c9__am, m4c9, "ct502ad.p1", 0x0000, 0x010000, CRC(ff0ec7a7) SHA1(80ddc21a0df33aaa1c76ed5f57598494a1c36c5a), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 50)" ) GAME_CUSTOM( 199?, m4c9__an, m4c9, "ct502b.p1", 0x0000, 0x010000, CRC(2585dc82) SHA1(10ee12ecc6dfc09f9f9993b2fce837b0989c19ee), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 51)" ) GAME_CUSTOM( 199?, m4c9__ao, m4c9, "ct502bd.p1", 0x0000, 0x010000, CRC(0d80572d) SHA1(6dfb48438accef039e2de12962ad826eaa3caee4), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 52)" ) @@ -2135,14 +2242,15 @@ GAME_CUSTOM( 199?, m4c9__as, m4c9, "ct502dr.p1", 0x0000, 0x010000, CRC(0e8 GAME_CUSTOM( 199?, m4c9__at, m4c9, "ct502dy.p1", 0x0000, 0x010000, CRC(54d27491) SHA1(ba4474f98474da828ebc7bf9db52ead05df0cdfc), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 57)" ) GAME_CUSTOM( 199?, m4c9__au, m4c9, "ct502k.p1", 0x0000, 0x010000, CRC(f53ee613) SHA1(678f59b923054e6d91ea1bd91515b6522f192a8c), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 58)" ) GAME_CUSTOM( 199?, m4c9__av, m4c9, "ct502r.p1", 0x0000, 0x010000, CRC(b678557d) SHA1(fbf3c367d40d2f914906eb7cd7e95713bfe7fc30), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4c9__aw, m4c9, "ct502s.p1", 0x0000, 0x010000, CRC(cb02b9e7) SHA1(786c64abd0b9c5dc23b1508a2527e87e385acfa9), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 60)" ) GAME_CUSTOM( 199?, m4c9__ax, m4c9, "ct502y.p1", 0x0000, 0x010000, CRC(f4cc4dc9) SHA1(d23757467830dfbdeed2a52a0c7e31276124d24d), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4c9__ay, m4c9, "c9o02__1.1", 0x0000, 0x010000, CRC(109f7040) SHA1(3fe9da13d9746e1cdaf6dcd539e4af624d2cec71), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4c9__az, m4c9, "c9o05__1.1", 0x0000, 0x010000, CRC(2c821aa8) SHA1(33fba7dea0f66e7b0251971864d5a2923f96f8cd), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4c9__a0, m4c9, "c9o10__1.1", 0x0000, 0x010000, CRC(c5063185) SHA1(ca98038ccd85ebc370cacce8583ddbc1f759558d), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 64)" ) -GAME_CUSTOM( 199?, m4c9__a1, m4c9, "c9o10d_1.1", 0x0000, 0x010000, CRC(6b20b16d) SHA1(15079fc5f14f545c291d357a795e6b41ca1d5a47), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4c9__a2, m4c9, "c9o20__1.1", 0x0000, 0x010000, CRC(e05fa532) SHA1(63d070416a4e6979302901bb33e20c994cb3723e), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4c9__a3, m4c9, "c9o20d_1.1", 0x0000, 0x010000, CRC(047b2d83) SHA1(b83f8fe6477226ef3e75f406020ea4f8b3d55c32), "Barcrest","Cloud Nine (Barcrest) (MPU4) (set 67)" ) +// "(C)1993 B.W.B." and "SC9 5.0" +GAME_CUSTOM( 199?, m4c9__a2, m4c9, "c9o20__1.1", 0x0000, 0x010000, CRC(e05fa532) SHA1(63d070416a4e6979302901bb33e20c994cb3723e), "Bwb","Cloud Nine (Barcrest) (MPU4) (SC9 5.0)" ) +GAME_CUSTOM( 199?, m4c9__a3, m4c9, "c9o20d_1.1", 0x0000, 0x010000, CRC(047b2d83) SHA1(b83f8fe6477226ef3e75f406020ea4f8b3d55c32), "Bwb","Cloud Nine (Barcrest) (MPU4) (SC9 5.0D)" ) +// no copyright string and "SC9 1.0" (hack or early Bwb set?) +GAME_CUSTOM( 199?, m4c9__ay, m4c9, "c9o02__1.1", 0x0000, 0x010000, CRC(109f7040) SHA1(3fe9da13d9746e1cdaf6dcd539e4af624d2cec71), "hack?","Cloud Nine (Barcrest) (MPU4) (SC9 1.0, hack?, set 1)" ) +GAME_CUSTOM( 199?, m4c9__az, m4c9, "c9o05__1.1", 0x0000, 0x010000, CRC(2c821aa8) SHA1(33fba7dea0f66e7b0251971864d5a2923f96f8cd), "hack?","Cloud Nine (Barcrest) (MPU4) (SC9 1.0, hack?, set 2)" ) +GAME_CUSTOM( 199?, m4c9__a0, m4c9, "c9o10__1.1", 0x0000, 0x010000, CRC(c5063185) SHA1(ca98038ccd85ebc370cacce8583ddbc1f759558d), "hack?","Cloud Nine (Barcrest) (MPU4) (SC9 1.0, hack?, set 3)" ) +GAME_CUSTOM( 199?, m4c9__a1, m4c9, "c9o10d_1.1", 0x0000, 0x010000, CRC(6b20b16d) SHA1(15079fc5f14f545c291d357a795e6b41ca1d5a47), "hack?","Cloud Nine (Barcrest) (MPU4) (SC9 1.0, hack?, set 4)" ) #define M4TUTFRT_EXTRA_ROMS \ @@ -2163,50 +2271,8 @@ GAME_CUSTOM( 199?, m4c9__a3, m4c9, "c9o20d_1.1", 0x0000, 0x010000, CRC(047 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4tutfrt, 0, "tft04s.p1", 0x0000, 0x010000, CRC(c20c3589) SHA1(55d1bc5d5f4ae14acafb36bd640faaf4ffccc6eb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4tutfrt__a, m4tutfrt, "ctuad.p1", 0x0000, 0x010000, CRC(0ec1661b) SHA1(162ddc30c341fd8eda8ce57a60edf06b4e39a24f), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4tutfrt__b, m4tutfrt, "ctub.p1", 0x0000, 0x010000, CRC(f4289621) SHA1(a4078552146c88c05845cbdcd551e4564840fea4), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4tutfrt__c, m4tutfrt, "ctubd.p1", 0x0000, 0x010000, CRC(38dd0b51) SHA1(04df9511f366cc575a1a06d3a5d60ec0245f64a7), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4tutfrt__d, m4tutfrt, "ctud.p1", 0x0000, 0x010000, CRC(6033fae5) SHA1(f5bdd1821344d4546eea8caa52d76e3bd509810e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4tutfrt__e, m4tutfrt, "ctudk.p1", 0x0000, 0x010000, CRC(36dd1e41) SHA1(ad5ad7cae12634149d38e286e6873b81bda52871), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4tutfrt__f, m4tutfrt, "ctudy.p1", 0x0000, 0x010000, CRC(58c02db6) SHA1(faf85caeaa0678b5771d801cf3d9645d7767767c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4tutfrt__g, m4tutfrt, "ctuk.p1", 0x0000, 0x010000, CRC(4c247447) SHA1(f5aebb4a75632c9a74dca1f3e9559399c89ac679), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4tutfrt__h, m4tutfrt, "ctur.p1", 0x0000, 0x010000, CRC(705a2b52) SHA1(40b0738146d073f93877a15f63830ff3e07814c1), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4tutfrt__i, m4tutfrt, "ctus.p1", 0x0000, 0x010000, CRC(1b282170) SHA1(e3082aed6e96587de56c5593d32d0129c47fe667), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4tutfrt__j, m4tutfrt, "ctuy.p1", 0x0000, 0x010000, CRC(ed3103bc) SHA1(eefb72728e026fad3dd031665510ee0aba23e14b), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4tutfrt__k, m4tutfrt, "f1u01ad.p1", 0x0000, 0x010000, CRC(7573d8cf) SHA1(fe1553ca8f588554fdd495dc2f048e50e00590bb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4tutfrt__l, m4tutfrt, "f1u01b.p1", 0x0000, 0x010000, CRC(158d1a3a) SHA1(da80334e9982f778a908a6fe89a593863e7c763e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4tutfrt__m, m4tutfrt, "f1u01bd.p1", 0x0000, 0x010000, CRC(9844e568) SHA1(a580176338cdeed5fb4d1744b537bde1f499293e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4tutfrt__n, m4tutfrt, "f1u01c.p1", 0x0000, 0x010000, CRC(4709bd66) SHA1(c15f64767315ea0434a57b9e494a9e8090f1e05a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4tutfrt__o, m4tutfrt, "f1u01d.p1", 0x0000, 0x010000, CRC(3a3c6745) SHA1(f270bccb4bdedb5cfaf0130da6e480dc31889682), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4tutfrt__p, m4tutfrt, "f1u01dk.p1", 0x0000, 0x010000, CRC(4fa79f23) SHA1(ce9a0815d96a94d564edf5a775af94ea10070ff5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4tutfrt__q, m4tutfrt, "f1u01dr.p1", 0x0000, 0x010000, CRC(6fcc4d76) SHA1(27d8fdd5965ba565cb5b6113b7cba5e820650419), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4tutfrt__r, m4tutfrt, "f1u01dy.p1", 0x0000, 0x010000, CRC(cdd43fc2) SHA1(6f4da20de3040675592b4338a1d72654800c20eb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4tutfrt__s, m4tutfrt, "f1u01k.p1", 0x0000, 0x010000, CRC(7e9c3110) SHA1(56ab6e5362ce8795c65d0cf11742e3ddb6d8b8a3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4tutfrt__t, m4tutfrt, "f1u01r.p1", 0x0000, 0x010000, CRC(0e6b2132) SHA1(8757713677e2eb0400c69d3cdde6506662e0ef0b), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4tutfrt__u, m4tutfrt, "f1u01s.p1", 0x0000, 0x010000, CRC(d69668d2) SHA1(86ea656a3a4d4e6701c70b5e730ae8402cd70342), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4tutfrt__v, m4tutfrt, "f1u01y.p1", 0x0000, 0x010000, CRC(33e7d5fd) SHA1(96f53fbb228e98ce3a848b2c72bdb8876c9de160), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4tutfrt__w, m4tutfrt, "f3u01ad.p1", 0x0000, 0x010000, CRC(acb1bfb3) SHA1(8aa22c45d98ecec324fa031b46689496f9a2842c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4tutfrt__x, m4tutfrt, "f3u01b.p1", 0x0000, 0x010000, CRC(a0d14e25) SHA1(16f2444334608702748a3b0b2556ac1a7760615a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4tutfrt__y, m4tutfrt, "f3u01bd.p1", 0x0000, 0x010000, CRC(9aadd2f9) SHA1(4dbff4f6fd4d02778733eb846a354177f0e204a5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4tutfrt__z, m4tutfrt, "f3u01c.p1", 0x0000, 0x010000, CRC(a3ad34d5) SHA1(e8c435f80b4fd3f7af16f341e107a85a33f1fe1c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4tutfrt__0, m4tutfrt, "f3u01d.p1", 0x0000, 0x010000, CRC(c6790301) SHA1(fb0b619e75e1227f4d293b613e80d8d653517eec), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4tutfrt__1, m4tutfrt, "f3u01dk.p1", 0x0000, 0x010000, CRC(ee0554fe) SHA1(12cd26d6205fec35590fd23682c578f06466eb01), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4tutfrt__2, m4tutfrt, "f3u01dr.p1", 0x0000, 0x010000, CRC(32d761eb) SHA1(aa1098629d2a1c98c606a71a7cf0ae97f381aebe), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4tutfrt__3, m4tutfrt, "f3u01dy.p1", 0x0000, 0x010000, CRC(3ad66969) SHA1(4c79edc52095cfa1fae8215caaaaf434cd38199d), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4tutfrt__4, m4tutfrt, "f3u01k.p1", 0x0000, 0x010000, CRC(2b6c0f0f) SHA1(64e50adc6656225c9cdaaee64ae59cafcd1623ee), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4tutfrt__5, m4tutfrt, "f3u01r.p1", 0x0000, 0x010000, CRC(93cb1bfb) SHA1(e29439caed4a2f4512e50ff158427b61b5a9c4a9), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4tutfrt__6, m4tutfrt, "f3u01s.p1", 0x0000, 0x010000, CRC(dce2e5be) SHA1(3c218cdb939d5b7cc650c820737ae3ac653435ce), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4tutfrt__7, m4tutfrt, "f3u01y.p1", 0x0000, 0x010000, CRC(9aae0ca2) SHA1(83192225d886848ee0320973fb9dbd85cf9045b8), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4tutfrt__8, m4tutfrt, "tf4ad.p1", 0x0000, 0x010000, CRC(6ddc90a9) SHA1(76dd22c5e65fc46360123e200016d11a8946d2f3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4tutfrt__9, m4tutfrt, "tf4b.p1", 0x0000, 0x010000, CRC(c3a70eac) SHA1(ea5a39e33af96e84ce0ea184850d5f580dbf19ce), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4tutfrt__aa, m4tutfrt, "tf4bd.p1", 0x0000, 0x010000, CRC(54ae2498) SHA1(54a63a0de794eb2ce321f79b09a56485d9e77715), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4tutfrt__ab, m4tutfrt, "tf4d.p1", 0x0000, 0x010000, CRC(d8ff9045) SHA1(ae7307212614c6f1b4e3d72d3a1ae68ca1d0b470), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4tutfrt__ac, m4tutfrt, "tf4dk.p1", 0x0000, 0x010000, CRC(a2e3b67f) SHA1(dea9958caba08b5cdec6eec9e4c17038ecb0ca55), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4tutfrt__ad, m4tutfrt, "tf4dy.p1", 0x0000, 0x010000, CRC(ff4f26c4) SHA1(21ef226bf92deeab15c9368d707bf75b7104e7c3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4tutfrt__ae, m4tutfrt, "tf4k.p1", 0x0000, 0x010000, CRC(1a4eb247) SHA1(f6b4c85dd8b155b672bd96ea7ee6630df773c6ca), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4tutfrt__af, m4tutfrt, "tf4s.p1", 0x0000, 0x010000, CRC(2d298c58) SHA1(568c2babdb002da871df7a36d16e4f7810cac265), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 43)" ) -GAME_CUSTOM( 199?, m4tutfrt__ag, m4tutfrt, "tf4y.p1", 0x0000, 0x010000, CRC(06cd8b06) SHA1(92205e9edd42f80de67d5d6652de8ea80bc60af7), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 44)" ) +// "(C)1991 BARCREST" and "TF4 0.4" (TFT 0.4 on startup) +GAME_CUSTOM( 199?, m4tutfrt, 0, "tft04s.p1", 0x0000, 0x010000, CRC(c20c3589) SHA1(55d1bc5d5f4ae14acafb36bd640faaf4ffccc6eb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 / TF4 0.4)" ) GAME_CUSTOM( 199?, m4tutfrt__ai, m4tutfrt, "tft04ad.p1", 0x0000, 0x010000, CRC(2994aa14) SHA1(af0e618f24cdedd14e3a347701313360d9fc73d1), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 46)" ) GAME_CUSTOM( 199?, m4tutfrt__aj, m4tutfrt, "tft04b.p1", 0x0000, 0x010000, CRC(e95eab06) SHA1(70e85e38493ac1fd30a79582bab45af5227d835a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 47)" ) GAME_CUSTOM( 199?, m4tutfrt__ak, m4tutfrt, "tft04bd.p1", 0x0000, 0x010000, CRC(060d3572) SHA1(e78b6248d3aef6cd08f4b30e0b00bd4cf254e630), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 48)" ) @@ -2218,8 +2284,57 @@ GAME_CUSTOM( 199?, m4tutfrt__ap, m4tutfrt, "tft04dy.p1", 0x0000, 0 GAME_CUSTOM( 199?, m4tutfrt__aq, m4tutfrt, "tft04k.p1", 0x0000, 0x010000, CRC(ffbf53e1) SHA1(a003bb5d94b43d6ae9b45c599cccb0006bd8a89a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 54)" ) GAME_CUSTOM( 199?, m4tutfrt__ar, m4tutfrt, "tft04r.p1", 0x0000, 0x010000, CRC(cbf79555) SHA1(0aacb3f28984637919294a18f40858e8f46a18b3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 55)" ) GAME_CUSTOM( 199?, m4tutfrt__as, m4tutfrt, "tft04y.p1", 0x0000, 0x010000, CRC(569cbdbb) SHA1(8a978dfba876e5a2e12226f5fe55c29b5f079fad), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 56)" ) -GAME_CUSTOM( 199?, m4tutfrt__at, m4tutfrt, "tut25.bin", 0x0000, 0x010000, CRC(c98fb5bb) SHA1(1a3bc343a38b5978a919b454e9a2e806dce7a78a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 57)" ) -GAME_CUSTOM( 199?, m4tutfrt__au, m4tutfrt, "tut25patched.bin", 0x0000, 0x010000, CRC(b4443cf5) SHA1(e79ec52730146f1591140555b814cbd20b5dfe78), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 58)" ) +// "(C)1991 BARCREST" and "CTU 0.1" +GAME_CUSTOM( 199?, m4tutfrt__i, m4tutfrt, "ctus.p1", 0x0000, 0x010000, CRC(1b282170) SHA1(e3082aed6e96587de56c5593d32d0129c47fe667), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1)" ) +GAME_CUSTOM( 199?, m4tutfrt__a, m4tutfrt, "ctuad.p1", 0x0000, 0x010000, CRC(0ec1661b) SHA1(162ddc30c341fd8eda8ce57a60edf06b4e39a24f), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4tutfrt__b, m4tutfrt, "ctub.p1", 0x0000, 0x010000, CRC(f4289621) SHA1(a4078552146c88c05845cbdcd551e4564840fea4), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4tutfrt__c, m4tutfrt, "ctubd.p1", 0x0000, 0x010000, CRC(38dd0b51) SHA1(04df9511f366cc575a1a06d3a5d60ec0245f64a7), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4tutfrt__d, m4tutfrt, "ctud.p1", 0x0000, 0x010000, CRC(6033fae5) SHA1(f5bdd1821344d4546eea8caa52d76e3bd509810e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4tutfrt__e, m4tutfrt, "ctudk.p1", 0x0000, 0x010000, CRC(36dd1e41) SHA1(ad5ad7cae12634149d38e286e6873b81bda52871), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4tutfrt__f, m4tutfrt, "ctudy.p1", 0x0000, 0x010000, CRC(58c02db6) SHA1(faf85caeaa0678b5771d801cf3d9645d7767767c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4tutfrt__g, m4tutfrt, "ctuk.p1", 0x0000, 0x010000, CRC(4c247447) SHA1(f5aebb4a75632c9a74dca1f3e9559399c89ac679), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4tutfrt__h, m4tutfrt, "ctur.p1", 0x0000, 0x010000, CRC(705a2b52) SHA1(40b0738146d073f93877a15f63830ff3e07814c1), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4tutfrt__j, m4tutfrt, "ctuy.p1", 0x0000, 0x010000, CRC(ed3103bc) SHA1(eefb72728e026fad3dd031665510ee0aba23e14b), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 11)" ) +// "(C)1991 BARCREST" and "F1U 0.1" +GAME_CUSTOM( 199?, m4tutfrt__u, m4tutfrt, "f1u01s.p1", 0x0000, 0x010000, CRC(d69668d2) SHA1(86ea656a3a4d4e6701c70b5e730ae8402cd70342), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1)" ) +GAME_CUSTOM( 199?, m4tutfrt__k, m4tutfrt, "f1u01ad.p1", 0x0000, 0x010000, CRC(7573d8cf) SHA1(fe1553ca8f588554fdd495dc2f048e50e00590bb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4tutfrt__l, m4tutfrt, "f1u01b.p1", 0x0000, 0x010000, CRC(158d1a3a) SHA1(da80334e9982f778a908a6fe89a593863e7c763e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4tutfrt__m, m4tutfrt, "f1u01bd.p1", 0x0000, 0x010000, CRC(9844e568) SHA1(a580176338cdeed5fb4d1744b537bde1f499293e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4tutfrt__n, m4tutfrt, "f1u01c.p1", 0x0000, 0x010000, CRC(4709bd66) SHA1(c15f64767315ea0434a57b9e494a9e8090f1e05a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4tutfrt__o, m4tutfrt, "f1u01d.p1", 0x0000, 0x010000, CRC(3a3c6745) SHA1(f270bccb4bdedb5cfaf0130da6e480dc31889682), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4tutfrt__p, m4tutfrt, "f1u01dk.p1", 0x0000, 0x010000, CRC(4fa79f23) SHA1(ce9a0815d96a94d564edf5a775af94ea10070ff5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4tutfrt__q, m4tutfrt, "f1u01dr.p1", 0x0000, 0x010000, CRC(6fcc4d76) SHA1(27d8fdd5965ba565cb5b6113b7cba5e820650419), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4tutfrt__r, m4tutfrt, "f1u01dy.p1", 0x0000, 0x010000, CRC(cdd43fc2) SHA1(6f4da20de3040675592b4338a1d72654800c20eb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4tutfrt__s, m4tutfrt, "f1u01k.p1", 0x0000, 0x010000, CRC(7e9c3110) SHA1(56ab6e5362ce8795c65d0cf11742e3ddb6d8b8a3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4tutfrt__t, m4tutfrt, "f1u01r.p1", 0x0000, 0x010000, CRC(0e6b2132) SHA1(8757713677e2eb0400c69d3cdde6506662e0ef0b), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4tutfrt__v, m4tutfrt, "f1u01y.p1", 0x0000, 0x010000, CRC(33e7d5fd) SHA1(96f53fbb228e98ce3a848b2c72bdb8876c9de160), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 23)" ) +// "(C)1991 BARCREST" and "F3U 0.1" +GAME_CUSTOM( 199?, m4tutfrt__6, m4tutfrt, "f3u01s.p1", 0x0000, 0x010000, CRC(dce2e5be) SHA1(3c218cdb939d5b7cc650c820737ae3ac653435ce), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1)" ) +GAME_CUSTOM( 199?, m4tutfrt__w, m4tutfrt, "f3u01ad.p1", 0x0000, 0x010000, CRC(acb1bfb3) SHA1(8aa22c45d98ecec324fa031b46689496f9a2842c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4tutfrt__x, m4tutfrt, "f3u01b.p1", 0x0000, 0x010000, CRC(a0d14e25) SHA1(16f2444334608702748a3b0b2556ac1a7760615a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4tutfrt__y, m4tutfrt, "f3u01bd.p1", 0x0000, 0x010000, CRC(9aadd2f9) SHA1(4dbff4f6fd4d02778733eb846a354177f0e204a5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4tutfrt__z, m4tutfrt, "f3u01c.p1", 0x0000, 0x010000, CRC(a3ad34d5) SHA1(e8c435f80b4fd3f7af16f341e107a85a33f1fe1c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4tutfrt__0, m4tutfrt, "f3u01d.p1", 0x0000, 0x010000, CRC(c6790301) SHA1(fb0b619e75e1227f4d293b613e80d8d653517eec), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4tutfrt__1, m4tutfrt, "f3u01dk.p1", 0x0000, 0x010000, CRC(ee0554fe) SHA1(12cd26d6205fec35590fd23682c578f06466eb01), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 29)" ) +GAME_CUSTOM( 199?, m4tutfrt__2, m4tutfrt, "f3u01dr.p1", 0x0000, 0x010000, CRC(32d761eb) SHA1(aa1098629d2a1c98c606a71a7cf0ae97f381aebe), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 30)" ) +GAME_CUSTOM( 199?, m4tutfrt__3, m4tutfrt, "f3u01dy.p1", 0x0000, 0x010000, CRC(3ad66969) SHA1(4c79edc52095cfa1fae8215caaaaf434cd38199d), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 31)" ) +GAME_CUSTOM( 199?, m4tutfrt__4, m4tutfrt, "f3u01k.p1", 0x0000, 0x010000, CRC(2b6c0f0f) SHA1(64e50adc6656225c9cdaaee64ae59cafcd1623ee), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 32)" ) +GAME_CUSTOM( 199?, m4tutfrt__5, m4tutfrt, "f3u01r.p1", 0x0000, 0x010000, CRC(93cb1bfb) SHA1(e29439caed4a2f4512e50ff158427b61b5a9c4a9), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 33)" ) +GAME_CUSTOM( 199?, m4tutfrt__7, m4tutfrt, "f3u01y.p1", 0x0000, 0x010000, CRC(9aae0ca2) SHA1(83192225d886848ee0320973fb9dbd85cf9045b8), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 35)" ) +// "(C)1991 BARCREST" and "TF4 0.2" +GAME_CUSTOM( 199?, m4tutfrt__af, m4tutfrt, "tf4s.p1", 0x0000, 0x010000, CRC(2d298c58) SHA1(568c2babdb002da871df7a36d16e4f7810cac265), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2)" ) +GAME_CUSTOM( 199?, m4tutfrt__8, m4tutfrt, "tf4ad.p1", 0x0000, 0x010000, CRC(6ddc90a9) SHA1(76dd22c5e65fc46360123e200016d11a8946d2f3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 36)" ) +GAME_CUSTOM( 199?, m4tutfrt__9, m4tutfrt, "tf4b.p1", 0x0000, 0x010000, CRC(c3a70eac) SHA1(ea5a39e33af96e84ce0ea184850d5f580dbf19ce), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 37)" ) +GAME_CUSTOM( 199?, m4tutfrt__aa, m4tutfrt, "tf4bd.p1", 0x0000, 0x010000, CRC(54ae2498) SHA1(54a63a0de794eb2ce321f79b09a56485d9e77715), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 38)" ) +GAME_CUSTOM( 199?, m4tutfrt__ab, m4tutfrt, "tf4d.p1", 0x0000, 0x010000, CRC(d8ff9045) SHA1(ae7307212614c6f1b4e3d72d3a1ae68ca1d0b470), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 39)" ) +GAME_CUSTOM( 199?, m4tutfrt__ac, m4tutfrt, "tf4dk.p1", 0x0000, 0x010000, CRC(a2e3b67f) SHA1(dea9958caba08b5cdec6eec9e4c17038ecb0ca55), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 40)" ) +GAME_CUSTOM( 199?, m4tutfrt__ad, m4tutfrt, "tf4dy.p1", 0x0000, 0x010000, CRC(ff4f26c4) SHA1(21ef226bf92deeab15c9368d707bf75b7104e7c3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 41)" ) +GAME_CUSTOM( 199?, m4tutfrt__ae, m4tutfrt, "tf4k.p1", 0x0000, 0x010000, CRC(1a4eb247) SHA1(f6b4c85dd8b155b672bd96ea7ee6630df773c6ca), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 42)" ) +GAME_CUSTOM( 199?, m4tutfrt__ag, m4tutfrt, "tf4y.p1", 0x0000, 0x010000, CRC(06cd8b06) SHA1(92205e9edd42f80de67d5d6652de8ea80bc60af7), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 44)" ) +// "I.G.T SUCKS" and "F2U 0.1" +GAME_CUSTOM( 199?, m4tutfrt__at, m4tutfrt, "tut25.bin", 0x0000, 0x010000, CRC(c98fb5bb) SHA1(1a3bc343a38b5978a919b454e9a2e806dce7a78a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1, hack, set 1)" ) +GAME_CUSTOM( 199?, m4tutfrt__au, m4tutfrt, "tut25patched.bin", 0x0000, 0x010000, CRC(b4443cf5) SHA1(e79ec52730146f1591140555b814cbd20b5dfe78), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1, hack, set 2)" ) +// Bwb sets? don't have valid headers, don't show startup text.. could be something else? GAME_CUSTOM( 199?, m4tutfrt__av, m4tutfrt, "tu_05___.1a3", 0x0000, 0x010000, CRC(97acc82d) SHA1(be53e60cb8a33b91a7f5556715ab4befe7170dd2), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 59)" ) GAME_CUSTOM( 199?, m4tutfrt__aw, m4tutfrt, "tu_05_d_.1a3", 0x0000, 0x010000, CRC(33bb3018) SHA1(2c2f49c31919682ac03e61a665ce15d835e22467), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 60)" ) GAME_CUSTOM( 199?, m4tutfrt__ax, m4tutfrt, "tu_10___.1a3", 0x0000, 0x010000, CRC(7878827f) SHA1(ac692ae50e63e632d45e7240c2520df83d2baaf5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 61)" ) @@ -2321,7 +2436,8 @@ GAME_CUSTOM( 199?, m4cashat__ar, m4cashat, "csa12s.p1", 0x0000, 0x020 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4rhr, 0, "rhr15.hex", 0x0000, 0x010000, CRC(895ebbda) SHA1(f2117e743a30f3c9fc6af7fd7843bc333699db9d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "CR4 0.2" (HHN on startup) +GAME_CUSTOM( 199?, m4rhr, 0, "cr4s.p1", 0x0000, 0x010000, CRC(836c3e49) SHA1(34dde2fd4fe82ab4a9e16dcf7915705f7b8a007f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9)" ) GAME_CUSTOM( 199?, m4rhr__a, m4rhr, "cr4ad.p1", 0x0000, 0x010000, CRC(b99b3d14) SHA1(2ff68b33881e9b3c2db48c335ccbad783013084a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4rhr__b, m4rhr, "cr4b.p1", 0x0000, 0x010000, CRC(ae2691b8) SHA1(360c5c3d94bf85cf5ead114dd570ea6c61082aa9), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4rhr__c, m4rhr, "cr4bd.p1", 0x0000, 0x010000, CRC(9ba444bf) SHA1(adebf23827a5ac5e3a6d56e3352e0d3f3dc809c0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 4)" ) @@ -2329,8 +2445,11 @@ GAME_CUSTOM( 199?, m4rhr__d, m4rhr, "cr4d.p1", 0x0000, 0x010000, CRC( GAME_CUSTOM( 199?, m4rhr__e, m4rhr, "cr4dk.p1", 0x0000, 0x010000, CRC(200486b4) SHA1(3916e131801c44985668ccd57dc3e812268f9417), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4rhr__f, m4rhr, "cr4dy.p1", 0x0000, 0x010000, CRC(5b5ebe79) SHA1(6c72271258e6b951f2d6c815cfef5032e23cf7bc), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4rhr__g, m4rhr, "cr4k.p1", 0x0000, 0x010000, CRC(2cc956e8) SHA1(37fad3d3b9460763ba4d8f569ee71778f9907853), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4rhr__h, m4rhr, "cr4s.p1", 0x0000, 0x010000, CRC(836c3e49) SHA1(34dde2fd4fe82ab4a9e16dcf7915705f7b8a007f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4rhr__i, m4rhr, "cr4y.p1", 0x0000, 0x010000, CRC(5a3588e8) SHA1(b25156f38fb67dc1f1e36a50af0a9b93882572d0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4rhr__h, m4rhr, "cr4y.p1", 0x0000, 0x010000, CRC(5a3588e8) SHA1(b25156f38fb67dc1f1e36a50af0a9b93882572d0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 10)" ) +// "(C)1991 BARCREST" and "CR4 0.2" (HHN 0.2 on startup) +GAME_CUSTOM( 199?, m4rhr__i, m4rhr, "rhr15.hex", 0x0000, 0x010000, CRC(895ebbda) SHA1(f2117e743a30f3c9fc6af7fd7843bc333699db9d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.2KD / CR4 0.2)" ) +// "(C)1991 BARCREST" and "CR4 0.3" (CRT 0.3 on startup) +GAME_CUSTOM( 199?, m4rhr__t, m4rhr, "crt03s.p1", 0x0000, 0x010000, CRC(2b4c24d2) SHA1(94b19b0e8090dbbde2c67d5949f19d4050972fb1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 / CR4 0.3)" ) GAME_CUSTOM( 199?, m4rhr__j, m4rhr, "crt03ad.p1", 0x0000, 0x010000, CRC(5b779273) SHA1(b9a278cc6b4af622af35f7d4fdacdca54c94a47f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4rhr__k, m4rhr, "crt03b.p1", 0x0000, 0x010000, CRC(da5b3fa3) SHA1(66c570a193665ae0df4542112547fa6f5f9b7b79), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4rhr__l, m4rhr, "crt03bd.p1", 0x0000, 0x010000, CRC(6d6bff39) SHA1(08f4235bb2cadcc49c13991fe3e2c806c0be801d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 13)" ) @@ -2341,8 +2460,9 @@ GAME_CUSTOM( 199?, m4rhr__p, m4rhr, "crt03dr.p1", 0x0000, 0x010000, CRC( GAME_CUSTOM( 199?, m4rhr__q, m4rhr, "crt03dy.p1", 0x0000, 0x010000, CRC(3439dc85) SHA1(092dcd36e2ea43ecf62cfc1bf1498ea7777213dc), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4rhr__r, m4rhr, "crt03k.p1", 0x0000, 0x010000, CRC(0b841ae9) SHA1(5a78381122a3b718e3f212f30f76dc61e2e3ac5e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4rhr__s, m4rhr, "crt03r.p1", 0x0000, 0x010000, CRC(2a8bd767) SHA1(a9547ef37da9494bd4ffe5fbb68eca67fe63c3ba), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4rhr__t, m4rhr, "crt03s.p1", 0x0000, 0x010000, CRC(2b4c24d2) SHA1(94b19b0e8090dbbde2c67d5949f19d4050972fb1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4rhr__u, m4rhr, "crt03y.p1", 0x0000, 0x010000, CRC(40c3a105) SHA1(7ad988f71a3523ad2b19fa7d6cdf74d4328fb3e1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 22)" ) +// "(C)1991 BARCREST" and "CRU 0.1" +GAME_CUSTOM( 199?, m4rhr__2, m4rhr, "crus.p1", 0x0000, 0x010000, CRC(bf2ff034) SHA1(7ee7ef30da4283dbb2b1b040fdd3313cb2e1b7e5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1)" ) GAME_CUSTOM( 199?, m4rhr__v, m4rhr, "cruad.p1", 0x0000, 0x010000, CRC(3a680f14) SHA1(cd3c2bf77b148ee4f4ce76b2c1bc142491117890), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 23)" ) GAME_CUSTOM( 199?, m4rhr__w, m4rhr, "crub.p1", 0x0000, 0x010000, CRC(4cee9020) SHA1(b919ba28294c39b49e4fcfa54a75e852f9c873ed), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4rhr__x, m4rhr, "crubd.p1", 0x0000, 0x010000, CRC(7184b193) SHA1(392cb5887ec988e3aa1cba2491885103da1e503a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 25)" ) @@ -2350,20 +2470,20 @@ GAME_CUSTOM( 199?, m4rhr__y, m4rhr, "crud.p1", 0x0000, 0x010000, CRC( GAME_CUSTOM( 199?, m4rhr__z, m4rhr, "crudk.p1", 0x0000, 0x010000, CRC(73465d95) SHA1(3eddaee64a681727743b23fd0bec0285ed59a5ef), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 27)" ) GAME_CUSTOM( 199?, m4rhr__0, m4rhr, "crudy.p1", 0x0000, 0x010000, CRC(e08696f9) SHA1(37c97bb22ae0d09657d7d589f76adfbe6fb642e0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4rhr__1, m4rhr, "cruk.p1", 0x0000, 0x010000, CRC(168627f0) SHA1(c6c21f8442ff88736d3fd25860d815beb5a6b845), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4rhr__2, m4rhr, "crus.p1", 0x0000, 0x010000, CRC(bf2ff034) SHA1(7ee7ef30da4283dbb2b1b040fdd3313cb2e1b7e5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 30)" ) GAME_CUSTOM( 199?, m4rhr__3, m4rhr, "cruy.p1", 0x0000, 0x010000, CRC(edf1346b) SHA1(c250178991885a922f676424e70c637e11089efb), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4rhr__4, m4rhr, "redhot8.bin", 0x0000, 0x010000, CRC(1dc62d7b) SHA1(640a5b29314a7dc67db271cce06c23c676d77eee), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4rhr__5, m4rhr, "rhr03.r", 0x0000, 0x010000, CRC(98d81b1e) SHA1(17ab0dced53be9755aada7954aff2dc2a6973190), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4rhr__6, m4rhr, "rhr10", 0x0000, 0x010000, CRC(2a18a033) SHA1(add907c5ab155c28142dcee57825059715afd80d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4rhr__7, m4rhr, "rhr2015", 0x0000, 0x010000, CRC(dbfd3b95) SHA1(4fc7ae32f7d76be3d3d07d627391884bd4d6de09), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4rhr__8, m4rhr, "rhr2515", 0x0000, 0x010000, CRC(e4554c23) SHA1(6d977beb282fd638de3457e467e842ce79b5be7c), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4rhr__9, m4rhr, "rhr2pprg.bin", 0x0000, 0x010000, CRC(f97047b2) SHA1(d3ed8c93e405f9e7448b3924ff9aa84223b76046), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 37)" ) +// "(C)1991 BARCREST" and "RH8 0.1" +GAME_CUSTOM( 199?, m4rhr__4, m4rhr, "redhot8.bin", 0x0000, 0x010000, CRC(1dc62d7b) SHA1(640a5b29314a7dc67db271cce06c23c676d77eee), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1K)" ) +GAME_CUSTOM( 1991, m4rhr__a4, m4rhr, "rh8c.p1", 0x0000, 0x010000, CRC(e36d7ca0) SHA1(73970761c5c7004669b02ba9f3a299f36f2d00e9), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1C)" ) +// "(C)1991 BARCREST" and "RHR 0.3" +GAME_CUSTOM( 199?, m4rhr__af, m4rhr, "rhrs.p1", 0x0000, 0x010000, CRC(a0e5d5b6) SHA1(c730e6319bbea6f035fb3e249991983783ef5743), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3)" ) +GAME_CUSTOM( 199?, m4rhr__5, m4rhr, "rhr03.r", 0x0000, 0x010000, CRC(98d81b1e) SHA1(17ab0dced53be9755aada7954aff2dc2a6973190), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3R)" ) GAME_CUSTOM( 199?, m4rhr__aa, m4rhr, "rhrb.p1", 0x0000, 0x010000, CRC(876fbe46) SHA1(1c7faf68ddef2ccbb8e3cd2cf5c709a7a4f4daef), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 38)" ) GAME_CUSTOM( 199?, m4rhr__ab, m4rhr, "rhrbd.p1", 0x0000, 0x010000, CRC(f0fa0c7b) SHA1(96bfce8ea54e392a36cb8d82a032438bff992f07), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 39)" ) GAME_CUSTOM( 199?, m4rhr__ac, m4rhr, "rhrc.p1", 0x0000, 0x010000, CRC(76a0e556) SHA1(1a9bae286ca40d8e72022645d006a219f113e31a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4rhr__ad, m4rhr, "rhrd.p1", 0x0000, 0x010000, CRC(58a5dd6f) SHA1(3646b8cb3d49e8c530e321daad052f27cdf4bb3d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 41)" ) GAME_CUSTOM( 199?, m4rhr__ae, m4rhr, "rhrk.p1", 0x0000, 0x010000, CRC(2212cebb) SHA1(224e7e243b17f3ca90a6daa529984e9a879ff266), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4rhr__af, m4rhr, "rhrs.p1", 0x0000, 0x010000, CRC(a0e5d5b6) SHA1(c730e6319bbea6f035fb3e249991983783ef5743), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 43)" ) +// "(C)1991 BARCREST" and "RHT 0.3" +GAME_CUSTOM( 199?, m4rhr__ap, m4rhr, "rhts.p1", 0x0000, 0x010000, CRC(fecb7076) SHA1(43086c6bfd878d0ca1ec8d45285d3e941a62ac8e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3)" ) GAME_CUSTOM( 199?, m4rhr__ag, m4rhr, "rhtad.p1", 0x0000, 0x010000, CRC(ae3a31a0) SHA1(7e1f05a21cf5b3d2aceba755136c567b5d6ecfcd), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 44)" ) GAME_CUSTOM( 199?, m4rhr__ah, m4rhr, "rhtb.p1", 0x0000, 0x010000, CRC(7ceb13c8) SHA1(f0f22149bd0fb12ef06c4c3ecba605df33f52c51), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 45)" ) GAME_CUSTOM( 199?, m4rhr__ai, m4rhr, "rhtbd.p1", 0x0000, 0x010000, CRC(e4b290fc) SHA1(bf16d06429d67936118264f6c4f1ae637753d5db), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 46)" ) @@ -2373,8 +2493,9 @@ GAME_CUSTOM( 199?, m4rhr__al, m4rhr, "rhtdr.p1", 0x0000, 0x010000, CRC( GAME_CUSTOM( 199?, m4rhr__am, m4rhr, "rhtdy.p1", 0x0000, 0x010000, CRC(42f5746d) SHA1(964bd8801b44de9ea45c43b290b1cd6284e97578), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 50)" ) GAME_CUSTOM( 199?, m4rhr__an, m4rhr, "rhtk.p1", 0x0000, 0x010000, CRC(c3bfb174) SHA1(2579bf17252988de17a1367546ae187420f95cc5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 51)" ) GAME_CUSTOM( 199?, m4rhr__ao, m4rhr, "rhtr.p1", 0x0000, 0x010000, CRC(f53f4876) SHA1(feda495361d384c662554d445a95191a2c52a56a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 52)" ) -GAME_CUSTOM( 199?, m4rhr__ap, m4rhr, "rhts.p1", 0x0000, 0x010000, CRC(fecb7076) SHA1(43086c6bfd878d0ca1ec8d45285d3e941a62ac8e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 53)" ) GAME_CUSTOM( 199?, m4rhr__aq, m4rhr, "rhty.p1", 0x0000, 0x010000, CRC(68546098) SHA1(57981c06efcb44915d8c2d4b6e1cba377c4a8590), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 54)" ) +// "(C)1991 BARCREST" and "RHU 0.2" +GAME_CUSTOM( 199?, m4rhr__a0, m4rhr, "rhus.p1", 0x0000, 0x010000, CRC(31e776fc) SHA1(e51799e9db5a08cbfb0b6c5466a0a085c3d91db4), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2)" ) GAME_CUSTOM( 199?, m4rhr__ar, m4rhr, "rhuad.p1", 0x0000, 0x010000, CRC(2093126b) SHA1(942994793697cec730c461c87b24a1429e46cc02), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 55)" ) GAME_CUSTOM( 199?, m4rhr__as, m4rhr, "rhub.p1", 0x0000, 0x010000, CRC(2be41a3a) SHA1(a50c7b5b93a619e541be480646517e278da8e579), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 56)" ) GAME_CUSTOM( 199?, m4rhr__at, m4rhr, "rhubd.p1", 0x0000, 0x010000, CRC(168f7f21) SHA1(9c9e09673bdadd146883a06a8db3c0ee4b304eab), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 57)" ) @@ -2384,11 +2505,18 @@ GAME_CUSTOM( 199?, m4rhr__aw, m4rhr, "rhudr.p1", 0x0000, 0x010000, CRC( GAME_CUSTOM( 199?, m4rhr__ax, m4rhr, "rhudy.p1", 0x0000, 0x010000, CRC(692bf4eb) SHA1(136f36073f236b48442a20e06aa51a978135f1b3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 61)" ) GAME_CUSTOM( 199?, m4rhr__ay, m4rhr, "rhuk.p1", 0x0000, 0x010000, CRC(9e4e1e91) SHA1(f671858c41dc0e55189e9a86fff1846938b5c2e5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 62)" ) GAME_CUSTOM( 199?, m4rhr__az, m4rhr, "rhur.p1", 0x0000, 0x010000, CRC(6e9425e5) SHA1(1e2827f3469af15e8d390d9af839c7b474ea95a7), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4rhr__a0, m4rhr, "rhus.p1", 0x0000, 0x010000, CRC(31e776fc) SHA1(e51799e9db5a08cbfb0b6c5466a0a085c3d91db4), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 64)" ) GAME_CUSTOM( 199?, m4rhr__a1, m4rhr, "rhuy.p1", 0x0000, 0x010000, CRC(5d12178a) SHA1(18525828fac1931bb8e11f96b79db143ed533771), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4rhr__a2, m4rhr, "cr__x__x.5_0", 0x0000, 0x010000, CRC(278fe91e) SHA1(dcfed3a7796d1ee365e535115b66c7d6cbe0ab74), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4rhr__a3, m4rhr, "cr__x_dx.2_0", 0x0000, 0x010000, CRC(73fb120c) SHA1(4c0f39253dee9b528763a9cb609dec31e8529713), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 67)" ) -GAME_CUSTOM( 1991, m4rhr__a4, m4rhr, "rh8c.p1", 0x0000, 0x010000, CRC(e36d7ca0) SHA1(73970761c5c7004669b02ba9f3a299f36f2d00e9), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1C)" ) +// "(C)1998 B.W.B." and "SS2 1.0" +GAME_CUSTOM( 199?, m4rhr__9, m4rhr, "rhr2pprg.bin", 0x0000, 0x010000, CRC(f97047b2) SHA1(d3ed8c93e405f9e7448b3924ff9aa84223b76046), "Bwb","Red Hot Roll (Barcrest) (MPU4) (SS2 1.0, hack?)" ) +// "(C)2000 BWB" and "RHR 5.0" +GAME_CUSTOM( 199?, m4rhr__a2, m4rhr, "cr__x__x.5_0", 0x0000, 0x010000, CRC(278fe91e) SHA1(dcfed3a7796d1ee365e535115b66c7d6cbe0ab74), "Bwb","Red Hot Roll (Barcrest) (MPU4) (RHR 5.0)" ) +// "(C)1998 BWB" and "RHR 2.0" +GAME_CUSTOM( 199?, m4rhr__a3, m4rhr, "cr__x_dx.2_0", 0x0000, 0x010000, CRC(73fb120c) SHA1(4c0f39253dee9b528763a9cb609dec31e8529713), "Bwb","Red Hot Roll (Barcrest) (MPU4) (RHR 2.0)" ) +// "RONNIE BARKER" and "RH8 0.1" +GAME_CUSTOM( 199?, m4rhr__6, m4rhr, "rhr10", 0x0000, 0x010000, CRC(2a18a033) SHA1(add907c5ab155c28142dcee57825059715afd80d), "hack","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1, hack, set 1)" ) +GAME_CUSTOM( 199?, m4rhr__7, m4rhr, "rhr2015", 0x0000, 0x010000, CRC(dbfd3b95) SHA1(4fc7ae32f7d76be3d3d07d627391884bd4d6de09), "hack","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1, hack, set 2)" ) +// no copyright and "RHT 0.3" +GAME_CUSTOM( 199?, m4rhr__8, m4rhr, "rhr2515", 0x0000, 0x010000, CRC(e4554c23) SHA1(6d977beb282fd638de3457e467e842ce79b5be7c), "hack","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3, hack)" ) #define M4UUAW_EXTRA_ROMS \ @@ -2629,32 +2757,36 @@ GAME_CUSTOM( 199?, m4rhrc__aa, m4rhrc, "cr__x_dx.5_0", 0x0000, 0x010000, C ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4viz, 0, "viz208c", 0x0000, 0x010000, CRC(00a65029) SHA1(8dfb68d1a9f4cd00f239ed87a1d330ccb655c35b), "Barcrest","Viz (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4viz__a, m4viz, "viz20_101", 0x0000, 0x010000, CRC(0847b812) SHA1(6de9e9dad272932a22ebe457ac50da1126d931ea), "Barcrest","Viz (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4viz__b, m4viz, "viz20pv2", 0x0000, 0x010000, CRC(7e56ff95) SHA1(83679b64881adbe547b43255374de061859e17ef), "Barcrest","Viz (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4viz__c, m4viz, "viz58c", 0x0000, 0x010000, CRC(95b8918b) SHA1(4ad4ff9098e98c2076e7058493c181da705acb52), "Barcrest","Viz (Barcrest) (MPU4) (set 4)" ) +// "(C)1991 BARCREST" and "VIZ 0.6" +GAME_CUSTOM( 199?, m4viz, 0, "vizs.p1", 0x0000, 0x010000, CRC(86b487dc) SHA1(62215752e1da1ca923e6b9e410c8445577be34dd), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6)" ) GAME_CUSTOM( 199?, m4viz__d, m4viz, "vizb.p1", 0x0000, 0x010000, CRC(afdc6306) SHA1(4d35703267b3742dd7008c00ec525689c56bf227), "Barcrest","Viz (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4viz__e, m4viz, "vizc.p1", 0x0000, 0x010000, CRC(876c30fc) SHA1(f126496e87d7e84ca39d2921bf9f2be0fa2c7586), "Barcrest","Viz (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4viz__f, m4viz, "vizd.p1", 0x0000, 0x010000, CRC(46bee8cd) SHA1(4094651fd8954ca2f5cfc2bba4fc51d865c86098), "Barcrest","Viz (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4viz__g, m4viz, "vizdk.p1", 0x0000, 0x010000, CRC(24476360) SHA1(b5141a40f8c1ed3b3fbaf43ae539ae2f1aedbcca), "Barcrest","Viz (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4viz__h, m4viz, "vizdy.p1", 0x0000, 0x010000, CRC(88807a1f) SHA1(dc1539a5e69b5f0b3f68ccf7360ff4f240f6b7c7), "Barcrest","Viz (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4viz__i, m4viz, "vizk.p1", 0x0000, 0x010000, CRC(6647f592) SHA1(2ce7222bd9e173480ddc901f84859ca3ad7aded1), "Barcrest","Viz (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4viz__j, m4viz, "vizs.p1", 0x0000, 0x010000, CRC(86b487dc) SHA1(62215752e1da1ca923e6b9e410c8445577be34dd), "Barcrest","Viz (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4viz__k, m4viz, "vizy.p1", 0x0000, 0x010000, CRC(0e12112d) SHA1(4a34832dd95246e80e616affe3eab3c8794ca769), "Barcrest","Viz (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4viz__l, m4viz, "vizzzvkn", 0x0000, 0x010000, CRC(cf5c41f5) SHA1(c9b7de0e73141833e5f8d23f0cb641b1c6094178), "Barcrest","Viz (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4viz__m, m4viz, "vi_05a__.1_1", 0x0000, 0x010000, CRC(56e0ea7a) SHA1(cbe979cdfceb2c1c7be5adaf8163b96bebbc4bb6), "Barcrest","Viz (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4viz__n, m4viz, "vi_05s__.1_1", 0x0000, 0x010000, CRC(c6896e33) SHA1(7db1a5e08f1a307aac0818424fab274cd8141474), "Barcrest","Viz (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4viz__o, m4viz, "vi_05sb_.1_1", 0x0000, 0x010000, CRC(12fecbdf) SHA1(c0137aac536ec17c3b2ffa405f8400308f759590), "Barcrest","Viz (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4viz__p, m4viz, "vi_05sd_.1_1", 0x0000, 0x010000, CRC(9241fd92) SHA1(f3e58273089ee9b828e431a043802d4ec3948a64), "Barcrest","Viz (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4viz__q, m4viz, "vi_10a__.1_1", 0x0000, 0x010000, CRC(e7c4e4d9) SHA1(9ac3bd60e6000e36cd2229284c48e009ea22cfdb), "Barcrest","Viz (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4viz__r, m4viz, "vi_10s__.1_1", 0x0000, 0x010000, CRC(039a4620) SHA1(097335ba8846c8c8b28bf85f836ba76d22bc763d), "Barcrest","Viz (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4viz__s, m4viz, "vi_10sb_.1_1", 0x0000, 0x010000, CRC(4b7e6686) SHA1(97985f1ecd3a8e77f07a91c5171810e6aff13f4c), "Barcrest","Viz (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4viz__t, m4viz, "vi_10sd_.1_1", 0x0000, 0x010000, CRC(84da6fca) SHA1(8a42855b161619a56435da52dd24e8e60fb56bd8), "Barcrest","Viz (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4viz__u, m4viz, "vii05___.1_1", 0x0000, 0x010000, CRC(22a10f78) SHA1(83411b77e5de441b0f5fa02f2b1dbc40755f41cb), "Barcrest","Viz (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4viz__v, m4viz, "vii10___.1_1", 0x0000, 0x010000, CRC(92e11e00) SHA1(2ebae74a39434269333ea0067163e9607926646d), "Barcrest","Viz (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4viz__w, m4viz, "viz_20_.8", 0x0000, 0x010000, CRC(b4fbc43b) SHA1(4cce5e3a0c32a402b81dfd16e66d12e98704c4d2), "Barcrest","Viz (Barcrest) (MPU4) (set 24)" ) - +// "(C)1991 BARCREST" and "VIZ 0.3" +GAME_CUSTOM( 199?, m4viz__l, m4viz, "vizzzvkn", 0x0000, 0x010000, CRC(cf5c41f5) SHA1(c9b7de0e73141833e5f8d23f0cb641b1c6094178), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.3Y)" ) +// "(C)1991 BARCREST" and "VIZ 0.2" +GAME_CUSTOM( 199?, m4viz__b, m4viz, "viz20pv2", 0x0000, 0x010000, CRC(7e56ff95) SHA1(83679b64881adbe547b43255374de061859e17ef), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.2T)" ) +// Bwb sets +GAME_CUSTOM( 199?, m4viz__m, m4viz, "vi_05a__.1_1", 0x0000, 0x010000, CRC(56e0ea7a) SHA1(cbe979cdfceb2c1c7be5adaf8163b96bebbc4bb6), "Bwb","Viz (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4viz__n, m4viz, "vi_05s__.1_1", 0x0000, 0x010000, CRC(c6896e33) SHA1(7db1a5e08f1a307aac0818424fab274cd8141474), "Bwb","Viz (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4viz__o, m4viz, "vi_05sb_.1_1", 0x0000, 0x010000, CRC(12fecbdf) SHA1(c0137aac536ec17c3b2ffa405f8400308f759590), "Bwb","Viz (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4viz__p, m4viz, "vi_05sd_.1_1", 0x0000, 0x010000, CRC(9241fd92) SHA1(f3e58273089ee9b828e431a043802d4ec3948a64), "Bwb","Viz (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4viz__q, m4viz, "vi_10a__.1_1", 0x0000, 0x010000, CRC(e7c4e4d9) SHA1(9ac3bd60e6000e36cd2229284c48e009ea22cfdb), "Bwb","Viz (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4viz__r, m4viz, "vi_10s__.1_1", 0x0000, 0x010000, CRC(039a4620) SHA1(097335ba8846c8c8b28bf85f836ba76d22bc763d), "Bwb","Viz (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4viz__s, m4viz, "vi_10sb_.1_1", 0x0000, 0x010000, CRC(4b7e6686) SHA1(97985f1ecd3a8e77f07a91c5171810e6aff13f4c), "Bwb","Viz (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4viz__t, m4viz, "vi_10sd_.1_1", 0x0000, 0x010000, CRC(84da6fca) SHA1(8a42855b161619a56435da52dd24e8e60fb56bd8), "Bwb","Viz (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4viz__u, m4viz, "vii05___.1_1", 0x0000, 0x010000, CRC(22a10f78) SHA1(83411b77e5de441b0f5fa02f2b1dbc40755f41cb), "Bwb","Viz (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4viz__v, m4viz, "vii10___.1_1", 0x0000, 0x010000, CRC(92e11e00) SHA1(2ebae74a39434269333ea0067163e9607926646d), "Bwb","Viz (Barcrest) (MPU4) (set 23)" ) +// no copyright string and "8V1 0.6" +GAME_CUSTOM( 199?, m4viz__j, m4viz, "viz208c", 0x0000, 0x010000, CRC(00a65029) SHA1(8dfb68d1a9f4cd00f239ed87a1d330ccb655c35b), "hack","Viz (Barcrest) (MPU4) (8V1 0.6, hack, set 1)" ) +GAME_CUSTOM( 199?, m4viz__a, m4viz, "viz20_101", 0x0000, 0x010000, CRC(0847b812) SHA1(6de9e9dad272932a22ebe457ac50da1126d931ea), "hack","Viz (Barcrest) (MPU4) (8V1 0.6, hack, set 2)" ) +GAME_CUSTOM( 199?, m4viz__w, m4viz, "viz_20_.8", 0x0000, 0x010000, CRC(b4fbc43b) SHA1(4cce5e3a0c32a402b81dfd16e66d12e98704c4d2), "hack","Viz (Barcrest) (MPU4) (8V1 0.6, hack, set 3)" ) +// "RICK LUVS BRIAN" and "8V1 1.0" +GAME_CUSTOM( 199?, m4viz__c, m4viz, "viz58c", 0x0000, 0x010000, CRC(95b8918b) SHA1(4ad4ff9098e98c2076e7058493c181da705acb52), "hack","Viz (Barcrest) (MPU4) (8V1 1.0, hack)" ) #define M4TAKEPK_EXTRA_ROMS \ @@ -2778,33 +2910,39 @@ GAME_CUSTOM( 199?, m4overmn__8, m4overmn, "otuy.p1", 0x0000, 0x010000, CRC GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4luxor, 0, "luxor.rom", 0x0000, 0x010000, CRC(55277510) SHA1(9a866c36a398df52c54b554cd8085078c1f1954b), "Barcrest","Luxor (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4luxor__a, m4luxor, "lux05_101", 0x0000, 0x010000, CRC(8f4dc4f4) SHA1(c9743a1b79b377313504296a060dff3f413a7a9d), "Barcrest","Luxor (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4luxor__b, m4luxor, "lux10_101", 0x0000, 0x010000, CRC(8965c7be) SHA1(ca05803bc7d7a96e25dc0b025c2683b4679789fb), "Barcrest","Luxor (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4luxor__c, m4luxor, "lux208c", 0x0000, 0x010000, CRC(f57bae67) SHA1(3a2523a2121948480381f49e26e870b10d541304), "Barcrest","Luxor (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4luxor__d, m4luxor, "lux55", 0x0000, 0x010000, CRC(997419ab) SHA1(c616a5d6cb347963e7e5c5b88912c248bae184ca), "Barcrest","Luxor (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4luxor__e, m4luxor, "lux58c", 0x0000, 0x010000, CRC(da408721) SHA1(971413620d1f304a026d3adc68f6ac5c1d104e20), "Barcrest","Luxor (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4luxor__f, m4luxor, "luxc.p1", 0x0000, 0x010000, CRC(47d1c4dc) SHA1(0856fac4a7ec14dc1df24446e1355ed05bb5f1c1), "Barcrest","Luxor (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4luxor__g, m4luxor, "luxd.p1", 0x0000, 0x010000, CRC(8f949379) SHA1(4f0a94d06b8e7036acaae5c0c42c91481837d3a1), "Barcrest","Luxor (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4luxor__h, m4luxor, "luxk.p1", 0x0000, 0x010000, CRC(bd5eaf2d) SHA1(f9a3f3139d6b7ff4fcec805e0ca6e8ab1c3c10dd), "Barcrest","Luxor (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4luxor__i, m4luxor, "luxor_std.bin", 0x0000, 0x010000, CRC(2c565bf7) SHA1(61612abbda037b63e2cda7746be8cf64b4563d43), "Barcrest","Luxor (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4luxor__j, m4luxor, "luxs.p1", 0x0000, 0x010000, CRC(78d6f05a) SHA1(53de98b9248c67c83f255d33d5963bebb757d0af), "Barcrest","Luxor (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4luxor__k, m4luxor, "lux_05_4", 0x0000, 0x010000, CRC(335503ec) SHA1(dd03096aa98e4cac9fade6e77f9f8a8ad9a64287), "Barcrest","Luxor (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4luxor__l, m4luxor, "lux_05_8", 0x0000, 0x010000, CRC(43a15814) SHA1(694c8c6ee695bb746391f5269f540c995fc18002), "Barcrest","Luxor (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4luxor__m, m4luxor, "lux_10_4", 0x0000, 0x010000, CRC(122461d9) SHA1(a347c834b27a00abc1864a1e00316a491d04d84b), "Barcrest","Luxor (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4luxor__n, m4luxor, "lux_10_8", 0x0000, 0x010000, CRC(544208e7) SHA1(85e2ff663b7500ee6bb0a900ee5ef48f7bf1934a), "Barcrest","Luxor (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4luxor__o, m4luxor, "lux_20.4", 0x0000, 0x010000, CRC(50b3e5cc) SHA1(ff08095c01d8eeff320b5a04fe9f7e1888690cf8), "Barcrest","Luxor (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4luxor__p, m4luxor, "lux_20_8", 0x0000, 0x010000, CRC(6c9a7152) SHA1(e38e8452e0d3f5b0e8ac51da272ab9f2e57e1d89), "Barcrest","Luxor (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4luxor__q, m4luxor, "lx_05a__.1o1", 0x0000, 0x010000, CRC(7b81f1b9) SHA1(412a8961571f279d70c05ef26c565b4b2a588060), "Barcrest","Luxor (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4luxor__r, m4luxor, "lx_05s__.1o1", 0x0000, 0x010000, CRC(2bf86940) SHA1(cf96a7a12db84fc028766da55ca06d2350f9d08f), "Barcrest","Luxor (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4luxor__s, m4luxor, "lx_05sb_.1o1", 0x0000, 0x010000, CRC(e210c1b6) SHA1(023b1e0b36c4d146af5e958be72575590588b3fd), "Barcrest","Luxor (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4luxor__t, m4luxor, "lx_05sd_.1o1", 0x0000, 0x010000, CRC(8727963a) SHA1(4585c0e3fb14f54684ff199be9010ed7b5cb97c3), "Barcrest","Luxor (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4luxor__u, m4luxor, "lx_10a__.1o1", 0x0000, 0x010000, CRC(ce8e6c05) SHA1(b48bc01d1a069881e9b9db1a4959c7b57e80f28a), "Barcrest","Luxor (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4luxor__v, m4luxor, "lx_10s__.1o1", 0x0000, 0x010000, CRC(9f0f5b6b) SHA1(9f67500d62921dd680bd864856206306adc3f2f6), "Barcrest","Luxor (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4luxor__w, m4luxor, "lx_10sb_.1o1", 0x0000, 0x010000, CRC(bd020920) SHA1(a6b5c11c82344afc1cdd350b9f31d1257be72615), "Barcrest","Luxor (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4luxor__x, m4luxor, "lx_10sd_.1o1", 0x0000, 0x010000, CRC(cc59d370) SHA1(a428d93c005b629e86810c85ea91630a354e170b), "Barcrest","Luxor (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4luxor__y, m4luxor, "lxi05a__.1o1", 0x0000, 0x010000, CRC(7a5fe065) SHA1(c44b41d01175c10051ae4cd1453be3411842825e), "Barcrest","Luxor (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4luxor__z, m4luxor, "lxi10a__.1o1", 0x0000, 0x010000, CRC(17989464) SHA1(67aa9cc01d89ed4caeb33885f53dcaee762ccb6d), "Barcrest","Luxor (Barcrest) (MPU4) (set 27)" ) +// "(C)1993 BARCREST" and "LUX 0.6" +GAME_CUSTOM( 199?, m4luxor, 0, "luxs.p1", 0x0000, 0x010000, CRC(78d6f05a) SHA1(53de98b9248c67c83f255d33d5963bebb757d0af), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6)" ) +GAME_CUSTOM( 199?, m4luxor__f, m4luxor, "luxc.p1", 0x0000, 0x010000, CRC(47d1c4dc) SHA1(0856fac4a7ec14dc1df24446e1355ed05bb5f1c1), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6C)" ) +GAME_CUSTOM( 199?, m4luxor__g, m4luxor, "luxd.p1", 0x0000, 0x010000, CRC(8f949379) SHA1(4f0a94d06b8e7036acaae5c0c42c91481837d3a1), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6D)" ) +GAME_CUSTOM( 199?, m4luxor__h, m4luxor, "luxk.p1", 0x0000, 0x010000, CRC(bd5eaf2d) SHA1(f9a3f3139d6b7ff4fcec805e0ca6e8ab1c3c10dd), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6K)" ) +GAME_CUSTOM( 199?, m4luxor__i, m4luxor, "luxor_std.bin", 0x0000, 0x010000, CRC(2c565bf7) SHA1(61612abbda037b63e2cda7746be8cf64b4563d43), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6Y)" ) +// "(C)1995 B.W.B." and "LX5 1.0" +GAME_CUSTOM( 199?, m4luxor__q, m4luxor, "lx_05a__.1o1", 0x0000, 0x010000, CRC(7b81f1b9) SHA1(412a8961571f279d70c05ef26c565b4b2a588060), "Bwb","Luxor (Barcrest) (MPU4) (LX5 1.0K)" ) +GAME_CUSTOM( 199?, m4luxor__r, m4luxor, "lx_05s__.1o1", 0x0000, 0x010000, CRC(2bf86940) SHA1(cf96a7a12db84fc028766da55ca06d2350f9d08f), "Bwb","Luxor (Barcrest) (MPU4) (LX5 1.0)" ) +GAME_CUSTOM( 199?, m4luxor__s, m4luxor, "lx_05sb_.1o1", 0x0000, 0x010000, CRC(e210c1b6) SHA1(023b1e0b36c4d146af5e958be72575590588b3fd), "Bwb","Luxor (Barcrest) (MPU4) (LX5 1.0YD)" ) +GAME_CUSTOM( 199?, m4luxor__t, m4luxor, "lx_05sd_.1o1", 0x0000, 0x010000, CRC(8727963a) SHA1(4585c0e3fb14f54684ff199be9010ed7b5cb97c3), "Bwb","Luxor (Barcrest) (MPU4) (LX5 1.0D)" ) +GAME_CUSTOM( 199?, m4luxor__y, m4luxor, "lxi05a__.1o1", 0x0000, 0x010000, CRC(7a5fe065) SHA1(c44b41d01175c10051ae4cd1453be3411842825e), "Bwb","Luxor (Barcrest) (MPU4) (LX5 1.0CK)" ) +// "(C)1994 B.W.B." and "LX101.0" +GAME_CUSTOM( 199?, m4luxor__u, m4luxor, "lx_10a__.1o1", 0x0000, 0x010000, CRC(ce8e6c05) SHA1(b48bc01d1a069881e9b9db1a4959c7b57e80f28a), "Bwb","Luxor (Barcrest) (MPU4) (LX101.0K)" ) +GAME_CUSTOM( 199?, m4luxor__v, m4luxor, "lx_10s__.1o1", 0x0000, 0x010000, CRC(9f0f5b6b) SHA1(9f67500d62921dd680bd864856206306adc3f2f6), "Bwb","Luxor (Barcrest) (MPU4) (LX101.0)" ) +GAME_CUSTOM( 199?, m4luxor__w, m4luxor, "lx_10sb_.1o1", 0x0000, 0x010000, CRC(bd020920) SHA1(a6b5c11c82344afc1cdd350b9f31d1257be72615), "Bwb","Luxor (Barcrest) (MPU4) (LX101.0YD)" ) +GAME_CUSTOM( 199?, m4luxor__x, m4luxor, "lx_10sd_.1o1", 0x0000, 0x010000, CRC(cc59d370) SHA1(a428d93c005b629e86810c85ea91630a354e170b), "Bwb","Luxor (Barcrest) (MPU4) (LX101.0D)" ) +GAME_CUSTOM( 199?, m4luxor__z, m4luxor, "lxi10a__.1o1", 0x0000, 0x010000, CRC(17989464) SHA1(67aa9cc01d89ed4caeb33885f53dcaee762ccb6d), "Bwb","Luxor (Barcrest) (MPU4) (LX101.0CK)" ) +// these ones give bad char alarm +GAME_CUSTOM( 199?, m4luxor__b, m4luxor, "lux10_101", 0x0000, 0x010000, CRC(8965c7be) SHA1(ca05803bc7d7a96e25dc0b025c2683b4679789fb), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 1)" ) +GAME_CUSTOM( 199?, m4luxor__m, m4luxor, "lux_10_4", 0x0000, 0x010000, CRC(122461d9) SHA1(a347c834b27a00abc1864a1e00316a491d04d84b), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 2)" ) +GAME_CUSTOM( 199?, m4luxor__n, m4luxor, "lux_10_8", 0x0000, 0x010000, CRC(544208e7) SHA1(85e2ff663b7500ee6bb0a900ee5ef48f7bf1934a), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 3)" ) +// no copyright string and "V1 0.6" +GAME_CUSTOM( 199?, m4luxor__j, m4luxor, "luxor.rom", 0x0000, 0x010000, CRC(55277510) SHA1(9a866c36a398df52c54b554cd8085078c1f1954b), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 1)" ) +GAME_CUSTOM( 199?, m4luxor__c, m4luxor, "lux208c", 0x0000, 0x010000, CRC(f57bae67) SHA1(3a2523a2121948480381f49e26e870b10d541304), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 2)" ) +GAME_CUSTOM( 199?, m4luxor__o, m4luxor, "lux_20.4", 0x0000, 0x010000, CRC(50b3e5cc) SHA1(ff08095c01d8eeff320b5a04fe9f7e1888690cf8), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 3)" ) +GAME_CUSTOM( 199?, m4luxor__p, m4luxor, "lux_20_8", 0x0000, 0x010000, CRC(6c9a7152) SHA1(e38e8452e0d3f5b0e8ac51da272ab9f2e57e1d89), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 4)" ) +// "ROBIN HOOD" and "LX5 1.0" +GAME_CUSTOM( 199?, m4luxor__a, m4luxor, "lux05_101", 0x0000, 0x010000, CRC(8f4dc4f4) SHA1(c9743a1b79b377313504296a060dff3f413a7a9d), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 1)" ) +GAME_CUSTOM( 199?, m4luxor__d, m4luxor, "lux55", 0x0000, 0x010000, CRC(997419ab) SHA1(c616a5d6cb347963e7e5c5b88912c248bae184ca), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 2)" ) +GAME_CUSTOM( 199?, m4luxor__e, m4luxor, "lux58c", 0x0000, 0x010000, CRC(da408721) SHA1(971413620d1f304a026d3adc68f6ac5c1d104e20), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 3)" ) +GAME_CUSTOM( 199?, m4luxor__k, m4luxor, "lux_05_4", 0x0000, 0x010000, CRC(335503ec) SHA1(dd03096aa98e4cac9fade6e77f9f8a8ad9a64287), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 4)" ) +GAME_CUSTOM( 199?, m4luxor__l, m4luxor, "lux_05_8", 0x0000, 0x010000, CRC(43a15814) SHA1(694c8c6ee695bb746391f5269f540c995fc18002), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 5)" ) #define M4HIJINX_EXTRA_ROMS \ @@ -3542,7 +3680,6 @@ GAME_CUSTOM( 199?, m4vegast__s, m4vegast, "vsg04r.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4vegast__t, m4vegast, "vsg04s.p1", 0x0000, 0x020000, CRC(aff47295) SHA1(d249f280b721c96b7c36329e2c2bb955fa91aa59), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4vegast__u, m4vegast, "vsg04y.p1", 0x0000, 0x020000, CRC(8f356a17) SHA1(33ac5e8a455175471466f7c7f35c66f795067bf2), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 22)" ) GAME_CUSTOM( 199?, m4vegast__v, m4vegast, "lvs", 0x0000, 0x020000, CRC(dcb0dc80) SHA1(6045b332eb4af09f6e0a669ea0b78ef4ac389ac2), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4vegast__w, m4vegast, "vspa20st", 0x0000, 0x010000, CRC(267388eb) SHA1(2621724ebdd5031fc513692ff90989bf3b6115d1), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4vegast__x, m4vegast, "vstr2010", 0x0000, 0x020000, CRC(126365e3) SHA1(1e648b7a8cb1ff49e43e2fdc30f482b2b73ed6d7), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 25)" ) @@ -3561,29 +3698,36 @@ GAME_CUSTOM( 199?, m4vegast__x, m4vegast, "vstr2010", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4hotrod, 0, "rodk.p1", 0x0000, 0x010000, CRC(298d85ff) SHA1(3c9374be1f6b5e58a1b9004f74f3a33d0fff4214), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4hotrod__a, m4hotrod, "hot rod 5p 4 p1 (27512)", 0x0000, 0x010000, CRC(b6212af8) SHA1(9453c4424244895b3ad15d5fba45fe8822e7ff2b), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4hotrod__b, m4hotrod, "hr056c", 0x0000, 0x010000, CRC(c062f285) SHA1(917e82cadf242aa815c525ff435cd4b04ea87e39), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4hotrod__c, m4hotrod, "hrod05_11", 0x0000, 0x010000, CRC(61f35723) SHA1(743b71ecde4923c359a1202eaad7e4d74b0d1611), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4hotrod__d, m4hotrod, "hrod10_11", 0x0000, 0x010000, CRC(5b924a86) SHA1(6b86dce6ba3789750de05dca996202c000ecfbae), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4hotrod__e, m4hotrod, "hrod20_11", 0x0000, 0x010000, CRC(b81a57b6) SHA1(442c119b9ed70d4da2f9082ec01e410cfee76102), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4hotrod__f, m4hotrod, "hrod55", 0x0000, 0x010000, CRC(dd6d3153) SHA1(27f3324b43c026abf2ae4c584afeb6971a3fe57a), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4hotrod__g, m4hotrod, "hrod58c", 0x0000, 0x010000, CRC(079474db) SHA1(257b1086277cd0b8398b80a4b95cf1212c10c4c3), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4hotrod__h, m4hotrod, "rodc.p1", 0x0000, 0x010000, CRC(2f6b53d3) SHA1(fa4df1e6a2f6158cbc099d7e2d5ec96355079f36), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4hotrod__i, m4hotrod, "roddy.p1", 0x0000, 0x010000, CRC(53e508ac) SHA1(24df8b949211e7bc5c7b8d704562b36e52cb8d5c), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4hotrod__j, m4hotrod, "rods.p1", 0x0000, 0x010000, CRC(93d73857) SHA1(dcfd1dbf368f68ba3e7aa163eedd89c68aaccec8), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4hotrod__k, m4hotrod, "hr_05___.1o1", 0x0000, 0x010000, CRC(abdb0a16) SHA1(5db2721326a22b9d8653773ec8de8a845d147eee), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4hotrod__l, m4hotrod, "hr_05_d_.1o1", 0x0000, 0x010000, CRC(8a14fa8d) SHA1(8d64a75514d0a58fcdc2d5a81c0b85a49ab8322b), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4hotrod__m, m4hotrod, "hr_10___.1o1", 0x0000, 0x010000, CRC(5e09202f) SHA1(06991f5fd451fff77ef7ab0b866543613c3dcc02), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4hotrod__n, m4hotrod, "hr_10_d_.1o1", 0x0000, 0x010000, CRC(329409c5) SHA1(e9ba0f36048f46a381c8a408b9c1e10acea0bde3), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4hotrod__o, m4hotrod, "hri05___.101", 0x0000, 0x010000, CRC(43e5e86e) SHA1(8bf00b1af1f86f1a361537a1117d857fa8fa7af4), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4hotrod__p, m4hotrod, "hri10___.1o1", 0x0000, 0x010000, CRC(a855f93c) SHA1(2b63aa7c632f14457c2ae0312cef7b22bbf1df22), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4hotrod__q, m4hotrod, "hrod_05_.4", 0x0000, 0x010000, CRC(c58aa0e8) SHA1(8a2b5a9bd4e93a7a12cae4e92e0faf35e2ebbe4c), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4hotrod__r, m4hotrod, "hrod_05_.8", 0x0000, 0x010000, CRC(b3c9e0c9) SHA1(4a549876121dd7fc5c11d3b03322d1e5f90eaa86), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4hotrod__s, m4hotrod, "hrod_10_.4", 0x0000, 0x010000, CRC(b9e84451) SHA1(7566aef1604992376010758cb079fe9da67ad454), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4hotrod__t, m4hotrod, "hrod_10_.8", 0x0000, 0x010000, CRC(62ac8057) SHA1(d2085ec0f29ff85251ef2c576e828f502420839d), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4hotrod__u, m4hotrod, "hrod_20_.4", 0x0000, 0x010000, CRC(c58bb470) SHA1(7bb831d7b647d17eff896ccce0ab7c8cfa8179b8), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4hotrod__v, m4hotrod, "hrod_20_.8", 0x0000, 0x010000, CRC(a2d20781) SHA1(3f1b33374ae0a61815b38ad0e57856ae16047adc), "Barcrest","Hot Rod (Barcrest) (MPU4) (set 23)" ) + +// "(C)1991 BARCREST" and "ROD 0.4" +GAME_CUSTOM( 199?, m4hotrod, 0, "rodk.p1", 0x0000, 0x010000, CRC(298d85ff) SHA1(3c9374be1f6b5e58a1b9004f74f3a33d0fff4214), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4K)" ) +GAME_CUSTOM( 199?, m4hotrod__h, m4hotrod, "rodc.p1", 0x0000, 0x010000, CRC(2f6b53d3) SHA1(fa4df1e6a2f6158cbc099d7e2d5ec96355079f36), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4C)" ) +GAME_CUSTOM( 199?, m4hotrod__i, m4hotrod, "roddy.p1", 0x0000, 0x010000, CRC(53e508ac) SHA1(24df8b949211e7bc5c7b8d704562b36e52cb8d5c), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4YD)" ) +GAME_CUSTOM( 199?, m4hotrod__j, m4hotrod, "rods.p1", 0x0000, 0x010000, CRC(93d73857) SHA1(dcfd1dbf368f68ba3e7aa163eedd89c68aaccec8), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4)" ) +GAME_CUSTOM( 199?, m4hotrod__e, m4hotrod, "hrod20_11", 0x0000, 0x010000, CRC(b81a57b6) SHA1(442c119b9ed70d4da2f9082ec01e410cfee76102), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4, hack?, set 1)" ) // bad chr +GAME_CUSTOM( 199?, m4hotrod__u, m4hotrod, "hrod_20_.4", 0x0000, 0x010000, CRC(c58bb470) SHA1(7bb831d7b647d17eff896ccce0ab7c8cfa8179b8), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4, hack?, set 2)" ) // ^ +GAME_CUSTOM( 199?, m4hotrod__v, m4hotrod, "hrod_20_.8", 0x0000, 0x010000, CRC(a2d20781) SHA1(3f1b33374ae0a61815b38ad0e57856ae16047adc), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4, hack?, set 3)" ) /// ^ +// "(C)1994 B.W.B." and "HR__1.0" +GAME_CUSTOM( 199?, m4hotrod__k, m4hotrod, "hr_05___.1o1", 0x0000, 0x010000, CRC(abdb0a16) SHA1(5db2721326a22b9d8653773ec8de8a845d147eee), "Bwb","Hot Rod (Barcrest) (MPU4) (HR__1.0, set 1)" ) +GAME_CUSTOM( 199?, m4hotrod__l, m4hotrod, "hr_05_d_.1o1", 0x0000, 0x010000, CRC(8a14fa8d) SHA1(8d64a75514d0a58fcdc2d5a81c0b85a49ab8322b), "Bwb","Hot Rod (Barcrest) (MPU4) (HR__1.0D, set 1)" ) +GAME_CUSTOM( 199?, m4hotrod__o, m4hotrod, "hri05___.101", 0x0000, 0x010000, CRC(43e5e86e) SHA1(8bf00b1af1f86f1a361537a1117d857fa8fa7af4), "Bwb","Hot Rod (Barcrest) (MPU4) (HR__1.0C, set 1)" ) +GAME_CUSTOM( 199?, m4hotrod__m, m4hotrod, "hr_10___.1o1", 0x0000, 0x010000, CRC(5e09202f) SHA1(06991f5fd451fff77ef7ab0b866543613c3dcc02), "Bwb","Hot Rod (Barcrest) (MPU4) (HR__1.0, set 2)" ) +GAME_CUSTOM( 199?, m4hotrod__n, m4hotrod, "hr_10_d_.1o1", 0x0000, 0x010000, CRC(329409c5) SHA1(e9ba0f36048f46a381c8a408b9c1e10acea0bde3), "Bwb","Hot Rod (Barcrest) (MPU4) (HR__1.0D, set 2)" ) +GAME_CUSTOM( 199?, m4hotrod__p, m4hotrod, "hri10___.1o1", 0x0000, 0x010000, CRC(a855f93c) SHA1(2b63aa7c632f14457c2ae0312cef7b22bbf1df22), "Bwb","Hot Rod (Barcrest) (MPU4) (HR__1.0C, set 2)" ) +// "(C)1995 B.W.B." and "HRC_1.0" +GAME_CUSTOM( 199?, m4hotrod__a, m4hotrod, "hot rod 5p 4 p1 (27512)", 0x0000, 0x010000, CRC(b6212af8) SHA1(9453c4424244895b3ad15d5fba45fe8822e7ff2b), "Bwb","Hot Rod (Barcrest) (MPU4) (HRC_1.0C)" ) +// no copyright string and "HR__1.0" +GAME_CUSTOM( 199?, m4hotrod__b, m4hotrod, "hr056c", 0x0000, 0x010000, CRC(c062f285) SHA1(917e82cadf242aa815c525ff435cd4b04ea87e39), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 1)" ) +GAME_CUSTOM( 199?, m4hotrod__c, m4hotrod, "hrod05_11", 0x0000, 0x010000, CRC(61f35723) SHA1(743b71ecde4923c359a1202eaad7e4d74b0d1611), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 2)" ) +GAME_CUSTOM( 199?, m4hotrod__d, m4hotrod, "hrod10_11", 0x0000, 0x010000, CRC(5b924a86) SHA1(6b86dce6ba3789750de05dca996202c000ecfbae), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 3)" ) +GAME_CUSTOM( 199?, m4hotrod__f, m4hotrod, "hrod55", 0x0000, 0x010000, CRC(dd6d3153) SHA1(27f3324b43c026abf2ae4c584afeb6971a3fe57a), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 4)" ) +GAME_CUSTOM( 199?, m4hotrod__g, m4hotrod, "hrod58c", 0x0000, 0x010000, CRC(079474db) SHA1(257b1086277cd0b8398b80a4b95cf1212c10c4c3), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 5)" ) +GAME_CUSTOM( 199?, m4hotrod__q, m4hotrod, "hrod_05_.4", 0x0000, 0x010000, CRC(c58aa0e8) SHA1(8a2b5a9bd4e93a7a12cae4e92e0faf35e2ebbe4c), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 6)" ) +GAME_CUSTOM( 199?, m4hotrod__r, m4hotrod, "hrod_05_.8", 0x0000, 0x010000, CRC(b3c9e0c9) SHA1(4a549876121dd7fc5c11d3b03322d1e5f90eaa86), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 7)" ) +GAME_CUSTOM( 199?, m4hotrod__s, m4hotrod, "hrod_10_.4", 0x0000, 0x010000, CRC(b9e84451) SHA1(7566aef1604992376010758cb079fe9da67ad454), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 8)" ) +GAME_CUSTOM( 199?, m4hotrod__t, m4hotrod, "hrod_10_.8", 0x0000, 0x010000, CRC(62ac8057) SHA1(d2085ec0f29ff85251ef2c576e828f502420839d), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 9)" ) + + #define M4BUC_EXTRA_ROMS \ @@ -4901,11 +5045,11 @@ GAME_CUSTOM( 199?, m4rhogc__b, m4rhogc, "rhcd.p1", 0x0000, 0x010000, CRC(7a7 GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4gb006, 0, "006s.p1", 0x0000, 0x010000, CRC(6e750ab9) SHA1(2e1f08df7991efe450633e0bcec201e6fa7fdbaa), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4gb006__a, m4gb006, "006d.p1", 0x0000, 0x010000, CRC(7e0a4282) SHA1(8fd0cbdd9cf3ac74b7b202ce7615392c1a746906), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4gb006__b, m4gb006, "006y.p1", 0x0000, 0x010000, CRC(2947f4ed) SHA1(7d212bcef36e2bd792ded3e1e1638218e76da119), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4gb006__c, m4gb006, "bond20_11", 0x0000, 0x010000, CRC(8d810cb1) SHA1(065d8df33472a3476dd6cf21a684db9d7c8ba829), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (set 4)" ) +// "(C)1993 BARCREST" and "006 0.6" +GAME_CUSTOM( 199?, m4gb006, 0, "006s.p1", 0x0000, 0x010000, CRC(6e750ab9) SHA1(2e1f08df7991efe450633e0bcec201e6fa7fdbaa), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (006 0.6)" ) +GAME_CUSTOM( 199?, m4gb006__a, m4gb006, "006d.p1", 0x0000, 0x010000, CRC(7e0a4282) SHA1(8fd0cbdd9cf3ac74b7b202ce7615392c1a746906), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (006 0.6D)" ) +GAME_CUSTOM( 199?, m4gb006__b, m4gb006, "006y.p1", 0x0000, 0x010000, CRC(2947f4ed) SHA1(7d212bcef36e2bd792ded3e1e1638218e76da119), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (006 0.6Y)" ) +GAME_CUSTOM( 199?, m4gb006__c, m4gb006, "bond20_11", 0x0000, 0x010000, CRC(8d810cb1) SHA1(065d8df33472a3476dd6cf21a684db9d7c8ba829), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (006 0.6C)" ) #define M4GBUST_EXTRA_ROMS \ diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e3534e65d86..834b8023cfb 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -22678,6 +22678,7 @@ m4vivalv__5 // m4vivalv__6 // m4vivalv__7 // m4vivalv__8 // +m4vivalv__9 // m4vivalv__a // m4vivalv__b // m4vivalv__c // @@ -25948,7 +25949,6 @@ m4vegast__s // m4vegast__t // m4vegast__u // m4vegast__v // -m4vegast__w // m4vegast__x // m4vivaes // Viva Espana (Barcrest) m4vivaes__0 // @@ -25963,7 +25963,6 @@ m4vivaes__8 // m4vivaes__9 // m4vivaes__a // m4vivaes__aa // -m4vivaes__ab // m4vivaes__ac // m4vivaes__ad // m4vivaes__ae // @@ -25978,6 +25977,7 @@ m4vivaes__am // m4vivaes__an // m4vivaes__ao // m4vivaes__ap // +m4vivaes__aq // m4vivaes__b // m4vivaes__c // m4vivaes__d // From 855c8b8d62aaed4b4ce06fcd0b0b0e6f375aca30 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Sun, 7 Aug 2016 17:44:21 -0400 Subject: [PATCH 071/116] Removed unnecessary logical-not operation --- src/frontend/mame/ui/utils.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/mame/ui/utils.h b/src/frontend/mame/ui/utils.h index a5c6626f675..0c63d3961fe 100644 --- a/src/frontend/mame/ui/utils.h +++ b/src/frontend/mame/ui/utils.h @@ -274,7 +274,7 @@ bool input_character(std::string &buffer, unicode_char unichar, F &&filter) result = true; } } - else if ((unichar >= ' ') && (!filter || filter(unichar))) + else if ((unichar >= ' ') && filter(unichar)) { // append this character buffer += utf8_from_uchar(unichar); From 927d438f6be6e55619879d7ac74f3d908f89716f Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Mon, 8 Aug 2016 01:23:07 +0200 Subject: [PATCH 072/116] ti99: Using proper RAM devices instead of ROM_REGIONS, adapting logerror output --- src/devices/bus/ti99_peb/bwg.cpp | 32 +++--- src/devices/bus/ti99_peb/bwg.h | 3 +- src/devices/bus/ti99_peb/hfdc.cpp | 127 +++++++++++---------- src/devices/bus/ti99_peb/hfdc.h | 3 +- src/devices/bus/ti99_peb/tn_ide.cpp | 31 ++--- src/devices/bus/ti99_peb/tn_ide.h | 4 +- src/devices/bus/ti99x/genboard.cpp | 169 +++++++++++++++------------- src/devices/bus/ti99x/genboard.h | 5 +- src/devices/imagedev/mfmhd.cpp | 66 +++++------ src/mame/drivers/geneve.cpp | 62 +++++----- 10 files changed, 259 insertions(+), 243 deletions(-) diff --git a/src/devices/bus/ti99_peb/bwg.cpp b/src/devices/bus/ti99_peb/bwg.cpp index c5c9796a084..5587c931b6e 100644 --- a/src/devices/bus/ti99_peb/bwg.cpp +++ b/src/devices/bus/ti99_peb/bwg.cpp @@ -85,10 +85,15 @@ */ snug_bwg_device::snug_bwg_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : ti_expansion_card_device(mconfig, TI99_BWG, "SNUG BwG Floppy Controller", tag, owner, clock, "ti99_bwg", __FILE__), m_DRQ(), m_IRQ(), m_dip1(0), m_dip2(0), m_dip34(0), m_ram_page(0), m_rom_page(0), m_WAITena(false), m_inDsrArea(false), m_WDsel(false), m_WDsel0(false), m_RTCsel(false), m_lastK(false), m_dataregLB(false), m_rtc_enabled(false), m_MOTOR_ON(), m_lastval(0), m_address(0), m_DSEL(0), m_SIDSEL(), m_motor_on_timer(nullptr), m_dsrrom(nullptr), m_buffer_ram(nullptr), m_current_floppy(nullptr), - m_wd1773(*this, FDC_TAG), - m_clock(*this, CLOCK_TAG), m_debug_dataout(false) - { } + : ti_expansion_card_device(mconfig, TI99_BWG, "SNUG BwG Floppy Controller", tag, owner, clock, "ti99_bwg", __FILE__), + m_DRQ(), m_IRQ(), m_dip1(0), m_dip2(0), m_dip34(0), m_ram_page(0), + m_rom_page(0), m_WAITena(false), m_inDsrArea(false), m_WDsel(false), + m_WDsel0(false), m_RTCsel(false), m_lastK(false), m_dataregLB(false), + m_rtc_enabled(false), m_MOTOR_ON(), m_lastval(0), m_address(0), + m_DSEL(0), m_SIDSEL(), m_motor_on_timer(nullptr), m_dsrrom(nullptr), + m_buffer_ram(*this, BUFFER), m_current_floppy(nullptr), + m_wd1773(*this, FDC_TAG), + m_clock(*this, CLOCK_TAG), m_debug_dataout(false) { } /* Operate the wait state logic. @@ -189,7 +194,7 @@ void snug_bwg_device::debug_read(offs_t offset, UINT8* value) if ((offset & 0x1c00)==0x1c00) { if ((offset & 0x1fe0)!=0x1fe0) - *value = m_buffer_ram[(m_ram_page<<10) | (offset & 0x03ff)]; + *value = m_buffer_ram->pointer()[(m_ram_page<<10) | (offset & 0x03ff)]; } else *value = m_dsrrom[(m_rom_page<<13) | (offset & 0x1fff)]; @@ -201,7 +206,7 @@ void snug_bwg_device::debug_write(offs_t offset, UINT8 data) if (((offset & m_select_mask)==m_select_value) && m_selected) { if (((offset & 0x1c00)==0x1c00) && ((offset & 0x1fe0)!=0x1fe0)) - m_buffer_ram[(m_ram_page<<10) | (m_address & 0x03ff)] = data; + m_buffer_ram->pointer()[(m_ram_page<<10) | (m_address & 0x03ff)] = data; } } @@ -233,7 +238,7 @@ READ8Z_MEMBER(snug_bwg_device::readz) } else { - *value = m_buffer_ram[(m_ram_page<<10) | (m_address & 0x03ff)]; + *value = m_buffer_ram->pointer()[(m_ram_page<<10) | (m_address & 0x03ff)]; if (TRACE_RW) logerror("bwg: read ram: %04x (page %d)-> %02x\n", m_address & 0xffff, m_ram_page, *value); } } @@ -254,7 +259,7 @@ READ8Z_MEMBER(snug_bwg_device::readz) } else { - *value = m_buffer_ram[(m_ram_page<<10) | (m_address & 0x03ff)]; + *value = m_buffer_ram->pointer()[(m_ram_page<<10) | (m_address & 0x03ff)]; if (TRACE_RW) logerror("bwg: read ram: %04x (page %d)-> %02x\n", m_address & 0xffff, m_ram_page, *value); } } @@ -302,7 +307,7 @@ WRITE8_MEMBER(snug_bwg_device::write) else { if (TRACE_RW) logerror("bwg: write ram: %04x (page %d) <- %02x\n", m_address & 0xffff, m_ram_page, data); - m_buffer_ram[(m_ram_page<<10) | (m_address & 0x03ff)] = data; + m_buffer_ram->pointer()[(m_ram_page<<10) | (m_address & 0x03ff)] = data; } } else @@ -318,7 +323,7 @@ WRITE8_MEMBER(snug_bwg_device::write) else { if (TRACE_RW) logerror("bwg: write ram: %04x (page %d) <- %02x\n", m_address & 0xffff, m_ram_page, data); - m_buffer_ram[(m_ram_page<<10) | (m_address & 0x03ff)] = data; + m_buffer_ram->pointer()[(m_ram_page<<10) | (m_address & 0x03ff)] = data; } } } @@ -558,7 +563,6 @@ void snug_bwg_device::device_start(void) { logerror("bwg: BWG start\n"); m_dsrrom = memregion(DSRROM)->base(); - m_buffer_ram = memregion(BUFFER)->base(); m_motor_on_timer = timer_alloc(MOTOR_TIMER); m_cru_base = 0x1100; } @@ -678,13 +682,15 @@ MACHINE_CONFIG_FRAGMENT( bwg_fdc ) MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD("3", bwg_floppies, nullptr, snug_bwg_device::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) + + MCFG_RAM_ADD(BUFFER) + MCFG_RAM_DEFAULT_SIZE("2K") + MCFG_RAM_DEFAULT_VALUE(0) MACHINE_CONFIG_END ROM_START( bwg_fdc ) ROM_REGION(0x8000, DSRROM, 0) ROM_LOAD("bwg_dsr.u15", 0x0000, 0x8000, CRC(06f1ec89) SHA1(6ad77033ed268f986d9a5439e65f7d391c4b7651)) /* BwG disk DSR ROM */ - ROM_REGION(0x0800, BUFFER, 0) /* BwG RAM buffer */ - ROM_FILL(0x0000, 0x0400, 0x00) ROM_END machine_config_constructor snug_bwg_device::device_mconfig_additions() const diff --git a/src/devices/bus/ti99_peb/bwg.h b/src/devices/bus/ti99_peb/bwg.h index 262256b26c1..6178a20d457 100644 --- a/src/devices/bus/ti99_peb/bwg.h +++ b/src/devices/bus/ti99_peb/bwg.h @@ -17,6 +17,7 @@ #include "imagedev/flopdrv.h" #include "machine/mm58274c.h" #include "machine/wd_fdc.h" +#include "machine/ram.h" extern const device_type TI99_BWG; @@ -119,7 +120,7 @@ private: UINT8* m_dsrrom; // Buffer RAM - UINT8* m_buffer_ram; + required_device m_buffer_ram; // Link to the attached floppy drives floppy_image_device* m_floppy[4]; diff --git a/src/devices/bus/ti99_peb/hfdc.cpp b/src/devices/bus/ti99_peb/hfdc.cpp index 0a84e0ec54f..0252cfda5f9 100644 --- a/src/devices/bus/ti99_peb/hfdc.cpp +++ b/src/devices/bus/ti99_peb/hfdc.cpp @@ -90,9 +90,14 @@ myarc_hfdc_device::myarc_hfdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : ti_expansion_card_device(mconfig, TI99_HFDC, "Myarc Hard and Floppy Disk Controller", tag, owner, clock, "ti99_hfdc", __FILE__), m_motor_on_timer(nullptr), m_hdc9234(*this, FDC_TAG), - m_clock(*this, CLOCK_TAG), m_current_floppy(nullptr), m_current_harddisk(nullptr), m_see_switches(false), m_irq(), m_dip(), m_motor_running(false), - m_inDsrArea(false), m_HDCsel(false), m_RTCsel(false), m_tapesel(false), m_RAMsel(false), m_ROMsel(false), m_address(0), - m_wait_for_hd1(false), m_dsrrom(nullptr), m_rom_page(0), m_buffer_ram(nullptr), m_status_latch(0), m_dma_address(0), m_output1_latch(0), m_output2_latch(0), m_lastval(0), m_MOTOR_ON(), m_readyflags(0) + m_clock(*this, CLOCK_TAG), m_current_floppy(nullptr), + m_current_harddisk(nullptr), m_see_switches(false), + m_irq(), m_dip(), m_motor_running(false), + m_inDsrArea(false), m_HDCsel(false), m_RTCsel(false), + m_tapesel(false), m_RAMsel(false), m_ROMsel(false), m_address(0), + m_wait_for_hd1(false), m_dsrrom(nullptr), m_rom_page(0), + m_buffer_ram(*this, BUFFER), m_status_latch(0), m_dma_address(0), + m_output1_latch(0), m_output2_latch(0), m_lastval(0), m_MOTOR_ON(), m_readyflags(0) { } @@ -151,7 +156,7 @@ void myarc_hfdc_device::debug_read(offs_t offset, UINT8* value) if ((offset & 0x1000)==RAM_ADDR) { int bank = (offset & 0x0c00) >> 10; - *value = m_buffer_ram[(m_ram_page[bank]<<10) | (offset & 0x03ff)]; + *value = m_buffer_ram->pointer()[(m_ram_page[bank]<<10) | (offset & 0x03ff)]; } else { @@ -170,7 +175,7 @@ void myarc_hfdc_device::debug_write(offs_t offset, UINT8 data) if ((offset & 0x1000)==RAM_ADDR) { int bank = (offset & 0x0c00) >> 10; - m_buffer_ram[(m_ram_page[bank]<<10) | (m_address & 0x03ff)] = data; + m_buffer_ram->pointer()[(m_ram_page[bank]<<10) | (m_address & 0x03ff)] = data; } } } @@ -202,21 +207,21 @@ READ8Z_MEMBER(myarc_hfdc_device::readz) { if (m_tapesel) { - logerror("%s: Tape support not available on this HFDC version (access to address %04x)\n", tag(), m_address & 0xffff); + logerror("Tape support not available on this HFDC version (access to address %04x)\n", m_address & 0xffff); return; } if (m_HDCsel) { *value = m_hdc9234->read(space, (m_address>>2)&1, 0xff); - if (TRACE_COMP) logerror("%s: %04x[HDC] -> %02x\n", tag(), m_address & 0xffff, *value); + if (TRACE_COMP) logerror("%04x[HDC] -> %02x\n", m_address & 0xffff, *value); return; } if (m_RTCsel) { *value = m_clock->read(space, (m_address & 0x001e) >> 1); - if (TRACE_COMP) logerror("%s: %04x[CLK] -> %02x\n", tag(), m_address & 0xffff, *value); + if (TRACE_COMP) logerror("%04x[CLK] -> %02x\n", m_address & 0xffff, *value); return; } @@ -229,13 +234,13 @@ READ8Z_MEMBER(myarc_hfdc_device::readz) int bank = (m_address & 0x0c00) >> 10; // If a DMA is in progress, do not respond - if (m_dip == CLEAR_LINE) *value = m_buffer_ram[(m_ram_page[bank]<<10) | (m_address & 0x03ff)]; + if (m_dip == CLEAR_LINE) *value = m_buffer_ram->pointer()[(m_ram_page[bank]<<10) | (m_address & 0x03ff)]; if (TRACE_RAM) { if (WORD_ALIGNED(m_address)) { - int valword = (((*value) << 8) | m_buffer_ram[(m_ram_page[bank]<<10) | ((m_address+1) & 0x03ff)])&0xffff; - logerror("%s: %04x[%02x] -> %04x\n", tag(), m_address & 0xffff, m_ram_page[bank], valword); + int valword = (((*value) << 8) | m_buffer_ram->pointer()[(m_ram_page[bank]<<10) | ((m_address+1) & 0x03ff)])&0xffff; + logerror("%04x[%02x] -> %04x\n", m_address & 0xffff, m_ram_page[bank], valword); } } return; @@ -249,7 +254,7 @@ READ8Z_MEMBER(myarc_hfdc_device::readz) if (WORD_ALIGNED(m_address)) { int valword = (((*value) << 8) | m_dsrrom[(m_rom_page << 12) | ((m_address + 1) & 0x0fff)])&0xffff; - logerror("%s: %04x[%02x] -> %04x\n", tag(), m_address & 0xffff, m_rom_page, valword); + logerror("%04x[%02x] -> %04x\n", m_address & 0xffff, m_rom_page, valword); } } return; @@ -281,20 +286,20 @@ WRITE8_MEMBER( myarc_hfdc_device::write ) { if (m_tapesel) { - logerror("%s: Tape support not available on this HFDC version (write access to address %04x: %02x)\n", tag(), m_address & 0xffff, data); + logerror("Tape support not available on this HFDC version (write access to address %04x: %02x)\n", m_address & 0xffff, data); return; } if (m_HDCsel) { - if (TRACE_COMP) logerror("%s: %04x[HDC] <- %02x\n", tag(), m_address & 0xffff, data); + if (TRACE_COMP) logerror("%04x[HDC] <- %02x\n", m_address & 0xffff, data); m_hdc9234->write(space, (m_address>>2)&1, data, 0xff); return; } if (m_RTCsel) { - if (TRACE_COMP) logerror("%s: %04x[CLK] <- %02x\n", tag(), m_address & 0xffff, data); + if (TRACE_COMP) logerror("%04x[CLK] <- %02x\n", m_address & 0xffff, data); m_clock->write(space, (m_address & 0x001e) >> 1, data); return; } @@ -306,16 +311,16 @@ WRITE8_MEMBER( myarc_hfdc_device::write ) // 0101 10xx xxxx xxxx bank 2 // 0101 11xx xxxx xxxx bank 3 int bank = (m_address & 0x0c00) >> 10; - if (TRACE_RAM) logerror("%s: %04x[%02x] <- %02x\n", tag(), m_address & 0xffff, m_ram_page[bank], data); + if (TRACE_RAM) logerror("%04x[%02x] <- %02x\n", m_address & 0xffff, m_ram_page[bank], data); // When a DMA is in progress, do not change anything - if (m_dip == CLEAR_LINE) m_buffer_ram[(m_ram_page[bank]<<10) | (m_address & 0x03ff)] = data; + if (m_dip == CLEAR_LINE) m_buffer_ram->pointer()[(m_ram_page[bank]<<10) | (m_address & 0x03ff)] = data; return; } // The rest is ROM if (m_ROMsel) { - if (TRACE_ROM) logerror("%s: Ignoring write ROM %04x[%02x]: %02x\n", tag(), m_address & 0xffff, m_rom_page, data); + if (TRACE_ROM) logerror("Ignoring write ROM %04x[%02x]: %02x\n", m_address & 0xffff, m_rom_page, data); } } } @@ -388,7 +393,7 @@ READ8Z_MEMBER(myarc_hfdc_device::crureadz) *value = 0; } - if (TRACE_CRU) logerror("%s: CRU %04x -> %02x\n", tag(), offset & 0xffff, *value); + if (TRACE_CRU) logerror("CRU %04x -> %02x\n", offset & 0xffff, *value); } } @@ -420,7 +425,7 @@ WRITE8_MEMBER(myarc_hfdc_device::cruwrite) { if ((offset & 0xff00)==m_cru_base) { - if (TRACE_CRU) logerror("%s: CRU %04x <- %d\n", tag(), offset & 0xffff, data); + if (TRACE_CRU) logerror("CRU %04x <- %d\n", offset & 0xffff, data); int bit = (offset >> 1) & 0x1f; @@ -435,9 +440,9 @@ WRITE8_MEMBER(myarc_hfdc_device::cruwrite) if (TRACE_CRU) { - if (bit==0x0d) logerror("%s: RAM page @5400 = %d\n", tag(), m_ram_page[1]); - if (bit==0x12) logerror("%s: RAM page @5800 = %d\n", tag(), m_ram_page[2]); - if (bit==0x17) logerror("%s: RAM page @5C00 = %d\n", tag(), m_ram_page[3]); + if (bit==0x0d) logerror("RAM page @5400 = %d\n", m_ram_page[1]); + if (bit==0x12) logerror("RAM page @5800 = %d\n", m_ram_page[2]); + if (bit==0x17) logerror("RAM page @5C00 = %d\n", m_ram_page[3]); } return; } @@ -448,12 +453,12 @@ WRITE8_MEMBER(myarc_hfdc_device::cruwrite) { bool turnOn = (data!=0); // Avoid too many meaningless log outputs - if (TRACE_CRU) if (m_selected != turnOn) logerror("%s: card %s\n", tag(), turnOn? "selected" : "unselected"); + if (TRACE_CRU) if (m_selected != turnOn) logerror("card %s\n", turnOn? "selected" : "unselected"); m_selected = turnOn; break; } case 1: - if (TRACE_CRU) if (data==0) logerror("%s: trigger HDC reset\n", tag()); + if (TRACE_CRU) if (data==0) logerror("trigger HDC reset\n"); m_hdc9234->reset((data == 0)? ASSERT_LINE : CLEAR_LINE); break; @@ -477,17 +482,17 @@ WRITE8_MEMBER(myarc_hfdc_device::cruwrite) case 3: m_hdc9234->set_clock_divider(1, data); m_rom_page = (data != 0)? (m_rom_page | 2) : (m_rom_page & 0xfd); - if (TRACE_CRU) logerror("%s: ROM page = %d\n", tag(), m_rom_page); + if (TRACE_CRU) logerror("ROM page = %d\n", m_rom_page); break; case 4: m_see_switches = (data != 0); m_rom_page = (data != 0)? (m_rom_page | 1) : (m_rom_page & 0xfe); - if (TRACE_CRU) logerror("%s: ROM page = %d, see_switches = %d\n", tag(), m_rom_page, m_see_switches); + if (TRACE_CRU) logerror("ROM page = %d, see_switches = %d\n", m_rom_page, m_see_switches); break; default: - logerror("%s: Attempt to set undefined CRU bit %d\n", tag(), bit); + logerror("Attempt to set undefined CRU bit %d\n", bit); } } } @@ -505,7 +510,7 @@ void myarc_hfdc_device::device_timer(emu_timer &timer, device_timer_id id, int p */ void myarc_hfdc_device::floppy_index_callback(floppy_image_device *floppy, int state) { - if (TRACE_LINES) if (state==1) logerror("%s: Floppy index pulse\n", tag()); + if (TRACE_LINES) if (state==1) logerror("Floppy index pulse\n"); // m_status_latch = (state==ASSERT_LINE)? (m_status_latch | HDC_DS_INDEX) : (m_status_latch & ~HDC_DS_INDEX); set_bits(m_status_latch, HDC_DS_INDEX, (state==ASSERT_LINE)); signal_drive_status(); @@ -516,7 +521,7 @@ void myarc_hfdc_device::floppy_index_callback(floppy_image_device *floppy, int s */ void myarc_hfdc_device::harddisk_index_callback(mfm_harddisk_device *harddisk, int state) { - if (TRACE_LINES) if (state==1) logerror("%s: HD index pulse\n", tag()); + if (TRACE_LINES) if (state==1) logerror("HD index pulse\n"); set_bits(m_status_latch, HDC_DS_INDEX, (state==ASSERT_LINE)); signal_drive_status(); } @@ -526,7 +531,7 @@ void myarc_hfdc_device::harddisk_index_callback(mfm_harddisk_device *harddisk, i */ void myarc_hfdc_device::harddisk_ready_callback(mfm_harddisk_device *harddisk, int state) { - if (TRACE_LINES) logerror("%s: HD READY = %d\n", tag(), state); + if (TRACE_LINES) logerror("HD READY = %d\n", state); set_bits(m_status_latch, HDC_DS_READY, (state==ASSERT_LINE)); signal_drive_status(); } @@ -536,7 +541,7 @@ void myarc_hfdc_device::harddisk_ready_callback(mfm_harddisk_device *harddisk, i */ void myarc_hfdc_device::harddisk_skcom_callback(mfm_harddisk_device *harddisk, int state) { - if (TRACE_LINES) logerror("%s: HD seek complete = %d\n", tag(), state); + if (TRACE_LINES) logerror("HD seek complete = %d\n", state); set_bits(m_status_latch, HDC_DS_SKCOM, (state==ASSERT_LINE)); signal_drive_status(); } @@ -627,14 +632,14 @@ WRITE8_MEMBER( myarc_hfdc_device::auxbus_out ) switch (offset) { case HDC_INPUT_STATUS: - logerror("%s: Invalid operation: S0=S1=0, but tried to write (expected: read drive status)\n", tag()); + logerror("Invalid operation: S0=S1=0, but tried to write (expected: read drive status)\n"); break; case HDC_OUTPUT_DMA_ADDR: // Value is dma address byte. Shift previous contents to the left. // The value is latched inside the Gate Array. m_dma_address = ((m_dma_address << 8) + (data&0xff))&0xffffff; - if (TRACE_DMA) logerror("%s: Setting DMA address; current value = %06x\n", tag(), m_dma_address); + if (TRACE_DMA) logerror("Setting DMA address; current value = %06x\n", m_dma_address); break; case HDC_OUTPUT_1: @@ -713,7 +718,7 @@ void myarc_hfdc_device::connect_floppy_unit(int index) // Clear all latched flags from other drives m_status_latch = 0; disconnect_floppy_drives(); - if (TRACE_LINES) logerror("%s: Select floppy drive DSK%d\n", tag(), index+1); + if (TRACE_LINES) logerror("Select floppy drive DSK%d\n", index+1); // Connect new drive m_current_floppy = m_floppy_unit[index]; @@ -721,11 +726,11 @@ void myarc_hfdc_device::connect_floppy_unit(int index) // We don't use the READY line of floppy drives. // READY is asserted when DSKx = 1 // The controller fetches the state with the auxbus access - if (TRACE_LINES) logerror("%s: Connect index callback DSK%d\n", tag(), index+1); + if (TRACE_LINES) logerror("Connect index callback DSK%d\n", index+1); if (m_current_floppy != nullptr) m_current_floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(FUNC(myarc_hfdc_device::floppy_index_callback), this)); else - logerror("%s: Connection to DSK%d failed because no drive is connected\n", tag(), index+1); + logerror("Connection to DSK%d failed because no drive is connected\n", index+1); m_hdc9234->connect_floppy_drive(m_floppy_unit[index]); } @@ -740,12 +745,12 @@ void myarc_hfdc_device::connect_harddisk_unit(int index) // Clear all latched flags form other drives m_status_latch = 0; disconnect_hard_drives(); - if (TRACE_LINES) logerror("%s: Select hard disk WDS%d\n", tag(), index+1); + if (TRACE_LINES) logerror("Select hard disk WDS%d\n", index+1); // Connect new drive m_current_harddisk = m_harddisk_unit[index]; - if (TRACE_LINES) logerror("%s: Connect index callback WDS%d\n", tag(), index+1); + if (TRACE_LINES) logerror("Connect index callback WDS%d\n", index+1); if (m_current_harddisk != nullptr) { m_current_harddisk->setup_index_pulse_cb(mfm_harddisk_device::index_pulse_cb(FUNC(myarc_hfdc_device::harddisk_index_callback), this)); @@ -753,7 +758,7 @@ void myarc_hfdc_device::connect_harddisk_unit(int index) m_current_harddisk->setup_seek_complete_cb(mfm_harddisk_device::seek_complete_cb(FUNC(myarc_hfdc_device::harddisk_skcom_callback), this)); } else - logerror("%s: Connection to WDS%d failed because no drive is connected\n", tag(), index+1); + logerror("Connection to WDS%d failed because no drive is connected\n", index+1); m_hdc9234->connect_hard_drive(m_current_harddisk); } @@ -763,7 +768,7 @@ void myarc_hfdc_device::connect_harddisk_unit(int index) void myarc_hfdc_device::disconnect_floppy_drives() { - if (TRACE_LINES) logerror("%s: Unselect floppy drives\n", tag()); + if (TRACE_LINES) logerror("Unselect floppy drives\n"); // Disconnect current floppy if (m_current_floppy != nullptr) { @@ -774,7 +779,7 @@ void myarc_hfdc_device::disconnect_floppy_drives() void myarc_hfdc_device::disconnect_hard_drives() { - if (TRACE_LINES) logerror("%s: Unselect hard drives\n", tag()); + if (TRACE_LINES) logerror("Unselect hard drives\n"); if (m_current_harddisk != nullptr) { m_current_harddisk->setup_index_pulse_cb(mfm_harddisk_device::index_pulse_cb()); @@ -791,13 +796,13 @@ void myarc_hfdc_device::set_floppy_motors_running(bool run) if (run) { if (TRACE_MOTOR) - if (m_MOTOR_ON==CLEAR_LINE) logerror("%s: Motor START\n", tag()); + if (m_MOTOR_ON==CLEAR_LINE) logerror("Motor START\n"); m_MOTOR_ON = ASSERT_LINE; } else { if (TRACE_MOTOR) - if (m_MOTOR_ON==ASSERT_LINE) logerror("%s: Motor STOP\n", tag()); + if (m_MOTOR_ON==ASSERT_LINE) logerror("Motor STOP\n"); m_MOTOR_ON = CLEAR_LINE; } @@ -812,7 +817,7 @@ void myarc_hfdc_device::set_floppy_motors_running(bool run) WRITE_LINE_MEMBER( myarc_hfdc_device::intrq_w ) { m_irq = (line_state)state; - if (TRACE_INT) logerror("%s: INT pin from controller = %d, propagating to INTA*\n", tag(), state); + if (TRACE_INT) logerror("INT pin from controller = %d, propagating to INTA*\n", state); // Set INTA* // Signal from SMC is active high, INTA* is active low; board inverts signal @@ -826,7 +831,7 @@ WRITE_LINE_MEMBER( myarc_hfdc_device::intrq_w ) */ WRITE_LINE_MEMBER( myarc_hfdc_device::dmarq_w ) { - if (TRACE_DMA) logerror("%s: DMARQ pin from controller = %d\n", tag(), state); + if (TRACE_DMA) logerror("DMARQ pin from controller = %d\n", state); if (state == ASSERT_LINE) { m_hdc9234->dmaack(ASSERT_LINE); @@ -846,9 +851,9 @@ WRITE_LINE_MEMBER( myarc_hfdc_device::dip_w ) */ READ8_MEMBER( myarc_hfdc_device::read_buffer ) { - if (TRACE_DMA) logerror("%s: Read access to onboard SRAM at %04x\n", tag(), m_dma_address); - if (m_dma_address > 0x8000) logerror("%s: Read access beyond RAM size: %06x\n", tag(), m_dma_address); - UINT8 value = m_buffer_ram[m_dma_address & 0x7fff]; + if (TRACE_DMA) logerror("Read access to onboard SRAM at %04x\n", m_dma_address); + if (m_dma_address > 0x8000) logerror("Read access beyond RAM size: %06x\n", m_dma_address); + UINT8 value = m_buffer_ram->pointer()[m_dma_address & 0x7fff]; m_dma_address = (m_dma_address+1) & 0x7fff; return value; } @@ -858,17 +863,15 @@ READ8_MEMBER( myarc_hfdc_device::read_buffer ) */ WRITE8_MEMBER( myarc_hfdc_device::write_buffer ) { - if (TRACE_DMA) logerror("%s: Write access to onboard SRAM at %04x: %02x\n", tag(), m_dma_address, data); - if (m_dma_address > 0x8000) logerror("%s: Write access beyond RAM size: %06x\n", tag(), m_dma_address); - m_buffer_ram[m_dma_address & 0x7fff] = data; + if (TRACE_DMA) logerror("Write access to onboard SRAM at %04x: %02x\n", m_dma_address, data); + if (m_dma_address > 0x8000) logerror("Write access beyond RAM size: %06x\n", m_dma_address); + m_buffer_ram->pointer()[m_dma_address & 0x7fff] = data; m_dma_address = (m_dma_address+1) & 0x7fff; } void myarc_hfdc_device::device_start() { - if (TRACE_EMU) logerror("%s: start\n", tag()); m_dsrrom = memregion(DSRROM)->base(); - m_buffer_ram = memregion(BUFFER)->base(); m_motor_on_timer = timer_alloc(MOTOR_TIMER); // The HFDC does not use READY; it has on-board RAM for DMA m_current_floppy = nullptr; @@ -877,8 +880,6 @@ void myarc_hfdc_device::device_start() void myarc_hfdc_device::device_reset() { - if (TRACE_EMU) logerror("%s: reset\n", tag()); - // The GenMOD mod; our implementation automagically adapts all cards if (m_genmod) { @@ -914,17 +915,17 @@ void myarc_hfdc_device::device_reset() for (int i=0; i < 4; i++) { if (m_floppy_unit[i] != nullptr) - logerror("%s: FD connector %d with %s\n", tag(), i+1, m_floppy_unit[i]->name()); + logerror("FD connector %d with %s\n", i+1, m_floppy_unit[i]->name()); else - logerror("%s: FD connector %d has no floppy attached\n", tag(), i+1); + logerror("FD connector %d has no floppy attached\n", i+1); } for (int i=0; i < 3; i++) { if (m_harddisk_unit[i] != nullptr) - logerror("%s: HD connector %d with %s\n", tag(), i+1, m_harddisk_unit[i]->name()); + logerror("HD connector %d with %s\n", i+1, m_harddisk_unit[i]->name()); else - logerror("%s: HD connector %d has no drive attached\n", tag(), i+1); + logerror("HD connector %d has no drive attached\n", i+1); } // Disconnect all units @@ -1053,13 +1054,15 @@ MACHINE_CONFIG_FRAGMENT( ti99_hfdc ) MCFG_DEVICE_ADD(CLOCK_TAG, MM58274C, 0) MCFG_MM58274C_MODE24(1) // 24 hour MCFG_MM58274C_DAY1(0) // sunday + + MCFG_RAM_ADD(BUFFER) + MCFG_RAM_DEFAULT_SIZE("32K") + MCFG_RAM_DEFAULT_VALUE(0) MACHINE_CONFIG_END ROM_START( ti99_hfdc ) ROM_REGION(0x4000, DSRROM, 0) ROM_LOAD("hfdc_dsr.u34", 0x0000, 0x4000, CRC(66fbe0ed) SHA1(11df2ecef51de6f543e4eaf8b2529d3e65d0bd59)) /* HFDC disk DSR ROM */ - ROM_REGION(0x8000, BUFFER, 0) /* HFDC RAM buffer 32 KiB */ - ROM_FILL(0x0000, 0x8000, 0x00) ROM_END diff --git a/src/devices/bus/ti99_peb/hfdc.h b/src/devices/bus/ti99_peb/hfdc.h index 3fa6817ae39..939671f0142 100644 --- a/src/devices/bus/ti99_peb/hfdc.h +++ b/src/devices/bus/ti99_peb/hfdc.h @@ -21,6 +21,7 @@ #include "machine/mm58274c.h" #include "machine/hdc92x4.h" +#include "machine/ram.h" extern const device_type TI99_HFDC; @@ -149,7 +150,7 @@ private: int m_rom_page; // HFDC on-board SRAM (8K or 32K) - UINT8* m_buffer_ram; + required_device m_buffer_ram; // RAM page registers int m_ram_page[4]; diff --git a/src/devices/bus/ti99_peb/tn_ide.cpp b/src/devices/bus/ti99_peb/tn_ide.cpp index a1698f11b02..39686998a96 100644 --- a/src/devices/bus/ti99_peb/tn_ide.cpp +++ b/src/devices/bus/ti99_peb/tn_ide.cpp @@ -34,7 +34,7 @@ #define CRU_BASE 0x1000 -#define BUFFER_TAG "ram" +#define RAMREGION "ram" /* previously 0xff */ #define PAGE_MASK 0x3f @@ -52,8 +52,9 @@ enum nouspikel_ide_interface_device::nouspikel_ide_interface_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : ti_expansion_card_device(mconfig, TI99_IDE, "Nouspikel IDE interface card", tag, owner, clock, "ti99_ide", __FILE__), m_ata_irq(false), m_cru_register(0), m_rtc(nullptr), - m_ata(*this, "ata"), m_clk_irq(false), m_sram_enable(false), m_sram_enable_dip(false), m_cur_page(0), m_tms9995_mode(false), - m_input_latch(0), m_output_latch(0), m_ram(nullptr) + m_ata(*this, "ata"), m_clk_irq(false), m_sram_enable(false), + m_sram_enable_dip(false), m_cur_page(0), m_tms9995_mode(false), + m_input_latch(0), m_output_latch(0), m_ram(*this, RAMREGION) { } @@ -180,9 +181,9 @@ READ8Z_MEMBER(nouspikel_ide_interface_device::readz) else { /* sram */ if ((m_cru_register & cru_reg_page_0) || (addr >= 0x1000)) - reply = m_ram[addr+0x2000 * m_cur_page]; + reply = m_ram->pointer()[addr+0x2000 * m_cur_page]; else - reply = m_ram[addr]; + reply = m_ram->pointer()[addr]; } *value = reply; } @@ -267,9 +268,9 @@ WRITE8_MEMBER(nouspikel_ide_interface_device::write) if (! (m_cru_register & cru_reg_wp)) { if ((m_cru_register & cru_reg_page_0) || (addr >= 0x1000)) - m_ram[addr+0x2000 * m_cur_page] = data; + m_ram->pointer()[addr+0x2000 * m_cur_page] = data; else - m_ram[addr] = data; + m_ram->pointer()[addr] = data; } } } @@ -304,8 +305,6 @@ WRITE_LINE_MEMBER(nouspikel_ide_interface_device::clock_interrupt_callback) void nouspikel_ide_interface_device::device_start() { m_rtc = subdevice("ide_rtc"); - - m_ram = memregion(BUFFER_TAG)->base(); m_sram_enable_dip = false; // TODO: what is this? } @@ -338,12 +337,11 @@ MACHINE_CONFIG_FRAGMENT( tn_ide ) MCFG_RTC65271_INTERRUPT_CB(WRITELINE(nouspikel_ide_interface_device, clock_interrupt_callback)) MCFG_ATA_INTERFACE_ADD( "ata", ata_devices, "hdd", nullptr, false) MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(nouspikel_ide_interface_device, ide_interrupt_callback)) -MACHINE_CONFIG_END -ROM_START( tn_ide ) - ROM_REGION(0x80000, BUFFER_TAG, 0) /* RAM buffer 512 KiB */ - ROM_FILL(0x0000, 0x80000, 0x00) -ROM_END + MCFG_RAM_ADD(RAMREGION) + MCFG_RAM_DEFAULT_SIZE("512K") + MCFG_RAM_DEFAULT_VALUE(0) +MACHINE_CONFIG_END INPUT_PORTS_START( tn_ide ) PORT_START( "CRUIDE" ) @@ -371,11 +369,6 @@ machine_config_constructor nouspikel_ide_interface_device::device_mconfig_additi return MACHINE_CONFIG_NAME( tn_ide ); } -const tiny_rom_entry *nouspikel_ide_interface_device::device_rom_region() const -{ - return ROM_NAME( tn_ide ); -} - ioport_constructor nouspikel_ide_interface_device::device_input_ports() const { return INPUT_PORTS_NAME(tn_ide); diff --git a/src/devices/bus/ti99_peb/tn_ide.h b/src/devices/bus/ti99_peb/tn_ide.h index e4c213763b6..e4bb41e2642 100644 --- a/src/devices/bus/ti99_peb/tn_ide.h +++ b/src/devices/bus/ti99_peb/tn_ide.h @@ -17,6 +17,7 @@ #include "emu.h" #include "machine/ataintf.h" #include "machine/rtc65271.h" +#include "machine/ram.h" extern const device_type TI99_IDE; @@ -40,7 +41,6 @@ public: protected: virtual void device_start(void) override; virtual void device_reset(void) override; - virtual const tiny_rom_entry *device_rom_region() const override; virtual machine_config_constructor device_mconfig_additions() const override; virtual ioport_constructor device_input_ports() const override; @@ -58,7 +58,7 @@ private: UINT16 m_input_latch; UINT16 m_output_latch; - UINT8 *m_ram; + required_device m_ram; }; #endif diff --git a/src/devices/bus/ti99x/genboard.cpp b/src/devices/bus/ti99x/genboard.cpp index 7eb48b6197a..572638701ce 100644 --- a/src/devices/bus/ti99x/genboard.cpp +++ b/src/devices/bus/ti99x/genboard.cpp @@ -206,12 +206,22 @@ #define TRACE_VIDEOWS 0 #define TRACE_PFM 0 +#define SRAM_PAR_TAG ":sram" +#define DRAM_PAR_TAG ":dram" + geneve_mapper_device::geneve_mapper_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) -: device_t(mconfig, GENEVE_MAPPER, "Geneve Gate Array", tag, owner, clock, "geneve_mapper", __FILE__), m_gromwaddr_LSB(false), m_gromraddr_LSB(false), m_grom_address(0), m_video_waitstates(false), m_extra_waitstates(false), m_ready_asserted(false), m_read_mode(false), m_debug_no_ws(false), m_geneve_mode(false), m_direct_mode(false), m_cartridge_size(0), m_cartridge_secondpage(false), m_cartridge6_writable(false), m_cartridge7_writable(false), m_turbo(false), m_genmod(false), m_timode(false), m_pfm_mode(0), m_pfm_bank(0), m_pfm_output_enable(false), m_sram_mask(0), m_sram_val(0), +: device_t(mconfig, GENEVE_MAPPER, "Geneve Gate Array", tag, owner, clock, "geneve_mapper", __FILE__), m_gromwaddr_LSB(false), + m_gromraddr_LSB(false), m_grom_address(0), m_video_waitstates(false), + m_extra_waitstates(false), m_ready_asserted(false), m_read_mode(false), + m_debug_no_ws(false), m_geneve_mode(false), m_direct_mode(false), + m_cartridge_size(0), m_cartridge_secondpage(false), + m_cartridge6_writable(false), m_cartridge7_writable(false), + m_turbo(false), m_genmod(false), m_timode(false), m_pfm_mode(0), + m_pfm_bank(0), m_pfm_output_enable(false), m_sram_mask(0), m_sram_val(0), m_ready(*this), m_waitcount(0), m_ext_waitcount(0), m_clock(nullptr), m_cpu(nullptr), m_pfm512(nullptr), m_pfm512a(nullptr), m_sound(nullptr), m_keyboard(nullptr), - m_video(nullptr), m_peribox(nullptr), m_sram(nullptr), m_dram(nullptr) + m_video(nullptr), m_peribox(nullptr), m_sram(*this, SRAM_PAR_TAG), m_dram(*this, DRAM_PAR_TAG) { m_eprom = nullptr; } @@ -225,12 +235,12 @@ INPUT_CHANGED_MEMBER( geneve_mapper_device::settings_changed ) { case 1: // Turbo switch. May be changed at any time. - if (TRACE_SETTING) logerror("%s: Setting turbo flag to %d\n", tag(), value); + if (TRACE_SETTING) logerror("Setting turbo flag to %d\n", value); m_turbo = (value!=0); break; case 2: // TIMode switch. Causes reset when changed. - if (TRACE_SETTING) logerror("%s: Setting timode flag to %d\n", tag(), value); + if (TRACE_SETTING) logerror("Setting timode flag to %d\n", value); m_timode = (value!=0); machine().schedule_hard_reset(); break; @@ -239,7 +249,7 @@ INPUT_CHANGED_MEMBER( geneve_mapper_device::settings_changed ) set_boot_rom(value); break; default: - logerror("%s: Unknown setting %d ignored\n", tag(), number); + logerror("Unknown setting %d ignored\n", number); } } @@ -277,7 +287,7 @@ READ8_MEMBER( geneve_mapper_device::read_grom ) // GROM data handling // GROMs are stored in pages 38..3f int page = 0x38; - reply = m_dram[(page<<13) + m_grom_address]; + reply = m_dram->pointer()[(page<<13) + m_grom_address]; m_grom_address = (m_grom_address + 1) & 0xffff; m_gromraddr_LSB = m_gromwaddr_LSB = false; } @@ -310,7 +320,7 @@ WRITE8_MEMBER( geneve_mapper_device::write_grom ) { // write GPL data // The Geneve GROM simulator allows for GROM writing (verified with a real system) int page = 0x38; - m_dram[(page<<13) + m_grom_address] = data; + m_dram->pointer()[(page<<13) + m_grom_address] = data; m_grom_address = (m_grom_address + 1) & 0xffff; m_gromraddr_LSB = m_gromwaddr_LSB = false; @@ -330,7 +340,7 @@ void geneve_mapper_device::set_wait(int min) m_waitcount = min + 1; if (m_waitcount > 1) { - if (TRACE_LINES) logerror("%s: Pulling down READY line for %d cycles\n", tag(), min); + if (TRACE_LINES) logerror("Pulling down READY line for %d cycles\n", min); m_ready(CLEAR_LINE); m_ready_asserted = false; } @@ -347,62 +357,62 @@ void geneve_mapper_device::set_boot_rom(int selection) switch (selection) { case GENEVE_098: - logerror("%s: Using 0.98 boot eprom\n", tag()); + logerror("Using 0.98 boot eprom\n"); m_eprom = machine().root_device().memregion("maincpu")->base() + 0x4000; m_pfm_mode = 0; break; case GENEVE_100: - logerror("%s: Using 1.00 boot eprom\n", tag()); + logerror("Using 1.00 boot eprom\n"); m_eprom = machine().root_device().memregion("maincpu")->base(); m_pfm_mode = 0; break; case GENEVE_PFM512: - logerror("%s: Using PFM512 (AT29C040)\n", tag()); + logerror("Using PFM512 (AT29C040)\n"); m_pfm_mode = 1; break; case GENEVE_PFM512A: - logerror("%s: Using PFM512A (AT29C040A)\n", tag()); + logerror("Using PFM512A (AT29C040A)\n"); m_pfm_mode = 2; break; default: - logerror("%s: Unknown boot ROM selection\n", tag()); + logerror("Unknown boot ROM selection\n"); } } void geneve_mapper_device::set_geneve_mode(bool geneve) { - if (TRACE_SETTING) logerror("%s: Setting Geneve mode = %d\n", tag(), geneve); + if (TRACE_SETTING) logerror("Setting Geneve mode = %d\n", geneve); m_geneve_mode = geneve; } void geneve_mapper_device::set_direct_mode(bool direct) { - if (TRACE_SETTING) logerror("%s: Setting direct mode = %d\n", tag(), direct); + if (TRACE_SETTING) logerror("Setting direct mode = %d\n", direct); m_direct_mode = direct; } void geneve_mapper_device::set_cartridge_size(int size) { - if (TRACE_SETTING) logerror("%s: Setting cartridge size to %d\n", tag(), size); + if (TRACE_SETTING) logerror("Setting cartridge size to %d\n", size); m_cartridge_size = size; } void geneve_mapper_device::set_cartridge_writable(int base, bool write) { - if (TRACE_SETTING) logerror("%s: Cartridge %04x space writable = %d\n", tag(), base, write); + if (TRACE_SETTING) logerror("Cartridge %04x space writable = %d\n", base, write); if (base==0x6000) m_cartridge6_writable = write; else m_cartridge7_writable = write; } void geneve_mapper_device::set_video_waitstates(bool wait) { - if (TRACE_VIDEOWS) logerror("%s: Setting video waitstates = %d\n", tag(), wait); + if (TRACE_VIDEOWS) logerror("Setting video waitstates = %d\n", wait); m_video_waitstates = wait; } void geneve_mapper_device::set_extra_waitstates(bool wait) { - if (TRACE_SETTING) logerror("%s: Setting extra waitstates = %d\n", tag(), wait); + if (TRACE_SETTING) logerror("Setting extra waitstates = %d\n", wait); m_extra_waitstates = wait; } @@ -473,7 +483,7 @@ READ8_MEMBER( geneve_mapper_device::readm ) if (!space.debugger_access()) { value = m_video->read(space, dec->offset>>1); - if (TRACE_READ) logerror("%s: Read video %04x -> %02x\n", tag(), dec->offset, value); + if (TRACE_READ) logerror("Read video %04x -> %02x\n", dec->offset, value); // Video wait states are created *after* the access // Accordingly, they have no effect when execution is in onchip RAM if (m_video_waitstates) set_ext_wait(15); @@ -483,13 +493,13 @@ READ8_MEMBER( geneve_mapper_device::readm ) case MLGMAPPER: // mapper value = m_map[dec->offset]; - if (TRACE_READ) logerror("%s: read mapper %04x -> %02x\n", tag(), dec->offset, value); + if (TRACE_READ) logerror("read mapper %04x -> %02x\n", dec->offset, value); break; case MLGKEY: // key if (!space.debugger_access()) value = m_keyboard->get_recent_key(); - if (TRACE_READ) logerror("%s: Read keyboard -> %02x\n", tag(), value); + if (TRACE_READ) logerror("Read keyboard -> %02x\n", value); break; case MLGCLOCK: @@ -497,19 +507,19 @@ READ8_MEMBER( geneve_mapper_device::readm ) // tests on the real machine showed that // upper nibble is 0xf (probably because of the location at 0xf130?) value = m_clock->read(space, dec->offset) | 0xf0; - if (TRACE_READ) logerror("%s: Read clock %04x -> %02x\n", tag(), dec->offset, value); + if (TRACE_READ) logerror("Read clock %04x -> %02x\n", dec->offset, value); break; case MLTMAPPER: // mapper value = m_map[dec->offset]; - if (TRACE_READ) logerror("%s: Read mapper %04x -> %02x\n", tag(), dec->offset, value); + if (TRACE_READ) logerror("Read mapper %04x -> %02x\n", dec->offset, value); break; case MLTKEY: // key if (!space.debugger_access()) value = m_keyboard->get_recent_key(); - if (TRACE_READ) logerror("%s: Read keyboard -> %02x\n", tag(), value); + if (TRACE_READ) logerror("Read keyboard -> %02x\n", value); break; case MLTCLOCK: @@ -523,7 +533,7 @@ READ8_MEMBER( geneve_mapper_device::readm ) // value floating around. value = m_clock->read(space, dec->offset); value |= (dec->offset==0x000f)? 0x20 : 0x10; - if (TRACE_READ) logerror("%s: Read clock %04x -> %02x\n", tag(), dec->offset, value); + if (TRACE_READ) logerror("Read clock %04x -> %02x\n", dec->offset, value); break; case MLTVIDEO: @@ -533,7 +543,7 @@ READ8_MEMBER( geneve_mapper_device::readm ) if (!space.debugger_access()) { value = m_video->read(space, dec->offset>>1); - if (TRACE_READ) logerror("%s: Read video %04x -> %02x\n", tag(), dec->offset, value); + if (TRACE_READ) logerror("Read video %04x -> %02x\n", dec->offset, value); // See above if (m_video_waitstates) set_ext_wait(15); } @@ -546,7 +556,7 @@ READ8_MEMBER( geneve_mapper_device::readm ) // We need to add the address prefix bits m_peribox->readz(space, dec->offset, &value, 0xff); m_peribox->memen_in(CLEAR_LINE); - if (TRACE_READ) logerror("%s: Read speech -> %02x\n", tag(), value); + if (TRACE_READ) logerror("Read speech -> %02x\n", value); break; case MLTGROM: @@ -554,7 +564,7 @@ READ8_MEMBER( geneve_mapper_device::readm ) // ++++ ++-- ---- ---+ // 1001 1000 0000 00x0 if (!space.debugger_access()) value = read_grom(space, dec->offset, 0xff); - if (TRACE_READ) logerror("%s: Read GROM %04x -> %02x\n", tag(), dec->offset, value); + if (TRACE_READ) logerror("Read GROM %04x -> %02x\n", dec->offset, value); break; case MLGSOUND: @@ -565,14 +575,14 @@ READ8_MEMBER( geneve_mapper_device::readm ) case MPGDRAM: // DRAM. - value = m_dram[dec->physaddr]; + value = m_dram->pointer()[dec->physaddr]; // LOG("dram read physaddr = %06x logaddr = %04x value = %02x\n", dec->physaddr, dec->offset, value); - if (TRACE_READ) logerror("%s: Read DRAM %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value); + if (TRACE_READ) logerror("Read DRAM %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value); break; case MPGEXP: // On-board memory expansion for standard Geneve (never used) - if (TRACE_READ) logerror("%s: Read unmapped area %06x\n", tag(), dec->physaddr); + if (TRACE_READ) logerror("Read unmapped area %06x\n", dec->physaddr); value = 0; break; @@ -582,7 +592,7 @@ READ8_MEMBER( geneve_mapper_device::readm ) if (m_pfm_mode == 0) { value = m_eprom[dec->physaddr & 0x003fff]; - if (TRACE_READ) logerror("%s: Read EPROM %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value); + if (TRACE_READ) logerror("Read EPROM %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value); } else value = read_from_pfm(space, dec->physaddr, 0xff); @@ -591,12 +601,12 @@ READ8_MEMBER( geneve_mapper_device::readm ) case MPGSRAM: if ((dec->physaddr & m_sram_mask)==m_sram_val) { - value = m_sram[dec->physaddr & ~m_sram_mask]; + value = m_sram->pointer()[dec->physaddr & ~m_sram_mask]; } else value = 0; // Return in any case // LOG("sram read physaddr = %06x logaddr = %04x value = %02x\n", dec->physaddr, dec->offset, value); - if (TRACE_READ) logerror("%s: Read SRAM %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value); + if (TRACE_READ) logerror("Read SRAM %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value); break; case MPGBOX: @@ -606,12 +616,12 @@ READ8_MEMBER( geneve_mapper_device::readm ) m_peribox->readz(space, dec->physaddr, &value, 0xff); m_peribox->memen_in(CLEAR_LINE); - if (TRACE_READ) logerror("%s: Read P-Box %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value); + if (TRACE_READ) logerror("Read P-Box %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value); break; case MPGMDRAM: // DRAM. One wait state. - value = m_dram[dec->physaddr]; + value = m_dram->pointer()[dec->physaddr]; break; case MPGMEPROM: @@ -620,7 +630,7 @@ READ8_MEMBER( geneve_mapper_device::readm ) if (m_pfm_mode == 0) { value = m_eprom[dec->physaddr & 0x003fff]; - if (TRACE_READ) logerror("%s: Read EPROM %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value); + if (TRACE_READ) logerror("Read EPROM %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value); } else value = read_from_pfm(space, dec->physaddr, 0xff); break; @@ -663,7 +673,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) if (!space.debugger_access()) { m_video->write(space, dec->offset>>1, data); - if (TRACE_WRITE) logerror("%s: Write video %04x <- %02x\n", tag(), offset, data); + if (TRACE_WRITE) logerror("Write video %04x <- %02x\n", offset, data); // See above if (m_video_waitstates) set_ext_wait(15); } @@ -672,33 +682,33 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) case MLGMAPPER: // mapper m_map[dec->offset] = data; - if (TRACE_WRITE) logerror("%s: Write mapper %04x <- %02x\n", tag(), offset, data); + if (TRACE_WRITE) logerror("Write mapper %04x <- %02x\n", offset, data); break; case MLGCLOCK: // clock // ++++ ++++ ++++ ---- m_clock->write(space, dec->offset, data); - if (TRACE_WRITE) logerror("%s: Write clock %04x <- %02x\n", tag(), offset, data); + if (TRACE_WRITE) logerror("Write clock %04x <- %02x\n", offset, data); break; case MLGSOUND: // sound // ++++ ++++ ++++ ---+ m_sound->write(space, 0, data, 0xff); - if (TRACE_WRITE) logerror("%s: Write sound <- %02x\n", tag(), data); + if (TRACE_WRITE) logerror("Write sound <- %02x\n", data); break; case MLTMAPPER: // mapper m_map[dec->offset] = data; - if (TRACE_WRITE) logerror("%s: Write mapper %04x <- %02x\n", tag(), offset, data); + if (TRACE_WRITE) logerror("Write mapper %04x <- %02x\n", offset, data); break; case MLTCLOCK: // clock m_clock->write(space, dec->offset, data); - if (TRACE_WRITE) logerror("%s: Write clock %04x <- %02x\n", tag(), offset, data); + if (TRACE_WRITE) logerror("Write clock %04x <- %02x\n", offset, data); break; case MLTVIDEO: @@ -709,7 +719,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) if (!space.debugger_access()) { m_video->write(space, dec->offset>>1, data); - if (TRACE_WRITE) logerror("%s: Write video %04x <- %02x\n", tag(), offset, data); + if (TRACE_WRITE) logerror("Write video %04x <- %02x\n", offset, data); // See above if (m_video_waitstates) set_ext_wait(15); } @@ -722,7 +732,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) // We need to add the address prefix bits m_peribox->write(space, dec->offset, data, 0xff); m_peribox->memen_in(CLEAR_LINE); - if (TRACE_WRITE) logerror("%s: Write speech <- %02x\n", tag(), data); + if (TRACE_WRITE) logerror("Write speech <- %02x\n", data); break; case MLTGROM: @@ -730,7 +740,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) // ++++ ++-- ---- ---+ // 1001 1100 0000 00c0 write_grom(space, dec->offset, data, 0xff); - if (TRACE_WRITE) logerror("%s: Write GROM %04x <- %02x\n", tag(), offset, data); + if (TRACE_WRITE) logerror("Write GROM %04x <- %02x\n", offset, data); break; case MLTSOUND: @@ -738,7 +748,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) // ++++ ++-- ---- ---+ // 1000 0100 0000 0000 m_sound->write(space, 0, data, 0xff); - if (TRACE_WRITE) logerror("%s: Write sound <- %02x\n", tag(), data); + if (TRACE_WRITE) logerror("Write sound <- %02x\n", data); break; case MLTKEY: @@ -747,13 +757,13 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) case MPGDRAM: // DRAM write. One wait state. (only for normal Geneve) - m_dram[dec->physaddr] = data; - if (TRACE_WRITE) logerror("%s: Write DRAM %04x (%06x) <- %02x\n", tag(), offset, dec->physaddr, data); + m_dram->pointer()[dec->physaddr] = data; + if (TRACE_WRITE) logerror("Write DRAM %04x (%06x) <- %02x\n", offset, dec->physaddr, data); break; case MPGEXP: // On-board memory expansion for standard Geneve (never used) - if (TRACE_WRITE) logerror("%s: Write unmapped area %06x\n", tag(), dec->physaddr); + if (TRACE_WRITE) logerror("Write unmapped area %06x\n", dec->physaddr); break; case MPGEPROM: @@ -762,27 +772,27 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) // Ignore EPROM write (unless PFM) if (m_pfm_mode != 0) write_to_pfm(space, dec->physaddr, data, 0xff); else - logerror("%s: Write EPROM %04x (%06x) <- %02x, ignored\n", tag(), offset, dec->physaddr, data); + logerror("Write EPROM %04x (%06x) <- %02x, ignored\n", offset, dec->physaddr, data); break; case MPGSRAM: if ((dec->physaddr & m_sram_mask)==m_sram_val) { - m_sram[dec->physaddr & ~m_sram_mask] = data; + m_sram->pointer()[dec->physaddr & ~m_sram_mask] = data; } - if (TRACE_WRITE) logerror("%s: Write SRAM %04x (%06x) <- %02x\n", tag(), offset, dec->physaddr, data); + if (TRACE_WRITE) logerror("Write SRAM %04x (%06x) <- %02x\n", offset, dec->physaddr, data); break; case MPGBOX: dec->physaddr = (dec->physaddr & 0x0007ffff); // 19 bit address - if (TRACE_WRITE) logerror("%s: Write P-Box %04x (%06x) <- %02x\n", tag(), offset, dec->physaddr, data); + if (TRACE_WRITE) logerror("Write P-Box %04x (%06x) <- %02x\n", offset, dec->physaddr, data); m_peribox->write(space, dec->physaddr, data, 0xff); m_peribox->memen_in(CLEAR_LINE); break; case MPGMDRAM: // DRAM. One wait state. - m_dram[dec->physaddr] = data; + m_dram->pointer()[dec->physaddr] = data; break; case MPGMEPROM: @@ -791,7 +801,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem ) // Ignore EPROM write if (m_pfm_mode != 0) write_to_pfm(space, dec->physaddr, data, 0xff); else - logerror("%s: Write EPROM %04x (%06x) <- %02x, ignored\n", tag(), offset, dec->physaddr, data); + logerror("Write EPROM %04x (%06x) <- %02x, ignored\n", offset, dec->physaddr, data); break; case MPGMBOX: @@ -1119,7 +1129,7 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read if (m_cartridge_size==0x4000) { m_cartridge_secondpage = ((dec->offset & 0x0002)!=0); - if (TRACE_WRITE) logerror("%s: Set cartridge page %02x\n", tag(), m_cartridge_secondpage); + if (TRACE_WRITE) logerror("Set cartridge page %02x\n", m_cartridge_secondpage); set_wait(1); return; } @@ -1129,7 +1139,7 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read if ((((dec->offset & 0x1000)==0x0000) && !m_cartridge6_writable) || (((dec->offset & 0x1000)==0x1000) && !m_cartridge7_writable)) { - logerror("%s: Writing to protected cartridge space %04x ignored\n", tag(), dec->offset); + logerror("Writing to protected cartridge space %04x ignored\n", dec->offset); return; } else @@ -1229,11 +1239,11 @@ READ8_MEMBER( geneve_mapper_device::read_from_pfm ) value = m_pfm512a->read(space, address, mem_mask); break; default: - logerror("%s: Illegal mode for reading PFM: %d\n", tag(), m_pfm_mode); + logerror("Illegal mode for reading PFM: %d\n", m_pfm_mode); return 0; } - if (TRACE_PFM) logerror("%s: Reading from PFM at address %05x -> %02x\n", tag(), address, value); + if (TRACE_PFM) logerror("Reading from PFM at address %05x -> %02x\n", address, value); return value; } @@ -1242,7 +1252,7 @@ WRITE8_MEMBER( geneve_mapper_device::write_to_pfm ) // Nota bene: The PFM must be write protected on startup, or the RESET // of the 9995 will attempt to write the return vector into the flash EEPROM int address = (offset & 0x01ffff) | (m_pfm_bank<<17); - if (TRACE_PFM) logerror("%s: Writing to PFM at address %05x <- %02x\n", tag(), address, data); + if (TRACE_PFM) logerror("Writing to PFM at address %05x <- %02x\n", address, data); switch (m_pfm_mode) { @@ -1253,7 +1263,7 @@ WRITE8_MEMBER( geneve_mapper_device::write_to_pfm ) m_pfm512a->write(space, address, data, mem_mask); break; default: - logerror("%s: Illegal mode for writing to PFM: %d\n", tag(), m_pfm_mode); + logerror("Illegal mode for writing to PFM: %d\n", m_pfm_mode); } } @@ -1265,7 +1275,7 @@ WRITE8_MEMBER( geneve_mapper_device::write_to_pfm ) */ SETOFFSET_MEMBER( geneve_mapper_device::setoffset ) { - if (TRACE_DETAIL) logerror("%s: setoffset = %04x\n", tag(), offset); + if (TRACE_DETAIL) logerror("setoffset = %04x\n", offset); m_debug_no_ws = false; decode(space, offset, m_read_mode, &m_decoded); } @@ -1294,13 +1304,13 @@ WRITE_LINE_MEMBER( geneve_mapper_device::clock_in ) m_waitcount--; if (m_waitcount == 0) { - if (TRACE_CLOCK) logerror("%s: clock, READY asserted\n", tag()); + if (TRACE_CLOCK) logerror("clock, READY asserted\n"); m_ready(ASSERT_LINE); m_ready_asserted = true; } else { - if (TRACE_CLOCK) logerror("%s: clock\n", tag()); + if (TRACE_CLOCK) logerror("clock\n"); } } else @@ -1310,13 +1320,13 @@ WRITE_LINE_MEMBER( geneve_mapper_device::clock_in ) m_ext_waitcount--; if (m_ext_waitcount == 0) { - if (TRACE_CLOCK) logerror("%s: clock, READY asserted after video\n", tag()); + if (TRACE_CLOCK) logerror("clock, READY asserted after video\n"); m_ready(ASSERT_LINE); m_ready_asserted = true; } else { - if (TRACE_CLOCK) logerror("%s: vclock, ew=%d\n", tag(), m_ext_waitcount); + if (TRACE_CLOCK) logerror("vclock, ew=%d\n", m_ext_waitcount); } } } @@ -1328,7 +1338,7 @@ WRITE_LINE_MEMBER( geneve_mapper_device::clock_in ) // Do we have video wait states? In that case, clear the line again if ((m_waitcount == 0) && (m_ext_waitcount > 0) && m_ready_asserted) { - if (TRACE_CLOCK) logerror("%s: clock, READY cleared for video\n", tag()); + if (TRACE_CLOCK) logerror("clock, READY cleared for video\n"); m_ready(CLEAR_LINE); m_ready_asserted = false; } @@ -1341,7 +1351,7 @@ WRITE_LINE_MEMBER( geneve_mapper_device::clock_in ) WRITE_LINE_MEMBER( geneve_mapper_device::dbin_in ) { m_read_mode = (state==ASSERT_LINE); - if (TRACE_DETAIL) logerror("%s: dbin = %02x\n", tag(), m_read_mode? 1:0); + if (TRACE_DETAIL) logerror("dbin = %02x\n", m_read_mode? 1:0); } /* @@ -1351,21 +1361,21 @@ WRITE_LINE_MEMBER( geneve_mapper_device::pfm_select_lsb ) { if (state==ASSERT_LINE) m_pfm_bank |= 1; else m_pfm_bank &= 0xfe; - if (TRACE_PFM) logerror("%s: Setting bank (l) = %d\n", tag(), m_pfm_bank); + if (TRACE_PFM) logerror("Setting bank (l) = %d\n", m_pfm_bank); } WRITE_LINE_MEMBER( geneve_mapper_device::pfm_select_msb ) { if (state==ASSERT_LINE) m_pfm_bank |= 2; else m_pfm_bank &= 0xfd; - if (TRACE_PFM) logerror("%s: Setting bank (u) = %d\n", tag(), m_pfm_bank); + if (TRACE_PFM) logerror("Setting bank (u) = %d\n", m_pfm_bank); } WRITE_LINE_MEMBER( geneve_mapper_device::pfm_output_enable ) { // Negative logic m_pfm_output_enable = (state==CLEAR_LINE); - if (TRACE_PFM) logerror("%s: PFM output %s\n", tag(), m_pfm_output_enable? "enable" : "disable"); + if (TRACE_PFM) logerror("PFM output %s\n", m_pfm_output_enable? "enable" : "disable"); } //==================================================================== @@ -1386,9 +1396,6 @@ void geneve_mapper_device::device_start() m_pfm512a = machine().device(PFM512A_TAG); m_ready.resolve(); - - m_sram = machine().root_device().memregion(SRAM_TAG)->base(); - m_dram = machine().root_device().memregion(DRAM_TAG)->base(); m_cpu = static_cast(machine().device("maincpu")); m_geneve_mode = false; @@ -1425,7 +1432,7 @@ void geneve_mapper_device::device_reset() // Check for GenMod. We assume that GenMod can be combined with PFM. if (machine().root_device().ioport("MODE")->read()!=0) { - logerror("%s: Using GenMod modification\n", tag()); + logerror("Using GenMod modification\n"); m_eprom = machine().root_device().memregion("maincpu")->base() + 0x8000; if (m_eprom[0] != 0xf0) { @@ -1508,7 +1515,7 @@ void geneve_keyboard_device::post_in_key_queue(int keycode) m_key_queue[(m_key_queue_head + m_key_queue_length) % KEYQUEUESIZE] = keycode; m_key_queue_length++; - if (TRACE_KEYBOARD) logerror("%s: Posting keycode %02x\n", tag(), keycode); + if (TRACE_KEYBOARD) logerror("Posting keycode %02x\n", keycode); } void geneve_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) @@ -1523,7 +1530,7 @@ void geneve_keyboard_device::poll() int i, j; int keycode; int pressed; - if (TRACE_KEYBOARD) logerror("%s: Poll keyboard\n", tag()); + if (TRACE_KEYBOARD) logerror("Poll keyboard\n"); if (m_key_reset) return; /* Poll keyboard */ @@ -1729,7 +1736,7 @@ void geneve_keyboard_device::signal_when_key_available() // buffer clear is disabled, and key queue is not empty. */ if ((!m_key_reset) && (m_keyboard_clock) && (m_keep_keybuf) && (m_key_queue_length != 0)) { - if (TRACE_KEYBOARD) logerror("%s: Signalling key available\n", tag()); + if (TRACE_KEYBOARD) logerror("Signalling key available\n"); m_interrupt(ASSERT_LINE); m_key_in_buffer = true; } @@ -1739,7 +1746,7 @@ WRITE_LINE_MEMBER( geneve_keyboard_device::clock_control ) { bool rising_edge = (!m_keyboard_clock && (state==ASSERT_LINE)); m_keyboard_clock = (state==ASSERT_LINE); - if (TRACE_KEYBOARD) logerror("%s: Keyboard clock_control state=%d\n", tag(), m_keyboard_clock); + if (TRACE_KEYBOARD) logerror("Keyboard clock_control state=%d\n", m_keyboard_clock); if (rising_edge) signal_when_key_available(); } diff --git a/src/devices/bus/ti99x/genboard.h b/src/devices/bus/ti99x/genboard.h index 4f9c5da7f27..932989cf8d7 100644 --- a/src/devices/bus/ti99x/genboard.h +++ b/src/devices/bus/ti99x/genboard.h @@ -21,6 +21,7 @@ #include "machine/at29x.h" #include "bus/ti99_peb/peribox.h" #include "sound/sn76496.h" +#include "machine/ram.h" extern const device_type GENEVE_MOUSE; extern const device_type GENEVE_KEYBOARD; @@ -212,8 +213,8 @@ private: v9938_device* m_video; peribox_device* m_peribox; UINT8* m_eprom; - UINT8* m_sram; - UINT8* m_dram; + required_device m_sram; + required_device m_dram; }; #define MCFG_GENEVE_READY_HANDLER( _intcallb ) \ diff --git a/src/devices/imagedev/mfmhd.cpp b/src/devices/imagedev/mfmhd.cpp index d7e5306f57f..9c3f27d50d6 100644 --- a/src/devices/imagedev/mfmhd.cpp +++ b/src/devices/imagedev/mfmhd.cpp @@ -406,7 +406,7 @@ image_init_result mfm_harddisk_device::call_load() if (chdfile==nullptr) { - logerror("%s: chdfile is null\n", tag()); + logerror("chdfile is null\n"); return image_init_result::FAIL; } @@ -414,24 +414,24 @@ image_init_result mfm_harddisk_device::call_load() chd_error state = chdfile->read_metadata(HARD_DISK_METADATA_TAG, 0, metadata); if (state != CHDERR_NONE) { - logerror("%s: Failed to read CHD metadata\n", tag()); + logerror("Failed to read CHD metadata\n"); return image_init_result::FAIL; } - if (TRACE_CONFIG) logerror("%s: CHD metadata: %s\n", tag(), metadata.c_str()); + if (TRACE_CONFIG) logerror("CHD metadata: %s\n", metadata.c_str()); // Parse the metadata mfmhd_layout_params param; param.encoding = m_encoding; - if (TRACE_CONFIG) logerror("%s: Set encoding to %d\n", tag(), m_encoding); + if (TRACE_CONFIG) logerror("Set encoding to %d\n", m_encoding); if (sscanf(metadata.c_str(), HARD_DISK_METADATA_FORMAT, ¶m.cylinders, ¶m.heads, ¶m.sectors_per_track, ¶m.sector_size) != 4) { - logerror("%s: Invalid CHD metadata\n", tag()); + logerror("Invalid CHD metadata\n"); return image_init_result::FAIL; } - if (TRACE_CONFIG) logerror("%s: CHD image has geometry cyl=%d, head=%d, sect=%d, size=%d\n", tag(), param.cylinders, param.heads, param.sectors_per_track, param.sector_size); + if (TRACE_CONFIG) logerror("CHD image has geometry cyl=%d, head=%d, sect=%d, size=%d\n", param.cylinders, param.heads, param.sectors_per_track, param.sector_size); if (m_max_cylinders != 0 && (param.cylinders != m_max_cylinders || param.heads != m_max_heads)) { @@ -448,7 +448,7 @@ image_init_result mfm_harddisk_device::call_load() state = chdfile->read_metadata(MFM_HARD_DISK_METADATA_TAG, 0, metadata); if (state != CHDERR_NONE) { - logerror("%s: Failed to read CHD sector arrangement/recording specs, applying defaults\n", tag()); + logerror("Failed to read CHD sector arrangement/recording specs, applying defaults\n"); } else { @@ -457,17 +457,17 @@ image_init_result mfm_harddisk_device::call_load() if (!param.sane_rec()) { - if (TRACE_CONFIG) logerror("%s: Sector arrangement/recording specs have invalid values, applying defaults\n", tag()); + if (TRACE_CONFIG) logerror("Sector arrangement/recording specs have invalid values, applying defaults\n"); param.reset_rec(); } else - if (TRACE_CONFIG) logerror("%s: MFM HD rec specs: interleave=%d, cylskew=%d, headskew=%d, wpcom=%d, rwc=%d\n", + if (TRACE_CONFIG) logerror("MFM HD rec specs: interleave=%d, cylskew=%d, headskew=%d, wpcom=%d, rwc=%d\n", tag(), param.interleave, param.cylskew, param.headskew, param.write_precomp_cylinder, param.reduced_wcurr_cylinder); state = chdfile->read_metadata(MFM_HARD_DISK_METADATA_TAG, 1, metadata); if (state != CHDERR_NONE) { - logerror("%s: Failed to read CHD track gap specs, applying defaults\n", tag()); + logerror("Failed to read CHD track gap specs, applying defaults\n"); } else { @@ -476,11 +476,11 @@ image_init_result mfm_harddisk_device::call_load() if (!param.sane_gap()) { - if (TRACE_CONFIG) logerror("%s: MFM HD gap specs have invalid values, applying defaults\n", tag()); + if (TRACE_CONFIG) logerror("MFM HD gap specs have invalid values, applying defaults\n"); param.reset_gap(); } else - if (TRACE_CONFIG) logerror("%s: MFM HD gap specs: gap1=%d, gap2=%d, gap3=%d, sync=%d, headerlen=%d, ecctype=%d\n", + if (TRACE_CONFIG) logerror("MFM HD gap specs: gap1=%d, gap2=%d, gap3=%d, sync=%d, headerlen=%d, ecctype=%d\n", tag(), param.gap1, param.gap2, param.gap3, param.sync, param.headerlen, param.ecctype); m_format->set_layout_params(param); @@ -501,7 +501,7 @@ image_init_result mfm_harddisk_device::call_load() float realmax = (m_maxseek_time==0)? (m_actual_cylinders * 0.2) : (m_maxseek_time * 0.8); float settle_us = ((m_actual_cylinders-1.0) * realnext - realmax) / (m_actual_cylinders-2.0) * 1000; float step_us = realnext * 1000 - settle_us; - if (TRACE_CONFIG) logerror("%s: Calculated settle time: %0.2f ms, step: %d us\n", tag(), settle_us/1000, (int)step_us); + if (TRACE_CONFIG) logerror("Calculated settle time: %0.2f ms, step: %d us\n", settle_us/1000, (int)step_us); m_settle_time = attotime::from_usec((int)settle_us); m_step_time = attotime::from_usec((int)step_us); @@ -510,7 +510,7 @@ image_init_result mfm_harddisk_device::call_load() } else { - logerror("%s: Could not load CHD\n", tag()); + logerror("Could not load CHD\n"); } return loaded; } @@ -529,25 +529,25 @@ void mfm_harddisk_device::call_unload() if (m_format->save_param(MFMHD_IL) && !params->equals_rec(oldparams)) { - logerror("%s: MFM HD sector arrangement and recording specs have changed; updating CHD metadata\n", tag()); + logerror("MFM HD sector arrangement and recording specs have changed; updating CHD metadata\n"); chd_file* chdfile = get_chd_file(); chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 0, string_format(MFMHD_REC_METADATA_FORMAT, params->interleave, params->cylskew, params->headskew, params->write_precomp_cylinder, params->reduced_wcurr_cylinder), 0); if (err != CHDERR_NONE) { - logerror("%s: Failed to save MFM HD sector arrangement/recording specs to CHD\n", tag()); + logerror("Failed to save MFM HD sector arrangement/recording specs to CHD\n"); } } if (m_format->save_param(MFMHD_GAP1) && !params->equals_gap(oldparams)) { - logerror("%s: MFM HD track gap specs have changed; updating CHD metadata\n", tag()); + logerror("MFM HD track gap specs have changed; updating CHD metadata\n"); chd_file* chdfile = get_chd_file(); chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 1, string_format(MFMHD_GAP_METADATA_FORMAT, params->gap1, params->gap2, params->gap3, params->sync, params->headerlen, params->ecctype), 0); if (err != CHDERR_NONE) { - logerror("%s: Failed to save MFM HD track gap specs to CHD\n", tag()); + logerror("Failed to save MFM HD track gap specs to CHD\n"); } } } @@ -586,7 +586,7 @@ attotime mfm_harddisk_device::track_end_time() if (!m_revolution_start_time.is_never()) { endtime = m_revolution_start_time + nexttime; - if (TRACE_TIMING) logerror("%s: Track start time = %s, end time = %s\n", tag(), tts(m_revolution_start_time).c_str(), tts(endtime).c_str()); + if (TRACE_TIMING) logerror("Track start time = %s, end time = %s\n", tts(m_revolution_start_time).c_str(), tts(endtime).c_str()); } return endtime; } @@ -628,7 +628,7 @@ void mfm_harddisk_device::device_timer(emu_timer &timer, device_timer_id id, int // Start the settle timer m_step_phase = STEP_SETTLE; m_seek_timer->adjust(m_settle_time); - if (TRACE_STEPS && TRACE_DETAIL) logerror("%s: Arrived at target cylinder %d, settling ...\n", tag(), m_current_cylinder); + if (TRACE_STEPS && TRACE_DETAIL) logerror("Arrived at target cylinder %d, settling ...\n", m_current_cylinder); } else { @@ -646,12 +646,12 @@ void mfm_harddisk_device::device_timer(emu_timer &timer, device_timer_id id, int { m_ready = true; m_recalibrated = true; - if (TRACE_STATE) logerror("%s: Spinup complete, drive recalibrated and positioned at cylinder %d; drive is READY\n", tag(), m_current_cylinder); + if (TRACE_STATE) logerror("Spinup complete, drive recalibrated and positioned at cylinder %d; drive is READY\n", m_current_cylinder); if (!m_ready_cb.isnull()) m_ready_cb(this, ASSERT_LINE); } else { - if (TRACE_SIGNALS) logerror("%s: Settling done at cylinder %d, seek complete\n", tag(), m_current_cylinder); + if (TRACE_SIGNALS) logerror("Settling done at cylinder %d, seek complete\n", m_current_cylinder); } m_seek_complete = true; if (!m_seek_complete_cb.isnull()) m_seek_complete_cb(this, ASSERT_LINE); @@ -664,7 +664,7 @@ void mfm_harddisk_device::device_timer(emu_timer &timer, device_timer_id id, int void mfm_harddisk_device::recalibrate() { - if (TRACE_STEPS) logerror("%s: Recalibrate to track 0\n", tag()); + if (TRACE_STEPS) logerror("Recalibrate to track 0\n"); direction_in_w(CLEAR_LINE); while (-m_track_delta < m_phys_cylinders) { @@ -677,13 +677,13 @@ void mfm_harddisk_device::head_move() { int steps = m_track_delta; if (steps < 0) steps = -steps; - if (TRACE_STEPS) logerror("%s: Moving head by %d step(s) %s\n", tag(), steps, (m_track_delta<0)? "outward" : "inward"); + if (TRACE_STEPS) logerror("Moving head by %d step(s) %s\n", steps, (m_track_delta<0)? "outward" : "inward"); // We simulate the head movement by pausing for n*step_time with n being the cylinder delta m_step_phase = STEP_MOVING; m_seek_timer->adjust(m_step_time * steps); - if (TRACE_TIMING) logerror("%s: Head movement takes %s time\n", tag(), tts(m_step_time * steps).c_str()); + if (TRACE_TIMING) logerror("Head movement takes %s time\n", tts(m_step_time * steps).c_str()); // We pretend that we already arrived // TODO: Check auto truncation? m_current_cylinder += m_track_delta; @@ -695,7 +695,7 @@ void mfm_harddisk_device::head_move() void mfm_harddisk_device::direction_in_w(line_state line) { m_seek_inward = (line == ASSERT_LINE); - if (TRACE_STEPS && TRACE_DETAIL) logerror("%s: Setting seek direction %s\n", tag(), m_seek_inward? "inward" : "outward"); + if (TRACE_STEPS && TRACE_DETAIL) logerror("Setting seek direction %s\n", m_seek_inward? "inward" : "outward"); } /* @@ -746,10 +746,10 @@ void mfm_harddisk_device::step_w(line_state line) // Counter will be adjusted according to the direction (+-1) m_track_delta += (m_seek_inward)? +1 : -1; - if (TRACE_STEPS && TRACE_DETAIL) logerror("%s: Got seek pulse; track delta %d\n", tag(), m_track_delta); + if (TRACE_STEPS && TRACE_DETAIL) logerror("Got seek pulse; track delta %d\n", m_track_delta); if (m_track_delta < -m_phys_cylinders || m_track_delta > m_phys_cylinders) { - if (TRACE_STEPS) logerror("%s: Excessive step pulses - doing auto-truncation\n", tag()); + if (TRACE_STEPS) logerror("Excessive step pulses - doing auto-truncation\n"); m_autotruncation = true; } m_seek_timer->adjust(attotime::from_usec(250)); // Start step collect timer @@ -782,7 +782,7 @@ bool mfm_harddisk_device::find_position(attotime &from_when, const attotime &lim // Reached the end if (bytepos >= m_trackimage_size) { - if (TRACE_TIMING) logerror("%s: Reached end: rev_start = %s, live = %s\n", tag(), tts(m_revolution_start_time).c_str(), tts(from_when).c_str()); + if (TRACE_TIMING) logerror("Reached end: rev_start = %s, live = %s\n", tts(m_revolution_start_time).c_str(), tts(from_when).c_str()); m_revolution_start_time += m_rev_time; cell = (from_when - m_revolution_start_time).as_ticks(freq); bytepos = cell / 16; @@ -790,7 +790,7 @@ bool mfm_harddisk_device::find_position(attotime &from_when, const attotime &lim if (bytepos < 0) { - if (TRACE_TIMING) logerror("%s: Negative cell number: rev_start = %s, live = %s\n", tag(), tts(m_revolution_start_time).c_str(), tts(from_when).c_str()); + if (TRACE_TIMING) logerror("Negative cell number: rev_start = %s, live = %s\n", tts(m_revolution_start_time).c_str(), tts(from_when).c_str()); bytepos = 0; } bit = cell % 16; @@ -827,12 +827,12 @@ bool mfm_harddisk_device::read(attotime &from_when, const attotime &limit, UINT1 { // We will deliver a single bit cdata = ((track[bytepos] << bitpos) & 0x8000) >> 15; - if (TRACE_BITS) logerror("%s: Reading (c=%d,h=%d,bit=%d) at cell %d [%s] = %d\n", tag(), m_current_cylinder, m_current_head, bitpos, ((bytepos<<4) + bitpos), tts(fw).c_str(), cdata); + if (TRACE_BITS) logerror("Reading (c=%d,h=%d,bit=%d) at cell %d [%s] = %d\n", m_current_cylinder, m_current_head, bitpos, ((bytepos<<4) + bitpos), tts(fw).c_str(), cdata); } else { // We will deliver a whole byte - if (TRACE_READ) logerror("%s: Reading (c=%d,h=%d) at position %d\n", tag(), m_current_cylinder, m_current_head, bytepos); + if (TRACE_READ) logerror("Reading (c=%d,h=%d) at position %d\n", m_current_cylinder, m_current_head, bytepos); cdata = track[bytepos]; } return false; @@ -885,7 +885,7 @@ bool mfm_harddisk_device::write(attotime &from_when, const attotime &limit, UINT if (wpcom && (params->write_precomp_cylinder == -1 || m_current_cylinder < params->write_precomp_cylinder)) params->write_precomp_cylinder = m_current_cylinder; - if (TRACE_WRITE) if ((bitpos&0x0f)==0) logerror("%s: Wrote data=%04x (c=%d,h=%d) at position %04x, wpcom=%d, rwc=%d\n", tag(), track[bytepos], m_current_cylinder, m_current_head, bytepos, wpcom, reduced_wc); + if (TRACE_WRITE) if ((bitpos&0x0f)==0) logerror("Wrote data=%04x (c=%d,h=%d) at position %04x, wpcom=%d, rwc=%d\n", track[bytepos], m_current_cylinder, m_current_head, bytepos, wpcom, reduced_wc); return false; } diff --git a/src/mame/drivers/geneve.cpp b/src/mame/drivers/geneve.cpp index bcf8acee880..866805420d9 100644 --- a/src/mame/drivers/geneve.cpp +++ b/src/mame/drivers/geneve.cpp @@ -218,8 +218,8 @@ #define TRACE_LINES 0 #define TRACE_CRU 0 -#define SRAM_SIZE 384*1024 // maximum SRAM expansion on-board -#define DRAM_SIZE 512*1024 +#define SRAM_GEN_TAG "sram" +#define DRAM_GEN_TAG "dram" class geneve_state : public driver_device { @@ -355,7 +355,7 @@ WRITE8_MEMBER ( geneve_state::cruwrite ) if ((addroff & 0xffc0) == CRU_SSTEP_BASE) { int bit = (addroff & 0x003e)>>1; - logerror("geneve: Single step not implemented; bit %d set to %d\n", bit, data); + logerror("Single step not implemented; bit %d set to %d\n", bit, data); return; } @@ -366,47 +366,47 @@ WRITE8_MEMBER ( geneve_state::cruwrite ) { case 5: // No one really cares... - if (TRACE_CRU) logerror("geneve: Set PAL flag = %02x\n", data); + if (TRACE_CRU) logerror("Set PAL flag = %02x\n", data); // m_palvideo = (data!=0); break; case 7: // m_capslock = (data!=0); - if (TRACE_CRU) logerror("geneve: Set capslock flag = %02x\n", data); + if (TRACE_CRU) logerror("Set capslock flag = %02x\n", data); break; case 8: - if (TRACE_CRU) logerror("geneve: Set keyboard clock flag = %02x\n", data); + if (TRACE_CRU) logerror("Set keyboard clock flag = %02x\n", data); m_keyboard->clock_control((data!=0)? ASSERT_LINE : CLEAR_LINE); break; case 9: - if (TRACE_CRU) logerror("geneve: Set keyboard scan flag = %02x\n", data); + if (TRACE_CRU) logerror("Set keyboard scan flag = %02x\n", data); m_keyboard->send_scancodes((data!=0)? ASSERT_LINE : CLEAR_LINE); break; case 10: - if (TRACE_CRU) logerror("geneve: Geneve mode = %02x\n", data); + if (TRACE_CRU) logerror("Geneve mode = %02x\n", data); m_mapper->set_geneve_mode(data!=0); break; case 11: - if (TRACE_CRU) logerror("geneve: Direct mode = %02x\n", data); + if (TRACE_CRU) logerror("Direct mode = %02x\n", data); m_mapper->set_direct_mode(data!=0); break; case 12: - if (TRACE_CRU) logerror("geneve: Cartridge size 8K = %02x\n", data); + if (TRACE_CRU) logerror("Cartridge size 8K = %02x\n", data); m_mapper->set_cartridge_size((data!=0)? 0x2000 : 0x4000); break; case 13: - if (TRACE_CRU) logerror("geneve: Cartridge writable 6000 = %02x\n", data); + if (TRACE_CRU) logerror("Cartridge writable 6000 = %02x\n", data); m_mapper->set_cartridge_writable(0x6000, (data!=0)); break; case 14: - if (TRACE_CRU) logerror("geneve: Cartridge writable 7000 = %02x\n", data); + if (TRACE_CRU) logerror("Cartridge writable 7000 = %02x\n", data); m_mapper->set_cartridge_writable(0x7000, (data!=0)); break; case 15: - if (TRACE_CRU) logerror("geneve: Extra wait states = %02x\n", data==0); + if (TRACE_CRU) logerror("Extra wait states = %02x\n", data==0); m_mapper->set_extra_waitstates(data==0); // let's use the inverse semantics break; default: - logerror("geneve: set CRU address %04x=%02x ignored\n", addroff, data); + logerror("set CRU address %04x=%02x ignored\n", addroff, data); break; } } @@ -426,7 +426,7 @@ READ8_MEMBER( geneve_state::cruread ) if ((addroff & 0xffc0) == CRU_SSTEP_BASE) { int bit = (addroff & 0x003e)>>1; - logerror("geneve: Single step not implemented; attempting to read bit %d\n", bit); + logerror("Single step not implemented; attempting to read bit %d\n", bit); return value; } @@ -478,7 +478,7 @@ READ8_MEMBER( geneve_state::read_by_9901 ) if (m_intb==CLEAR_LINE) answer |= 0x10; if (m_video_wait==ASSERT_LINE) answer |= 0x20; // TODO: PAL pin 5 - if (TRACE_LINES) logerror("geneve: INT15-8 = %02x\n", answer); + if (TRACE_LINES) logerror("INT15-8 = %02x\n", answer); break; case TMS9901_P0_P7: @@ -506,7 +506,7 @@ READ8_MEMBER( geneve_state::read_by_9901 ) */ WRITE_LINE_MEMBER( geneve_state::peripheral_bus_reset ) { - logerror("geneve: Peripheral bus reset request; not implemented yet.\n"); + logerror("Peripheral bus reset request; not implemented yet.\n"); } /* @@ -514,7 +514,7 @@ WRITE_LINE_MEMBER( geneve_state::peripheral_bus_reset ) */ WRITE_LINE_MEMBER( geneve_state::VDP_reset ) { - logerror("geneve: Video reset request; not implemented yet.\n"); + logerror("Video reset request; not implemented yet.\n"); } /* @@ -530,7 +530,7 @@ WRITE_LINE_MEMBER( geneve_state::joystick_select ) */ WRITE_LINE_MEMBER( geneve_state::extbus_wait_states ) { - logerror("geneve: External bus wait states set to %d, not implemented yet.\n", state); + logerror("External bus wait states set to %d, not implemented yet.\n", state); } /* @@ -539,7 +539,7 @@ WRITE_LINE_MEMBER( geneve_state::extbus_wait_states ) */ WRITE_LINE_MEMBER( geneve_state::video_wait_states ) { - if (TRACE_LINES) logerror("geneve: Video wait states set to %d\n", state); + if (TRACE_LINES) logerror("Video wait states set to %d\n", state); m_mapper->set_video_waitstates(state==ASSERT_LINE); m_video_wait = (state!=0)? ASSERT_LINE : CLEAR_LINE; } @@ -581,14 +581,14 @@ WRITE_LINE_MEMBER( geneve_state::intb ) WRITE_LINE_MEMBER( geneve_state::ext_ready ) { - if (TRACE_READY) logerror("geneve: READY level (ext) = %02x\n", state); + if (TRACE_READY) logerror("READY level (ext) = %02x\n", state); m_ready_line = state; m_cpu->ready_line((m_ready_line == ASSERT_LINE && m_ready_line1 == ASSERT_LINE)? ASSERT_LINE : CLEAR_LINE); } WRITE_LINE_MEMBER( geneve_state::mapper_ready ) { - if (TRACE_READY) logerror("geneve: READY level (mapper) = %02x\n", state); + if (TRACE_READY) logerror("READY level (mapper) = %02x\n", state); m_ready_line1 = state; m_cpu->ready_line((m_ready_line == ASSERT_LINE && m_ready_line1 == ASSERT_LINE)? ASSERT_LINE : CLEAR_LINE); } @@ -633,7 +633,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(geneve_state::geneve_hblank_interrupt) WRITE8_MEMBER( geneve_state::external_operation ) { static const char* extop[8] = { "inv1", "inv2", "IDLE", "RSET", "inv3", "CKON", "CKOF", "LREX" }; - if (offset != IDLE_OP) logerror("geneve: External operation %s not implemented on Geneve board\n", extop[offset]); + if (offset != IDLE_OP) logerror("External operation %s not implemented on Geneve board\n", extop[offset]); } /* @@ -740,6 +740,16 @@ static MACHINE_CONFIG_START( geneve_60hz, geneve_state ) MCFG_AT29C040_ADD( PFM512_TAG ) MCFG_AT29C040A_ADD( PFM512A_TAG ) + // DRAM 512K + MCFG_RAM_ADD(DRAM_GEN_TAG) + MCFG_RAM_DEFAULT_SIZE("512K") + MCFG_RAM_DEFAULT_VALUE(0) + + // SRAM 384K (max; stock Geneve: 32K) + MCFG_RAM_ADD(SRAM_GEN_TAG) + MCFG_RAM_DEFAULT_SIZE("384K") + MCFG_RAM_DEFAULT_VALUE(0) + MACHINE_CONFIG_END /* @@ -752,12 +762,6 @@ ROM_START(geneve) ROM_LOAD("genbt100.bin", 0x0000, 0x4000, CRC(8001e386) SHA1(b44618b54dabac3882543e18555d482b299e0109)) /* CPU ROMs v1.0 */ ROM_LOAD_OPTIONAL("genbt098.bin", 0x4000, 0x4000, CRC(b2e20df9) SHA1(2d5d09177afe97d63ceb3ad59b498b1c9e2153f7)) /* CPU ROMs v0.98 */ ROM_LOAD_OPTIONAL("gnmbt100.bin", 0x8000, 0x4000, CRC(19b89479) SHA1(6ef297eda78dc705946f6494e9d7e95e5216ec47)) /* CPU ROMs GenMod */ - - ROM_REGION(SRAM_SIZE, SRAM_TAG, 0) - ROM_FILL(0x0000, SRAM_SIZE, 0x00) - - ROM_REGION(DRAM_SIZE, DRAM_TAG, 0) - ROM_FILL(0x0000, DRAM_SIZE, 0x00) ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ From b8b68136492075072564a0dfea134212c0186c08 Mon Sep 17 00:00:00 2001 From: MASH Date: Mon, 8 Aug 2016 01:51:53 +0100 Subject: [PATCH 073/116] Fixed arcade only build cshooter.cpp driver was changed to airraid.cpp --- src/mame/arcade.flt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt index d663b173402..ab90e054301 100644 --- a/src/mame/arcade.flt +++ b/src/mame/arcade.flt @@ -27,6 +27,7 @@ aeroboto.cpp aerofgt.cpp age_candy.cpp airbustr.cpp +airraid.cpp ajax.cpp albazc.cpp albazg.cpp @@ -251,7 +252,6 @@ crimfght.cpp crospang.cpp crshrace.cpp crystal.cpp -cshooter.cpp csplayh5.cpp cswat.cpp cubeqst.cpp From c8d1050110c754df84a53181d4e7cec76a7a616b Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 7 Aug 2016 21:51:38 -0400 Subject: [PATCH 074/116] New core input type: "Memory Reset" - In machines that store their settings and/or bookkeeping logs in some form of non-volatile memory, "Memory Reset" will reset them to some system-provided default. - This replaces all existing inputs named "Memory Reset" and a few simply named "Reset" which are known to do this rather than reboot the system (a confusion to be avoided, though many systems will only acknowledge this input at boot time); others should be checked. - The default key binding (F1) for this new input type is chosen partly to avoid conflicts with those used by gambling/mahjong games which are currently the only systems to use this, though broader use is envisioned. --- src/emu/inpttype.h | 1 + src/emu/ioport.h | 1 + src/mame/drivers/aristmk4.cpp | 2 +- src/mame/drivers/dblcrown.cpp | 2 +- src/mame/drivers/feversoc.cpp | 2 +- src/mame/drivers/hnayayoi.cpp | 4 ++-- src/mame/drivers/hyhoo.cpp | 4 ++-- src/mame/drivers/jangou.cpp | 2 +- src/mame/drivers/lvcards.cpp | 2 +- src/mame/drivers/sengokmj.cpp | 2 +- src/mame/drivers/toaplan2.cpp | 2 +- src/mame/drivers/vroulet.cpp | 2 +- 12 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/emu/inpttype.h b/src/emu/inpttype.h index 605abe0b024..d8258c02605 100644 --- a/src/emu/inpttype.h +++ b/src/emu/inpttype.h @@ -555,6 +555,7 @@ inline void construct_core_types_other(simple_list &typelist) INPUT_PORT_DIGITAL_TYPE( 0, OTHER, SERVICE, "Service", input_seq(KEYCODE_F2) ) INPUT_PORT_DIGITAL_TYPE( 0, OTHER, TILT, "Tilt", input_seq(KEYCODE_T) ) INPUT_PORT_DIGITAL_TYPE( 0, OTHER, INTERLOCK, "Door Interlock", input_seq() ) + INPUT_PORT_DIGITAL_TYPE( 0, OTHER, MEMORY_RESET, "Memory Reset", input_seq(KEYCODE_F1) ) INPUT_PORT_DIGITAL_TYPE( 0, OTHER, VOLUME_DOWN, "Volume Down", input_seq(KEYCODE_MINUS) ) INPUT_PORT_DIGITAL_TYPE( 0, OTHER, VOLUME_UP, "Volume Up", input_seq(KEYCODE_EQUALS) ) } diff --git a/src/emu/ioport.h b/src/emu/ioport.h index 5aba15c94dc..71368f37507 100644 --- a/src/emu/ioport.h +++ b/src/emu/ioport.h @@ -143,6 +143,7 @@ enum ioport_type IPT_SERVICE, IPT_TILT, IPT_INTERLOCK, + IPT_MEMORY_RESET, IPT_VOLUME_UP, IPT_VOLUME_DOWN, IPT_START, // use the numbered start button(s) for coin-ops diff --git a/src/mame/drivers/aristmk4.cpp b/src/mame/drivers/aristmk4.cpp index b752c6b8f9d..203680b20cd 100644 --- a/src/mame/drivers/aristmk4.cpp +++ b/src/mame/drivers/aristmk4.cpp @@ -1198,7 +1198,7 @@ static INPUT_PORTS_START(aristmk4) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("2-2 UNUSED") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_NAME("2-3 UNUSED") PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON12 ) PORT_NAME("AUX1") PORT_CODE(KEYCODE_X) // PB5 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON13 ) PORT_NAME("Memory Reset") PORT_CODE(KEYCODE_C) // PB4 + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_CODE(KEYCODE_C) // PB4 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON14 ) PORT_NAME("Hopper Test") PORT_CODE(KEYCODE_V) // PB3 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON15 ) PORT_NAME("Print Data") PORT_CODE(KEYCODE_B) // PB2 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON16 ) PORT_NAME("Clock Init") PORT_CODE(KEYCODE_N) // PB1 diff --git a/src/mame/drivers/dblcrown.cpp b/src/mame/drivers/dblcrown.cpp index d766e0c425d..a251a42dcaa 100644 --- a/src/mame/drivers/dblcrown.cpp +++ b/src/mame/drivers/dblcrown.cpp @@ -387,7 +387,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( dblcrown ) PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Memory Reset") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Credit Reset") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_NAME("Note") diff --git a/src/mame/drivers/feversoc.cpp b/src/mame/drivers/feversoc.cpp index 9b4f1132140..e326faf7869 100644 --- a/src/mame/drivers/feversoc.cpp +++ b/src/mame/drivers/feversoc.cpp @@ -255,7 +255,7 @@ static INPUT_PORTS_START( feversoc ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Unknown (BTN5)") PORT_CODE(KEYCODE_J) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out (BTN6)") PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Coin Out (BTN7)") - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Reset") + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp index 3afc8c0def9..367484bf395 100644 --- a/src/mame/drivers/hnayayoi.cpp +++ b/src/mame/drivers/hnayayoi.cpp @@ -384,7 +384,7 @@ static INPUT_PORTS_START( hnfubuki ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Analizer") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Memory Reset") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) /* "Note" ("Paper Money") = 10 Credits */ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) @@ -448,7 +448,7 @@ static INPUT_PORTS_START( untoucha ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Analizer") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Memory Reset") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) /* "Note" ("Paper Money") = 5 or 8 Credits */ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) diff --git a/src/mame/drivers/hyhoo.cpp b/src/mame/drivers/hyhoo.cpp index 9def22372b7..64fcee9eda1 100644 --- a/src/mame/drivers/hyhoo.cpp +++ b/src/mame/drivers/hyhoo.cpp @@ -109,7 +109,7 @@ static INPUT_PORTS_START( hyhoo ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, hyhoo_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // NOT USED PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) // SERVICE - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Memory Reset") // MEMORY RESET + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // NOT USED @@ -184,7 +184,7 @@ static INPUT_PORTS_START( hyhoo2 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, hyhoo_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // NOT USED PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) // SERVICE - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Memory Reset") // MEMORY RESET + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // NOT USED diff --git a/src/mame/drivers/jangou.cpp b/src/mame/drivers/jangou.cpp index 64c34ac3cf2..250db8e3d38 100644 --- a/src/mame/drivers/jangou.cpp +++ b/src/mame/drivers/jangou.cpp @@ -763,7 +763,7 @@ static INPUT_PORTS_START( roylcrdn ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) /* Spare 2 */ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Note In") /* Note In */ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_TOGGLE PORT_CODE(KEYCODE_9) PORT_NAME("Memory Reset") /* Memory Reset */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_TOGGLE PORT_CODE(KEYCODE_9) /* Memory Reset */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_TOGGLE PORT_CODE(KEYCODE_0) PORT_NAME("Analyzer") /* Analyzer */ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_TOGGLE PORT_CODE(KEYCODE_F2) PORT_NAME("Test Mode") /* Test Mode */ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin In") /* Coin In */ diff --git a/src/mame/drivers/lvcards.cpp b/src/mame/drivers/lvcards.cpp index 48225a4cc78..2d855815cdd 100644 --- a/src/mame/drivers/lvcards.cpp +++ b/src/mame/drivers/lvcards.cpp @@ -272,7 +272,7 @@ static INPUT_PORTS_START( lvpoker ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Analyzer") PORT_TOGGLE PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS) PORT_NAME("Memory Reset") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_CODE(KEYCODE_MINUS) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Clear Stats") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) PORT_NAME("Hopper Reset") diff --git a/src/mame/drivers/sengokmj.cpp b/src/mame/drivers/sengokmj.cpp index 007b5fe7786..8f3666fa763 100644 --- a/src/mame/drivers/sengokmj.cpp +++ b/src/mame/drivers/sengokmj.cpp @@ -505,7 +505,7 @@ static INPUT_PORTS_START( sengokmj ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) // Only used in service mode? PORT_SERVICE_NO_TOGGLE( 0x0002, IP_ACTIVE_LOW ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_NAME("Opt. 1st") // Only used in service mode? - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Reset") + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Cash") // Only used in service mode? // 0x40 Hopper diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp index 084b7236212..afcee286591 100644 --- a/src/mame/drivers/toaplan2.cpp +++ b/src/mame/drivers/toaplan2.cpp @@ -2409,7 +2409,7 @@ static INPUT_PORTS_START( pwrkick ) PORT_SERVICE( 0x02, IP_ACTIVE_HIGH ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Down Button") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, toaplan2_state, pwrkick_hopper_status_r, nullptr) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE3 ) PORT_NAME("Memory Reset") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MEMORY_RESET ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) diff --git a/src/mame/drivers/vroulet.cpp b/src/mame/drivers/vroulet.cpp index dcbf7a37c29..1d7f9da46c8 100644 --- a/src/mame/drivers/vroulet.cpp +++ b/src/mame/drivers/vroulet.cpp @@ -167,7 +167,7 @@ static INPUT_PORTS_START( vroulet ) PORT_START("IN0") PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F1) PORT_NAME("Memory Reset") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Reset Machine") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) From 1c4e4ae627261739166efc4c9da3147b5c45ae22 Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 7 Aug 2016 23:14:58 -0400 Subject: [PATCH 075/116] Resolve conflicting input bindings in hnayayoi.cpp (nw) --- src/mame/drivers/hnayayoi.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp index 367484bf395..39c2081a0bf 100644 --- a/src/mame/drivers/hnayayoi.cpp +++ b/src/mame/drivers/hnayayoi.cpp @@ -21,7 +21,7 @@ Year + Game Board --------------------------------------- Notes: -- In service mode, press "analyzer" (0) and "test" (F1) to see a gfx test +- In service mode, press "analyzer" (0) and "test" (F2) to see a gfx test - hnfubuki doesn't have a service mode dip, press "analyzer" instead @@ -269,7 +269,9 @@ static INPUT_PORTS_START( hnayayoi ) PORT_START("DSW3") /* DSW3 */ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag - PORT_SERVICE( 0x02, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Service_Mode ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -292,7 +294,7 @@ static INPUT_PORTS_START( hnayayoi ) PORT_START("COIN") /* COIN */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // there is also a dip switch + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) // there is also a dip switch PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Analizer") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "Non Use" in service mode PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) /* "Note" ("Paper Money") = 10 Credits */ @@ -382,7 +384,7 @@ static INPUT_PORTS_START( hnfubuki ) PORT_START("COIN") /* COIN */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Analizer") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) /* "Note" ("Paper Money") = 10 Credits */ @@ -446,7 +448,7 @@ static INPUT_PORTS_START( untoucha ) PORT_START("COIN") /* COIN */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Analizer") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) /* "Note" ("Paper Money") = 5 or 8 Credits */ From 3ca3ba6c7b42e5bd469454749d20b1ecabc2c140 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 8 Aug 2016 09:12:09 +0100 Subject: [PATCH 076/116] more set descriptions / hack identification on MPU4 --- src/mame/drivers/mpu4sw.hxx | 634 ++++++++++++++++++++---------------- 1 file changed, 351 insertions(+), 283 deletions(-) diff --git a/src/mame/drivers/mpu4sw.hxx b/src/mame/drivers/mpu4sw.hxx index 83a836cb211..c8d9c00f8ab 100644 --- a/src/mame/drivers/mpu4sw.hxx +++ b/src/mame/drivers/mpu4sw.hxx @@ -506,13 +506,19 @@ GAME_CUSTOM( 199?, m4andyge_h4, m4andyge, "age20_101", 0 // I think this is a mod2, but because it doesn't boot I haven't moved it to mpu4mod2sw.c yet // "(C)1991 BARCREST" and "A6L 0.1" -GAME_CUSTOM( 1991, m4addr, 0, "a6ls.p1", 0x0000, 0x010000, CRC(9f97f57b) SHA1(402d1518bb78fdc489b06c2aabc771e5ce151847), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1)" ) +GAME_CUSTOM( 1991, m4addr, 0, "a6ls.p1", 0x0000, 0x010000, CRC(9f97f57b) SHA1(402d1518bb78fdc489b06c2aabc771e5ce151847), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, set 1)" ) +GAME_CUSTOM( 199?, m4addrc__d, m4addr, "alddr20", 0x0000, 0x010000, CRC(19cf4437) SHA1(b528823c476bebd1a9a6c720a4144294743693d2), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, set 2)" ) // hack? GAME_CUSTOM( 1991, m4addr6ld, m4addr, "a6ld.p1", 0x0000, 0x010000, CRC(de555e12) SHA1(2233160f1c734c889c1c00dee202a928f18ad763), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1D)" ) GAME_CUSTOM( 1991, m4addr6lc, m4addr, "a6lc.p1", 0x0000, 0x010000, CRC(1e75fe67) SHA1(4497b19d4c512c934d445b4acf607dc2dc080d44), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1C)" ) GAME_CUSTOM( 1991, m4addr6lk, m4addr, "a6lk.p1", 0x0000, 0x010000, CRC(af5ae5c4) SHA1(20e40cf996c2c3b7b18ec104a374be1da193b94e), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1K)" ) GAME_CUSTOM( 1991, m4addr6ly, m4addr, "adders ladders 20p 6.bin", 0x0000, 0x010000, CRC(62abeb34) SHA1(8069e6fde0673fdbc124a1a172dc988bb3205ff6), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1Y)" ) GAME_CUSTOM( 1991, m4addr6lyd, m4addr, "a6ldy.p1", 0x0000, 0x010000, CRC(82f060a5) SHA1(2e8474e6c17def07e35448b5bf8d453cce0f292c), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1YD)" ) GAME_CUSTOM( 1991, m4addr6lybd, m4addr, "a6lbdy.p1", 0x0000, 0x010000, CRC(28064099) SHA1(c916f73911974440d4c79ecb51b343aad78f115b), "Barcrest","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1YBD)" ) +// "(C)1991 BARCREST" and "A6L 0.1" (but hack?) +GAME_CUSTOM( 199?, m4addrc__b, m4addr, "add20_101", 0x0000, 0x010000, CRC(361b7173) SHA1(dea2b1b0f5910e2fd3f45d220554f0e712dedada), "hack","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, hack, set 1)" ) +GAME_CUSTOM( 199?, m4addrc__k, m4addr, "addl_20_.8", 0x0000, 0x010000, CRC(43c98f46) SHA1(0ca4a093b38fc04639e3f4bb742a8923b90d2ed1), "hack","Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, hack, set 2)" ) +// "(C)1993 B.W.B." and "ADD 1.0" +GAME_CUSTOM( 199?, m4addrc__l, m4addr, "al10", 0x0000, 0x010000, CRC(3c3c82b6) SHA1(cc5ffdd0837c9af31d5737a70430a01d1989cdcc), "Bwb","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0, 1993)" ) // "(C)1994 B.W.B." and "ADD 1.0" (actually version 10?) GAME_CUSTOM( 1994, m4addr10, m4addr, "ad_05___.1o3", 0x0000, 0x010000, CRC(8d9e0f5d) SHA1(fecc844908876e161d0134ce3cc098e79e74e0b1), "Bwb","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0, set 1)" ) GAME_CUSTOM( 1994, m4addr10d, m4addr, "ad_05_d_.1o3", 0x0000, 0x010000, CRC(2d29040f) SHA1(ee2bdd5da1a7e4146419ffd8bad521a9c1b49aa2), "Bwb","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0D, set 1)" ) @@ -555,8 +561,44 @@ GAME_CUSTOM( 1994, m4addr4_a, m4addr, "ad_10___.4a3", 0x0000, 0x0 GAME_CUSTOM( 1994, m4addr4c_a, m4addr, "adi10___.4a3", 0x0000, 0x010000, CRC(2d2aa3cc) SHA1(21a7690c3fb7d158f4b4e6da63663778246ac902), "Bwb","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0C, set 2)" ) GAME_CUSTOM( 1994, m4addr4c_b, m4addr, "adi10___.4n3", 0x0000, 0x010000, CRC(af9aad00) SHA1(09729e73f27d9ac5d6ac7171191ed76aeaac3e3d), "Bwb","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0C, set 3)" ) // "BIG DIPPER" and ADD 1.0 -GAME_CUSTOM( 1994, m4addr_h1, m4addr, "5p4addersladders.bin", 0x0000, 0x010000, CRC(03fc43da) SHA1(cf2fdb0d1ad702331ba004fd39072484b05e2b97), "hack?","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack?, set 1)" ) -GAME_CUSTOM( 1994, m4addr_h2, m4addr, "ad05.6c", 0x0000, 0x010000, CRC(0940e4aa) SHA1(e8e7f7249a18386af990999a4c06f001db7003c5), "hack?","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack?, set 2)" ) +GAME_CUSTOM( 199?, m4addrc__h, m4addr, "adders classic.bin", 0x0000, 0x010000, CRC(6bc1d2aa) SHA1(cf17e697ff0cfba999f6511f24051dbc3d0384ef), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0, hack)" ) +GAME_CUSTOM( 1994, m4addr_h1, m4addr, "5p4addersladders.bin", 0x0000, 0x010000, CRC(03fc43da) SHA1(cf2fdb0d1ad702331ba004fd39072484b05e2b97), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack, set 1)" ) +GAME_CUSTOM( 1994, m4addr_h2, m4addr, "ad05.6c", 0x0000, 0x010000, CRC(0940e4aa) SHA1(e8e7f7249a18386af990999a4c06f001db7003c5), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack, set 2)" ) +GAME_CUSTOM( 199?, m4addrc, m4addr, "add05_101", 0x0000, 0x010000, CRC(4b3fb104) SHA1(9dba619019a476ce317122a3553965b279c684ba), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack, set 3)" ) +GAME_CUSTOM( 199?, m4addrc__c, m4addr, "add55", 0x0000, 0x010000, CRC(48c5bc73) SHA1(18c9f70bad6141cca95b6bbcb4fc621e71f87700), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack, set 4)" ) +GAME_CUSTOM( 199?, m4addrc__m, m4addr, "alad58c", 0x0000, 0x010000, CRC(df9c46b8) SHA1(439ea1ce17aa89e19cedb78465b4388b72c8c5ed), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack, set 5)" ) +// "DADS ARMY" and "ADD 1.0" +GAME_CUSTOM( 199?, m4addrc__a, m4addr, "add10_101", 0x0000, 0x010000, CRC(af8f8b4e) SHA1(712c33ed0f425dc10b79780b0cfce0ac5768e2d5), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack, set 6)" ) +GAME_CUSTOM( 199?, m4addrc__i, m4addr, "addl_10_.4", 0x0000, 0x010000, CRC(c2d11126) SHA1(0eafe9dc30013ed5817ac303a4eea5ea82d62715), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack, set 7)" ) +GAME_CUSTOM( 199?, m4addrc__j, m4addr, "addl_10_.8", 0x0000, 0x010000, CRC(9fc82c47) SHA1(0f56afc33f09fe22afc5ec74aeb496c32f9e623c), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack, set 8)" ) +// no copyright string and "NNU 5.0" (possibly a different game?) +GAME_CUSTOM( 199?, m4addrc__e, m4addr, "classic adders & ladders_alt", 0x0000, 0x010000, CRC(ac948903) SHA1(e07023efd7722a661a2bbf93c0a168af70ad6c20), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (NNU 5.0, hack, set 1)" ) +GAME_CUSTOM( 199?, m4addrc__f, m4addr, "classic adders & ladders_alt2", 0x0000, 0x010000, CRC(843ed53d) SHA1(b1dff249df37800744e3fc9c32be20a62bd130a1), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (NNU 5.0, hack, set 2)" ) +GAME_CUSTOM( 199?, m4addrc__n, m4addr, "nik56c", 0x0000, 0x010000, CRC(05fa11d1) SHA1(01d3d0c504489f1513a0c3aa26e910c9604f5366), "hack","Adders & Ladders (Bwb / Barcrest) (MPU4) (NNU 5.0, hack, set 3)" ) + + + +#define M4ADDRCC_EXTRA_ROMS \ + ROM_REGION( 0x48, "fakechr", 0 ) \ + ROM_LOAD( "aal.chr", 0x0000, 0x000048, CRC(bb48409f) SHA1(adefde520104b8c3815260ee136460ddf3e9e4b2) ) +#undef GAME_CUSTOM +#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ + ROM_START( setname ) \ + ROM_REGION( length, "maincpu", 0 ) \ + ROM_LOAD( name, offset, length, hash ) \ + M4ADDRCC_EXTRA_ROMS \ + ROM_END \ + GAME(year, setname, parent ,mod2 ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) + +// "(C)1991 BARCREST" and "ADC 1.1" +GAME_CUSTOM( 199?, m4addrcc, 0, "adcs.p1", 0x0000, 0x010000, CRC(7247de78) SHA1(e390b4e912d7bc8c1ca5e42bf2e2753d4c2b4d17), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1)" ) +GAME_CUSTOM( 199?, m4addrcc__c, m4addrcc, "adcd.p1", 0x0000, 0x010000, CRC(47e41c9a) SHA1(546aaaa5765b3bc91eeb9bf5a979ed68a2e72da8), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1D)" ) +GAME_CUSTOM( 199?, m4addrcc__a, m4addrcc, "adcf.p1", 0x0000, 0x010000, CRC(1dbbc990) SHA1(fb9439b43089e3135a719ab94b24dd65561d17cf), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1F)" ) +GAME_CUSTOM( 199?, m4addrcc__b, m4addrcc, "adcl.p1", 0x0000, 0x010000, CRC(89299196) SHA1(9a92b250b47b11536f8708429d69c95111ecdb98), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1L)" ) +// "(C)1991 BARCREST" and "ADC 0.5" +GAME_CUSTOM( 199?, m4addrcc__d, m4addrcc, "adrscfm", 0x0000, 0x010000, CRC(6c95881a) SHA1(db658bd722c54fc84734105f1a9b0028b23179fb), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 0.5)" ) + + #define M4DENMEN_EXTRA_ROMS \ @@ -2519,6 +2561,63 @@ GAME_CUSTOM( 199?, m4rhr__7, m4rhr, "rhr2015", 0x0000, 0x010000, CRC( GAME_CUSTOM( 199?, m4rhr__8, m4rhr, "rhr2515", 0x0000, 0x010000, CRC(e4554c23) SHA1(6d977beb282fd638de3457e467e842ce79b5be7c), "hack","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3, hack)" ) +#define M4RHRC_EXTRA_ROMS \ + ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ + /* missing, or the same as m4rhr? */ + +#undef GAME_CUSTOM +#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ + ROM_START( setname ) \ + ROM_REGION( length, "maincpu", 0 ) \ + ROM_LOAD( name, offset, length, hash ) \ + M4RHRC_EXTRA_ROMS \ + ROM_END \ + GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) + +// "(C)1991 BARCREST" and "CRU 0.3" (CLD 0.3 on startup) +GAME_CUSTOM( 199?, m4rhrc, 0, "cld03s.p1", 0x0000, 0x010000, CRC(03f8a6bf) SHA1(29ee59fd60d89fca0f236be8b4c12c885db032e7), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (CLD 0.3 / CRU 0.3)" ) +GAME_CUSTOM( 199?, m4rhrc__j, m4rhrc, "cld03ad.p1", 0x0000, 0x010000, CRC(821fde63) SHA1(61f77eeb01331e735cc8c736526d09371e6bdf56), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4rhrc__a, m4rhrc, "cld03b.p1", 0x0000, 0x010000, CRC(c67a2e82) SHA1(b76110c73d5bd0290fdd31d8300914f63a56c25e), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4rhrc__b, m4rhrc, "cld03bd.p1", 0x0000, 0x010000, CRC(0995fd93) SHA1(c3cc84f78adc54f4698280bf7d0831bb54c3fc3f), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4rhrc__c, m4rhrc, "cld03c.p1", 0x0000, 0x010000, CRC(6e7b319f) SHA1(3da4feb72cb9d4ee24a8e0568f8d9c80a71caf9b), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4rhrc__d, m4rhrc, "cld03d.p1", 0x0000, 0x010000, CRC(dc46afb0) SHA1(c461ac2ef3fcffac96536b1b1c26abe052edf35c), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4rhrc__e, m4rhrc, "cld03dk.p1", 0x0000, 0x010000, CRC(f0b6b60f) SHA1(9addae6af20986c92c3ce71ce9756a6f3db5ebff), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4rhrc__f, m4rhrc, "cld03dr.p1", 0x0000, 0x010000, CRC(703ab87b) SHA1(089597927f94bdacc4226900a944cbec85fe2286), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4rhrc__g, m4rhrc, "cld03dy.p1", 0x0000, 0x010000, CRC(ed519095) SHA1(ac174166bf2cc6ab81f9782f1be4a9fbe226f34d), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4rhrc__h, m4rhrc, "cld03k.p1", 0x0000, 0x010000, CRC(3bad05a9) SHA1(1b00ac52f6c87b5c79088b6fc3e6d00f57876ebc), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4rhrc__i, m4rhrc, "cld03r.p1", 0x0000, 0x010000, CRC(2de70bdc) SHA1(d8d0170ca71fde4c79d0b465d09d4bb31acf40cf), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4rhrc__k, m4rhrc, "cld03y.p1", 0x0000, 0x010000, CRC(b08c2332) SHA1(1cdf7fc0e95a50766df2d1cd51cb803b922c30c8), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 12)" ) +// "(C)1991 BARCREST" and "CR4 0.3" (HHN 0.3 on startup) +GAME_CUSTOM( 199?, m4rhrc__v, m4rhrc, "hhn03s.p1", 0x0000, 0x010000, CRC(b531ae78) SHA1(87d043541c23b88b8ec4067c67be77812095faaa), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (HHN 0.3 / CR4 0.3)" ) +GAME_CUSTOM( 199?, m4rhrc__l, m4rhrc, "hhn03ad.p1", 0x0000, 0x010000, CRC(e7da568e) SHA1(00f9eecd06131bc5770a6ab650b3548f5b7a8c15), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4rhrc__m, m4rhrc, "hhn03b.p1", 0x0000, 0x010000, CRC(406e47cd) SHA1(193aed33ac62eb04d89cf63beb33e8e4e28e286e), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4rhrc__n, m4rhrc, "hhn03bd.p1", 0x0000, 0x010000, CRC(66aed369) SHA1(6c3151790292a277a1d44a1fceae985e52014749), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4rhrc__o, m4rhrc, "hhn03c.p1", 0x0000, 0x010000, CRC(452e623c) SHA1(9350d7e30d8fc2b0f37528a7d0ce6797bab6f504), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4rhrc__p, m4rhrc, "hhn03d.p1", 0x0000, 0x010000, CRC(e9ce4ee5) SHA1(45fe3832cc37e8ecbc5101b8b7b94f6243504e3f), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4rhrc__q, m4rhrc, "hhn03dk.p1", 0x0000, 0x010000, CRC(2d750f34) SHA1(1672d5a8b4a338cac87281e1329f111f468dc611), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4rhrc__r, m4rhrc, "hhn03dr.p1", 0x0000, 0x010000, CRC(88a3895b) SHA1(3e2dcf6728712620724774c16a5d84dbec9c5ab3), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4rhrc__s, m4rhrc, "hhn03dy.p1", 0x0000, 0x010000, CRC(15c8a1b5) SHA1(5a2f28f290fa087b5010f778d4ad8d6c63a3d13e), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4rhrc__t, m4rhrc, "hhn03k.p1", 0x0000, 0x010000, CRC(95450230) SHA1(3c1c239e84a89ef6acd44ac9c81d33021ac6b0e3), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4rhrc__u, m4rhrc, "hhn03r.p1", 0x0000, 0x010000, CRC(d96d6825) SHA1(89c3f5494d97326369f10c982842310592456874), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4rhrc__w, m4rhrc, "hhn03y.p1", 0x0000, 0x010000, CRC(440640cb) SHA1(de6b6edcdc99aaa0122ecd24a9a7437e6b44aad2), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 24)" ) +// "(C)1991 BARCREST" and "CR4 0.3" (RRD 0.3 on startup) +GAME_CUSTOM( 199?, m4rhrc__7, m4rhrc, "rrd03s.p1", 0x0000, 0x010000, CRC(e59b79dd) SHA1(32e515bdc861a4d548caedd56a1825c91a318a34), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (RRD 0.3 / CR4 0.3)" ) +GAME_CUSTOM( 199?, m4rhrc__x, m4rhrc, "rrd03ad.p1", 0x0000, 0x010000, CRC(6f49d7d1) SHA1(2195a3ad4836e8ffd2e7e6a90e94319d5a5a0ce8), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4rhrc__y, m4rhrc, "rrd03b.p1", 0x0000, 0x010000, CRC(e8447a3d) SHA1(8bf5936782e0fbec25a8ef892b8df04b6543bc74), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4rhrc__z, m4rhrc, "rrd03bd.p1", 0x0000, 0x010000, CRC(52cf0357) SHA1(ab4668df6d5ad9614410aede7ad4e030283b78ca), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4rhrc__0, m4rhrc, "rrd03c.p1", 0x0000, 0x010000, CRC(b03e7b76) SHA1(0b2779b584f8fa0e25e2a5248ecb8fb88aa53413), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4rhrc__1, m4rhrc, "rrd03d.p1", 0x0000, 0x010000, CRC(44740c79) SHA1(ab1efb2090ef62795c17a685c7acb45820eb1a9d), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 29)" ) +GAME_CUSTOM( 199?, m4rhrc__2, m4rhrc, "rrd03dk.p1", 0x0000, 0x010000, CRC(78f18187) SHA1(33764416c6e5cccd6ae5fdc5c0d679e1ef451785), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 30)" ) +GAME_CUSTOM( 199?, m4rhrc__3, m4rhrc, "rrd03dr.p1", 0x0000, 0x010000, CRC(039c2869) SHA1(2eb887b36d86295d0e6aacc74d0a6223d32baa5a), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 31)" ) +GAME_CUSTOM( 199?, m4rhrc__4, m4rhrc, "rrd03dy.p1", 0x0000, 0x010000, CRC(b60b6e51) SHA1(eb6ed1de44d7c982ac8aa0621d4c1ed8e41db5de), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 32)" ) +GAME_CUSTOM( 199?, m4rhrc__5, m4rhrc, "rrd03k.p1", 0x0000, 0x010000, CRC(31adc6d6) SHA1(ea68d0d13978bf6cfa7fb9aa1cf91ddfd6258a3a), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 33)" ) +GAME_CUSTOM( 199?, m4rhrc__6, m4rhrc, "rrd03r.p1", 0x0000, 0x010000, CRC(11c61483) SHA1(66cd30096bca2f4356acaaa15179c00301c8bc3a), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 34)" ) +GAME_CUSTOM( 199?, m4rhrc__8, m4rhrc, "rrd03y.p1", 0x0000, 0x010000, CRC(66fff07a) SHA1(586279533d6d85abf7e97124c9c5342a6a1b0496), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 36)" ) +// "(C)2000 BWB" and "RHR 5.0" +GAME_CUSTOM( 199?, m4rhrc__aa, m4rhrc, "cr__x_dx.5_0", 0x0000, 0x010000, CRC(4bcf5c02) SHA1(603935880c87f86e7bc765c176266c1c08a6114f), "Bwb","Red Hot Roll Classic (Barcrest) (MPU4) (RHR 5.0)" ) + + + #define M4UUAW_EXTRA_ROMS \ ROM_REGION( 0x100000, "msm6376", 0 ) \ ROM_LOAD( "uuasnd.p1", 0x00000, 0x080000, CRC(be1a1131) SHA1(b7f50d8db6b7d134757e0746e7d9faf9fd3a2c7e) ) \ @@ -2532,10 +2631,9 @@ GAME_CUSTOM( 199?, m4rhr__8, m4rhr, "rhr2515", 0x0000, 0x010000, CRC( ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4uuaw, 0, "uua21h.p1", 0x0000, 0x020000, CRC(199e6dae) SHA1(ecd95ba2c2255afbaa8df96d625a8bfc97e4d3bc), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4uuaw__a, m4uuaw, "upa15g", 0x0000, 0x020000, CRC(d20b8b92) SHA1(6fcddc781c204dfd34de2c4e4ce0ec35fb3ec4e0), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4uuaw__b, m4uuaw, "upa15t", 0x0000, 0x020000, CRC(85e3e82a) SHA1(e90183fab082f159d76ea14da794d52ee6ab8200), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 3)" ) +// "(C)1993 BARCREST" and "UPS 2.1" +GAME_CUSTOM( 199?, m4uuaw, 0, "ups21s.p1", 0x0000, 0x020000, CRC(c4a8a542) SHA1(61063d55c6017cf17d704df576cb62da5bd75820), "Barcrest","Up Up and Away (Barcrest) (MPU4) (UPS 2.1)" ) +GAME_CUSTOM( 199?, m4uuaw__n, m4uuaw, "uua21h.p1", 0x0000, 0x020000, CRC(199e6dae) SHA1(ecd95ba2c2255afbaa8df96d625a8bfc97e4d3bc), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4uuaw__c, m4uuaw, "ups21ad.p1", 0x0000, 0x020000, CRC(c19fa891) SHA1(c2772ec20a65ce999d901e8c873ec687113b18d4), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4uuaw__d, m4uuaw, "ups21b.p1", 0x0000, 0x020000, CRC(01320407) SHA1(a3273c59733e42013c3448b2a5c7c575ec0182b9), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4uuaw__e, m4uuaw, "ups21bd.p1", 0x0000, 0x020000, CRC(2fa3cb8a) SHA1(8df994ce93fc6f0df27a6ee73676d9ee73593091), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 6)" ) @@ -2547,8 +2645,9 @@ GAME_CUSTOM( 199?, m4uuaw__j, m4uuaw, "ups21dy.p1", 0x0000, 0x020000, CRC(4 GAME_CUSTOM( 199?, m4uuaw__k, m4uuaw, "ups21h.p1", 0x0000, 0x020000, CRC(555e74cb) SHA1(14246b54839eb334576a119d7c87901f3b2f25ad), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4uuaw__l, m4uuaw, "ups21k.p1", 0x0000, 0x020000, CRC(28d3618f) SHA1(186337119e4b663dadc129533ce8a913013390a9), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4uuaw__m, m4uuaw, "ups21r.p1", 0x0000, 0x020000, CRC(9bdcdabe) SHA1(db0bb90705abec92a220a3dbe0ea69266d5e0558), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4uuaw__n, m4uuaw, "ups21s.p1", 0x0000, 0x020000, CRC(c4a8a542) SHA1(61063d55c6017cf17d704df576cb62da5bd75820), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 15)" ) GAME_CUSTOM( 199?, m4uuaw__o, m4uuaw, "ups21y.p1", 0x0000, 0x020000, CRC(6214c9d9) SHA1(d25fecc9798e342207d358a54efad1908c0e2247), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 16)" ) +// "(C)1993 BARCREST" and "UPS 2.2" +GAME_CUSTOM( 199?, m4uuaw__0, m4uuaw, "ups22s.p1", 0x0000, 0x020000, CRC(ac990aa9) SHA1(396c9eded9c18ab2bcb0f4066a890f6e239830f1), "Barcrest","Up Up and Away (Barcrest) (MPU4) (UPS 2.2)" ) GAME_CUSTOM( 199?, m4uuaw__p, m4uuaw, "ups22ad.p1", 0x0000, 0x020000, CRC(ee0f53a6) SHA1(eabe58efa82015eb2266a793853e8ade546d6da1), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4uuaw__q, m4uuaw, "ups22b.p1", 0x0000, 0x020000, CRC(e7dbf5ae) SHA1(0fbbc3da1af8b60993a7f6082bd5e96da21cd0b8), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4uuaw__r, m4uuaw, "ups22bd.p1", 0x0000, 0x020000, CRC(003330bd) SHA1(42ad6ddfd7639909151dcee5e40e82a23074fd59), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 19)" ) @@ -2560,8 +2659,9 @@ GAME_CUSTOM( 199?, m4uuaw__w, m4uuaw, "ups22dy.p1", 0x0000, 0x020000, CRC(6 GAME_CUSTOM( 199?, m4uuaw__x, m4uuaw, "ups22h.p1", 0x0000, 0x020000, CRC(b3b78562) SHA1(3e75fa20156faa3d38c2b5ac824bffe47e72b7bc), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 25)" ) GAME_CUSTOM( 199?, m4uuaw__y, m4uuaw, "ups22k.p1", 0x0000, 0x020000, CRC(ce3a9026) SHA1(80977176c5bae809a564f4fc0e3d6370f91f829b), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 26)" ) GAME_CUSTOM( 199?, m4uuaw__z, m4uuaw, "ups22r.p1", 0x0000, 0x020000, CRC(7d352b17) SHA1(d2d1d016a587be318e9018eb1953e68fe83620df), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4uuaw__0, m4uuaw, "ups22s.p1", 0x0000, 0x020000, CRC(ac990aa9) SHA1(396c9eded9c18ab2bcb0f4066a890f6e239830f1), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4uuaw__1, m4uuaw, "ups22y.p1", 0x0000, 0x020000, CRC(84fd3870) SHA1(8d294ae1a92d1e99c4c3f17a2d77fe1d994b2c33), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 29)" ) +// "(C)1993 BARCREST" and "UUA 2.1" +GAME_CUSTOM( 199?, m4uuaw__ac, m4uuaw, "uua21s.p1", 0x0000, 0x020000, CRC(27c46fcc) SHA1(68a03fcce5d8155d6c0115d813c17217c4120375), "Barcrest","Up Up and Away (Barcrest) (MPU4) (UUA 2.1)" ) GAME_CUSTOM( 199?, m4uuaw__2, m4uuaw, "uua21ad.p1", 0x0000, 0x020000, CRC(2a18c292) SHA1(5853cb069eb5caa23372e5dedd33868103125780), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 30)" ) GAME_CUSTOM( 199?, m4uuaw__3, m4uuaw, "uua21b.p1", 0x0000, 0x020000, CRC(d71cc3db) SHA1(7d783110341237769165a08fd86f597225f8d90c), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 31)" ) GAME_CUSTOM( 199?, m4uuaw__4, m4uuaw, "uua21bd.p1", 0x0000, 0x020000, CRC(f04323be) SHA1(194c996d4c8e2fed2bcb02e29423e68b53900a1f), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 32)" ) @@ -2572,8 +2672,9 @@ GAME_CUSTOM( 199?, m4uuaw__8, m4uuaw, "uua21dr.p1", 0x0000, 0x020000, CRC(4 GAME_CUSTOM( 199?, m4uuaw__9, m4uuaw, "uua21dy.p1", 0x0000, 0x020000, CRC(098b30d9) SHA1(48daa77f3aafdcd52d7291cdda533e8a9428de0e), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 37)" ) GAME_CUSTOM( 199?, m4uuaw__aa, m4uuaw, "uua21k.p1", 0x0000, 0x020000, CRC(a3ce7e79) SHA1(8670d2cb7281ccabc15c5288a3e0dd99cfc1ae36), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 38)" ) GAME_CUSTOM( 199?, m4uuaw__ab, m4uuaw, "uua21r.p1", 0x0000, 0x020000, CRC(641378ea) SHA1(de0282af6a17c7fc16c7eca10e81ffb208675779), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4uuaw__ac, m4uuaw, "uua21s.p1", 0x0000, 0x020000, CRC(27c46fcc) SHA1(68a03fcce5d8155d6c0115d813c17217c4120375), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4uuaw__ad, m4uuaw, "uua21y.p1", 0x0000, 0x020000, CRC(2ed4d0bc) SHA1(ffb0585e729b389855d24015e1ef7582eab88d3e), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 41)" ) +// "(C)1993 BARCREST" and "UUA 2.2" +GAME_CUSTOM( 199?, m4uuaw__ap, m4uuaw, "uua22s.p1", 0x0000, 0x020000, CRC(65f57c0c) SHA1(7b2526cdd1ec973a91bc7ade116e16e03b32596a), "Barcrest","Up Up and Away (Barcrest) (MPU4) (UUA 2.2)" ) GAME_CUSTOM( 199?, m4uuaw__ae, m4uuaw, "uua22ad.p1", 0x0000, 0x020000, CRC(b2ace4d5) SHA1(da02abe111fea3fbfb9495e9b447139cd67a61e0), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 42)" ) GAME_CUSTOM( 199?, m4uuaw__af, m4uuaw, "uua22b.p1", 0x0000, 0x020000, CRC(71a6374a) SHA1(c14ed22fceb83b5ac72021322c9b8bb3d5afeffb), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4uuaw__ag, m4uuaw, "uua22bd.p1", 0x0000, 0x020000, CRC(68f705f9) SHA1(678ba97241f3dede96239265eed418d4717637a6), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 44)" ) @@ -2585,8 +2686,11 @@ GAME_CUSTOM( 199?, m4uuaw__al, m4uuaw, "uua22dy.p1", 0x0000, 0x020000, CRC(9 GAME_CUSTOM( 199?, m4uuaw__am, m4uuaw, "uua22h.p1", 0x0000, 0x020000, CRC(bf24993f) SHA1(618d6d2f2b762d61eb58087a3597ffb709658631), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 50)" ) GAME_CUSTOM( 199?, m4uuaw__an, m4uuaw, "uua22k.p1", 0x0000, 0x020000, CRC(05748ae8) SHA1(d9aeee26c8471bb6ee58a4a838e5c9930da92725), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 51)" ) GAME_CUSTOM( 199?, m4uuaw__ao, m4uuaw, "uua22r.p1", 0x0000, 0x020000, CRC(c2a98c7b) SHA1(115f7c7a4b9eab5f3270f43a2db7a320dfc4e223), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 52)" ) -GAME_CUSTOM( 199?, m4uuaw__ap, m4uuaw, "uua22s.p1", 0x0000, 0x020000, CRC(65f57c0c) SHA1(7b2526cdd1ec973a91bc7ade116e16e03b32596a), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 53)" ) GAME_CUSTOM( 199?, m4uuaw__aq, m4uuaw, "uua22y.p1", 0x0000, 0x020000, CRC(886e242d) SHA1(4b49b70fc2635fcf7b538b35b42a358cf4dd60b3), "Barcrest","Up Up and Away (Barcrest) (MPU4) (set 54)" ) +// no copyright string and "UUA 2.0" +GAME_CUSTOM( 199?, m4uuaw__a, m4uuaw, "upa15g", 0x0000, 0x020000, CRC(d20b8b92) SHA1(6fcddc781c204dfd34de2c4e4ce0ec35fb3ec4e0), "hack","Up Up and Away (Barcrest) (MPU4) (UUA 2.0, hack)" ) +// no copyright string and "UPS 2.0" +GAME_CUSTOM( 199?, m4uuaw__b, m4uuaw, "upa15t", 0x0000, 0x020000, CRC(85e3e82a) SHA1(e90183fab082f159d76ea14da794d52ee6ab8200), "hack","Up Up and Away (Barcrest) (MPU4) (UPS 2.0, hack)" ) #define M4RICHFM_EXTRA_ROMS \ @@ -2602,24 +2706,8 @@ GAME_CUSTOM( 199?, m4uuaw__aq, m4uuaw, "uua22y.p1", 0x0000, 0x020000, CRC(8 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4richfm, 0, "rfts.p1", 0x0000, 0x010000, CRC(2a747164) SHA1(a4c8e160f09ebea4fca6dd32ff020d3f1a4f1a1c), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4richfm__a, m4richfm, "rafc.p1", 0x0000, 0x010000, CRC(d92f602f) SHA1(c93131138deb4018d499b9b45c07d4517c5072b7), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4richfm__b, m4richfm, "rafd.p1", 0x0000, 0x010000, CRC(b0e9f470) SHA1(cad080a5d7f24968524fe10f6c43b088f35d7364), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4richfm__c, m4richfm, "rafs.p1", 0x0000, 0x010000, CRC(f312b2e3) SHA1(8bf2cb7b73cfc320143d05d25e28c15fb4f26045), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4richfm__d, m4richfm, "rafy.p1", 0x0000, 0x010000, CRC(a8812d45) SHA1(c0b89833f87ed90eb3e9c3299fcea362d501ed90), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4richfm__e, m4richfm, "rchfam8", 0x0000, 0x004000, CRC(55f16698) SHA1(9853b17bbb81371192a564376be7b3074908dbca), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4richfm__f, m4richfm, "rf5ad.p1", 0x0000, 0x010000, CRC(cd280292) SHA1(605d89608e106979229a00701a2e5b578df50d60), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4richfm__g, m4richfm, "rf5b.p1", 0x0000, 0x010000, CRC(e1edf753) SHA1(677f0397ec57422241f4669be610cffd33a9b44a), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4richfm__h, m4richfm, "rf5bd.p1", 0x0000, 0x010000, CRC(2d698365) SHA1(7f91cee0d34550aba9ac0f4ee398df4de6fd6f7e), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4richfm__i, m4richfm, "rf5d.p1", 0x0000, 0x010000, CRC(034cab0b) SHA1(79eaeb84377dbb8e6bda1dd2ae29a1f79656b9e4), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4richfm__j, m4richfm, "rf5dk.p1", 0x0000, 0x010000, CRC(14fc0f13) SHA1(a2b294da18c3f5bc9c81eb3f3af5ab5ca58c9cad), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4richfm__k, m4richfm, "rf5dy.p1", 0x0000, 0x010000, CRC(a2664c64) SHA1(2256b6e0d6472faa901348cb5be849ad012f1d16), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4richfm__l, m4richfm, "rf5k.p1", 0x0000, 0x010000, CRC(d8787b25) SHA1(885ac7ddd3de4cb475539d02aefbf38fed7c1f2c), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4richfm__m, m4richfm, "rf5s.p1", 0x0000, 0x010000, CRC(8d1ed193) SHA1(a4ca973dac8a8fd550bf7e57a8cdc627c28da4b8), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4richfm__n, m4richfm, "rf5y.p1", 0x0000, 0x010000, CRC(ad288548) SHA1(a7222ab5bffe8e5e0844f8e6f13e09afe74b08a8), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4richfm__o, m4richfm, "rf8b.p1", 0x0000, 0x010000, CRC(105c24e1) SHA1(cb417976a74441bf2ca888198b57fed81d758c15), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4richfm__p, m4richfm, "rf8c.p1", 0x0000, 0x010000, CRC(8924a706) SHA1(abb1a1f6cdeb15884dfa63fc04882f794453d4ec), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4richfm__q, m4richfm, "rft20.10", 0x0000, 0x010000, CRC(41e6ef75) SHA1(d836fdea5a89b845687d2ff929365bd81737c760), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 18)" ) +// "(C)1993 BARCREST" and "RFT 0.2" +GAME_CUSTOM( 199?, m4richfm, 0, "rfts.p1", 0x0000, 0x010000, CRC(2a747164) SHA1(a4c8e160f09ebea4fca6dd32ff020d3f1a4f1a1c), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2)" ) GAME_CUSTOM( 199?, m4richfm__r, m4richfm, "rftad.p1", 0x0000, 0x010000, CRC(8553386f) SHA1(ad834d52e51c7f375a370dc6d8586668921a9795), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4richfm__s, m4richfm, "rftb.p1", 0x0000, 0x010000, CRC(0189cc2f) SHA1(62ccc85c50c56aa2e0bcbb42b5c24d402f00d366), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 20)" ) GAME_CUSTOM( 199?, m4richfm__t, m4richfm, "rftbd.p1", 0x0000, 0x010000, CRC(08351e03) SHA1(d08d38d46793828b147ccde8121fbb9bf422cd60), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 21)" ) @@ -2628,12 +2716,37 @@ GAME_CUSTOM( 199?, m4richfm__v, m4richfm, "rftdk.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4richfm__w, m4richfm, "rftdy.p1", 0x0000, 0x010000, CRC(26b912f8) SHA1(1719d63b4a25293199b0729235beb5b93c484490), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4richfm__x, m4richfm, "rftk.p1", 0x0000, 0x010000, CRC(6a48bd98) SHA1(2f17194869ca008f7a2eb622bd3725bc91950a17), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 25)" ) GAME_CUSTOM( 199?, m4richfm__y, m4richfm, "rfty.p1", 0x0000, 0x010000, CRC(723fe46e) SHA1(51bb8aff358d527483eaf1b1e20606d94a937dc6), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4richfm__z, m4richfm, "rich2010", 0x0000, 0x010000, CRC(baecbdbc) SHA1(5fffecf3c91e832d3cfc13dbf5e6b74fc3d6a146), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4richfm__0, m4richfm, "r&f5.10", 0x0000, 0x010000, CRC(45d493d0) SHA1(9a549821a005fa65c2eb8b35c5f15659bd897519), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4richfm__1, m4richfm, "r&f5.4", 0x0000, 0x010000, CRC(0441d833) SHA1(361910fd64bc7291f6200fe354c468d16e7d6c80), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4richfm__2, m4richfm, "r&f5.8t", 0x0000, 0x010000, CRC(525e2520) SHA1(84b2ff86d6a54ebb3bcf0138930b2619a8733161), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4richfm__3, m4richfm, "r&f55", 0x0000, 0x010000, CRC(6095a72b) SHA1(af25f7c2fb5241064ea995d35fe4fd2f242e3750), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 31)" ) - +// "(C)1993 BARCREST" and "RAF 0.3" +GAME_CUSTOM( 199?, m4richfm__c, m4richfm, "rafs.p1", 0x0000, 0x010000, CRC(f312b2e3) SHA1(8bf2cb7b73cfc320143d05d25e28c15fb4f26045), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3)" ) +GAME_CUSTOM( 199?, m4richfm__a, m4richfm, "rafc.p1", 0x0000, 0x010000, CRC(d92f602f) SHA1(c93131138deb4018d499b9b45c07d4517c5072b7), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4richfm__b, m4richfm, "rafd.p1", 0x0000, 0x010000, CRC(b0e9f470) SHA1(cad080a5d7f24968524fe10f6c43b088f35d7364), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4richfm__d, m4richfm, "rafy.p1", 0x0000, 0x010000, CRC(a8812d45) SHA1(c0b89833f87ed90eb3e9c3299fcea362d501ed90), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 5)" ) +// "(C)1993 BARCREST" and "RF5 0.2" +GAME_CUSTOM( 199?, m4richfm__m, m4richfm, "rf5s.p1", 0x0000, 0x010000, CRC(8d1ed193) SHA1(a4ca973dac8a8fd550bf7e57a8cdc627c28da4b8), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2)" ) +GAME_CUSTOM( 199?, m4richfm__f, m4richfm, "rf5ad.p1", 0x0000, 0x010000, CRC(cd280292) SHA1(605d89608e106979229a00701a2e5b578df50d60), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4richfm__g, m4richfm, "rf5b.p1", 0x0000, 0x010000, CRC(e1edf753) SHA1(677f0397ec57422241f4669be610cffd33a9b44a), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4richfm__h, m4richfm, "rf5bd.p1", 0x0000, 0x010000, CRC(2d698365) SHA1(7f91cee0d34550aba9ac0f4ee398df4de6fd6f7e), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4richfm__i, m4richfm, "rf5d.p1", 0x0000, 0x010000, CRC(034cab0b) SHA1(79eaeb84377dbb8e6bda1dd2ae29a1f79656b9e4), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4richfm__j, m4richfm, "rf5dk.p1", 0x0000, 0x010000, CRC(14fc0f13) SHA1(a2b294da18c3f5bc9c81eb3f3af5ab5ca58c9cad), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4richfm__k, m4richfm, "rf5dy.p1", 0x0000, 0x010000, CRC(a2664c64) SHA1(2256b6e0d6472faa901348cb5be849ad012f1d16), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4richfm__l, m4richfm, "rf5k.p1", 0x0000, 0x010000, CRC(d8787b25) SHA1(885ac7ddd3de4cb475539d02aefbf38fed7c1f2c), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4richfm__n, m4richfm, "rf5y.p1", 0x0000, 0x010000, CRC(ad288548) SHA1(a7222ab5bffe8e5e0844f8e6f13e09afe74b08a8), "Barcrest","Rich & Famous (Barcrest) (MPU4) (set 15)" ) +// "(C)1993 BARCREST" and "RF8 0.1" +GAME_CUSTOM( 199?, m4richfm__o, m4richfm, "rf8b.p1", 0x0000, 0x010000, CRC(105c24e1) SHA1(cb417976a74441bf2ca888198b57fed81d758c15), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF8 0.1B)" ) +GAME_CUSTOM( 199?, m4richfm__p, m4richfm, "rf8c.p1", 0x0000, 0x010000, CRC(8924a706) SHA1(abb1a1f6cdeb15884dfa63fc04882f794453d4ec), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF8 0.1C)" ) +// "(C)1993 BARCREST" and "RFT 0.2" but hack +GAME_CUSTOM( 199?, m4richfm__q, m4richfm, "rft20.10", 0x0000, 0x010000, CRC(41e6ef75) SHA1(d836fdea5a89b845687d2ff929365bd81737c760), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2, hack, set 1)" ) +GAME_CUSTOM( 199?, m4richfm__z, m4richfm, "rich2010", 0x0000, 0x010000, CRC(baecbdbc) SHA1(5fffecf3c91e832d3cfc13dbf5e6b74fc3d6a146), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2, hack, set 2)" ) +// "(C)1997 B.W.B." and "RFC 1.3" +GAME_CUSTOM( 199?, m4richfm__0, m4richfm, "r&f5.10", 0x0000, 0x010000, CRC(45d493d0) SHA1(9a549821a005fa65c2eb8b35c5f15659bd897519), "Bwb","Rich & Famous (Barcrest) (MPU4) (RFC 1.3)" ) +// "(C)1997 B.W.B." and "RF4 1.1" +GAME_CUSTOM( 199?, m4richfm__1, m4richfm, "r&f5.4", 0x0000, 0x010000, CRC(0441d833) SHA1(361910fd64bc7291f6200fe354c468d16e7d6c80), "Bwb","Rich & Famous (Barcrest) (MPU4) (RF4 1.1)" ) +// "(C)1997 B.W.B." and "RF8 1.2" +GAME_CUSTOM( 199?, m4richfm__2, m4richfm, "r&f5.8t", 0x0000, 0x010000, CRC(525e2520) SHA1(84b2ff86d6a54ebb3bcf0138930b2619a8733161), "Bwb","Rich & Famous (Barcrest) (MPU4) (RF8 1.2)" ) +// "1997 COCO" and "RF4 1.1" +GAME_CUSTOM( 199?, m4richfm__3, m4richfm, "r&f55", 0x0000, 0x010000, CRC(6095a72b) SHA1(af25f7c2fb5241064ea995d35fe4fd2f242e3750), "hack","Rich & Famous (Barcrest) (MPU4) (RF4 1.1, hack)" ) +// bad dump (most of the rom is missing) but doesn't seem a 100% match for a set we have a complete dump of +GAME_CUSTOM( 199?, m4richfm__e, m4richfm, "rchfam8", 0x0000, 0x004000, CRC(55f16698) SHA1(9853b17bbb81371192a564376be7b3074908dbca), "Barcrest","Rich & Famous (Barcrest) (MPU4) (bad)" ) #define M4NNWWC_EXTRA_ROMS \ ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ @@ -2646,7 +2759,23 @@ GAME_CUSTOM( 199?, m4richfm__3, m4richfm, "r&f55", 0x0000, 0x010000, M4NNWWC_EXTRA_ROMS \ ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4nnwwc, 0, "cn302c.p1", 0x0000, 0x010000, CRC(fd9de050) SHA1(14c80deba1396aa5be0a1d02964ecd4b946f2ee8), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 1)" ) + + +/// "(C)1991 BARCREST" and "NN4 0.2" (CN3 0.2 on startup) +GAME_CUSTOM( 199?, m4nnwwc, 0, "cn302s.p1", 0x0000, 0x010000, CRC(87703a1a) SHA1(6582ffa42a61b60e92e456a794c4c219a9901a1c), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 / NN4 0.2)" ) +GAME_CUSTOM( 199?, m4nnwwc__7, m4nnwwc, "cn302c.p1", 0x0000, 0x010000, CRC(fd9de050) SHA1(14c80deba1396aa5be0a1d02964ecd4b946f2ee8), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4nnwwc__y, m4nnwwc, "cn302ad.p1", 0x0000, 0x010000, CRC(7a6acd9b) SHA1(9a1f0ed19d66428c6b541ce1c8e169d9b4be3ef1), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4nnwwc__z, m4nnwwc, "cn302b.p1", 0x0000, 0x010000, CRC(b69cb520) SHA1(7313f2740960ca86ecea8609fe8fd58d84a3248c), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4nnwwc__0, m4nnwwc, "cn302bd.p1", 0x0000, 0x010000, CRC(ab828a0b) SHA1(53fa6dad9bdae1d46479596c98cf2c3f4454bb95), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4nnwwc__1, m4nnwwc, "cn302d.p1", 0x0000, 0x010000, CRC(8c6ac365) SHA1(a32b104968aaa4da060072a241a4c54fbdf3c404), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 29)" ) +GAME_CUSTOM( 199?, m4nnwwc__2, m4nnwwc, "cn302dk.p1", 0x0000, 0x010000, CRC(24cbab96) SHA1(77fe3b21fc9470653bada31c700ce926d55ce82e), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 30)" ) +GAME_CUSTOM( 199?, m4nnwwc__3, m4nnwwc, "cn302dr.p1", 0x0000, 0x010000, CRC(09069f0e) SHA1(68b2a34644ee1fca3ce5191e2f25aa808b85fb09), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 31)" ) +GAME_CUSTOM( 199?, m4nnwwc__4, m4nnwwc, "cn302dy.p1", 0x0000, 0x010000, CRC(946db7e0) SHA1(fe29c1da478e3f1a53ad55c661ddcc7003679304), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 32)" ) +GAME_CUSTOM( 199?, m4nnwwc__5, m4nnwwc, "cn302k.p1", 0x0000, 0x010000, CRC(7a3202f1) SHA1(2dd5e8195120b1efc3eb51214cf054432fc50aed), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 33)" ) +GAME_CUSTOM( 199?, m4nnwwc__6, m4nnwwc, "cn302r.p1", 0x0000, 0x010000, CRC(e7cf9e1e) SHA1(66a1e54fc928c09d16f7ac1c002685eee841315f), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 34)" ) +GAME_CUSTOM( 199?, m4nnwwc__8, m4nnwwc, "cn302y.p1", 0x0000, 0x010000, CRC(7aa4b6f0) SHA1(2c185a9a7c8a4957fb5901305883661c41cb0cb4), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 36)" ) +/// "(C)1991 BARCREST" and "NN4 0.2" (CF3 0.2 on startup) +GAME_CUSTOM( 199?, m4nnwwc__k, m4nnwwc, "cf302s.p1", 0x0000, 0x010000, CRC(7a3e8ead) SHA1(590dc78b98f9928d6fa87ef661234f88dccfdff8), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 / NN4 0.2)" ) GAME_CUSTOM( 199?, m4nnwwc__a, m4nnwwc, "cf302ad.p1", 0x0000, 0x010000, CRC(6c6aa0cd) SHA1(5a58a19c35b0b195f3b4e7a21f57ca61d45ec1fb), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4nnwwc__b, m4nnwwc, "cf302b.p1", 0x0000, 0x010000, CRC(9ca07939) SHA1(6eb0a5675bb803a11c4c874dc0516d94c48194b7), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4nnwwc__c, m4nnwwc, "cf302bd.p1", 0x0000, 0x010000, CRC(8ba33b7d) SHA1(ebfb62a390de512dc1482cfb9ab64196cbcc5831), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 4)" ) @@ -2657,8 +2786,9 @@ GAME_CUSTOM( 199?, m4nnwwc__g, m4nnwwc, "cf302dr.p1", 0x0000, 0x010000 GAME_CUSTOM( 199?, m4nnwwc__h, m4nnwwc, "cf302dy.p1", 0x0000, 0x010000, CRC(420b47c1) SHA1(0cb1a843cec3ace21d806fe98212250201a72f12), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4nnwwc__i, m4nnwwc, "cf302k.p1", 0x0000, 0x010000, CRC(07ca4c45) SHA1(8f6ee3c17527b05a6652845019919d490cc00c64), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4nnwwc__j, m4nnwwc, "cf302r.p1", 0x0000, 0x010000, CRC(e09f43bd) SHA1(65dcdf8d223936c4415ddc3f734b83367d6b8db7), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4nnwwc__k, m4nnwwc, "cf302s.p1", 0x0000, 0x010000, CRC(7a3e8ead) SHA1(590dc78b98f9928d6fa87ef661234f88dccfdff8), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4nnwwc__l, m4nnwwc, "cf302y.p1", 0x0000, 0x010000, CRC(c1063a32) SHA1(e1c8fc463b1a1db87110f272a8727435f9d9b97a), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 13)" ) +/// "(C)1991 BARCREST" and "NN4 0.2" (CH3 0.2 on startup) +GAME_CUSTOM( 199?, m4nnwwc__w, m4nnwwc, "ch302s.p1", 0x0000, 0x010000, CRC(e7d0ceb2) SHA1(b75d58136b9e1e4bfde86730ef4e95bc98494813), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 / NN4 0.2)" ) GAME_CUSTOM( 199?, m4nnwwc__m, m4nnwwc, "ch302ad.p1", 0x0000, 0x010000, CRC(20405f4e) SHA1(7f87c881f428f704c98b0f4be459980062ccd29a), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4nnwwc__n, m4nnwwc, "ch302b.p1", 0x0000, 0x010000, CRC(cf7543ac) SHA1(2fe810741bfc18f800ad8028724218557d93a830), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 15)" ) GAME_CUSTOM( 199?, m4nnwwc__o, m4nnwwc, "ch302bd.p1", 0x0000, 0x010000, CRC(4c3e5664) SHA1(87a1f2133cad624683dac89f1da85d70b018f846), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 16)" ) @@ -2669,79 +2799,17 @@ GAME_CUSTOM( 199?, m4nnwwc__s, m4nnwwc, "ch302dr.p1", 0x0000, 0x010000 GAME_CUSTOM( 199?, m4nnwwc__t, m4nnwwc, "ch302dy.p1", 0x0000, 0x010000, CRC(9b4b982e) SHA1(c7c9c501eb1c936ffb8bc2fe1fe9258e92b1d548), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4nnwwc__u, m4nnwwc, "ch302k.p1", 0x0000, 0x010000, CRC(908d8b10) SHA1(a80a5ce1a83d05f1e68e66d14bacc424bc833aa7), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 22)" ) GAME_CUSTOM( 199?, m4nnwwc__v, m4nnwwc, "ch302r.p1", 0x0000, 0x010000, CRC(c31c4c28) SHA1(e94c7588211044dae7c5ac587e6232b0ace2fc7b), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4nnwwc__w, m4nnwwc, "ch302s.p1", 0x0000, 0x010000, CRC(e7d0ceb2) SHA1(b75d58136b9e1e4bfde86730ef4e95bc98494813), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4nnwwc__x, m4nnwwc, "ch302y.p1", 0x0000, 0x010000, CRC(5e7764c6) SHA1(05a61a57ac906cbea1d72fffd1c8ea707852b895), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4nnwwc__y, m4nnwwc, "cn302ad.p1", 0x0000, 0x010000, CRC(7a6acd9b) SHA1(9a1f0ed19d66428c6b541ce1c8e169d9b4be3ef1), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4nnwwc__z, m4nnwwc, "cn302b.p1", 0x0000, 0x010000, CRC(b69cb520) SHA1(7313f2740960ca86ecea8609fe8fd58d84a3248c), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4nnwwc__0, m4nnwwc, "cn302bd.p1", 0x0000, 0x010000, CRC(ab828a0b) SHA1(53fa6dad9bdae1d46479596c98cf2c3f4454bb95), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4nnwwc__1, m4nnwwc, "cn302d.p1", 0x0000, 0x010000, CRC(8c6ac365) SHA1(a32b104968aaa4da060072a241a4c54fbdf3c404), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4nnwwc__2, m4nnwwc, "cn302dk.p1", 0x0000, 0x010000, CRC(24cbab96) SHA1(77fe3b21fc9470653bada31c700ce926d55ce82e), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4nnwwc__3, m4nnwwc, "cn302dr.p1", 0x0000, 0x010000, CRC(09069f0e) SHA1(68b2a34644ee1fca3ce5191e2f25aa808b85fb09), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4nnwwc__4, m4nnwwc, "cn302dy.p1", 0x0000, 0x010000, CRC(946db7e0) SHA1(fe29c1da478e3f1a53ad55c661ddcc7003679304), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4nnwwc__5, m4nnwwc, "cn302k.p1", 0x0000, 0x010000, CRC(7a3202f1) SHA1(2dd5e8195120b1efc3eb51214cf054432fc50aed), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4nnwwc__6, m4nnwwc, "cn302r.p1", 0x0000, 0x010000, CRC(e7cf9e1e) SHA1(66a1e54fc928c09d16f7ac1c002685eee841315f), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4nnwwc__7, m4nnwwc, "cn302s.p1", 0x0000, 0x010000, CRC(87703a1a) SHA1(6582ffa42a61b60e92e456a794c4c219a9901a1c), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4nnwwc__8, m4nnwwc, "cn302y.p1", 0x0000, 0x010000, CRC(7aa4b6f0) SHA1(2c185a9a7c8a4957fb5901305883661c41cb0cb4), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4nnwwc__9, m4nnwwc, "cnc03s.p1", 0x0000, 0x010000, CRC(57a03b29) SHA1(52cc8eb3f02c4a812de06ceec0588ca930e07876), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4nnwwc__aa, m4nnwwc, "cl__x__x.2_0", 0x0000, 0x010000, CRC(c3de4791) SHA1(220d32b961b6710d508c0c7e6b2d8e4d292746f4), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4nnwwc__ab, m4nnwwc, "cl__x_dx.2_0", 0x0000, 0x010000, CRC(c79833f8) SHA1(b3519b55f6f2a4f081b69483ac0b8860aa8190d9), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4nnwwc__ac, m4nnwwc, "cl__xa_x.2_0", 0x0000, 0x010000, CRC(4c3021a1) SHA1(7e7258808dd1693adb956a5e6b076f925eb0a026), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4nnwwc__ad, m4nnwwc, "cl__xb_x.2_0", 0x0000, 0x010000, CRC(75a5add7) SHA1(6802ec81b4ebcde9ed014a0440fdc50211a8a350), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 41)" ) +/// "(C)1991 BARCREST" and "NN4 0.1" (CN3 0.1 on startup) +GAME_CUSTOM( 199?, m4nnwwc__9, m4nnwwc, "cnc03s.p1", 0x0000, 0x010000, CRC(57a03b29) SHA1(52cc8eb3f02c4a812de06ceec0588ca930e07876), "Barcrest","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.1 / NN4 0.1)" ) +// "(C)2000 BWB" and "CNN 2.0" +GAME_CUSTOM( 199?, m4nnwwc__aa, m4nnwwc, "cl__x__x.2_0", 0x0000, 0x010000, CRC(c3de4791) SHA1(220d32b961b6710d508c0c7e6b2d8e4d292746f4), "Bwb","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0, set 1)" ) +GAME_CUSTOM( 199?, m4nnwwc__ab, m4nnwwc, "cl__x_dx.2_0", 0x0000, 0x010000, CRC(c79833f8) SHA1(b3519b55f6f2a4f081b69483ac0b8860aa8190d9), "Bwb","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0, set 2)" ) +GAME_CUSTOM( 199?, m4nnwwc__ac, m4nnwwc, "cl__xa_x.2_0", 0x0000, 0x010000, CRC(4c3021a1) SHA1(7e7258808dd1693adb956a5e6b076f925eb0a026), "Bwb","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0, set 3)" ) +GAME_CUSTOM( 199?, m4nnwwc__ad, m4nnwwc, "cl__xb_x.2_0", 0x0000, 0x010000, CRC(75a5add7) SHA1(6802ec81b4ebcde9ed014a0440fdc50211a8a350), "Bwb","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0, set 4)" ) -#define M4RHRC_EXTRA_ROMS \ - ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ - /* missing, or the same as m4rhr? */ - -#undef GAME_CUSTOM -#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ - ROM_START( setname ) \ - ROM_REGION( length, "maincpu", 0 ) \ - ROM_LOAD( name, offset, length, hash ) \ - M4RHRC_EXTRA_ROMS \ - ROM_END \ - GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - - -GAME_CUSTOM( 199?, m4rhrc, 0, "cld03ad.p1", 0x0000, 0x010000, CRC(821fde63) SHA1(61f77eeb01331e735cc8c736526d09371e6bdf56), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4rhrc__a, m4rhrc, "cld03b.p1", 0x0000, 0x010000, CRC(c67a2e82) SHA1(b76110c73d5bd0290fdd31d8300914f63a56c25e), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4rhrc__b, m4rhrc, "cld03bd.p1", 0x0000, 0x010000, CRC(0995fd93) SHA1(c3cc84f78adc54f4698280bf7d0831bb54c3fc3f), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4rhrc__c, m4rhrc, "cld03c.p1", 0x0000, 0x010000, CRC(6e7b319f) SHA1(3da4feb72cb9d4ee24a8e0568f8d9c80a71caf9b), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4rhrc__d, m4rhrc, "cld03d.p1", 0x0000, 0x010000, CRC(dc46afb0) SHA1(c461ac2ef3fcffac96536b1b1c26abe052edf35c), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4rhrc__e, m4rhrc, "cld03dk.p1", 0x0000, 0x010000, CRC(f0b6b60f) SHA1(9addae6af20986c92c3ce71ce9756a6f3db5ebff), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4rhrc__f, m4rhrc, "cld03dr.p1", 0x0000, 0x010000, CRC(703ab87b) SHA1(089597927f94bdacc4226900a944cbec85fe2286), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4rhrc__g, m4rhrc, "cld03dy.p1", 0x0000, 0x010000, CRC(ed519095) SHA1(ac174166bf2cc6ab81f9782f1be4a9fbe226f34d), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4rhrc__h, m4rhrc, "cld03k.p1", 0x0000, 0x010000, CRC(3bad05a9) SHA1(1b00ac52f6c87b5c79088b6fc3e6d00f57876ebc), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4rhrc__i, m4rhrc, "cld03r.p1", 0x0000, 0x010000, CRC(2de70bdc) SHA1(d8d0170ca71fde4c79d0b465d09d4bb31acf40cf), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4rhrc__j, m4rhrc, "cld03s.p1", 0x0000, 0x010000, CRC(03f8a6bf) SHA1(29ee59fd60d89fca0f236be8b4c12c885db032e7), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4rhrc__k, m4rhrc, "cld03y.p1", 0x0000, 0x010000, CRC(b08c2332) SHA1(1cdf7fc0e95a50766df2d1cd51cb803b922c30c8), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4rhrc__l, m4rhrc, "hhn03ad.p1", 0x0000, 0x010000, CRC(e7da568e) SHA1(00f9eecd06131bc5770a6ab650b3548f5b7a8c15), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4rhrc__m, m4rhrc, "hhn03b.p1", 0x0000, 0x010000, CRC(406e47cd) SHA1(193aed33ac62eb04d89cf63beb33e8e4e28e286e), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4rhrc__n, m4rhrc, "hhn03bd.p1", 0x0000, 0x010000, CRC(66aed369) SHA1(6c3151790292a277a1d44a1fceae985e52014749), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4rhrc__o, m4rhrc, "hhn03c.p1", 0x0000, 0x010000, CRC(452e623c) SHA1(9350d7e30d8fc2b0f37528a7d0ce6797bab6f504), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4rhrc__p, m4rhrc, "hhn03d.p1", 0x0000, 0x010000, CRC(e9ce4ee5) SHA1(45fe3832cc37e8ecbc5101b8b7b94f6243504e3f), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4rhrc__q, m4rhrc, "hhn03dk.p1", 0x0000, 0x010000, CRC(2d750f34) SHA1(1672d5a8b4a338cac87281e1329f111f468dc611), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4rhrc__r, m4rhrc, "hhn03dr.p1", 0x0000, 0x010000, CRC(88a3895b) SHA1(3e2dcf6728712620724774c16a5d84dbec9c5ab3), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4rhrc__s, m4rhrc, "hhn03dy.p1", 0x0000, 0x010000, CRC(15c8a1b5) SHA1(5a2f28f290fa087b5010f778d4ad8d6c63a3d13e), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4rhrc__t, m4rhrc, "hhn03k.p1", 0x0000, 0x010000, CRC(95450230) SHA1(3c1c239e84a89ef6acd44ac9c81d33021ac6b0e3), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4rhrc__u, m4rhrc, "hhn03r.p1", 0x0000, 0x010000, CRC(d96d6825) SHA1(89c3f5494d97326369f10c982842310592456874), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4rhrc__v, m4rhrc, "hhn03s.p1", 0x0000, 0x010000, CRC(b531ae78) SHA1(87d043541c23b88b8ec4067c67be77812095faaa), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4rhrc__w, m4rhrc, "hhn03y.p1", 0x0000, 0x010000, CRC(440640cb) SHA1(de6b6edcdc99aaa0122ecd24a9a7437e6b44aad2), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4rhrc__x, m4rhrc, "rrd03ad.p1", 0x0000, 0x010000, CRC(6f49d7d1) SHA1(2195a3ad4836e8ffd2e7e6a90e94319d5a5a0ce8), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4rhrc__y, m4rhrc, "rrd03b.p1", 0x0000, 0x010000, CRC(e8447a3d) SHA1(8bf5936782e0fbec25a8ef892b8df04b6543bc74), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4rhrc__z, m4rhrc, "rrd03bd.p1", 0x0000, 0x010000, CRC(52cf0357) SHA1(ab4668df6d5ad9614410aede7ad4e030283b78ca), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4rhrc__0, m4rhrc, "rrd03c.p1", 0x0000, 0x010000, CRC(b03e7b76) SHA1(0b2779b584f8fa0e25e2a5248ecb8fb88aa53413), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4rhrc__1, m4rhrc, "rrd03d.p1", 0x0000, 0x010000, CRC(44740c79) SHA1(ab1efb2090ef62795c17a685c7acb45820eb1a9d), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4rhrc__2, m4rhrc, "rrd03dk.p1", 0x0000, 0x010000, CRC(78f18187) SHA1(33764416c6e5cccd6ae5fdc5c0d679e1ef451785), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4rhrc__3, m4rhrc, "rrd03dr.p1", 0x0000, 0x010000, CRC(039c2869) SHA1(2eb887b36d86295d0e6aacc74d0a6223d32baa5a), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4rhrc__4, m4rhrc, "rrd03dy.p1", 0x0000, 0x010000, CRC(b60b6e51) SHA1(eb6ed1de44d7c982ac8aa0621d4c1ed8e41db5de), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4rhrc__5, m4rhrc, "rrd03k.p1", 0x0000, 0x010000, CRC(31adc6d6) SHA1(ea68d0d13978bf6cfa7fb9aa1cf91ddfd6258a3a), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4rhrc__6, m4rhrc, "rrd03r.p1", 0x0000, 0x010000, CRC(11c61483) SHA1(66cd30096bca2f4356acaaa15179c00301c8bc3a), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4rhrc__7, m4rhrc, "rrd03s.p1", 0x0000, 0x010000, CRC(e59b79dd) SHA1(32e515bdc861a4d548caedd56a1825c91a318a34), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4rhrc__8, m4rhrc, "rrd03y.p1", 0x0000, 0x010000, CRC(66fff07a) SHA1(586279533d6d85abf7e97124c9c5342a6a1b0496), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4rhrc__aa, m4rhrc, "cr__x_dx.5_0", 0x0000, 0x010000, CRC(4bcf5c02) SHA1(603935880c87f86e7bc765c176266c1c08a6114f), "Barcrest","Red Hot Roll Classic (Barcrest) (MPU4) (set 38)" ) - #define M4VIZ_EXTRA_ROMS \ ROM_REGION( 0x48, "fakechr", 0 ) \ ROM_LOAD( "vizs.chr", 0x0000, 0x000048, CRC(2365ca6b) SHA1(b964420eb1df4065b2a6f3f934135d435b52af2b) ) \ @@ -2805,7 +2873,9 @@ GAME_CUSTOM( 199?, m4viz__c, m4viz, "viz58c", 0x0000, 0x010000, CRC(95b8 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4takepk, 0, "tapy.p1", 0x0000, 0x020000, CRC(f21f6dc8) SHA1(d421bee2564d3aaa389c35601adc23ad3fda5aa0), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "TAP 0.6" +GAME_CUSTOM( 199?, m4takepk, 0, "taps.p1", 0x0000, 0x020000, CRC(01956f25) SHA1(895cd30023b689b61d5ced0cf477f555faf786af), "Barcrest","Take Your Pick (Barcrest) (MPU4) (TAP 0.6)" ) +GAME_CUSTOM( 199?, m4takepk__j, m4takepk, "tapy.p1", 0x0000, 0x020000, CRC(f21f6dc8) SHA1(d421bee2564d3aaa389c35601adc23ad3fda5aa0), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4takepk__a, m4takepk, "tapad.p1", 0x0000, 0x020000, CRC(162448c4) SHA1(1f77d053fb5dfddeba1248e9e2a05536ab1bc66a), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4takepk__b, m4takepk, "tapb.p1", 0x0000, 0x020000, CRC(3f3be560) SHA1(a60d66c5de33747d19ae43bbc15da104cc3e7390), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4takepk__c, m4takepk, "tapbd.p1", 0x0000, 0x020000, CRC(9b3ee601) SHA1(95f11641d9e3ca0bcfa11a17fb0971b1e2598c7b), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 4)" ) @@ -2815,7 +2885,8 @@ GAME_CUSTOM( 199?, m4takepk__f, m4takepk, "tapdk.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4takepk__g, m4takepk, "tapdy.p1", 0x0000, 0x020000, CRC(561a6ea9) SHA1(736af1fed00a4df540b8f83da677583dee950b50), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4takepk__h, m4takepk, "tapk.p1", 0x0000, 0x020000, CRC(75fc4d36) SHA1(18a0e33af69c32a69416612f639a7c8601010177), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4takepk__i, m4takepk, "tapr.p1", 0x0000, 0x020000, CRC(c6f3f607) SHA1(cee0b59a45ebb50d51bc26b2b5c37fe7ed299bc7), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4takepk__j, m4takepk, "taps.p1", 0x0000, 0x020000, CRC(01956f25) SHA1(895cd30023b689b61d5ced0cf477f555faf786af), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 11)" ) +// "(C)1993 BARCREST" and "TPH 0.7" +GAME_CUSTOM( 199?, m4takepk__r, m4takepk, "tphs.p1", 0x0000, 0x020000, CRC(e9231738) SHA1(066b1ffd02238783931452b7a1dff05c293a6abe), "Barcrest","Take Your Pick (Barcrest) (MPU4) (TPH 0.7)" ) GAME_CUSTOM( 199?, m4takepk__k, m4takepk, "tphad.p1", 0x0000, 0x020000, CRC(51a2f147) SHA1(442d4adc92c6a9215c7655c2c4b955f974420a26), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4takepk__l, m4takepk, "tphb.p1", 0x0000, 0x020000, CRC(391214a6) SHA1(21f6f29ff1a60b7a646d49bef2c29008f2dc501c), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4takepk__m, m4takepk, "tphbd.p1", 0x0000, 0x020000, CRC(dcb85f82) SHA1(eb83c8d829d88e940c11f6d0d1c4607a4aa9cba2), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 14)" ) @@ -2823,17 +2894,23 @@ GAME_CUSTOM( 199?, m4takepk__n, m4takepk, "tphd.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4takepk__o, m4takepk, "tphdk.p1", 0x0000, 0x020000, CRC(967ff7d4) SHA1(403865583aabc9983b8c6fa4f0c06ba53696df3b), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 16)" ) GAME_CUSTOM( 199?, m4takepk__p, m4takepk, "tphdy.p1", 0x0000, 0x020000, CRC(119cd72a) SHA1(326f5a548234ec5cd780f22c96b9151222684ed0), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4takepk__q, m4takepk, "tphk.p1", 0x0000, 0x020000, CRC(73d5bcf0) SHA1(22c620c7d6fc8bc51bda4dd3ae5ec3e38056ce82), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4takepk__r, m4takepk, "tphs.p1", 0x0000, 0x020000, CRC(e9231738) SHA1(066b1ffd02238783931452b7a1dff05c293a6abe), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4takepk__s, m4takepk, "tphy.p1", 0x0000, 0x020000, CRC(f4369c0e) SHA1(d8c1fc2ede48673a1e8efaf004e3d76b62594de1), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4takepk__t, m4takepk, "typ15f", 0x0000, 0x020000, CRC(65c44b06) SHA1(629e7ac4149c66fc1dc33a103e1a4ff5aaecdcfd), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4takepk__u, m4takepk, "typ15r", 0x0000, 0x020000, CRC(8138c70b) SHA1(aafc805a8a56cf1722ebe0f3eba0a47f15c9049a), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4takepk__v, m4takepk, "typ510", 0x0000, 0x010000, CRC(ebf0c71c) SHA1(6c759144aecce83f82ded8aae7c61ecec2d92fb3), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4takepk__w, m4takepk, "typ510s", 0x0000, 0x010000, CRC(4cc6032d) SHA1(e6eaff56e39555393156aa2e56bf1c17e548bdc9), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4takepk__x, m4takepk, "typ55", 0x0000, 0x010000, CRC(6837344f) SHA1(4d5c6ea005d0916f27a7f445b37ce9252549c61f), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4takepk__y, m4takepk, "typ55s", 0x0000, 0x010000, CRC(05dc9b07) SHA1(9fc2c7575a704ca1252bb5c6a638e28b0324f2a6), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4takepk__z, m4takepk, "typ58s", 0x0000, 0x010000, CRC(56e26a42) SHA1(7add260212d3fbc8b356b58e85df8cafbef151e3), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4takepk__0, m4takepk, "typ58t", 0x0000, 0x010000, CRC(3fbbbbc8) SHA1(9f097cbce3710a51c19ef7961f91ee6e77fc843f), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4takepk__1, m4takepk, "typ5p10p.bin", 0x0000, 0x010000, CRC(45ddeaf4) SHA1(6db822aac402cb6772718015420c14875e74b13d), "Barcrest","Take Your Pick (Barcrest) (MPU4) (set 29)" ) +// below sets are all smaller (Bwb sets / hacks of them?) +// "(C)1997 B.W.B." and "TAC 2.3" +GAME_CUSTOM( 199?, m4takepk__1, m4takepk, "typ5p10p.bin", 0x0000, 0x010000, CRC(45ddeaf4) SHA1(6db822aac402cb6772718015420c14875e74b13d), "Bwb","Take Your Pick (Barcrest) (MPU4) (TAC 2.3)" ) +// no copyright string and "TAC 2.3" +GAME_CUSTOM( 199?, m4takepk__v, m4takepk, "typ510", 0x0000, 0x010000, CRC(ebf0c71c) SHA1(6c759144aecce83f82ded8aae7c61ecec2d92fb3), "hack","Take Your Pick (Barcrest) (MPU4) (TAC 2.3, hack, set 1)" ) +GAME_CUSTOM( 199?, m4takepk__w, m4takepk, "typ510s", 0x0000, 0x010000, CRC(4cc6032d) SHA1(e6eaff56e39555393156aa2e56bf1c17e548bdc9), "hack","Take Your Pick (Barcrest) (MPU4) (TAC 2.3, hack, set 2)" ) +// no copyright string and "TPH 0.7" +GAME_CUSTOM( 199?, m4takepk__t, m4takepk, "typ15f", 0x0000, 0x020000, CRC(65c44b06) SHA1(629e7ac4149c66fc1dc33a103e1a4ff5aaecdcfd), "hack","Take Your Pick (Barcrest) (MPU4) (TPH 0.7, hack)" ) +// no copyright string and "MAM 0.3" +GAME_CUSTOM( 199?, m4takepk__u, m4takepk, "typ15r", 0x0000, 0x020000, CRC(8138c70b) SHA1(aafc805a8a56cf1722ebe0f3eba0a47f15c9049a), "hack","Take Your Pick (Barcrest) (MPU4) (MAM 0.3, hack)" ) +// no copyright string and "TA4 2.1" +GAME_CUSTOM( 199?, m4takepk__x, m4takepk, "typ55", 0x0000, 0x010000, CRC(6837344f) SHA1(4d5c6ea005d0916f27a7f445b37ce9252549c61f), "hack","Take Your Pick (Barcrest) (MPU4) (TA4 2.1, hack, set 1)" ) +GAME_CUSTOM( 199?, m4takepk__y, m4takepk, "typ55s", 0x0000, 0x010000, CRC(05dc9b07) SHA1(9fc2c7575a704ca1252bb5c6a638e28b0324f2a6), "hack","Take Your Pick (Barcrest) (MPU4) (TA4 2.1, hack, set 2)" ) +// no copyright string and "TA8 2.2" +GAME_CUSTOM( 199?, m4takepk__z, m4takepk, "typ58s", 0x0000, 0x010000, CRC(56e26a42) SHA1(7add260212d3fbc8b356b58e85df8cafbef151e3), "hack","Take Your Pick (Barcrest) (MPU4) (TA8 2.2, hack, set 1)" ) +GAME_CUSTOM( 199?, m4takepk__0, m4takepk, "typ58t", 0x0000, 0x010000, CRC(3fbbbbc8) SHA1(9f097cbce3710a51c19ef7961f91ee6e77fc843f), "hack","Take Your Pick (Barcrest) (MPU4) (TA8 2.2, hack, set 2)" ) #define M4OVERMN_EXTRA_ROMS \ @@ -2850,21 +2927,8 @@ GAME_CUSTOM( 199?, m4takepk__1, m4takepk, "typ5p10p.bin", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4overmn, 0, "otts.p1", 0x0000, 0x010000, CRC(6daf58a4) SHA1(e505a18b67dec54446e6d94a5d1c3bba13099619), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4overmn__a, m4overmn, "ot8b.p1", 0x0000, 0x010000, CRC(243c7f7c) SHA1(24b9d2cce1af75811d1e625ac8df5b58356776dc), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4overmn__b, m4overmn, "ot8c.p1", 0x0000, 0x010000, CRC(af5bb77b) SHA1(6a9eeb803fdaa03970b3a3a0738e804027aedd20), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4overmn__c, m4overmn, "ot8dk.p1", 0x0000, 0x010000, CRC(0798d12c) SHA1(068a676d4ccaf2964a3f6f6673199f8d62c45452), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4overmn__d, m4overmn, "ot8dy.p1", 0x0000, 0x010000, CRC(0904a38d) SHA1(0a0668ae384fe371abf2597ab66a56dd79a90c03), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4overmn__e, m4overmn, "ot8k.p1", 0x0000, 0x010000, CRC(8d83f697) SHA1(2fff475d44f1535c85988b195c3610201ece21ae), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4overmn__f, m4overmn, "ot8s.p1", 0x0000, 0x010000, CRC(db1bacdb) SHA1(fc2257eedec532094f3c229bcf215a0fde430d2b), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4overmn__g, m4overmn, "ot8y.p1", 0x0000, 0x010000, CRC(6e1508fb) SHA1(6a45a394e48f758456dc6cf17a5b134ca6887421), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4overmn__h, m4overmn, "otnb.p1", 0x0000, 0x010000, CRC(047aae70) SHA1(bf620b60f1107fff07a28944dec66fd71aab65c0), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4overmn__i, m4overmn, "otnc.p1", 0x0000, 0x010000, CRC(536e7640) SHA1(3a079bed9217c857efb8d435c7efacca69cfcabc), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4overmn__j, m4overmn, "otnd.p1", 0x0000, 0x010000, CRC(c6c15fc2) SHA1(99cb3fd2eaea636313085e0a6a9aff9c027cb187), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4overmn__k, m4overmn, "otndy.p1", 0x0000, 0x010000, CRC(6b22206e) SHA1(0714ddc445d530e1ff2055cd5e5d8b31704733d9), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4overmn__l, m4overmn, "otnk.p1", 0x0000, 0x010000, CRC(992cc40d) SHA1(6059ecaf91390e2a2ea80d3da5e44156273892ad), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4overmn__m, m4overmn, "otns.p1", 0x0000, 0x010000, CRC(7e03f295) SHA1(f874ddf8de8037aa251a8c3fb7c183e6dfb93dfa), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4overmn__n, m4overmn, "otny.p1", 0x0000, 0x010000, CRC(67cba8fa) SHA1(234cc5b4a0b60d33b2f4c00d082beee59236a126), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 15)" ) +// "(C)1991 BARCREST" and "OTT 0.2" +GAME_CUSTOM( 199?, m4overmn, 0, "otts.p1", 0x0000, 0x010000, CRC(6daf58a4) SHA1(e505a18b67dec54446e6d94a5d1c3bba13099619), "Barcrest","Over The Moon (Barcrest) (MPU4) (OTT 0.2)" ) GAME_CUSTOM( 199?, m4overmn__o, m4overmn, "ottad.p1", 0x0000, 0x010000, CRC(682b01a3) SHA1(cb71fd56ad6d4fc67894bf86c54c49a7e45aae15), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 16)" ) GAME_CUSTOM( 199?, m4overmn__p, m4overmn, "ottb.p1", 0x0000, 0x010000, CRC(541c2d54) SHA1(3b42e9dcb468cb9bbf2092a4e7eabeb172dc90d0), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4overmn__q, m4overmn, "ottbd.p1", 0x0000, 0x010000, CRC(5e376ce9) SHA1(0628461395ebd233ca7b0513ea272ddd83c5accd), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 18)" ) @@ -2875,6 +2939,24 @@ GAME_CUSTOM( 199?, m4overmn__u, m4overmn, "ottdy.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4overmn__v, m4overmn, "ottk.p1", 0x0000, 0x010000, CRC(68c984d3) SHA1(b1cf87630ab093629eaa8d199dfcfd6343d9c31d), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 23)" ) GAME_CUSTOM( 199?, m4overmn__w, m4overmn, "ottr.p1", 0x0000, 0x010000, CRC(ceb322d1) SHA1(a62bd1f947fc15f1d42dae8e933d2fcb672bcce4), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4overmn__x, m4overmn, "otty.p1", 0x0000, 0x010000, CRC(974af7ff) SHA1(e0aecb91c1fc476a9258d6d57ba5ca8f249141b0), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 25)" ) +// "(C)1991 BARCREST" and "OT8 0.1" +GAME_CUSTOM( 199?, m4overmn__f, m4overmn, "ot8s.p1", 0x0000, 0x010000, CRC(db1bacdb) SHA1(fc2257eedec532094f3c229bcf215a0fde430d2b), "Barcrest","Over The Moon (Barcrest) (MPU4) (OT8 0.1)" ) +GAME_CUSTOM( 199?, m4overmn__a, m4overmn, "ot8b.p1", 0x0000, 0x010000, CRC(243c7f7c) SHA1(24b9d2cce1af75811d1e625ac8df5b58356776dc), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4overmn__b, m4overmn, "ot8c.p1", 0x0000, 0x010000, CRC(af5bb77b) SHA1(6a9eeb803fdaa03970b3a3a0738e804027aedd20), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4overmn__c, m4overmn, "ot8dk.p1", 0x0000, 0x010000, CRC(0798d12c) SHA1(068a676d4ccaf2964a3f6f6673199f8d62c45452), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4overmn__d, m4overmn, "ot8dy.p1", 0x0000, 0x010000, CRC(0904a38d) SHA1(0a0668ae384fe371abf2597ab66a56dd79a90c03), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4overmn__e, m4overmn, "ot8k.p1", 0x0000, 0x010000, CRC(8d83f697) SHA1(2fff475d44f1535c85988b195c3610201ece21ae), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4overmn__g, m4overmn, "ot8y.p1", 0x0000, 0x010000, CRC(6e1508fb) SHA1(6a45a394e48f758456dc6cf17a5b134ca6887421), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 8)" ) +// "(C)1991 BARCREST" and "OTN 0.5" +GAME_CUSTOM( 199?, m4overmn__m, m4overmn, "otns.p1", 0x0000, 0x010000, CRC(7e03f295) SHA1(f874ddf8de8037aa251a8c3fb7c183e6dfb93dfa), "Barcrest","Over The Moon (Barcrest) (MPU4) (OTN 0.5)" ) +GAME_CUSTOM( 199?, m4overmn__h, m4overmn, "otnb.p1", 0x0000, 0x010000, CRC(047aae70) SHA1(bf620b60f1107fff07a28944dec66fd71aab65c0), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4overmn__i, m4overmn, "otnc.p1", 0x0000, 0x010000, CRC(536e7640) SHA1(3a079bed9217c857efb8d435c7efacca69cfcabc), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4overmn__j, m4overmn, "otnd.p1", 0x0000, 0x010000, CRC(c6c15fc2) SHA1(99cb3fd2eaea636313085e0a6a9aff9c027cb187), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4overmn__k, m4overmn, "otndy.p1", 0x0000, 0x010000, CRC(6b22206e) SHA1(0714ddc445d530e1ff2055cd5e5d8b31704733d9), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4overmn__l, m4overmn, "otnk.p1", 0x0000, 0x010000, CRC(992cc40d) SHA1(6059ecaf91390e2a2ea80d3da5e44156273892ad), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4overmn__n, m4overmn, "otny.p1", 0x0000, 0x010000, CRC(67cba8fa) SHA1(234cc5b4a0b60d33b2f4c00d082beee59236a126), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 15)" ) +// "(C)1991 BARCREST" and "OTU 0.1" +GAME_CUSTOM( 199?, m4overmn__7, m4overmn, "otus.p1", 0x0000, 0x010000, CRC(5f2b8d0b) SHA1(1e3ac59fa0b108549c265eeba027591bce5122f3), "Barcrest","Over The Moon (Barcrest) (MPU4) (OTU 0.1)" ) GAME_CUSTOM( 199?, m4overmn__y, m4overmn, "otuad.p1", 0x0000, 0x010000, CRC(2576654b) SHA1(7fae2bd057d96af4c50fd84a5261ae750ba34033), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 26)" ) GAME_CUSTOM( 199?, m4overmn__z, m4overmn, "otub.p1", 0x0000, 0x010000, CRC(1463877d) SHA1(ea41e048aead52aabc1b8a2a224ef87b9011c163), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 27)" ) GAME_CUSTOM( 199?, m4overmn__0, m4overmn, "otubd.p1", 0x0000, 0x010000, CRC(8ac2d17b) SHA1(09f21f1233d82fd02830b6ece6a773402393a447), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 28)" ) @@ -2884,7 +2966,6 @@ GAME_CUSTOM( 199?, m4overmn__3, m4overmn, "otudr.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4overmn__4, m4overmn, "otudy.p1", 0x0000, 0x010000, CRC(562da6fd) SHA1(899f971124969c52a018634b2b2f2dd7cb634195), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4overmn__5, m4overmn, "otuk.p1", 0x0000, 0x010000, CRC(cbb66497) SHA1(ade033fb3d226bfcb3cdf3e3612fb65cfc22b030), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 33)" ) GAME_CUSTOM( 199?, m4overmn__6, m4overmn, "otur.p1", 0x0000, 0x010000, CRC(d05a8c2f) SHA1(754e2351431aa7bf6dea3a1498581da0c4283c1e), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4overmn__7, m4overmn, "otus.p1", 0x0000, 0x010000, CRC(5f2b8d0b) SHA1(1e3ac59fa0b108549c265eeba027591bce5122f3), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 35)" ) GAME_CUSTOM( 199?, m4overmn__8, m4overmn, "otuy.p1", 0x0000, 0x010000, CRC(fc65136d) SHA1(048f81de92a1db4e4e4e9aa7a87228805d57b263), "Barcrest","Over The Moon (Barcrest) (MPU4) (set 36)" ) @@ -2960,9 +3041,15 @@ GAME_CUSTOM( 199?, m4luxor__l, m4luxor, "lux_05_8", 0x0000, 0x010000 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4hijinx, 0, "jnx10y.p1", 0x0000, 0x020000, CRC(792b3bae) SHA1(d30aecce42953f1ec49753cc2d1df00ad9bd088f), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4hijinx__a, m4hijinx, "hij15g", 0x0000, 0x020000, CRC(73271cca) SHA1(8177e10e30386464a7e5a33dc3c02adbf4c93101), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4hijinx__b, m4hijinx, "hij15t", 0x0000, 0x020000, CRC(c7d54c64) SHA1(d3537c8412b583f2812f87ab68ac8855e9cdbd2f), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 3)" ) +// "(C)1993 BARCREST" and "JNX 1.0" +GAME_CUSTOM( 199?, m4hijinx, 0, "jnx10s.p1", 0x0000, 0x020000, CRC(a291147e) SHA1(818172bab2fad210a937d91e0be4ddf165f1cf99), "Barcrest","Hi Jinx (Barcrest) (MPU4) (JNX 1.0)" ) +GAME_CUSTOM( 199?, m4hijinx__ab, m4hijinx, "jnx10y.p1", 0x0000, 0x020000, CRC(792b3bae) SHA1(d30aecce42953f1ec49753cc2d1df00ad9bd088f), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4hijinx__7, m4hijinx, "jnx10d.p1", 0x0000, 0x020000, CRC(31b243d1) SHA1(029dd8ecbe83b63ca799b6507262193ef56d4b36), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 35)" ) +GAME_CUSTOM( 199?, m4hijinx__8, m4hijinx, "jnx10dh.p1", 0x0000, 0x020000, CRC(ffc421b0) SHA1(28439c5d2ec371edae5e7b84e1da96d468bb8556), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 36)" ) +GAME_CUSTOM( 199?, m4hijinx__9, m4hijinx, "jnx10dy.p1", 0x0000, 0x020000, CRC(dc57d3fb) SHA1(e622485f37f638a69e0c5dbb06faa519b10eafc9), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 37)" ) +GAME_CUSTOM( 199?, m4hijinx__aa, m4hijinx, "jnx10h.p1", 0x0000, 0x020000, CRC(5ab8c9e5) SHA1(f12094bd95369288a76dac9d1e62810fa478cfd6), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 38)" ) +// "(C)1993 BARCREST" and "JNS 0.2" +GAME_CUSTOM( 199?, m4hijinx__n, m4hijinx, "jns02s.p1", 0x0000, 0x020000, CRC(42df2639) SHA1(8ed6addfc85cfeab4c5f03c24a692a9c392a8bc2), "Barcrest","Hi Jinx (Barcrest) (MPU4) (JNS 0.2)" ) GAME_CUSTOM( 199?, m4hijinx__c, m4hijinx, "jns02ad.p1", 0x0000, 0x020000, CRC(436a6632) SHA1(25ab01b8785cf6f9d2316b15d2d2887e898358de), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4hijinx__d, m4hijinx, "jns02b.p1", 0x0000, 0x020000, CRC(171b8941) SHA1(8383f0ce3c21b187f031302b4d930e13c131f862), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4hijinx__e, m4hijinx, "jns02bd.p1", 0x0000, 0x020000, CRC(6a8b03ba) SHA1(ecc6826474a96a7d2e5cee851d672b954906bfbe), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 6)" ) @@ -2974,8 +3061,9 @@ GAME_CUSTOM( 199?, m4hijinx__j, m4hijinx, "jns02dy.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4hijinx__k, m4hijinx, "jns02h.p1", 0x0000, 0x020000, CRC(f927ea5a) SHA1(c1af9f2b20421c66d2141b85a61cd51e8cb6a67b), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4hijinx__l, m4hijinx, "jns02k.p1", 0x0000, 0x020000, CRC(4377f98d) SHA1(0e7b4e655acec07fea221697179045f06d4f3c48), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4hijinx__m, m4hijinx, "jns02r.p1", 0x0000, 0x020000, CRC(8df557f8) SHA1(899e73b265065f09eac785e45e06fd755a618c21), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4hijinx__n, m4hijinx, "jns02s.p1", 0x0000, 0x020000, CRC(42df2639) SHA1(8ed6addfc85cfeab4c5f03c24a692a9c392a8bc2), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 15)" ) GAME_CUSTOM( 199?, m4hijinx__o, m4hijinx, "jns02y.p1", 0x0000, 0x020000, CRC(743d449f) SHA1(739e41b28ee53465b40138cdccf0fcd1782c8b45), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 16)" ) +// "(C)1993 BARCREST" and "JNS 0.3" +GAME_CUSTOM( 199?, m4hijinx__0, m4hijinx, "jns03s.p1", 0x0000, 0x020000, CRC(ef9f3d18) SHA1(cc2239a4dca1c092025216a16bb39fe9126bd6f8), "Barcrest","Hi Jinx (Barcrest) (MPU4) (JNS 0.3)" ) GAME_CUSTOM( 199?, m4hijinx__p, m4hijinx, "jns03ad.p1", 0x0000, 0x020000, CRC(9d3e4a13) SHA1(5780eaeb148d64f7d2769207f7973c02a5e5a3de), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4hijinx__q, m4hijinx, "jns03b.p1", 0x0000, 0x020000, CRC(07eddb71) SHA1(05f5bbcf6c7e69407163c9dc76c6c587f0cdf10e), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4hijinx__r, m4hijinx, "jns03bd.p1", 0x0000, 0x020000, CRC(b4df2f9b) SHA1(1d6025bfb119007c7b17214577cf69f978fa2830), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 19)" ) @@ -2987,19 +3075,17 @@ GAME_CUSTOM( 199?, m4hijinx__w, m4hijinx, "jns03dy.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4hijinx__x, m4hijinx, "jns03h.p1", 0x0000, 0x020000, CRC(e9d1b86a) SHA1(4a982370bfb788ef53ae9479a72dbca6c7f9ec00), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 25)" ) GAME_CUSTOM( 199?, m4hijinx__y, m4hijinx, "jns03k.p1", 0x0000, 0x020000, CRC(5381abbd) SHA1(8967579f31ef9a0ec868af1cb64d9fa049314f94), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 26)" ) GAME_CUSTOM( 199?, m4hijinx__z, m4hijinx, "jns03r.p1", 0x0000, 0x020000, CRC(9d0305c8) SHA1(525b36b43a09c27f807dcbdc8bff89af82bdffc0), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4hijinx__0, m4hijinx, "jns03s.p1", 0x0000, 0x020000, CRC(ef9f3d18) SHA1(cc2239a4dca1c092025216a16bb39fe9126bd6f8), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4hijinx__1, m4hijinx, "jns03y.p1", 0x0000, 0x020000, CRC(64cb16af) SHA1(f4bc3557f84cd0054c475e0354f0562f63df3146), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 29)" ) +// "(C)1993 BARCREST" and "JNX 0.5" +GAME_CUSTOM( 199?, m4hijinx__6, m4hijinx, "jnx05y.p1", 0x0000, 0x020000, CRC(6f40a357) SHA1(7d019f925d7920df23782b1e6e742bc467e7767b), "Barcrest","Hi Jinx (Barcrest) (MPU4) (JNX 0.5Y)" ) GAME_CUSTOM( 199?, m4hijinx__2, m4hijinx, "jnx05d.p1", 0x0000, 0x020000, CRC(27d9db28) SHA1(df333d884735a94d3c4d460deb05e50fcfce8896), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 30)" ) GAME_CUSTOM( 199?, m4hijinx__3, m4hijinx, "jnx05dh.p1", 0x0000, 0x020000, CRC(d7dc5d8b) SHA1(6b94ae9169b522a80455cbe42378427d2f1019f3), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 31)" ) GAME_CUSTOM( 199?, m4hijinx__4, m4hijinx, "jnx05dy.p1", 0x0000, 0x020000, CRC(f44fafc0) SHA1(996411b41071cc3c5c84f00106f9685b27e95352), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4hijinx__5, m4hijinx, "jnx05h.p1", 0x0000, 0x020000, CRC(4cd3511c) SHA1(2f283f50d2313eb9da49e4efbdb9a098f90c0afb), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4hijinx__6, m4hijinx, "jnx05y.p1", 0x0000, 0x020000, CRC(6f40a357) SHA1(7d019f925d7920df23782b1e6e742bc467e7767b), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4hijinx__7, m4hijinx, "jnx10d.p1", 0x0000, 0x020000, CRC(31b243d1) SHA1(029dd8ecbe83b63ca799b6507262193ef56d4b36), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4hijinx__8, m4hijinx, "jnx10dh.p1", 0x0000, 0x020000, CRC(ffc421b0) SHA1(28439c5d2ec371edae5e7b84e1da96d468bb8556), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4hijinx__9, m4hijinx, "jnx10dy.p1", 0x0000, 0x020000, CRC(dc57d3fb) SHA1(e622485f37f638a69e0c5dbb06faa519b10eafc9), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4hijinx__aa, m4hijinx, "jnx10h.p1", 0x0000, 0x020000, CRC(5ab8c9e5) SHA1(f12094bd95369288a76dac9d1e62810fa478cfd6), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4hijinx__ab, m4hijinx, "jnx10s.p1", 0x0000, 0x020000, CRC(a291147e) SHA1(818172bab2fad210a937d91e0be4ddf165f1cf99), "Barcrest","Hi Jinx (Barcrest) (MPU4) (set 39)" ) - +// no copyright string and "JNX 0.5" +GAME_CUSTOM( 199?, m4hijinx__a, m4hijinx, "hij15g", 0x0000, 0x020000, CRC(73271cca) SHA1(8177e10e30386464a7e5a33dc3c02adbf4c93101), "hack","Hi Jinx (Barcrest) (MPU4) (JNX 0.5, hack)" ) +// no copyright string and "JNS 0.2" +GAME_CUSTOM( 199?, m4hijinx__b, m4hijinx, "hij15t", 0x0000, 0x020000, CRC(c7d54c64) SHA1(d3537c8412b583f2812f87ab68ac8855e9cdbd2f), "hack","Hi Jinx (Barcrest) (MPU4) (JNS 0.2, hack)" ) @@ -3020,50 +3106,8 @@ GAME_CUSTOM( 199?, m4hijinx__ab, m4hijinx, "jnx10s.p1", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4cashln, 0, "cls04s.p1", 0x0000, 0x020000, CRC(c8b7f355) SHA1(437324bf499ba49ecbb3854f5f787da5f575f7f5), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4cashln__a, m4cashln, "cl15g", 0x0000, 0x020000, CRC(fdd5765d) SHA1(fee8ddc9b93934a5582d6730cfa26246191c22ff), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4cashln__b, m4cashln, "cl15t", 0x0000, 0x020000, CRC(56bb9f21) SHA1(2876ac79283ea5cbee45e9ac6d5d140ea7db8e95), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4cashln__c, m4cashln, "cli10s", 0x0000, 0x020000, CRC(9aca737d) SHA1(6669c8b7a192b1c67caad62aad528b08737f7e73), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4cashln__d, m4cashln, "cli11ad.p1", 0x0000, 0x020000, CRC(ab47d9b3) SHA1(e501bb61de76ffe6618be03a59614b36e71e031b), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4cashln__e, m4cashln, "cli11b.p1", 0x0000, 0x020000, CRC(4adcaa58) SHA1(027dda275f32e49e6c0f9ff4e7d42472bdd3174e), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4cashln__f, m4cashln, "cli11bd.p1", 0x0000, 0x020000, CRC(e18071e5) SHA1(e219be249b5992808745a4c668686dfad77e2837), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4cashln__g, m4cashln, "cli11d.p1", 0x0000, 0x020000, CRC(c7c6049d) SHA1(6ad1caed1272ff4e6902843bf2420020ca2d0cb4), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4cashln__h, m4cashln, "cli11dh.p1", 0x0000, 0x020000, CRC(c21383ae) SHA1(01a840f160aacbb2b253ab6ba0a915f7055cc381), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4cashln__i, m4cashln, "cli11dk.p1", 0x0000, 0x020000, CRC(18486282) SHA1(5910a68539f5343661f8e55105c767067633ef1c), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4cashln__j, m4cashln, "cli11dr.p1", 0x0000, 0x020000, CRC(82a6bc3b) SHA1(c12b46234bebe408374a7fc3e18bf79942434d95), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4cashln__k, m4cashln, "cli11dy.p1", 0x0000, 0x020000, CRC(2ca4f94d) SHA1(4d0345e3c819d8dd48c559f01c118430d5ccdea2), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4cashln__l, m4cashln, "cli11h.p1", 0x0000, 0x020000, CRC(694f5813) SHA1(3acf84d6e5060e7054097aa2601c9c2833a2d524), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4cashln__m, m4cashln, "cli11k.p1", 0x0000, 0x020000, CRC(b314b93f) SHA1(e94472e1d1e345be84b277088dc852ed75117344), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4cashln__n, m4cashln, "cli11r.p1", 0x0000, 0x020000, CRC(29fa6786) SHA1(8bd7a7b0cf84615a126ebed494954ed2b7bc0ec4), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4cashln__o, m4cashln, "cli11s.p1", 0x0000, 0x020000, CRC(e5ad1734) SHA1(69fb5c81ae04c98920d84f829be14983168196e5), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4cashln__p, m4cashln, "cli11y.p1", 0x0000, 0x020000, CRC(87f822f0) SHA1(701a8c88be972b8363490e92e98f37acd493ef07), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4cashln__q, m4cashln, "cli12ad.p1", 0x0000, 0x020000, CRC(d6c03a42) SHA1(203ea61def95c2ea0a9ea1f808056122d87993ff), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4cashln__r, m4cashln, "cli12b.p1", 0x0000, 0x020000, CRC(9d4245da) SHA1(604b1e68d271784b982cde81e3675298662df1bc), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4cashln__s, m4cashln, "cli12bd.p1", 0x0000, 0x020000, CRC(9c079214) SHA1(1ee6362d876dd5aaa1699186ee905b48755a80de), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4cashln__t, m4cashln, "cli12d.p1", 0x0000, 0x020000, CRC(1058eb1f) SHA1(2c4305679c829cbf6c34d2627a1e8e366c5be5c1), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4cashln__u, m4cashln, "cli12dh.p1", 0x0000, 0x020000, CRC(bf94605f) SHA1(e2ae87041791ba92d8db69c7a3b40b62c97cf941), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4cashln__v, m4cashln, "cli12dk.p1", 0x0000, 0x020000, CRC(65cf8173) SHA1(f7ed6227b3e57d50e327f3ff72b9aafafa51da63), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4cashln__w, m4cashln, "cli12dr.p1", 0x0000, 0x020000, CRC(ff215fca) SHA1(40cab82f6a7f5229b365236b4758e73b2a3dce1e), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4cashln__x, m4cashln, "cli12dy.p1", 0x0000, 0x020000, CRC(51231abc) SHA1(ae80491fb1496f6fccbd46f424fe1d45640da8e2), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4cashln__y, m4cashln, "cli12h.p1", 0x0000, 0x020000, CRC(bed1b791) SHA1(d017f62a099475786fa15c7a185574301b80dbdd), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4cashln__z, m4cashln, "cli12k.p1", 0x0000, 0x020000, CRC(648a56bd) SHA1(25ad92789b12512b8c65cc912080f62abfe101a6), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4cashln__0, m4cashln, "cli12r.p1", 0x0000, 0x020000, CRC(fe648804) SHA1(27e74aea209b90dc3d8cf46474e271d68d9af7e2), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4cashln__1, m4cashln, "cli12s.p1", 0x0000, 0x020000, CRC(ef5aa578) SHA1(c4c288a297f5f6cd0712c396237aa3bf1363e188), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4cashln__2, m4cashln, "cli12y.p1", 0x0000, 0x020000, CRC(5066cd72) SHA1(03cef55b4fff8fb6edd804fdbc4076db6b234614), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4cashln__3, m4cashln, "cls03ad.p1", 0x0000, 0x020000, CRC(c68249cf) SHA1(d2d16ce76a5b144827a11f7fa471c7ea558c1ce0), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4cashln__4, m4cashln, "cls03b.p1", 0x0000, 0x020000, CRC(db667c56) SHA1(8a8f2374d0d02307206071718376400d5a52dc6c), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4cashln__5, m4cashln, "cls03bd.p1", 0x0000, 0x020000, CRC(4b98e70a) SHA1(04e0732dd8c0283dd928da9caafd78f509a4d479), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4cashln__6, m4cashln, "cls03c.p1", 0x0000, 0x020000, CRC(ec2cc144) SHA1(bc2879e4487ad5638e2818f4c8c5b23ab660cecc), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4cashln__7, m4cashln, "cls03d.p1", 0x0000, 0x020000, CRC(a67d7720) SHA1(556128a8c464a5d1de0ebb0de8ce87a7ea0813d3), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4cashln__8, m4cashln, "cls03dh.p1", 0x0000, 0x020000, CRC(22587ac6) SHA1(04cacccfebdc01046e048b2c98a05f3f97fcd6f3), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4cashln__9, m4cashln, "cls03dk.p1", 0x0000, 0x020000, CRC(015f4f5c) SHA1(fd0e622217d42f52cfba78989e8cf843cb08a17d), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4cashln__aa, m4cashln, "cls03dr.p1", 0x0000, 0x020000, CRC(b250f46d) SHA1(02f04778ce6fb674ba9760b0fa9828b76a58239a), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4cashln__ab, m4cashln, "cls03dy.p1", 0x0000, 0x020000, CRC(86bc6fa2) SHA1(40a2bb1148989b5895b0f58417f404f7b035b472), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4cashln__ac, m4cashln, "cls03h.p1", 0x0000, 0x020000, CRC(b2a6e19a) SHA1(668527a7939ab70deb03b1db8a4a2629fb332815), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4cashln__ad, m4cashln, "cls03k.p1", 0x0000, 0x020000, CRC(91a1d400) SHA1(9e4ccd4f4119471d66a22b14a22312149faf28c0), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4cashln__ae, m4cashln, "cls03r.p1", 0x0000, 0x020000, CRC(22ae6f31) SHA1(b08ec5eb5bae377b829a14065b54ec1dbbc55677), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4cashln__af, m4cashln, "cls03s.p1", 0x0000, 0x020000, CRC(cb9a86b2) SHA1(2b4aee61c0070d295ba81ffa5739ceb8e05dc0e8), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 43)" ) -GAME_CUSTOM( 199?, m4cashln__ag, m4cashln, "cls03y.p1", 0x0000, 0x020000, CRC(1642f4fe) SHA1(b4e3fa360fdc1908cafe61d833c5097cee965404), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 44)" ) +// "(C)1993 BARCREST" and "CLS 0.4" +GAME_CUSTOM( 199?, m4cashln, 0, "cls04s.p1", 0x0000, 0x020000, CRC(c8b7f355) SHA1(437324bf499ba49ecbb3854f5f787da5f575f7f5), "Barcrest","Cash Lines (Barcrest) (MPU4) (CLS 0.4)" ) GAME_CUSTOM( 199?, m4cashln__ah, m4cashln, "cls04ad.p1", 0x0000, 0x020000, CRC(6eb174ed) SHA1(dcf4e91ca16e3d5644429289470329102bc96f83), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 45)" ) GAME_CUSTOM( 199?, m4cashln__ai, m4cashln, "cls04b.p1", 0x0000, 0x020000, CRC(73554174) SHA1(f74ba0a6212c58306d3e4f2e467e860bd4b2b294), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 46)" ) GAME_CUSTOM( 199?, m4cashln__aj, m4cashln, "cls04bd.p1", 0x0000, 0x020000, CRC(e3abda28) SHA1(65b7883b52a8105f3df12659f4d9467f503ac1c6), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 47)" ) @@ -3077,19 +3121,53 @@ GAME_CUSTOM( 199?, m4cashln__aq, m4cashln, "cls04h.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4cashln__ar, m4cashln, "cls04k.p1", 0x0000, 0x020000, CRC(3992e922) SHA1(9c39d2740ef51004ea59f859ec3e008c6586c00d), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 55)" ) GAME_CUSTOM( 199?, m4cashln__as, m4cashln, "cls04r.p1", 0x0000, 0x020000, CRC(8a9d5213) SHA1(dce36cdf790415bb37735a09226d73e322f7510a), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 56)" ) GAME_CUSTOM( 199?, m4cashln__at, m4cashln, "cls04y.p1", 0x0000, 0x020000, CRC(be71c9dc) SHA1(d2c2374685e953a028726ba48329196aa0a9f098), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 57)" ) -GAME_CUSTOM( 199?, m4cashln__au, m4cashln, "ncc10ad.p1", 0x0000, 0x020000, CRC(d4be9280) SHA1(cbae1aad2dc8d88df9869755063a7a1097995417), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 58)" ) -GAME_CUSTOM( 199?, m4cashln__av, m4cashln, "ncc10b.p1", 0x0000, 0x020000, CRC(42abdedf) SHA1(4c428288ba9bb426ae011127896634f5995f8a6c), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4cashln__aw, m4cashln, "ncc10bd.p1", 0x0000, 0x020000, CRC(9e793ad6) SHA1(7c26c6cf2b23e2b73887c2eea1e5f7566127ca95), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 60)" ) -GAME_CUSTOM( 199?, m4cashln__ax, m4cashln, "ncc10d.p1", 0x0000, 0x020000, CRC(cfb1701a) SHA1(20c47f0d30c4e4da37ce38fc097e841fb3ee89ed), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4cashln__ay, m4cashln, "ncc10dh.p1", 0x0000, 0x020000, CRC(bdeac89d) SHA1(5ddde5cee5c95714e66e10a061e76603a993f446), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4cashln__az, m4cashln, "ncc10dk.p1", 0x0000, 0x020000, CRC(67b129b1) SHA1(d7c0a107295ae3d11abe4138a1c76fd779777bec), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4cashln__a0, m4cashln, "ncc10dr.p1", 0x0000, 0x020000, CRC(fd5ff708) SHA1(1bc5b96a46130370fc16b43804721eb392ec585f), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 64)" ) -GAME_CUSTOM( 199?, m4cashln__a1, m4cashln, "ncc10dy.p1", 0x0000, 0x020000, CRC(535db27e) SHA1(16b8d87fc22e040952988823d2c677130c17e137), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4cashln__a2, m4cashln, "ncc10h.p1", 0x0000, 0x020000, CRC(61382c94) SHA1(98e4fcfedbe16773be0abbd6691ccd9f19a33684), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4cashln__a3, m4cashln, "ncc10k.p1", 0x0000, 0x020000, CRC(bb63cdb8) SHA1(d4737ab4492bcdc0ffa3eb1cb0456f4f32e4482a), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 67)" ) -GAME_CUSTOM( 199?, m4cashln__a4, m4cashln, "ncc10r.p1", 0x0000, 0x020000, CRC(218d1301) SHA1(4bbdb69c2ac6ee13b50b1de8a17b019ce46004ba), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 68)" ) -GAME_CUSTOM( 199?, m4cashln__a5, m4cashln, "ncc10s.p1", 0x0000, 0x020000, CRC(2a18dc72) SHA1(f2434805212719db22ce163f2b338b25ca275c94), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 69)" ) -GAME_CUSTOM( 199?, m4cashln__a6, m4cashln, "ncc10y.p1", 0x0000, 0x020000, CRC(8f8f5677) SHA1(188d5d9c274147367bde644e33e162d0541cdca2), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 70)" ) +// "(C)1993 BARCREST" and "CLS 0.3" +GAME_CUSTOM( 199?, m4cashln__af, m4cashln, "cls03s.p1", 0x0000, 0x020000, CRC(cb9a86b2) SHA1(2b4aee61c0070d295ba81ffa5739ceb8e05dc0e8), "Barcrest","Cash Lines (Barcrest) (MPU4) (CLS 0.3)" ) +GAME_CUSTOM( 199?, m4cashln__3, m4cashln, "cls03ad.p1", 0x0000, 0x020000, CRC(c68249cf) SHA1(d2d16ce76a5b144827a11f7fa471c7ea558c1ce0), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 31)" ) +GAME_CUSTOM( 199?, m4cashln__4, m4cashln, "cls03b.p1", 0x0000, 0x020000, CRC(db667c56) SHA1(8a8f2374d0d02307206071718376400d5a52dc6c), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 32)" ) +GAME_CUSTOM( 199?, m4cashln__5, m4cashln, "cls03bd.p1", 0x0000, 0x020000, CRC(4b98e70a) SHA1(04e0732dd8c0283dd928da9caafd78f509a4d479), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 33)" ) +GAME_CUSTOM( 199?, m4cashln__6, m4cashln, "cls03c.p1", 0x0000, 0x020000, CRC(ec2cc144) SHA1(bc2879e4487ad5638e2818f4c8c5b23ab660cecc), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 34)" ) +GAME_CUSTOM( 199?, m4cashln__7, m4cashln, "cls03d.p1", 0x0000, 0x020000, CRC(a67d7720) SHA1(556128a8c464a5d1de0ebb0de8ce87a7ea0813d3), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 35)" ) +GAME_CUSTOM( 199?, m4cashln__8, m4cashln, "cls03dh.p1", 0x0000, 0x020000, CRC(22587ac6) SHA1(04cacccfebdc01046e048b2c98a05f3f97fcd6f3), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 36)" ) +GAME_CUSTOM( 199?, m4cashln__9, m4cashln, "cls03dk.p1", 0x0000, 0x020000, CRC(015f4f5c) SHA1(fd0e622217d42f52cfba78989e8cf843cb08a17d), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 37)" ) +GAME_CUSTOM( 199?, m4cashln__aa, m4cashln, "cls03dr.p1", 0x0000, 0x020000, CRC(b250f46d) SHA1(02f04778ce6fb674ba9760b0fa9828b76a58239a), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 38)" ) +GAME_CUSTOM( 199?, m4cashln__ab, m4cashln, "cls03dy.p1", 0x0000, 0x020000, CRC(86bc6fa2) SHA1(40a2bb1148989b5895b0f58417f404f7b035b472), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 39)" ) +GAME_CUSTOM( 199?, m4cashln__ac, m4cashln, "cls03h.p1", 0x0000, 0x020000, CRC(b2a6e19a) SHA1(668527a7939ab70deb03b1db8a4a2629fb332815), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 40)" ) +GAME_CUSTOM( 199?, m4cashln__ad, m4cashln, "cls03k.p1", 0x0000, 0x020000, CRC(91a1d400) SHA1(9e4ccd4f4119471d66a22b14a22312149faf28c0), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 41)" ) +GAME_CUSTOM( 199?, m4cashln__ae, m4cashln, "cls03r.p1", 0x0000, 0x020000, CRC(22ae6f31) SHA1(b08ec5eb5bae377b829a14065b54ec1dbbc55677), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 42)" ) +GAME_CUSTOM( 199?, m4cashln__ag, m4cashln, "cls03y.p1", 0x0000, 0x020000, CRC(1642f4fe) SHA1(b4e3fa360fdc1908cafe61d833c5097cee965404), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 44)" ) +// "(C)1993 BARCREST" and "CLI 1.2" +GAME_CUSTOM( 199?, m4cashln__1, m4cashln, "cli12s.p1", 0x0000, 0x020000, CRC(ef5aa578) SHA1(c4c288a297f5f6cd0712c396237aa3bf1363e188), "Barcrest","Cash Lines (Barcrest) (MPU4) (CLI 1.2)" ) +GAME_CUSTOM( 199?, m4cashln__q, m4cashln, "cli12ad.p1", 0x0000, 0x020000, CRC(d6c03a42) SHA1(203ea61def95c2ea0a9ea1f808056122d87993ff), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4cashln__r, m4cashln, "cli12b.p1", 0x0000, 0x020000, CRC(9d4245da) SHA1(604b1e68d271784b982cde81e3675298662df1bc), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4cashln__s, m4cashln, "cli12bd.p1", 0x0000, 0x020000, CRC(9c079214) SHA1(1ee6362d876dd5aaa1699186ee905b48755a80de), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4cashln__t, m4cashln, "cli12d.p1", 0x0000, 0x020000, CRC(1058eb1f) SHA1(2c4305679c829cbf6c34d2627a1e8e366c5be5c1), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4cashln__u, m4cashln, "cli12dh.p1", 0x0000, 0x020000, CRC(bf94605f) SHA1(e2ae87041791ba92d8db69c7a3b40b62c97cf941), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4cashln__v, m4cashln, "cli12dk.p1", 0x0000, 0x020000, CRC(65cf8173) SHA1(f7ed6227b3e57d50e327f3ff72b9aafafa51da63), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4cashln__w, m4cashln, "cli12dr.p1", 0x0000, 0x020000, CRC(ff215fca) SHA1(40cab82f6a7f5229b365236b4758e73b2a3dce1e), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4cashln__x, m4cashln, "cli12dy.p1", 0x0000, 0x020000, CRC(51231abc) SHA1(ae80491fb1496f6fccbd46f424fe1d45640da8e2), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4cashln__y, m4cashln, "cli12h.p1", 0x0000, 0x020000, CRC(bed1b791) SHA1(d017f62a099475786fa15c7a185574301b80dbdd), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4cashln__z, m4cashln, "cli12k.p1", 0x0000, 0x020000, CRC(648a56bd) SHA1(25ad92789b12512b8c65cc912080f62abfe101a6), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4cashln__0, m4cashln, "cli12r.p1", 0x0000, 0x020000, CRC(fe648804) SHA1(27e74aea209b90dc3d8cf46474e271d68d9af7e2), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4cashln__2, m4cashln, "cli12y.p1", 0x0000, 0x020000, CRC(5066cd72) SHA1(03cef55b4fff8fb6edd804fdbc4076db6b234614), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 30)" ) +// "(C)1993 BARCREST" and "CLI 1.1" +GAME_CUSTOM( 199?, m4cashln__o, m4cashln, "cli11s.p1", 0x0000, 0x020000, CRC(e5ad1734) SHA1(69fb5c81ae04c98920d84f829be14983168196e5), "Barcrest","Cash Lines (Barcrest) (MPU4) (CLI 1.1)" ) +GAME_CUSTOM( 199?, m4cashln__d, m4cashln, "cli11ad.p1", 0x0000, 0x020000, CRC(ab47d9b3) SHA1(e501bb61de76ffe6618be03a59614b36e71e031b), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4cashln__e, m4cashln, "cli11b.p1", 0x0000, 0x020000, CRC(4adcaa58) SHA1(027dda275f32e49e6c0f9ff4e7d42472bdd3174e), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4cashln__f, m4cashln, "cli11bd.p1", 0x0000, 0x020000, CRC(e18071e5) SHA1(e219be249b5992808745a4c668686dfad77e2837), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4cashln__g, m4cashln, "cli11d.p1", 0x0000, 0x020000, CRC(c7c6049d) SHA1(6ad1caed1272ff4e6902843bf2420020ca2d0cb4), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4cashln__h, m4cashln, "cli11dh.p1", 0x0000, 0x020000, CRC(c21383ae) SHA1(01a840f160aacbb2b253ab6ba0a915f7055cc381), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4cashln__i, m4cashln, "cli11dk.p1", 0x0000, 0x020000, CRC(18486282) SHA1(5910a68539f5343661f8e55105c767067633ef1c), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4cashln__j, m4cashln, "cli11dr.p1", 0x0000, 0x020000, CRC(82a6bc3b) SHA1(c12b46234bebe408374a7fc3e18bf79942434d95), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4cashln__k, m4cashln, "cli11dy.p1", 0x0000, 0x020000, CRC(2ca4f94d) SHA1(4d0345e3c819d8dd48c559f01c118430d5ccdea2), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4cashln__l, m4cashln, "cli11h.p1", 0x0000, 0x020000, CRC(694f5813) SHA1(3acf84d6e5060e7054097aa2601c9c2833a2d524), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4cashln__m, m4cashln, "cli11k.p1", 0x0000, 0x020000, CRC(b314b93f) SHA1(e94472e1d1e345be84b277088dc852ed75117344), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4cashln__n, m4cashln, "cli11r.p1", 0x0000, 0x020000, CRC(29fa6786) SHA1(8bd7a7b0cf84615a126ebed494954ed2b7bc0ec4), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4cashln__p, m4cashln, "cli11y.p1", 0x0000, 0x020000, CRC(87f822f0) SHA1(701a8c88be972b8363490e92e98f37acd493ef07), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 17)" ) +// "(C)1993 BARCREST" and "CLI 1.0" +GAME_CUSTOM( 199?, m4cashln__c, m4cashln, "cli10s", 0x0000, 0x020000, CRC(9aca737d) SHA1(6669c8b7a192b1c67caad62aad528b08737f7e73), "Barcrest","Cash Lines (Barcrest) (MPU4) (CLI 1.0)" ) +// "(C)1993 BARCREST" and "NCL 1.1" +GAME_CUSTOM( 199?, m4cashln__bi, m4cashln, "ncl11s.p1", 0x0000, 0x020000, CRC(06ae30c0) SHA1(eb7fde45e0a0aa08f3c788f581b48adc8ee86a79), "Barcrest","Cash Lines (Barcrest) (MPU4) (NCL 1.1)" ) GAME_CUSTOM( 199?, m4cashln__a7, m4cashln, "ncl11ad.p1", 0x0000, 0x020000, CRC(73ba0558) SHA1(d86b2469d7cbe5f9271f8e8f3c6ee1659d72b3c6), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 71)" ) GAME_CUSTOM( 199?, m4cashln__a8, m4cashln, "ncl11b.p1", 0x0000, 0x020000, CRC(f6e8ee46) SHA1(6d0da96b6cba4482c254fef6ba44a4e80fc0fda4), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 72)" ) GAME_CUSTOM( 199?, m4cashln__a9, m4cashln, "ncl11bd.p1", 0x0000, 0x020000, CRC(397dad0e) SHA1(ad764f376b34f01578fc2ce78351f89642601252), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 73)" ) @@ -3101,10 +3179,25 @@ GAME_CUSTOM( 199?, m4cashln__be, m4cashln, "ncl11dy.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4cashln__bf, m4cashln, "ncl11h.p1", 0x0000, 0x020000, CRC(d57b1c0d) SHA1(cfb0e78ecba28a5ebe6e272190c473023544452b), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 79)" ) GAME_CUSTOM( 199?, m4cashln__bg, m4cashln, "ncl11k.p1", 0x0000, 0x020000, CRC(0f20fd21) SHA1(25c3a7fe77819613de7bf4218759b096a05e5605), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 80)" ) GAME_CUSTOM( 199?, m4cashln__bh, m4cashln, "ncl11r.p1", 0x0000, 0x020000, CRC(95ce2398) SHA1(72aa7ec767a81c568b442f63c3cf916925b22a4a), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 81)" ) -GAME_CUSTOM( 199?, m4cashln__bi, m4cashln, "ncl11s.p1", 0x0000, 0x020000, CRC(06ae30c0) SHA1(eb7fde45e0a0aa08f3c788f581b48adc8ee86a79), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 82)" ) GAME_CUSTOM( 199?, m4cashln__bj, m4cashln, "ncl11y.p1", 0x0000, 0x020000, CRC(3bcc66ee) SHA1(795ecf1e34ae44d7aea70512124b66b0bed3e875), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 83)" ) - - +// "(C)1993 BARCREST" and "NCC 1.0" +GAME_CUSTOM( 199?, m4cashln__a5, m4cashln, "ncc10s.p1", 0x0000, 0x020000, CRC(2a18dc72) SHA1(f2434805212719db22ce163f2b338b25ca275c94), "Barcrest","Cash Lines (Barcrest) (MPU4) (NCC 1.0)" ) +GAME_CUSTOM( 199?, m4cashln__au, m4cashln, "ncc10ad.p1", 0x0000, 0x020000, CRC(d4be9280) SHA1(cbae1aad2dc8d88df9869755063a7a1097995417), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 58)" ) +GAME_CUSTOM( 199?, m4cashln__av, m4cashln, "ncc10b.p1", 0x0000, 0x020000, CRC(42abdedf) SHA1(4c428288ba9bb426ae011127896634f5995f8a6c), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 59)" ) +GAME_CUSTOM( 199?, m4cashln__aw, m4cashln, "ncc10bd.p1", 0x0000, 0x020000, CRC(9e793ad6) SHA1(7c26c6cf2b23e2b73887c2eea1e5f7566127ca95), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 60)" ) +GAME_CUSTOM( 199?, m4cashln__ax, m4cashln, "ncc10d.p1", 0x0000, 0x020000, CRC(cfb1701a) SHA1(20c47f0d30c4e4da37ce38fc097e841fb3ee89ed), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 61)" ) +GAME_CUSTOM( 199?, m4cashln__ay, m4cashln, "ncc10dh.p1", 0x0000, 0x020000, CRC(bdeac89d) SHA1(5ddde5cee5c95714e66e10a061e76603a993f446), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 62)" ) +GAME_CUSTOM( 199?, m4cashln__az, m4cashln, "ncc10dk.p1", 0x0000, 0x020000, CRC(67b129b1) SHA1(d7c0a107295ae3d11abe4138a1c76fd779777bec), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 63)" ) +GAME_CUSTOM( 199?, m4cashln__a0, m4cashln, "ncc10dr.p1", 0x0000, 0x020000, CRC(fd5ff708) SHA1(1bc5b96a46130370fc16b43804721eb392ec585f), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 64)" ) +GAME_CUSTOM( 199?, m4cashln__a1, m4cashln, "ncc10dy.p1", 0x0000, 0x020000, CRC(535db27e) SHA1(16b8d87fc22e040952988823d2c677130c17e137), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 65)" ) +GAME_CUSTOM( 199?, m4cashln__a2, m4cashln, "ncc10h.p1", 0x0000, 0x020000, CRC(61382c94) SHA1(98e4fcfedbe16773be0abbd6691ccd9f19a33684), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 66)" ) +GAME_CUSTOM( 199?, m4cashln__a3, m4cashln, "ncc10k.p1", 0x0000, 0x020000, CRC(bb63cdb8) SHA1(d4737ab4492bcdc0ffa3eb1cb0456f4f32e4482a), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 67)" ) +GAME_CUSTOM( 199?, m4cashln__a4, m4cashln, "ncc10r.p1", 0x0000, 0x020000, CRC(218d1301) SHA1(4bbdb69c2ac6ee13b50b1de8a17b019ce46004ba), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 68)" ) +GAME_CUSTOM( 199?, m4cashln__a6, m4cashln, "ncc10y.p1", 0x0000, 0x020000, CRC(8f8f5677) SHA1(188d5d9c274147367bde644e33e162d0541cdca2), "Barcrest","Cash Lines (Barcrest) (MPU4) (set 70)" ) +// no copyright string and "CLI 1.1" +GAME_CUSTOM( 199?, m4cashln__a, m4cashln, "cl15g", 0x0000, 0x020000, CRC(fdd5765d) SHA1(fee8ddc9b93934a5582d6730cfa26246191c22ff), "hack","Cash Lines (Barcrest) (MPU4) (CLI 1.1, hack)" ) +// no copyright string and "CLS 0.3" +GAME_CUSTOM( 199?, m4cashln__b, m4cashln, "cl15t", 0x0000, 0x020000, CRC(56bb9f21) SHA1(2876ac79283ea5cbee45e9ac6d5d140ea7db8e95), "hack","Cash Lines (Barcrest) (MPU4) (CLS 0.3, hack)" ) #define M4LUCKLV_EXTRA_ROMS \ ROM_REGION( 0x100000, "msm6376", 0 ) \ @@ -3119,7 +3212,14 @@ GAME_CUSTOM( 199?, m4cashln__bj, m4cashln, "ncl11y.p1", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4lucklv, 0, "llvs.p1", 0x0000, 0x010000, CRC(30727bc9) SHA1(c32112d0181f629540b31ce9959834111dbf7e0e), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "LLV 0.2" +GAME_CUSTOM( 199?, m4lucklv, 0, "llvs.p1", 0x0000, 0x010000, CRC(30727bc9) SHA1(c32112d0181f629540b31ce9959834111dbf7e0e), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (LLV 0.2)" ) +GAME_CUSTOM( 199?, m4lucklv__af, m4lucklv, "llvb.p1", 0x0000, 0x010000, CRC(72e27d9b) SHA1(2355c48c4ac8bc94dcea74b04e68be8a461f09a3), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 43)" ) +GAME_CUSTOM( 199?, m4lucklv__ag, m4lucklv, "llvc.p1", 0x0000, 0x010000, CRC(00ac2db0) SHA1(a8ec3a2862abf4eb56734d15cd9b7db0333c98f2), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 44)" ) +GAME_CUSTOM( 199?, m4lucklv__ah, m4lucklv, "llvd.p1", 0x0000, 0x010000, CRC(fdb4dcc5) SHA1(77fa51dcf1895b83182e7ee4137ed68c06d2593b), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 45)" ) +GAME_CUSTOM( 199?, m4lucklv__ai, m4lucklv, "llvr.p1", 0x0000, 0x010000, CRC(a806c43f) SHA1(8c36d50c911f956a0458f942cc8e313104f00005), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 46)" ) +// "(C)1991 BARCREST" and "LL3 0.1" +GAME_CUSTOM( 199?, m4lucklv__h, m4lucklv, "ll3s.p1", 0x0000, 0x010000, CRC(fdda2e78) SHA1(f68b274b6af7b44347b8f684f6e8a9342d222590), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1)" ) GAME_CUSTOM( 199?, m4lucklv__a, m4lucklv, "ll3ad.p1", 0x0000, 0x010000, CRC(e79e7f98) SHA1(7b3a22978f2f5a0b6062f0330fef15ce0e91c010), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4lucklv__b, m4lucklv, "ll3b.p1", 0x0000, 0x010000, CRC(bcbbe728) SHA1(4930419e0e524a91687386e8a2fce2150cd8a172), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4lucklv__c, m4lucklv, "ll3bd.p1", 0x0000, 0x010000, CRC(aa4e9e1e) SHA1(ebacd42049916a32d1738813d544e34507dd650a), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 4)" ) @@ -3127,8 +3227,9 @@ GAME_CUSTOM( 199?, m4lucklv__d, m4lucklv, "ll3d.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4lucklv__e, m4lucklv, "ll3dk.p1", 0x0000, 0x010000, CRC(c03baaef) SHA1(f3c4394d0c9929d439551aa61784a51f67e2dc3a), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4lucklv__f, m4lucklv, "ll3dy.p1", 0x0000, 0x010000, CRC(e73fa943) SHA1(3b2a372028ffa5200510e976cd4e8eba8e6c0612), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4lucklv__g, m4lucklv, "ll3k.p1", 0x0000, 0x010000, CRC(2519ede2) SHA1(d9e4b57824cddc04d1166cee16c309a77ff510d6), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4lucklv__h, m4lucklv, "ll3s.p1", 0x0000, 0x010000, CRC(fdda2e78) SHA1(f68b274b6af7b44347b8f684f6e8a9342d222590), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4lucklv__i, m4lucklv, "ll3y.p1", 0x0000, 0x010000, CRC(195023d4) SHA1(a4fabaa44fa76c4e77fb40bb89c65dadeab5927c), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 10)" ) +// "(C)1991 BARCREST" and "LL8 0.1" +GAME_CUSTOM( 199?, m4lucklv__r, m4lucklv, "ll8s.p1", 0x0000, 0x010000, CRC(1448c6fe) SHA1(211627a0f397658a8241c5e4e138a1a609beaabe), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1)" ) GAME_CUSTOM( 199?, m4lucklv__j, m4lucklv, "ll8ad.p1", 0x0000, 0x010000, CRC(08f307ef) SHA1(1a613d8d2cbadffe1a97a7e2c3eafc709e6895c7), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4lucklv__k, m4lucklv, "ll8b.p1", 0x0000, 0x010000, CRC(7dd12d38) SHA1(4466bca407500741e74dfec07361d030c1736c18), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4lucklv__l, m4lucklv, "ll8bd.p1", 0x0000, 0x010000, CRC(3eef6aa5) SHA1(e01b95ca085a326207ef2ada1d5f31745b9c15c9), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 13)" ) @@ -3137,8 +3238,9 @@ GAME_CUSTOM( 199?, m4lucklv__n, m4lucklv, "ll8d.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4lucklv__o, m4lucklv, "ll8dk.p1", 0x0000, 0x010000, CRC(f325c2af) SHA1(25a0818776c0cf4edcd2678fe457e21bf10dfe61), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 16)" ) GAME_CUSTOM( 199?, m4lucklv__p, m4lucklv, "ll8dy.p1", 0x0000, 0x010000, CRC(10b33cc3) SHA1(fe0a41b98b1f3dde82365c30236586737c5fdb9d), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4lucklv__q, m4lucklv, "ll8k.p1", 0x0000, 0x010000, CRC(d7c284be) SHA1(c33dbfa15ead02a581b4a874a6981e6094537fb4), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4lucklv__r, m4lucklv, "ll8s.p1", 0x0000, 0x010000, CRC(1448c6fe) SHA1(211627a0f397658a8241c5e4e138a1a609beaabe), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4lucklv__s, m4lucklv, "ll8y.p1", 0x0000, 0x010000, CRC(eb8b4a88) SHA1(f0de0d50de848e7fea35ebe754f20eaa1c02f295), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 20)" ) +// "(C)1991 BARCREST" and "LLT 0.3" +GAME_CUSTOM( 199?, m4lucklv__2, m4lucklv, "llts.p1", 0x0000, 0x010000, CRC(3ccc9e2f) SHA1(15c90bbc135ddaa05768bde6970bda15f1b69d44), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3)" ) GAME_CUSTOM( 199?, m4lucklv__t, m4lucklv, "lltad.p1", 0x0000, 0x010000, CRC(35e43f52) SHA1(4ca2c43c59f5c5c3f53527bbf8128f0e92a3ca5c), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4lucklv__u, m4lucklv, "lltb.p1", 0x0000, 0x010000, CRC(ddc19b4e) SHA1(b44a56e5d543d895e37986d19649d7afa8d3d238), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 22)" ) GAME_CUSTOM( 199?, m4lucklv__v, m4lucklv, "lltbd.p1", 0x0000, 0x010000, CRC(fe25aa83) SHA1(68ccae76938af64e0c5df0e56333fd6814734779), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 23)" ) @@ -3148,8 +3250,9 @@ GAME_CUSTOM( 199?, m4lucklv__y, m4lucklv, "lltdr.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4lucklv__z, m4lucklv, "lltdy.p1", 0x0000, 0x010000, CRC(55c4a8df) SHA1(a7cc7fa2aa893a3f134d6d1c04a16ecbcad99a40), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 27)" ) GAME_CUSTOM( 199?, m4lucklv__0, m4lucklv, "lltk.p1", 0x0000, 0x010000, CRC(88c7f5e5) SHA1(c30651c6daa6c82157879e72a74ee5e03f9ea64f), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4lucklv__1, m4lucklv, "lltr.p1", 0x0000, 0x010000, CRC(189c8fc7) SHA1(c06bedd4477ead2c071374d17fc0ef617ef6e924), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4lucklv__2, m4lucklv, "llts.p1", 0x0000, 0x010000, CRC(3ccc9e2f) SHA1(15c90bbc135ddaa05768bde6970bda15f1b69d44), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 30)" ) GAME_CUSTOM( 199?, m4lucklv__3, m4lucklv, "llty.p1", 0x0000, 0x010000, CRC(85f7a729) SHA1(b3a58071bb6dae36354280a8f0de1faaa190899f), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 31)" ) +// "(C)1991 BARCREST" and "LLU 0.1" +GAME_CUSTOM( 199?, m4lucklv__ad, m4lucklv, "llus.p1", 0x0000, 0x010000, CRC(07745135) SHA1(ec602d01910ac52d20ff9c54914a5261f538233b), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1)" ) GAME_CUSTOM( 199?, m4lucklv__4, m4lucklv, "lluad.p1", 0x0000, 0x010000, CRC(7a2acea9) SHA1(dfb5763664143dec4927e2a8f4088f04ca85c458), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4lucklv__5, m4lucklv, "llub.p1", 0x0000, 0x010000, CRC(d3683b6b) SHA1(e67e996f5f2ed55fbc47b7f1a0e225125baf2a99), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 33)" ) GAME_CUSTOM( 199?, m4lucklv__6, m4lucklv, "llubd.p1", 0x0000, 0x010000, CRC(4c36a3e3) SHA1(afbe3c4d60dd92e7bc34915f3d15cadd46da6738), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 34)" ) @@ -3159,12 +3262,7 @@ GAME_CUSTOM( 199?, m4lucklv__9, m4lucklv, "lludr.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4lucklv__aa, m4lucklv, "lludy.p1", 0x0000, 0x010000, CRC(6d042cfe) SHA1(3812f99d45cff5f147a7965f3cb8c96eda9a2e8d), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 38)" ) GAME_CUSTOM( 199?, m4lucklv__ab, m4lucklv, "lluk.p1", 0x0000, 0x010000, CRC(476cd76c) SHA1(1a122bfbe3d95b2ce9ecf18bc6d4f85d1ea09bc7), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 39)" ) GAME_CUSTOM( 199?, m4lucklv__ac, m4lucklv, "llur.p1", 0x0000, 0x010000, CRC(89a1a999) SHA1(e21007e2db0f69f0753becbf499c54cb29f46a39), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4lucklv__ad, m4lucklv, "llus.p1", 0x0000, 0x010000, CRC(07745135) SHA1(ec602d01910ac52d20ff9c54914a5261f538233b), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 41)" ) GAME_CUSTOM( 199?, m4lucklv__ae, m4lucklv, "lluy.p1", 0x0000, 0x010000, CRC(1cfc18d6) SHA1(eb34e5a43cee1d4b64443f1fe2b1d12ccf35b847), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4lucklv__af, m4lucklv, "llvb.p1", 0x0000, 0x010000, CRC(72e27d9b) SHA1(2355c48c4ac8bc94dcea74b04e68be8a461f09a3), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 43)" ) -GAME_CUSTOM( 199?, m4lucklv__ag, m4lucklv, "llvc.p1", 0x0000, 0x010000, CRC(00ac2db0) SHA1(a8ec3a2862abf4eb56734d15cd9b7db0333c98f2), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 44)" ) -GAME_CUSTOM( 199?, m4lucklv__ah, m4lucklv, "llvd.p1", 0x0000, 0x010000, CRC(fdb4dcc5) SHA1(77fa51dcf1895b83182e7ee4137ed68c06d2593b), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 45)" ) -GAME_CUSTOM( 199?, m4lucklv__ai, m4lucklv, "llvr.p1", 0x0000, 0x010000, CRC(a806c43f) SHA1(8c36d50c911f956a0458f942cc8e313104f00005), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (set 46)" ) @@ -3182,9 +3280,8 @@ GAME_CUSTOM( 199?, m4lucklv__ai, m4lucklv, "llvr.p1", 0x0000, 0x010000, CRC ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4luckst, 0, "lss06s.p1", 0x0000, 0x020000, CRC(b6a69478) SHA1(6b05b7f9af94a83adfdff328d4132f72a1dfb19f), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4luckst__a, m4luckst, "ls15g", 0x0000, 0x020000, CRC(b942ac91) SHA1(e77b2acd07cac9b747731f9e0637112fc6bf94c7), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4luckst__b, m4luckst, "ls15t", 0x0000, 0x020000, CRC(20447a20) SHA1(ca2ba566317ca87afcc2501e551c1326b9712526), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 3)" ) +// "(C)1993 BARCREST" and "LSS 0.6" +GAME_CUSTOM( 199?, m4luckst, 0, "lss06s.p1", 0x0000, 0x020000, CRC(b6a69478) SHA1(6b05b7f9af94a83adfdff328d4132f72a1dfb19f), "Barcrest","Lucky Strike (Barcrest) (MPU4) (LSS 0.6)" ) GAME_CUSTOM( 199?, m4luckst__c, m4luckst, "lss06ad.p1", 0x0000, 0x020000, CRC(9a512ec1) SHA1(c1eb4d0f5c915f392411d0ff2c931eb22a41b3a8), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4luckst__d, m4luckst, "lss06b.p1", 0x0000, 0x020000, CRC(f2e1cb20) SHA1(7867085e0d1166419360bf1b6f39e3ec31bf2c7f), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4luckst__e, m4luckst, "lss06bd.p1", 0x0000, 0x020000, CRC(174b8004) SHA1(9cce3124797b80886ab744885444f7a69711f6f1), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 6)" ) @@ -3198,6 +3295,8 @@ GAME_CUSTOM( 199?, m4luckst__l, m4luckst, "lss06h.p1", 0x0000, 0 GAME_CUSTOM( 199?, m4luckst__m, m4luckst, "lss06k.p1", 0x0000, 0x020000, CRC(b8266376) SHA1(7d84dce05224c8882ed103796a054b50e2390234), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4luckst__n, m4luckst, "lss06r.p1", 0x0000, 0x020000, CRC(0b29d847) SHA1(3412bff6f38ab12b9d5e30f1ed3e327ad58dc470), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 15)" ) GAME_CUSTOM( 199?, m4luckst__p, m4luckst, "lss06y.p1", 0x0000, 0x020000, CRC(3fc54388) SHA1(f57667cc0263efe05d0f0538fae2f4f8adc0c405), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 17)" ) +// "(C)1993 BARCREST" and "LSS 0.7" +GAME_CUSTOM( 199?, m4luckst__2, m4luckst, "lss07s.p1", 0x0000, 0x020000, CRC(f4546d1a) SHA1(fed65704693e11087825b1dfda4df28ee6d2d3be), "Barcrest","Lucky Strike (Barcrest) (MPU4) (LSS 0.7)" ) GAME_CUSTOM( 199?, m4luckst__q, m4luckst, "lss07ad.p1", 0x0000, 0x020000, CRC(c4e113c0) SHA1(e5e81c08c2487ee8802ff4374b3affdff3e70003), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4luckst__r, m4luckst, "lss07b.p1", 0x0000, 0x020000, CRC(eec5db67) SHA1(c7b76b50524b256ec42adc33c99f933790d9d578), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4luckst__s, m4luckst, "lss07bd.p1", 0x0000, 0x020000, CRC(49fbbd05) SHA1(4edebdf607ae996e0f4a2df02f181e75b784e1ac), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 20)" ) @@ -3210,8 +3309,9 @@ GAME_CUSTOM( 199?, m4luckst__y, m4luckst, "lss07dy.p1", 0x0000, 0 GAME_CUSTOM( 199?, m4luckst__z, m4luckst, "lss07h.p1", 0x0000, 0x020000, CRC(20298b24) SHA1(004d6d04d9e8223e7b97dbd39abc66e80d6ea0eb), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 27)" ) GAME_CUSTOM( 199?, m4luckst__0, m4luckst, "lss07k.p1", 0x0000, 0x020000, CRC(a4027331) SHA1(64320519f22ebac3fbb7d93e2e70e999e8e7cd29), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4luckst__1, m4luckst, "lss07r.p1", 0x0000, 0x020000, CRC(170dc800) SHA1(bebd8b41b756c7ca5ddc60647e6031ac4cf874db), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4luckst__2, m4luckst, "lss07s.p1", 0x0000, 0x020000, CRC(f4546d1a) SHA1(fed65704693e11087825b1dfda4df28ee6d2d3be), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 30)" ) GAME_CUSTOM( 199?, m4luckst__3, m4luckst, "lss07y.p1", 0x0000, 0x020000, CRC(23e153cf) SHA1(75c5c13ad735aba1bf62d26eb37f9aaa5804fdd2), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 31)" ) +// "(C)1993 BARCREST" and "LST 0.9" +GAME_CUSTOM( 199?, m4luckst__af, m4luckst, "lst09s.p1", 0x0000, 0x020000, CRC(285d0255) SHA1(89f74ad19525b636d6e1ea36308b659389f68245), "Barcrest","Lucky Strike (Barcrest) (MPU4) (LST 0.9)" ) GAME_CUSTOM( 199?, m4luckst__4, m4luckst, "lst09ad.p1", 0x0000, 0x020000, CRC(2fc94fb9) SHA1(cda6ce0a9d9e124326e29b57bc553b517408f1c6), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4luckst__5, m4luckst, "lst09b.p1", 0x0000, 0x020000, CRC(c5b8927f) SHA1(15d227be23404b9393cb3d3625fd054eaf0da3a4), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 33)" ) GAME_CUSTOM( 199?, m4luckst__6, m4luckst, "lst09bd.p1", 0x0000, 0x020000, CRC(650ee7ef) SHA1(2422e4f9857376a029f6b4df46b5b81c73b2640a), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 34)" ) @@ -3223,8 +3323,9 @@ GAME_CUSTOM( 199?, m4luckst__ab, m4luckst, "lst09dy.p1", 0x0000, 0 GAME_CUSTOM( 199?, m4luckst__ac, m4luckst, "lst09h.p1", 0x0000, 0x020000, CRC(e62b6034) SHA1(37ae4b6250795087475ea8e51b49e225572118b4), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4luckst__ad, m4luckst, "lst09k.p1", 0x0000, 0x020000, CRC(3c708118) SHA1(61ab1751dec08f7407fd3360cf129736d7d5ec16), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 41)" ) GAME_CUSTOM( 199?, m4luckst__ae, m4luckst, "lst09r.p1", 0x0000, 0x020000, CRC(a69e5fa1) SHA1(10ca0a2135c4d6832693bf97812f4eb5f1380efd), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4luckst__af, m4luckst, "lst09s.p1", 0x0000, 0x020000, CRC(285d0255) SHA1(89f74ad19525b636d6e1ea36308b659389f68245), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4luckst__ag, m4luckst, "lst09y.p1", 0x0000, 0x020000, CRC(089c1ad7) SHA1(bcfacbeaf1845d91f18c6f57bf166c82469cb460), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 44)" ) +// "(C)1993 BARCREST" and "LST 1.0" +GAME_CUSTOM( 199?, m4luckst__as, m4luckst, "lst10s.p1", 0x0000, 0x020000, CRC(0e1ad810) SHA1(bd439f2857ebbde2b7941c411ac7edf7c66af7eb), "Barcrest","Lucky Strike (Barcrest) (MPU4) (LST 1.0)" ) GAME_CUSTOM( 199?, m4luckst__ah, m4luckst, "lst10ad.p1", 0x0000, 0x020000, CRC(41e8dd7d) SHA1(2b794554f57dfb5b6fe9f64b9d3e6b73ec306056), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 45)" ) GAME_CUSTOM( 199?, m4luckst__ai, m4luckst, "lst10b.p1", 0x0000, 0x020000, CRC(afd0d023) SHA1(7ee5c004d9d0cacf2d55457f9846fd638b584482), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 46)" ) GAME_CUSTOM( 199?, m4luckst__aj, m4luckst, "lst10bd.p1", 0x0000, 0x020000, CRC(0b2f752b) SHA1(655f50bbe163fca4386b356e7db0b019eba5d94f), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 47)" ) @@ -3236,11 +3337,15 @@ GAME_CUSTOM( 199?, m4luckst__ao, m4luckst, "lst10dy.p1", 0x0000, 0 GAME_CUSTOM( 199?, m4luckst__ap, m4luckst, "lst10h.p1", 0x0000, 0x020000, CRC(8c432268) SHA1(c8707c587ab2cc1450bd47069206767d2d930b29), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 53)" ) GAME_CUSTOM( 199?, m4luckst__aq, m4luckst, "lst10k.p1", 0x0000, 0x020000, CRC(5618c344) SHA1(61565a9814fd1b4e77944e73d8f18f8545685928), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 54)" ) GAME_CUSTOM( 199?, m4luckst__ar, m4luckst, "lst10r.p1", 0x0000, 0x020000, CRC(ccf61dfd) SHA1(01772dd0b252b41b5cba024a717d5898e74971f8), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 55)" ) -GAME_CUSTOM( 199?, m4luckst__as, m4luckst, "lst10s.p1", 0x0000, 0x020000, CRC(0e1ad810) SHA1(bd439f2857ebbde2b7941c411ac7edf7c66af7eb), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 56)" ) GAME_CUSTOM( 199?, m4luckst__at, m4luckst, "lst10y.p1", 0x0000, 0x020000, CRC(62f4588b) SHA1(ee7c06e2cc79f7d18d45b0a1793e5279a46ffcc0), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 57)" ) -GAME_CUSTOM( 199?, m4luckst__au, m4luckst, "lstrikegame10-8t.bin", 0x0000, 0x020000, CRC(709c2dbf) SHA1(bba8d7af9502911ffa1c086b993484ab78ad38ac), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 58)" ) -GAME_CUSTOM( 199?, m4luckst__av, m4luckst, "ls55", 0x0000, 0x020000, CRC(823e805b) SHA1(17f09fd53188950a8d98ac04cd94785947b52b01), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4luckst__aw, m4luckst, "ls__xa_x.1_1", 0x0000, 0x020000, CRC(a9642503) SHA1(2765c4d8943678446c516918035d7a888a812aae), "Barcrest","Lucky Strike (Barcrest) (MPU4) (set 60)" ) +// "(C)1998 BWB" and "LSS 1.0" (one of these is probably a hack) +GAME_CUSTOM( 199?, m4luckst__av, m4luckst, "ls55", 0x0000, 0x020000, CRC(823e805b) SHA1(17f09fd53188950a8d98ac04cd94785947b52b01), "Bwb","Lucky Strike (Barcrest) (MPU4) (LSS 1.0, set 1)" ) // bad chr alarm +GAME_CUSTOM( 199?, m4luckst__aw, m4luckst, "ls__xa_x.1_1", 0x0000, 0x020000, CRC(a9642503) SHA1(2765c4d8943678446c516918035d7a888a812aae), "Bwb","Lucky Strike (Barcrest) (MPU4) (LSS 1.0, set 2)" ) +// no copyright string and "LST 0.9" +GAME_CUSTOM( 199?, m4luckst__a, m4luckst, "ls15g", 0x0000, 0x020000, CRC(b942ac91) SHA1(e77b2acd07cac9b747731f9e0637112fc6bf94c7), "hack","Lucky Strike (Barcrest) (MPU4) (LST 0.9, hack)" ) +// no copyright string and "LSS 0.6" +GAME_CUSTOM( 199?, m4luckst__au, m4luckst, "lstrikegame10-8t.bin", 0x0000, 0x020000, CRC(709c2dbf) SHA1(bba8d7af9502911ffa1c086b993484ab78ad38ac), "hack","Lucky Strike (Barcrest) (MPU4) (LSS 0.6, hack, set 1)" ) +GAME_CUSTOM( 199?, m4luckst__b, m4luckst, "ls15t", 0x0000, 0x020000, CRC(20447a20) SHA1(ca2ba566317ca87afcc2501e551c1326b9712526), "hack","Lucky Strike (Barcrest) (MPU4) (LSS 0.6, hack, set 2)" ) #define M4TENTEN_EXTRA_ROMS \ @@ -3255,18 +3360,8 @@ GAME_CUSTOM( 199?, m4luckst__aw, m4luckst, "ls__xa_x.1_1", 0x0000, 0 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4tenten, 0, "t2002s.p1", 0x0000, 0x010000, CRC(6cd9fa10) SHA1(8efe36e3fc5b709fa4363194634686d62b5d6609), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4tenten__a, m4tenten, "n2503ad.p1", 0x0000, 0x010000, CRC(c84150e6) SHA1(8f143c26c6026a413bdd65ca148d78dead1d2474), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4tenten__b, m4tenten, "n2503b.p1", 0x0000, 0x010000, CRC(dd74fb57) SHA1(402f632f48cf1153cb8c22879a7482c82c8fecfe), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4tenten__c, m4tenten, "n2503bd.p1", 0x0000, 0x010000, CRC(62542d80) SHA1(90ebfb92891a7aaa4814b733c0e0df06bb292a4f), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4tenten__d, m4tenten, "n2503d.p1", 0x0000, 0x010000, CRC(b8c64fa4) SHA1(f53d9bdf97cc021399c8598a051ad5bcb7a611b5), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4tenten__e, m4tenten, "n2503dk.p1", 0x0000, 0x010000, CRC(28715d57) SHA1(1ab648a7f5dde5575e5ab5653823e4b88580677f), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4tenten__f, m4tenten, "n2503dr.p1", 0x0000, 0x010000, CRC(59932d11) SHA1(9895392ce48569e23816646124933192b6f720e3), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4tenten__g, m4tenten, "n2503dy.p1", 0x0000, 0x010000, CRC(287b8ee7) SHA1(10e428c73911e01ba53dd4321eb2c5a58e35441e), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4tenten__h, m4tenten, "n2503k.p1", 0x0000, 0x010000, CRC(f240b5ba) SHA1(fca353213447e50e29f1cd2c0d3895c437ae9336), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4tenten__i, m4tenten, "n2503r.p1", 0x0000, 0x010000, CRC(afaacb9d) SHA1(1bf3d648b82a8160ff1a38d92d2bb3ce1b41125e), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4tenten__j, m4tenten, "n2503s.p1", 0x0000, 0x010000, CRC(0d9e912c) SHA1(67d888fde242e81a1808f36e1e81c0c5724e99a7), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4tenten__k, m4tenten, "n2503y.p1", 0x0000, 0x010000, CRC(b365cff0) SHA1(65ab9d624bec1efc0590cec739541887ca20fc6f), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 12)" ) +// "(C)1991 BARCREST" and "T20 0.2" +GAME_CUSTOM( 199?, m4tenten, 0, "t2002s.p1", 0x0000, 0x010000, CRC(6cd9fa10) SHA1(8efe36e3fc5b709fa4363194634686d62b5d6609), "Barcrest","10 X 10 (Barcrest) (MPU4) (T20 0.2)" ) GAME_CUSTOM( 199?, m4tenten__l, m4tenten, "t2002ad.p1", 0x0000, 0x010000, CRC(f7903f0d) SHA1(8a10ff31ddaad817a31d39ea9a66d4453d8767bb), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4tenten__m, m4tenten, "t2002b.p1", 0x0000, 0x010000, CRC(90e150ea) SHA1(abc8456de42cef605e1f0e80a97b25cd51d90707), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4tenten__n, m4tenten, "t2002bd.p1", 0x0000, 0x010000, CRC(110c0d5c) SHA1(a263c678ebd58c95f33b198be544b726ac506449), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 15)" ) @@ -3277,6 +3372,20 @@ GAME_CUSTOM( 199?, m4tenten__r, m4tenten, "t2002dy.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4tenten__s, m4tenten, "t2002k.p1", 0x0000, 0x010000, CRC(34628c9d) SHA1(3547dac8fd73abcba0f088c3f2db02ef8a40cf4e), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 20)" ) GAME_CUSTOM( 199?, m4tenten__t, m4tenten, "t2002r.p1", 0x0000, 0x010000, CRC(9c639380) SHA1(c044b7fc53daa01d93c701a3d3c786ab6a883e76), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4tenten__u, m4tenten, "t2002y.p1", 0x0000, 0x010000, CRC(dcf2ac8c) SHA1(e745534f45148ff33e6b1e503108a39e27d8bdae), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 22)" ) +// "(C)1991 BARCREST" and "N25 0.3" +GAME_CUSTOM( 199?, m4tenten__j, m4tenten, "n2503s.p1", 0x0000, 0x010000, CRC(0d9e912c) SHA1(67d888fde242e81a1808f36e1e81c0c5724e99a7), "Barcrest","10 X 10 (Barcrest) (MPU4) (N25 0.3)" ) +GAME_CUSTOM( 199?, m4tenten__a, m4tenten, "n2503ad.p1", 0x0000, 0x010000, CRC(c84150e6) SHA1(8f143c26c6026a413bdd65ca148d78dead1d2474), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4tenten__b, m4tenten, "n2503b.p1", 0x0000, 0x010000, CRC(dd74fb57) SHA1(402f632f48cf1153cb8c22879a7482c82c8fecfe), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4tenten__c, m4tenten, "n2503bd.p1", 0x0000, 0x010000, CRC(62542d80) SHA1(90ebfb92891a7aaa4814b733c0e0df06bb292a4f), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4tenten__d, m4tenten, "n2503d.p1", 0x0000, 0x010000, CRC(b8c64fa4) SHA1(f53d9bdf97cc021399c8598a051ad5bcb7a611b5), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4tenten__e, m4tenten, "n2503dk.p1", 0x0000, 0x010000, CRC(28715d57) SHA1(1ab648a7f5dde5575e5ab5653823e4b88580677f), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4tenten__f, m4tenten, "n2503dr.p1", 0x0000, 0x010000, CRC(59932d11) SHA1(9895392ce48569e23816646124933192b6f720e3), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4tenten__g, m4tenten, "n2503dy.p1", 0x0000, 0x010000, CRC(287b8ee7) SHA1(10e428c73911e01ba53dd4321eb2c5a58e35441e), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4tenten__h, m4tenten, "n2503k.p1", 0x0000, 0x010000, CRC(f240b5ba) SHA1(fca353213447e50e29f1cd2c0d3895c437ae9336), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4tenten__i, m4tenten, "n2503r.p1", 0x0000, 0x010000, CRC(afaacb9d) SHA1(1bf3d648b82a8160ff1a38d92d2bb3ce1b41125e), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4tenten__k, m4tenten, "n2503y.p1", 0x0000, 0x010000, CRC(b365cff0) SHA1(65ab9d624bec1efc0590cec739541887ca20fc6f), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 12)" ) +// "(C)1991 BARCREST" and "T25 0.4" +GAME_CUSTOM( 199?, m4tenten__4, m4tenten, "t2504s.p1", 0x0000, 0x010000, CRC(a7618248) SHA1(e28d34a7a4b2eb3f6192a04cc8849475f021d392), "Barcrest","10 X 10 (Barcrest) (MPU4) (T25 0.4)" ) GAME_CUSTOM( 199?, m4tenten__v, m4tenten, "t2504ad.p1", 0x0000, 0x010000, CRC(f964cf74) SHA1(a72bd32f3785506e8f57107f2b8e42d64cbe267b), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 23)" ) GAME_CUSTOM( 199?, m4tenten__w, m4tenten, "t2504b.p1", 0x0000, 0x010000, CRC(f6cc485b) SHA1(6a95bf4c0cf35ccb79cb2a9e6bef208d6b61f4c7), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4tenten__x, m4tenten, "t2504bd.p1", 0x0000, 0x010000, CRC(f4ce2ee9) SHA1(8d0dc72f288810118702d00dc08f4e748c4da9e6), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 25)" ) @@ -3286,8 +3395,9 @@ GAME_CUSTOM( 199?, m4tenten__0, m4tenten, "t2504dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4tenten__1, m4tenten, "t2504dy.p1", 0x0000, 0x010000, CRC(af52e603) SHA1(8c234f0964018eb21efff7a9e820c355d4465401), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 29)" ) GAME_CUSTOM( 199?, m4tenten__2, m4tenten, "t2504k.p1", 0x0000, 0x010000, CRC(c489942d) SHA1(047509ede2cb5a155274698423a1caa32ac0baeb), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 30)" ) GAME_CUSTOM( 199?, m4tenten__3, m4tenten, "t2504r.p1", 0x0000, 0x010000, CRC(da847c46) SHA1(b5897fe0266ee3eb5f364570f29ffca3de8c4c7f), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4tenten__4, m4tenten, "t2504s.p1", 0x0000, 0x010000, CRC(a7618248) SHA1(e28d34a7a4b2eb3f6192a04cc8849475f021d392), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4tenten__5, m4tenten, "t2504y.p1", 0x0000, 0x010000, CRC(e311f030) SHA1(ce21932013f1fdab1b9bbe8eb61d4fe067ccc62f), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 33)" ) +// "(C)1991 BARCREST" and "T2T 0.1" +GAME_CUSTOM( 199?, m4tenten__af, m4tenten, "t2t01s.p1", 0x0000, 0x010000, CRC(75b421e3) SHA1(d5de7485180baf9d8458a895edbfd65310fed2cc), "Barcrest","10 X 10 (Barcrest) (MPU4) (T2T 0.1)" ) GAME_CUSTOM( 199?, m4tenten__6, m4tenten, "t2t01ad.p1", 0x0000, 0x010000, CRC(debb50d9) SHA1(18b099111d81cf847155b81faba8be06cdfb3d54), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 34)" ) GAME_CUSTOM( 199?, m4tenten__7, m4tenten, "t2t01b.p1", 0x0000, 0x010000, CRC(4d8b3369) SHA1(e2221c712e8b031f39531fed61895af2214c23bc), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 35)" ) GAME_CUSTOM( 199?, m4tenten__8, m4tenten, "t2t01bd.p1", 0x0000, 0x010000, CRC(e7f852d2) SHA1(7aff9dc05e8a5db91abea61860f85793a73ad8db), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 36)" ) @@ -3297,8 +3407,9 @@ GAME_CUSTOM( 199?, m4tenten__ab, m4tenten, "t2t01dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4tenten__ac, m4tenten, "t2t01dy.p1", 0x0000, 0x010000, CRC(205c3c2e) SHA1(53d6829ac650fc7637f8743ac6cdb3b02dd0cc86), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4tenten__ad, m4tenten, "t2t01k.p1", 0x0000, 0x010000, CRC(488b2ce4) SHA1(3b47ea15f318b49744e869d0485e00fbd2cd74b2), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 41)" ) GAME_CUSTOM( 199?, m4tenten__ae, m4tenten, "t2t01r.p1", 0x0000, 0x010000, CRC(a8f71c79) SHA1(0b9d468819bfd2f7e2ec7b5f11f052531a13d703), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4tenten__af, m4tenten, "t2t01s.p1", 0x0000, 0x010000, CRC(75b421e3) SHA1(d5de7485180baf9d8458a895edbfd65310fed2cc), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4tenten__ag, m4tenten, "t2t01y.p1", 0x0000, 0x010000, CRC(0c3e29c2) SHA1(a0163587193145a0a173d1571ad9076c9f03d3ad), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 44)" ) +// "(C)1991 BARCREST" and "T3T 0.1" +GAME_CUSTOM( 199?, m4tenten__aq, m4tenten, "t3t01s.p1", 0x0000, 0x010000, CRC(eae20667) SHA1(3ea054516e36ac5ca521a68bba16e299a1926c90), "Barcrest","10 X 10 (Barcrest) (MPU4) (T3T 0.1)" ) GAME_CUSTOM( 199?, m4tenten__ah, m4tenten, "t3t01ad.p1", 0x0000, 0x010000, CRC(7075b69b) SHA1(3ac28d0542c287de9c2cabfed2da0ac0cc4a24cb), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 45)" ) GAME_CUSTOM( 199?, m4tenten__ai, m4tenten, "t3t01b.p1", 0x0000, 0x010000, CRC(7f7d4170) SHA1(3925a0e1f620777356ed6d6c67d6d432daeb9ade), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 46)" ) GAME_CUSTOM( 199?, m4tenten__aj, m4tenten, "t3t01bd.p1", 0x0000, 0x010000, CRC(90d5dbcb) SHA1(2c348f81fe070d0825c1824f05bc4c640da9ce24), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 47)" ) @@ -3308,8 +3419,9 @@ GAME_CUSTOM( 199?, m4tenten__am, m4tenten, "t3t01dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4tenten__an, m4tenten, "t3t01dy.p1", 0x0000, 0x010000, CRC(94bb082d) SHA1(236b81d7e10afd4dc3facfad30d9ab0a72ea21e3), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 51)" ) GAME_CUSTOM( 199?, m4tenten__ao, m4tenten, "t3t01k.p1", 0x0000, 0x010000, CRC(b7bd2547) SHA1(6154b30a587d52dadd1fa137e805762e096f02cb), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 52)" ) GAME_CUSTOM( 199?, m4tenten__ap, m4tenten, "t3t01r.p1", 0x0000, 0x010000, CRC(d4401ee1) SHA1(c270a0f191870136278ff8e47d529458bbc049d0), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 53)" ) -GAME_CUSTOM( 199?, m4tenten__aq, m4tenten, "t3t01s.p1", 0x0000, 0x010000, CRC(eae20667) SHA1(3ea054516e36ac5ca521a68bba16e299a1926c90), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 54)" ) GAME_CUSTOM( 199?, m4tenten__ar, m4tenten, "t3t01y.p1", 0x0000, 0x010000, CRC(d2a6c8cd) SHA1(b30064145cebc2a39ae63009529cd8422dc98373), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 55)" ) +// "(C)1991 BARCREST" and "TST 0.1" +GAME_CUSTOM( 199?, m4tenten__a1, m4tenten, "tst01s.p1", 0x0000, 0x010000, CRC(c4bb2a12) SHA1(1d8c134facfa72d8438676c96e530f93c41f1266), "Barcrest","10 X 10 (Barcrest) (MPU4) (TST 0.1)" ) GAME_CUSTOM( 199?, m4tenten__as, m4tenten, "tst01ad.p1", 0x0000, 0x010000, CRC(ca4be612) SHA1(70673e29a99ea0c70ff386c6c5fed49eabeea0e4), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 56)" ) GAME_CUSTOM( 199?, m4tenten__at, m4tenten, "tst01b.p1", 0x0000, 0x010000, CRC(7dd06165) SHA1(6853436a1b0c60283707932961bbf5cce7e185c0), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 57)" ) GAME_CUSTOM( 199?, m4tenten__au, m4tenten, "tst01bd.p1", 0x0000, 0x010000, CRC(38f4c0a2) SHA1(2cc62837c37618198dae7195e848c06ad1b96b06), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 58)" ) @@ -3319,7 +3431,6 @@ GAME_CUSTOM( 199?, m4tenten__ax, m4tenten, "tst01dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4tenten__ay, m4tenten, "tst01dy.p1", 0x0000, 0x010000, CRC(ef87da08) SHA1(9358e4a02def10c98fddbb21d81b62f83500aa69), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 62)" ) GAME_CUSTOM( 199?, m4tenten__az, m4tenten, "tst01k.p1", 0x0000, 0x010000, CRC(1f097f64) SHA1(d752b688b4e0520393bc4bef0c618a7c68c2e323), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 63)" ) GAME_CUSTOM( 199?, m4tenten__a0, m4tenten, "tst01r.p1", 0x0000, 0x010000, CRC(ccc4ecb5) SHA1(0629c7951b56f44b8cb48d9aa66fb7c71ae275ec), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 64)" ) -GAME_CUSTOM( 199?, m4tenten__a1, m4tenten, "tst01s.p1", 0x0000, 0x010000, CRC(c4bb2a12) SHA1(1d8c134facfa72d8438676c96e530f93c41f1266), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 65)" ) GAME_CUSTOM( 199?, m4tenten__a2, m4tenten, "tst01y.p1", 0x0000, 0x010000, CRC(e3ba4b94) SHA1(a7b13c172e5177711ddb81ef1ea77e27e14bf470), "Barcrest","10 X 10 (Barcrest) (MPU4) (set 66)" ) @@ -4175,49 +4286,6 @@ GAME_CUSTOM( 199?, m4actbnk__h, m4actbnk, "acty.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4actbnk__i, m4actbnk, "actad.p1", 0x0000, 0x010000, CRC(a8dfdf77) SHA1(92e9f0f3837e466c0c6d98b890234d80318ef236), "Barcrest","Action Bank (Barcrest) (MPU4) (set 10)" ) -#undef GAME_CUSTOM -#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ - ROM_START( setname ) \ - ROM_REGION( length, "maincpu", 0 ) \ - ROM_LOAD( name, offset, length, hash ) \ - ROM_END \ - GAME(year, setname, parent ,mod2 ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4addrc, 0, "add05_101", 0x0000, 0x010000, CRC(4b3fb104) SHA1(9dba619019a476ce317122a3553965b279c684ba), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4addrc__a, m4addrc, "add10_101", 0x0000, 0x010000, CRC(af8f8b4e) SHA1(712c33ed0f425dc10b79780b0cfce0ac5768e2d5), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4addrc__b, m4addrc, "add20_101", 0x0000, 0x010000, CRC(361b7173) SHA1(dea2b1b0f5910e2fd3f45d220554f0e712dedada), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4addrc__c, m4addrc, "add55", 0x0000, 0x010000, CRC(48c5bc73) SHA1(18c9f70bad6141cca95b6bbcb4fc621e71f87700), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4addrc__d, m4addrc, "alddr20", 0x0000, 0x010000, CRC(19cf4437) SHA1(b528823c476bebd1a9a6c720a4144294743693d2), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4addrc__e, m4addrc, "classic adders & ladders_alt", 0x0000, 0x010000, CRC(ac948903) SHA1(e07023efd7722a661a2bbf93c0a168af70ad6c20), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4addrc__f, m4addrc, "classic adders & ladders_alt2", 0x0000, 0x010000, CRC(843ed53d) SHA1(b1dff249df37800744e3fc9c32be20a62bd130a1), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4addrc__h, m4addrc, "adders classic.bin", 0x0000, 0x010000, CRC(6bc1d2aa) SHA1(cf17e697ff0cfba999f6511f24051dbc3d0384ef), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4addrc__i, m4addrc, "addl_10_.4", 0x0000, 0x010000, CRC(c2d11126) SHA1(0eafe9dc30013ed5817ac303a4eea5ea82d62715), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4addrc__j, m4addrc, "addl_10_.8", 0x0000, 0x010000, CRC(9fc82c47) SHA1(0f56afc33f09fe22afc5ec74aeb496c32f9e623c), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4addrc__k, m4addrc, "addl_20_.8", 0x0000, 0x010000, CRC(43c98f46) SHA1(0ca4a093b38fc04639e3f4bb742a8923b90d2ed1), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4addrc__l, m4addrc, "al10", 0x0000, 0x010000, CRC(3c3c82b6) SHA1(cc5ffdd0837c9af31d5737a70430a01d1989cdcc), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4addrc__m, m4addrc, "alad58c", 0x0000, 0x010000, CRC(df9c46b8) SHA1(439ea1ce17aa89e19cedb78465b4388b72c8c5ed), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4addrc__n, m4addrc, "nik56c", 0x0000, 0x010000, CRC(05fa11d1) SHA1(01d3d0c504489f1513a0c3aa26e910c9604f5366), "Barcrest","Adders & Ladders Classic (Barcrest) (MPU4) (set 14)" ) - -#define M4ADDRCC_EXTRA_ROMS \ - ROM_REGION( 0x48, "fakechr", 0 ) \ - ROM_LOAD( "aal.chr", 0x0000, 0x000048, CRC(bb48409f) SHA1(adefde520104b8c3815260ee136460ddf3e9e4b2) ) -#undef GAME_CUSTOM -#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ - ROM_START( setname ) \ - ROM_REGION( length, "maincpu", 0 ) \ - ROM_LOAD( name, offset, length, hash ) \ - M4ADDRCC_EXTRA_ROMS \ - ROM_END \ - GAME(year, setname, parent ,mod2 ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - - -GAME_CUSTOM( 199?, m4addrcc, 0, "adcd.p1", 0x0000, 0x010000, CRC(47e41c9a) SHA1(546aaaa5765b3bc91eeb9bf5a979ed68a2e72da8), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4addrcc__a, m4addrcc, "adcf.p1", 0x0000, 0x010000, CRC(1dbbc990) SHA1(fb9439b43089e3135a719ab94b24dd65561d17cf), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4addrcc__b, m4addrcc, "adcl.p1", 0x0000, 0x010000, CRC(89299196) SHA1(9a92b250b47b11536f8708429d69c95111ecdb98), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4addrcc__c, m4addrcc, "adcs.p1", 0x0000, 0x010000, CRC(7247de78) SHA1(e390b4e912d7bc8c1ca5e42bf2e2753d4c2b4d17), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4addrcc__d, m4addrcc, "adrscfm", 0x0000, 0x010000, CRC(6c95881a) SHA1(db658bd722c54fc84734105f1a9b0028b23179fb), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (set 5)" ) - - #define M4CRDOME_EXTRA_ROMS \ ROM_REGION( 0x48, "fakechr", 0 ) \ ROM_LOAD( "tri98.chr", 0x0000, 0x000048, CRC(8a4532a8) SHA1(c128fd513bbcba68a1c75a11e09a54ba1d23d6f4) ) \ From 74e1aa46198ca5724a9faa8f88aeecf6bc1fc3bf Mon Sep 17 00:00:00 2001 From: "therealmogminer@gmail.com" Date: Mon, 8 Aug 2016 11:08:47 +0200 Subject: [PATCH 077/116] Fix benchmarking by adding additive-blend YUY16 support to rendersw, nw --- src/emu/rendersw.hxx | 193 +++++++++++++++++++++++++------------------ 1 file changed, 111 insertions(+), 82 deletions(-) diff --git a/src/emu/rendersw.hxx b/src/emu/rendersw.hxx index a7dcbac0191..bcd827aa446 100644 --- a/src/emu/rendersw.hxx +++ b/src/emu/rendersw.hxx @@ -902,7 +902,6 @@ private: static void draw_quad_yuy16_none(const render_primitive &prim, _PixelType *dstdata, UINT32 pitch, quad_setup_data &setup) { - const rgb_t *palbase = prim.texture.palette; INT32 dudx = setup.dudx; INT32 dvdx = setup.dvdx; INT32 endx = setup.endx; @@ -917,30 +916,13 @@ private: INT32 curu = setup.startu + (y - setup.starty) * setup.dudy; INT32 curv = setup.startv + (y - setup.starty) * setup.dvdy; - // no lookup case - if (palbase == nullptr) + // loop over cols + for (INT32 x = setup.startx; x < endx; x++) { - // loop over cols - for (INT32 x = setup.startx; x < endx; x++) - { - UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - *dest++ = source32_to_dest(pix); - curu += dudx; - curv += dvdx; - } - } - - // lookup case - else - { - // loop over cols - for (INT32 x = setup.startx; x < endx; x++) - { - UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - *dest++ = source32_to_dest(pix); - curu += dudx; - curv += dvdx; - } + UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + *dest++ = source32_to_dest(pix); + curu += dudx; + curv += dvdx; } } } @@ -964,38 +946,17 @@ private: INT32 curu = setup.startu + (y - setup.starty) * setup.dudy; INT32 curv = setup.startv + (y - setup.starty) * setup.dvdy; - // no lookup case - if (palbase == nullptr) + // loop over cols + for (INT32 x = setup.startx; x < endx; x++) { - // loop over cols - for (INT32 x = setup.startx; x < endx; x++) - { - UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - UINT32 r = (source32_r(pix) * sr) >> 8; - UINT32 g = (source32_g(pix) * sg) >> 8; - UINT32 b = (source32_b(pix) * sb) >> 8; + UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + UINT32 r = (source32_r(pix) * sr) >> 8; + UINT32 g = (source32_g(pix) * sg) >> 8; + UINT32 b = (source32_b(pix) * sb) >> 8; - *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; - } - } - - // lookup case - else - { - // loop over cols - for (INT32 x = setup.startx; x < endx; x++) - { - UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - UINT32 r = (source32_r(pix) * sr) >> 8; - UINT32 g = (source32_g(pix) * sg) >> 8; - UINT32 b = (source32_b(pix) * sb) >> 8; - - *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; - } + *dest++ = dest_assemble_rgb(r, g, b); + curu += dudx; + curv += dvdx; } } } @@ -1021,40 +982,103 @@ private: INT32 curu = setup.startu + (y - setup.starty) * setup.dudy; INT32 curv = setup.startv + (y - setup.starty) * setup.dvdy; - // no lookup case - if (palbase == nullptr) + // loop over cols + for (INT32 x = setup.startx; x < endx; x++) { - // loop over cols - for (INT32 x = setup.startx; x < endx; x++) - { - UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - UINT32 dpix = _NoDestRead ? 0 : *dest; - UINT32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; - UINT32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; - UINT32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; + UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + UINT32 dpix = _NoDestRead ? 0 : *dest; + UINT32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; + UINT32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; + UINT32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; - *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; - } + *dest++ = dest_assemble_rgb(r, g, b); + curu += dudx; + curv += dvdx; } + } + } + } - // lookup case - else + + //------------------------------------------------- + // draw_quad_yuy16_add - perform + // rasterization by using RGB add after YUY + // conversion + //------------------------------------------------- + + static void draw_quad_yuy16_add(const render_primitive &prim, _PixelType *dstdata, UINT32 pitch, quad_setup_data &setup) + { + INT32 dudx = setup.dudx; + INT32 dvdx = setup.dvdx; + INT32 endx = setup.endx; + + // simply can't do this without reading from the dest + if (_NoDestRead) + return; + + // fast case: no coloring, no alpha + if (prim.color.r >= 1.0f && prim.color.g >= 1.0f && prim.color.b >= 1.0f && is_opaque(prim.color.a)) + { + // loop over rows + for (INT32 y = setup.starty; y < setup.endy; y++) + { + _PixelType *dest = dstdata + y * pitch + setup.startx; + INT32 curu = setup.startu + (y - setup.starty) * setup.dudy; + INT32 curv = setup.startv + (y - setup.starty) * setup.dvdy; + + // loop over cols + for (INT32 x = setup.startx; x < endx; x++) { - // loop over cols - for (INT32 x = setup.startx; x < endx; x++) - { - UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); - UINT32 dpix = _NoDestRead ? 0 : *dest; - UINT32 r = (source32_r(pix) * sr + dest_r(dpix) * invsa) >> 8; - UINT32 g = (source32_g(pix) * sg + dest_g(dpix) * invsa) >> 8; - UINT32 b = (source32_b(pix) * sb + dest_b(dpix) * invsa) >> 8; + UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + UINT32 dpix = _NoDestRead ? 0 : *dest; + UINT32 r = source32_r(pix) + dest_r(dpix); + UINT32 g = source32_g(pix) + dest_g(dpix); + UINT32 b = source32_b(pix) + dest_b(dpix); + r = (r | -(r >> (8 - _SrcShiftR))) & (0xff >> _SrcShiftR); + g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); + b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); + *dest++ = dest_assemble_rgb(r, g, b); + curu += dudx; + curv += dvdx; + } + } + } - *dest++ = dest_assemble_rgb(r, g, b); - curu += dudx; - curv += dvdx; - } + // alpha and/or coloring case + else + { + UINT32 sr = UINT32(256.0f * prim.color.r); + UINT32 sg = UINT32(256.0f * prim.color.g); + UINT32 sb = UINT32(256.0f * prim.color.b); + UINT32 sa = UINT32(256.0f * prim.color.a); + + // clamp R,G,B and inverse A to 0-256 range + if (sr > 0x100) { if (INT32(sr) < 0) sr = 0; else sr = 0x100; } + if (sg > 0x100) { if (INT32(sg) < 0) sg = 0; else sg = 0x100; } + if (sb > 0x100) { if (INT32(sb) < 0) sb = 0; else sb = 0x100; } + if (sa > 0x100) { if (INT32(sa) < 0) sa = 0; else sa = 0x100; } + + // loop over rows + for (INT32 y = setup.starty; y < setup.endy; y++) + { + _PixelType *dest = dstdata + y * pitch + setup.startx; + INT32 curu = setup.startu + (y - setup.starty) * setup.dudy; + INT32 curv = setup.startv + (y - setup.starty) * setup.dvdy; + + // loop over cols + for (INT32 x = setup.startx; x < endx; x++) + { + UINT32 pix = ycc_to_rgb(get_texel_yuy16(prim.texture, curu, curv)); + UINT32 dpix = _NoDestRead ? 0 : *dest; + UINT32 r = ((source32_r(pix) * sr * sa) >> 16) + dest_r(dpix); + UINT32 g = ((source32_g(pix) * sg * sa) >> 16) + dest_g(dpix); + UINT32 b = ((source32_b(pix) * sb * sa) >> 16) + dest_b(dpix); + r = (r | -(r >> (8 - _SrcShiftR))) & (0xff >> _SrcShiftR); + g = (g | -(g >> (8 - _SrcShiftG))) & (0xff >> _SrcShiftG); + b = (b | -(b >> (8 - _SrcShiftB))) & (0xff >> _SrcShiftB); + *dest++ = dest_assemble_rgb(r, g, b); + curu += dudx; + curv += dvdx; } } } @@ -1865,9 +1889,14 @@ private: break; case PRIMFLAG_TEXFORMAT(TEXFORMAT_YUY16) | PRIMFLAG_BLENDMODE(BLENDMODE_NONE): + case PRIMFLAG_TEXFORMAT(TEXFORMAT_YUY16) | PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA): draw_quad_yuy16_none(prim, dstdata, pitch, setup); break; + case PRIMFLAG_TEXFORMAT(TEXFORMAT_YUY16) | PRIMFLAG_BLENDMODE(BLENDMODE_ADD): + draw_quad_yuy16_add(prim, dstdata, pitch, setup); + break; + case PRIMFLAG_TEXFORMAT(TEXFORMAT_RGB32) | PRIMFLAG_BLENDMODE(BLENDMODE_NONE): case PRIMFLAG_TEXFORMAT(TEXFORMAT_RGB32) | PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA): case PRIMFLAG_TEXFORMAT(TEXFORMAT_ARGB32) | PRIMFLAG_BLENDMODE(BLENDMODE_NONE): From 89ccb9b8feace24240e08bbbd89e4665318cc91f Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Mon, 8 Aug 2016 07:31:31 -0400 Subject: [PATCH 078/116] This should fix a regression incurred from the rom_entry changes identified by MASH On pull request #1200, MASH identfied a regression caused by recent changes to rom_entry handling. That said, I disagreed with his proposed fix because the code did a backwards scan for ROMENTRY_ISEND. I don't think this is correct; ROMENTRY_ISEND should only work for forward scans, and it probably worked by accident simply because rom_entry structures were likely allocated back to back. As far as I can tell, my proposed change seems to work but I'm somewhat fuzzy on the interactions between BIOS ROMs and devices, and it is possible that I'm neglecting a use case. --- src/frontend/mame/info.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index 6431517163b..5cfe32a2270 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -579,8 +579,7 @@ void info_xml_creator::output_rom(device_t &device) if (!is_disk && is_bios) { // scan backwards through the ROM entries - auto entries = rom_build_entries(m_drivlist.driver().rom); - for (const rom_entry *brom = entries.data(); !ROMENTRY_ISEND(brom); brom++) + for (const rom_entry *brom = rom - 1; brom != device.rom_region(); brom--) if (ROMENTRY_ISSYSTEM_BIOS(brom)) { strcpy(bios_name, ROM_GETNAME(brom)); From 6673af1285376eee38a7fa0f924ddf5b61c3c654 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 8 Aug 2016 13:40:03 +0300 Subject: [PATCH 079/116] pofo: Added memory card slot interface and ROM/RAM cards. [Curt Coder] --- scripts/src/bus.lua | 8 +++ src/devices/bus/pofo/ccm.cpp | 109 +++++++++++++++++++++++++++++++ src/devices/bus/pofo/ccm.h | 120 +++++++++++++++++++++++++++++++++++ src/devices/bus/pofo/ram.cpp | 63 ++++++++++++++++++ src/devices/bus/pofo/ram.h | 56 ++++++++++++++++ src/devices/bus/pofo/rom.cpp | 51 +++++++++++++++ src/devices/bus/pofo/rom.h | 48 ++++++++++++++ src/mame/drivers/pofo.cpp | 57 +++++++---------- 8 files changed, 478 insertions(+), 34 deletions(-) create mode 100644 src/devices/bus/pofo/ccm.cpp create mode 100644 src/devices/bus/pofo/ccm.h create mode 100644 src/devices/bus/pofo/ram.cpp create mode 100644 src/devices/bus/pofo/ram.h create mode 100644 src/devices/bus/pofo/rom.cpp create mode 100644 src/devices/bus/pofo/rom.h diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 083cd2d46d1..d15d71fee78 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -1174,6 +1174,14 @@ if (BUSES["POFO"]~=null) then MAME_DIR .. "src/devices/bus/pofo/hpc101.h", MAME_DIR .. "src/devices/bus/pofo/hpc102.cpp", MAME_DIR .. "src/devices/bus/pofo/hpc102.h", + MAME_DIR .. "src/devices/bus/pofo/hpc104.cpp", + MAME_DIR .. "src/devices/bus/pofo/hpc104.h", + MAME_DIR .. "src/devices/bus/pofo/ccm.cpp", + MAME_DIR .. "src/devices/bus/pofo/ccm.h", + MAME_DIR .. "src/devices/bus/pofo/ram.cpp", + MAME_DIR .. "src/devices/bus/pofo/ram.h", + MAME_DIR .. "src/devices/bus/pofo/rom.cpp", + MAME_DIR .. "src/devices/bus/pofo/rom.h", } end diff --git a/src/devices/bus/pofo/ccm.cpp b/src/devices/bus/pofo/ccm.cpp new file mode 100644 index 00000000000..a28f29c7637 --- /dev/null +++ b/src/devices/bus/pofo/ccm.cpp @@ -0,0 +1,109 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Atari Portfolio Memory Card Port emulation + +**********************************************************************/ + +#include "ccm.h" + + + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +const device_type PORTFOLIO_MEMORY_CARD_SLOT = &device_creator; + + + +//************************************************************************** +// CARD INTERFACE +//************************************************************************** + +//------------------------------------------------- +// device_portfolio_memory_card_slot_interface - constructor +//------------------------------------------------- + +device_portfolio_memory_card_slot_interface::device_portfolio_memory_card_slot_interface(const machine_config &mconfig, device_t &device) : + device_slot_card_interface(mconfig, device), + m_rom(*this, "rom"), + m_nvram(*this, "nvram") +{ + m_slot = dynamic_cast(device.owner()); +} + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// portfolio_memory_card_slot_t - constructor +//------------------------------------------------- + +portfolio_memory_card_slot_t::portfolio_memory_card_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, PORTFOLIO_MEMORY_CARD_SLOT, "Atari Portfolio memory card port", tag, owner, clock, "portfolio_ccm_slot", __FILE__), + device_slot_interface(mconfig, *this), + device_image_interface(mconfig, *this), + m_card(nullptr) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void portfolio_memory_card_slot_t::device_start() +{ + m_card = dynamic_cast(get_card_device()); +} + + +//------------------------------------------------- +// call_load - +//------------------------------------------------- + +image_init_result portfolio_memory_card_slot_t::call_load() +{ + if (m_card) + { + if (software_entry() == nullptr) + { + fread(m_card->m_rom, length()); + } + else + { + load_software_region("rom", m_card->m_rom); + } + } + + return image_init_result::PASS; +} + + +//------------------------------------------------- +// get_default_card_software - +//------------------------------------------------- + +std::string portfolio_memory_card_slot_t::get_default_card_software() +{ + return software_get_default_slot("rom"); +} + + +//------------------------------------------------- +// SLOT_INTERFACE( portfolio_memory_cards ) +//------------------------------------------------- + +// slot devices +#include "ram.h" +#include "rom.h" + +SLOT_INTERFACE_START( portfolio_memory_cards ) + SLOT_INTERFACE("ram", PORTFOLIO_RAM_CARD) + SLOT_INTERFACE("rom", PORTFOLIO_ROM_CARD) +SLOT_INTERFACE_END diff --git a/src/devices/bus/pofo/ccm.h b/src/devices/bus/pofo/ccm.h new file mode 100644 index 00000000000..f8387326207 --- /dev/null +++ b/src/devices/bus/pofo/ccm.h @@ -0,0 +1,120 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Atari Portfolio Memory Card port emulation + +********************************************************************** + +**********************************************************************/ + +#pragma once + +#ifndef __PORTFOLIO_MEMORY_CARD_SLOT__ +#define __PORTFOLIO_MEMORY_CARD_SLOT__ + +#include "emu.h" + + + +//************************************************************************** +// CONSTANTS +//************************************************************************** + +#define PORTFOLIO_MEMORY_CARD_SLOT_A_TAG "ccma" +#define PORTFOLIO_MEMORY_CARD_SLOT_B_TAG "ccmb" + + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_PORTFOLIO_MEMORY_CARD_SLOT_ADD(_tag, _slot_intf, _def_slot) \ + MCFG_DEVICE_ADD(_tag, PORTFOLIO_MEMORY_CARD_SLOT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> device_portfolio_memory_card_slot_interface + +class portfolio_memory_card_slot_t; + +class device_portfolio_memory_card_slot_interface : public device_slot_card_interface +{ + friend class portfolio_memory_card_slot_t; + +public: + // construction/destruction + device_portfolio_memory_card_slot_interface(const machine_config &mconfig, device_t &device); + virtual ~device_portfolio_memory_card_slot_interface() { } + + virtual bool cdet() { return 1; } + + virtual UINT8 nrdi_r(address_space &space, offs_t offset) { return 0xff; }; + virtual void nwri_w(address_space &space, offs_t offset, UINT8 data) { }; + +protected: + optional_shared_ptr m_rom; + optional_shared_ptr m_nvram; + + portfolio_memory_card_slot_t *m_slot; +}; + + +// ======================> portfolio_memory_card_slot_t + +class portfolio_memory_card_slot_t : public device_t, + public device_slot_interface, + public device_image_interface +{ +public: + // construction/destruction + portfolio_memory_card_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ~portfolio_memory_card_slot_t() { } + + // computer interface + bool cdet_r() { return (m_card != nullptr) ? m_card->cdet() : 1; } + + DECLARE_READ8_MEMBER( nrdi_r ) { return (m_card != nullptr) ? m_card->nrdi_r(space, offset) : 0xff; } + DECLARE_WRITE8_MEMBER( nwri_w ) { if (m_card != nullptr) m_card->nwri_w(space, offset, data); } + +protected: + // device-level overrides + virtual void device_config_complete() override { update_names(); } + virtual void device_start() override; + + // image-level overrides + virtual image_init_result call_load() override; + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } + + virtual iodevice_t image_type() const override { return IO_CARTSLOT; } + + virtual bool is_readable() const override { return 1; } + virtual bool is_writeable() const override { return 1; } + virtual bool is_creatable() const override { return 1; } + virtual bool must_be_loaded() const override { return 0; } + virtual bool is_reset_on_load() const override { return 1; } + virtual const char *image_interface() const override { return "pofo_card"; } + virtual const char *file_extensions() const override { return "rom,bin"; } + + // slot interface overrides + virtual std::string get_default_card_software() override; + + device_portfolio_memory_card_slot_interface *m_card; +}; + + +// device type definition +extern const device_type PORTFOLIO_MEMORY_CARD_SLOT; + + +SLOT_INTERFACE_EXTERN( portfolio_memory_cards ); + + + +#endif diff --git a/src/devices/bus/pofo/ram.cpp b/src/devices/bus/pofo/ram.cpp new file mode 100644 index 00000000000..e1fdce1b7ad --- /dev/null +++ b/src/devices/bus/pofo/ram.cpp @@ -0,0 +1,63 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Atari Portfolio 128KB RAM card emulation + +**********************************************************************/ + +#include "ram.h" + + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type PORTFOLIO_RAM_CARD = &device_creator; + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// portfolio_ram_card_t - constructor +//------------------------------------------------- + +portfolio_ram_card_t::portfolio_ram_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, PORTFOLIO_RAM_CARD, "Atari Portfolio RAM card", tag, owner, clock, "portfolio_ram_card", __FILE__), + device_portfolio_memory_card_slot_interface(mconfig, *this), + device_nvram_interface(mconfig, *this) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void portfolio_ram_card_t::device_start() +{ + m_nvram.allocate(0x20000); +} + + +//------------------------------------------------- +// nrdi_r - read +//------------------------------------------------- + +UINT8 portfolio_ram_card_t::nrdi_r(address_space &space, offs_t offset) +{ + return m_nvram[offset]; +} + + +//------------------------------------------------- +// nwri_w - write +//------------------------------------------------- + +void portfolio_ram_card_t::nwri_w(address_space &space, offs_t offset, UINT8 data) +{ + m_nvram[offset] = data; +} diff --git a/src/devices/bus/pofo/ram.h b/src/devices/bus/pofo/ram.h new file mode 100644 index 00000000000..fb8f7917890 --- /dev/null +++ b/src/devices/bus/pofo/ram.h @@ -0,0 +1,56 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Atari Portfolio 128KB RAM card emulation + +**********************************************************************/ + +#pragma once + +#ifndef __PORTFOLIO_RAM_CARD__ +#define __PORTFOLIO_RAM_CARD__ + +#include "emu.h" +#include "ccm.h" +#include "machine/nvram.h" + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> portfolio_ram_card_t + +class portfolio_ram_card_t : public device_t, + public device_portfolio_memory_card_slot_interface, + public device_nvram_interface +{ +public: + // construction/destruction + portfolio_ram_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + +protected: + // device-level overrides + virtual void device_start() override; + + // device_nvram_interface overrides + virtual void nvram_default() override { } + virtual void nvram_read(emu_file &file) override { if (m_nvram != nullptr) { file.read(m_nvram, m_nvram.bytes()); } } + virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram, m_nvram.bytes()); } } + + // device_portfolio_memory_card_slot_interface overrides + bool cdet() override { return 0; } + + virtual UINT8 nrdi_r(address_space &space, offs_t offset) override; + virtual void nwri_w(address_space &space, offs_t offset, UINT8 data) override; +}; + + +// device type definition +extern const device_type PORTFOLIO_RAM_CARD; + + + +#endif diff --git a/src/devices/bus/pofo/rom.cpp b/src/devices/bus/pofo/rom.cpp new file mode 100644 index 00000000000..fbc4c5961b5 --- /dev/null +++ b/src/devices/bus/pofo/rom.cpp @@ -0,0 +1,51 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Atari Portfolio ROM card emulation + +**********************************************************************/ + +#include "rom.h" + + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type PORTFOLIO_ROM_CARD = &device_creator; + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// portfolio_rom_card_t - constructor +//------------------------------------------------- + +portfolio_rom_card_t::portfolio_rom_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, PORTFOLIO_ROM_CARD, "Atari Portfolio ROM card", tag, owner, clock, "portfolio_rom_card", __FILE__), + device_portfolio_memory_card_slot_interface(mconfig, *this) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void portfolio_rom_card_t::device_start() +{ +} + + +//------------------------------------------------- +// nrdi_r - read +//------------------------------------------------- + +UINT8 portfolio_rom_card_t::nrdi_r(address_space &space, offs_t offset) +{ + return m_rom[offset]; +} diff --git a/src/devices/bus/pofo/rom.h b/src/devices/bus/pofo/rom.h new file mode 100644 index 00000000000..4d854b5b9f8 --- /dev/null +++ b/src/devices/bus/pofo/rom.h @@ -0,0 +1,48 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Atari Portfolio ROM card emulation + +**********************************************************************/ + +#pragma once + +#ifndef __PORTFOLIO_ROM_CARD__ +#define __PORTFOLIO_ROM_CARD__ + +#include "emu.h" +#include "ccm.h" + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> portfolio_rom_card_t + +class portfolio_rom_card_t : public device_t, + public device_portfolio_memory_card_slot_interface +{ +public: + // construction/destruction + portfolio_rom_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + +protected: + // device-level overrides + virtual void device_start() override; + + // device_portfolio_memory_card_slot_interface overrides + bool cdet() override { return 0; } + + virtual UINT8 nrdi_r(address_space &space, offs_t offset) override; +}; + + +// device type definition +extern const device_type PORTFOLIO_ROM_CARD; + + + +#endif diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index 8e3500e10e1..7b7405244d4 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -28,8 +28,7 @@ #include "rendlay.h" #include "softlist.h" #include "cpu/i86/i86.h" -#include "bus/generic/slot.h" -#include "bus/generic/carts.h" +#include "bus/pofo/ccm.h" #include "bus/pofo/exp.h" #include "machine/nvram.h" #include "machine/ram.h" @@ -51,7 +50,7 @@ public: m_maincpu(*this, M80C88A_TAG), m_lcdc(*this, HD61830_TAG), m_speaker(*this, "speaker"), - m_card(*this, "cardslot"), + m_ccm(*this, PORTFOLIO_MEMORY_CARD_SLOT_A_TAG), m_exp(*this, PORTFOLIO_EXPANSION_SLOT_TAG), m_timer_tick(*this, TIMER_TICK_TAG), m_rom(*this, M80C88A_TAG), @@ -72,7 +71,7 @@ public: required_device m_maincpu; required_device m_lcdc; required_device m_speaker; - required_device m_card; + required_device m_ccm; required_device m_exp; required_device m_timer_tick; required_region_ptr m_rom; @@ -111,6 +110,7 @@ public: }; DECLARE_READ8_MEMBER( rom_b_r ); + DECLARE_WRITE8_MEMBER( rom_b_w ); DECLARE_READ8_MEMBER( irq_status_r ); DECLARE_READ8_MEMBER( keyboard_r ); @@ -148,7 +148,6 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(counter_tick); DECLARE_READ8_MEMBER(hd61830_rd_r); IRQ_CALLBACK_MEMBER(portfolio_int_ack); - DECLARE_DEVICE_IMAGE_LOAD_MEMBER( portfolio_card ); required_device m_ram; }; @@ -477,10 +476,7 @@ READ8_MEMBER( portfolio_state::rom_b_r ) break; case CCM_A: - if (m_card->exists()) - { - data = m_card->read_rom(space, offset); - } + data = m_ccm->nrdi_r(space, offset & 0x1ffff); break; case CCM_B: @@ -496,6 +492,21 @@ READ8_MEMBER( portfolio_state::rom_b_r ) } +//------------------------------------------------- +// rom_b_w - +//------------------------------------------------- + +WRITE8_MEMBER( portfolio_state::rom_b_w ) +{ + switch (m_rom_b) + { + case CCM_A: + m_ccm->nwri_w(space, offset & 0x1ffff, data); + break; + } +} + + //------------------------------------------------- // counter_r - counter register read //------------------------------------------------- @@ -551,7 +562,7 @@ static ADDRESS_MAP_START( portfolio_mem, AS_PROGRAM, 8, portfolio_state ) AM_RANGE(0x00000, 0x1efff) AM_RAM AM_SHARE("nvram1") AM_RANGE(0x1f000, 0x9efff) AM_RAM // expansion AM_RANGE(0xb0000, 0xb0fff) AM_MIRROR(0xf000) AM_RAM AM_SHARE("nvram2") // video RAM - AM_RANGE(0xc0000, 0xdffff) AM_READ(rom_b_r) + AM_RANGE(0xc0000, 0xdffff) AM_READWRITE(rom_b_r, rom_b_w) AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION(M80C88A_TAG, 0x20000) ADDRESS_MAP_END @@ -735,25 +746,6 @@ WRITE_LINE_MEMBER( portfolio_state::eint_w ) trigger_interrupt(INT_EXTERNAL); } -//************************************************************************** -// IMAGE LOADING -//************************************************************************** - -//------------------------------------------------- -// DEVICE_IMAGE_LOAD( portfolio_card ) -//------------------------------------------------- - -DEVICE_IMAGE_LOAD_MEMBER( portfolio_state, portfolio_card ) -{ - UINT32 size = m_card->common_get_size("rom"); - - m_card->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_BIG); - m_card->common_load_rom(m_card->get_rom_base(), size, "rom"); - - return image_init_result::PASS; -} - - //************************************************************************** // MACHINE INITIALIZATION @@ -841,6 +833,8 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices + MCFG_PORTFOLIO_MEMORY_CARD_SLOT_ADD(PORTFOLIO_MEMORY_CARD_SLOT_A_TAG, portfolio_memory_cards, nullptr) + MCFG_PORTFOLIO_EXPANSION_SLOT_ADD(PORTFOLIO_EXPANSION_SLOT_TAG, XTAL_4_9152MHz, portfolio_expansion_cards, nullptr) MCFG_PORTFOLIO_EXPANSION_SLOT_IINT_CALLBACK(WRITELINE(portfolio_state, iint_w)) MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(WRITELINE(portfolio_state, eint_w)) @@ -853,11 +847,6 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) /* fake keyboard */ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", portfolio_state, keyboard_tick, attotime::from_usec(2500)) - /* cartridge */ - MCFG_GENERIC_CARTSLOT_ADD("cardslot", generic_plain_slot, "pofo_card") - MCFG_GENERIC_EXTENSIONS("rom,bin") - MCFG_GENERIC_LOAD(portfolio_state, portfolio_card) - /* software lists */ MCFG_SOFTWARE_LIST_ADD("cart_list", "pofo") From 463212cf1bdbe411b9f137747c85a79795ff3f79 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 8 Aug 2016 14:44:04 +0300 Subject: [PATCH 080/116] pofo: Expansion WIP. (nw) --- src/devices/bus/pofo/ccm.h | 36 ++++++ src/devices/bus/pofo/exp.cpp | 3 + src/devices/bus/pofo/hpc104.cpp | 219 ++++++++++++++++++++++++++++++++ src/devices/bus/pofo/hpc104.h | 86 +++++++++++++ src/mame/drivers/pofo.cpp | 3 + 5 files changed, 347 insertions(+) create mode 100644 src/devices/bus/pofo/hpc104.cpp create mode 100644 src/devices/bus/pofo/hpc104.h diff --git a/src/devices/bus/pofo/ccm.h b/src/devices/bus/pofo/ccm.h index f8387326207..4f8f87c873f 100644 --- a/src/devices/bus/pofo/ccm.h +++ b/src/devices/bus/pofo/ccm.h @@ -6,6 +6,41 @@ ********************************************************************** + Pin COMMON RAM OPTROM Mask ROM + 32k 64k 128k + 1 A16 + 2 A15 + 3 VBB VPP NC VPP NC + 4 A12 + 5 A7 + 6 A6 + 7 A5 + 8 A4 + 9 A3 + 10 A2 + 11 A1 + 12 A0 + 13 D0 + 14 D1 + 15 D2 + 16 GND + 17 D3 + 18 D4 + 19 D5 + 20 D6 + 21 D7 + 22 CE + 23 A10 + 24 OE OE OE/VPP OE OE + 25 A11 + 26 A9 + 27 A8 + 28 A13 + 29 A14 + 30 WE NC NC PGM NC + 31 VCC + 32 CDET + **********************************************************************/ #pragma once @@ -14,6 +49,7 @@ #define __PORTFOLIO_MEMORY_CARD_SLOT__ #include "emu.h" +#include "softlist_dev.h" diff --git a/src/devices/bus/pofo/exp.cpp b/src/devices/bus/pofo/exp.cpp index 98b411990bf..ce7adb0d1fb 100644 --- a/src/devices/bus/pofo/exp.cpp +++ b/src/devices/bus/pofo/exp.cpp @@ -96,8 +96,11 @@ void portfolio_expansion_slot_t::device_reset() // slot devices #include "hpc101.h" #include "hpc102.h" +#include "hpc104.h" SLOT_INTERFACE_START( portfolio_expansion_cards ) SLOT_INTERFACE("lpt", HPC101) SLOT_INTERFACE("uart", HPC102) + SLOT_INTERFACE("ram", HPC104) + SLOT_INTERFACE("ram2", HPC104_2) SLOT_INTERFACE_END diff --git a/src/devices/bus/pofo/hpc104.cpp b/src/devices/bus/pofo/hpc104.cpp new file mode 100644 index 00000000000..7552055b2a7 --- /dev/null +++ b/src/devices/bus/pofo/hpc104.cpp @@ -0,0 +1,219 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Atari Portfolio HPC-104 Memory Expander Plus emulation + +**********************************************************************/ + +#include "hpc104.h" + + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type HPC104 = &device_creator; +const device_type HPC104_2 = &device_creator; + + +//------------------------------------------------- +// MACHINE_CONFIG_FRAGMENT( hpc104 ) +//------------------------------------------------- + +static MACHINE_CONFIG_FRAGMENT( hpc104 ) + MCFG_PORTFOLIO_MEMORY_CARD_SLOT_ADD(PORTFOLIO_MEMORY_CARD_SLOT_B_TAG, portfolio_memory_cards, nullptr) + + MCFG_PORTFOLIO_EXPANSION_SLOT_ADD(PORTFOLIO_EXPANSION_SLOT_TAG, XTAL_4_9152MHz, portfolio_expansion_cards, nullptr) + MCFG_PORTFOLIO_EXPANSION_SLOT_IINT_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, iint_w)) + MCFG_PORTFOLIO_EXPANSION_SLOT_EINT_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, eint_w)) + MCFG_PORTFOLIO_EXPANSION_SLOT_NMIO_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, nmio_w)) + MCFG_PORTFOLIO_EXPANSION_SLOT_WAKE_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, portfolio_expansion_slot_t, wake_w)) +MACHINE_CONFIG_END + + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor hpc104_t::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( hpc104 ); +} + + +//------------------------------------------------- +// INPUT_PORTS( hpc104 ) +//------------------------------------------------- + +static INPUT_PORTS_START( hpc104 ) + PORT_START("SW1") + PORT_DIPNAME( 0x01, 0x00, "Unit Number" ) + PORT_DIPSETTING( 0x00, "1 (0x1F000)" ) + PORT_DIPSETTING( 0x01, "2 (0x5F000)" ) +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor hpc104_t::device_input_ports() const +{ + return INPUT_PORTS_NAME( hpc104 ); +} + + +//------------------------------------------------- +// INPUT_PORTS( hpc104_2 ) +//------------------------------------------------- + +static INPUT_PORTS_START( hpc104_2 ) + PORT_START("SW1") + PORT_DIPNAME( 0x01, 0x01, "Unit Number" ) + PORT_DIPSETTING( 0x00, "1 (0x1F000)" ) + PORT_DIPSETTING( 0x01, "2 (0x5F000)" ) +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor hpc104_2_t::device_input_ports() const +{ + return INPUT_PORTS_NAME( hpc104_2 ); +} + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// hpc104_t - constructor +//------------------------------------------------- + +hpc104_t::hpc104_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : + device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_portfolio_expansion_slot_interface(mconfig, *this), + device_nvram_interface(mconfig, *this), + m_ccm(*this, PORTFOLIO_MEMORY_CARD_SLOT_B_TAG), + m_exp(*this, PORTFOLIO_EXPANSION_SLOT_TAG), + m_nvram(*this, "nvram"), + m_io_sw1(*this, "SW1") +{ +} + +hpc104_t::hpc104_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, HPC104, "Atari Portfolio HPC-104", tag, owner, clock, "hpc104", __FILE__), + device_portfolio_expansion_slot_interface(mconfig, *this), + device_nvram_interface(mconfig, *this), + m_ccm(*this, PORTFOLIO_MEMORY_CARD_SLOT_B_TAG), + m_exp(*this, PORTFOLIO_EXPANSION_SLOT_TAG), + m_nvram(*this, "nvram"), + m_io_sw1(*this, "SW1") +{ +} + + +//------------------------------------------------- +// hpc104_2_t - constructor +//------------------------------------------------- + +hpc104_2_t::hpc104_2_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + hpc104_t(mconfig, HPC104_2, "Atari Portfolio HPC-104 (Unit 2)", tag, owner, clock, "hpc104_2", __FILE__) { } + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void hpc104_t::device_start() +{ + // allocate memory + m_nvram.allocate(0x40000); +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void hpc104_t::device_reset() +{ + m_sw1 = BIT(m_io_sw1->read(), 0); +} + + +//------------------------------------------------- +// nrdi_r - read +//------------------------------------------------- + +UINT8 hpc104_t::nrdi_r(address_space &space, offs_t offset, UINT8 data, bool iom, bool bcom, bool ncc1) +{ + data = m_exp->nrdi_r(space, offset, data, iom, bcom, m_ncc1_out || ncc1); + + if (!(!m_ncc1_out || ncc1)) + { + data = m_ccm->nrdi_r(space, offset & 0x1ffff); + } + + if (m_sw1) + { + if (offset >= 0x5f000 && offset < 0x9f000) + { + data = m_nvram[offset - 0x5f000]; + } + } + else + { + if (offset >= 0x1f000 && offset < 0x5f000) + { + data = m_nvram[offset - 0x1f000] = data; + } + } + + return data; +} + + +//------------------------------------------------- +// nwri_w - write +//------------------------------------------------- + +void hpc104_t::nwri_w(address_space &space, offs_t offset, UINT8 data, bool iom, bool bcom, bool ncc1) +{ + m_exp->nwri_w(space, offset, data, iom, bcom, m_ncc1_out || ncc1); + + if (!bcom) + { + if ((offset & 0x0f) == 0x0c) + { + m_ncc1_out = BIT(data, 0); + } + } + + if (!(!m_ncc1_out || ncc1)) + { + m_ccm->nwri_w(space, offset & 0x1ffff, data); + } + + if (m_sw1) + { + if (offset >= 0x5f000 && offset < 0x9f000) + { + m_nvram[offset - 0x5f000] = data; + } + } + else + { + if (offset >= 0x1f000 && offset < 0x5f000) + { + m_nvram[offset - 0x1f000] = data; + } + } +} diff --git a/src/devices/bus/pofo/hpc104.h b/src/devices/bus/pofo/hpc104.h new file mode 100644 index 00000000000..9d930c21347 --- /dev/null +++ b/src/devices/bus/pofo/hpc104.h @@ -0,0 +1,86 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + Atari Portfolio HPC-104 Memory Expander Plus emulation + +**********************************************************************/ + +#pragma once + +#ifndef __HPC104__ +#define __HPC104__ + +#include "emu.h" +#include "exp.h" +#include "bus/pofo/ccm.h" +#include "machine/nvram.h" + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> hpc104_t + +class hpc104_t : public device_t, + public device_portfolio_expansion_slot_interface, + public device_nvram_interface +{ +public: + // construction/destruction + hpc104_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + hpc104_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const override; + virtual ioport_constructor device_input_ports() const override; + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // device_nvram_interface overrides + virtual void nvram_default() override { } + virtual void nvram_read(emu_file &file) override { if (m_nvram != nullptr) { file.read(m_nvram, m_nvram.bytes()); } } + virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram, m_nvram.bytes()); } } + + // device_portfolio_expansion_slot_interface overrides + virtual bool nmd1() override { return m_ccm->cdet_r(); } + + virtual UINT8 nrdi_r(address_space &space, offs_t offset, UINT8 data, bool iom, bool bcom, bool ncc1) override; + virtual void nwri_w(address_space &space, offs_t offset, UINT8 data, bool iom, bool bcom, bool ncc1) override; + +private: + required_device m_ccm; + required_device m_exp; + optional_shared_ptr m_nvram; + required_ioport m_io_sw1; + + bool m_sw1; + bool m_ncc1_out; +}; + + +// ======================> hpc104_2_t + +class hpc104_2_t : public hpc104_t +{ +public: + // construction/destruction + hpc104_2_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; +}; + + +// device type definition +extern const device_type HPC104; +extern const device_type HPC104_2; + + + +#endif diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index 7b7405244d4..9e92c6939e6 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -9,6 +9,9 @@ http://www.best-electronics-ca.com/portfoli.htm http://www.atari-portfolio.co.uk/pfnews/pf9.txt + Command line for dual RAM expansion with A: File Manager ROM card and B: RAM card + ./mess64 pofo -exp ram -exp:ram:exp ram2 -cart1 fileman -exp:ram:ccmb ram + */ /* From 2df48cca2aebea8636d83459ea53f043ede64296 Mon Sep 17 00:00:00 2001 From: jbu Date: Mon, 8 Aug 2016 16:54:17 +0200 Subject: [PATCH 081/116] alto2: remove member function pointers There was little to no advantage in calling the various subdevice bs, f1 and f2 early/late functions through function pointers. The original idea was to make this configurable, which it isn't. The hardware, or schematics, define the functions and they are (almost entirely) static anyway. By removing the function pointers and inlining the appropriate calls into switch/case statements there's a speed improvement of ~ 2.5x here, seen while the diablo bitclk is not running. --- src/devices/cpu/alto2/a2curt.cpp | 4 - src/devices/cpu/alto2/a2dht.cpp | 4 - src/devices/cpu/alto2/a2dvt.cpp | 3 - src/devices/cpu/alto2/a2dwt.cpp | 2 - src/devices/cpu/alto2/a2emu.cpp | 22 -- src/devices/cpu/alto2/a2ether.cpp | 17 - src/devices/cpu/alto2/a2ksec.cpp | 23 -- src/devices/cpu/alto2/a2kwd.cpp | 22 -- src/devices/cpu/alto2/a2mrt.cpp | 3 - src/devices/cpu/alto2/a2part.cpp | 1 - src/devices/cpu/alto2/a2ram.cpp | 35 +- src/devices/cpu/alto2/a2roms.cpp | 12 +- src/devices/cpu/alto2/alto2cpu.cpp | 514 +++++++++++++++++++++++++---- src/devices/cpu/alto2/alto2cpu.h | 52 +-- 14 files changed, 477 insertions(+), 237 deletions(-) diff --git a/src/devices/cpu/alto2/a2curt.cpp b/src/devices/cpu/alto2/a2curt.cpp index 3d23ba2ef44..1980408f2b5 100644 --- a/src/devices/cpu/alto2/a2curt.cpp +++ b/src/devices/cpu/alto2/a2curt.cpp @@ -67,10 +67,6 @@ void alto2_cpu_device::activate_curt() /** @brief initialize the cursor task F1 and F2 functions */ void alto2_cpu_device::init_curt(int task) { - set_f1(task, f1_block, &alto2_cpu_device::f1_early_curt_block, nullptr); - set_f2(task, f2_curt_load_xpreg, nullptr, &alto2_cpu_device::f2_late_load_xpreg); - set_f2(task, f2_curt_load_csr, nullptr, &alto2_cpu_device::f2_late_load_csr); - m_active_callback[task] = &alto2_cpu_device::activate_curt; } void alto2_cpu_device::exit_curt() diff --git a/src/devices/cpu/alto2/a2dht.cpp b/src/devices/cpu/alto2/a2dht.cpp index cf32394a83c..27f2103344c 100644 --- a/src/devices/cpu/alto2/a2dht.cpp +++ b/src/devices/cpu/alto2/a2dht.cpp @@ -95,10 +95,6 @@ void alto2_cpu_device::activate_dht() */ void alto2_cpu_device::init_dht(int task) { - set_f1(task, f1_block, &alto2_cpu_device::f1_early_dht_block, nullptr); - set_f2(task, f2_dht_evenfield, nullptr, &alto2_cpu_device::f2_late_evenfield); - set_f2(task, f2_dht_setmode, nullptr, &alto2_cpu_device::f2_late_dht_setmode); - m_active_callback[task] = &alto2_cpu_device::activate_dht; } void alto2_cpu_device::exit_dht() diff --git a/src/devices/cpu/alto2/a2dvt.cpp b/src/devices/cpu/alto2/a2dvt.cpp index 2badc246b57..a3800a211a8 100644 --- a/src/devices/cpu/alto2/a2dvt.cpp +++ b/src/devices/cpu/alto2/a2dvt.cpp @@ -53,9 +53,6 @@ void alto2_cpu_device::activate_dvt() */ void alto2_cpu_device::init_dvt(int task) { - set_f1(task, f1_block, &alto2_cpu_device::f1_early_dvt_block, nullptr); - set_f2(task, f2_dvt_evenfield, nullptr, &alto2_cpu_device::f2_late_evenfield); - m_active_callback[task] = &alto2_cpu_device::activate_dvt; } void alto2_cpu_device::exit_dvt() diff --git a/src/devices/cpu/alto2/a2dwt.cpp b/src/devices/cpu/alto2/a2dwt.cpp index 6791c8cc6ff..40bbe456a0e 100644 --- a/src/devices/cpu/alto2/a2dwt.cpp +++ b/src/devices/cpu/alto2/a2dwt.cpp @@ -75,8 +75,6 @@ void alto2_cpu_device::f2_late_dwt_load_ddr() void alto2_cpu_device::init_dwt(int task) { - set_f1(task, f1_block, &alto2_cpu_device::f1_early_dwt_block, nullptr); - set_f2(task, f2_dwt_load_ddr, nullptr, &alto2_cpu_device::f2_late_dwt_load_ddr); } void alto2_cpu_device::exit_dwt() diff --git a/src/devices/cpu/alto2/a2emu.cpp b/src/devices/cpu/alto2/a2emu.cpp index e01ebe2c342..8cb0296e512 100644 --- a/src/devices/cpu/alto2/a2emu.cpp +++ b/src/devices/cpu/alto2/a2emu.cpp @@ -656,28 +656,6 @@ void alto2_cpu_device::init_emu(int task) save_item(NAME(m_emu.cy)); init_ram(task); - - set_bs(task, bs_emu_read_sreg, &alto2_cpu_device::bs_early_read_sreg, nullptr); - set_bs(task, bs_emu_load_sreg, &alto2_cpu_device::bs_early_load_sreg, &alto2_cpu_device::bs_late_load_sreg); - set_bs(task, bs_disp, &alto2_cpu_device::bs_early_emu_disp, nullptr); - - set_f1(task, f1_block, &alto2_cpu_device::f1_early_emu_block, nullptr); // catch the emulator task trying to block (wrong branch) - set_f1(task, f1_emu_swmode, nullptr, &alto2_cpu_device::f1_late_swmode); - set_f1(task, f1_emu_wrtram, nullptr, &alto2_cpu_device::f1_late_wrtram); - set_f1(task, f1_emu_rdram, nullptr, &alto2_cpu_device::f1_late_rdram); - set_f1(task, f1_emu_load_rmr, nullptr, &alto2_cpu_device::f1_late_emu_load_rmr); - set_f1(task, f1_task_14, nullptr, nullptr); // F1 014 is undefined (?) - set_f1(task, f1_emu_load_esrb, nullptr, &alto2_cpu_device::f1_late_emu_load_esrb); - set_f1(task, f1_emu_rsnf, &alto2_cpu_device::f1_early_rsnf, nullptr); - set_f1(task, f1_emu_startf, &alto2_cpu_device::f1_early_startf, nullptr); - - set_f2(task, f2_emu_busodd, nullptr, &alto2_cpu_device::f2_late_busodd); - set_f2(task, f2_emu_magic, nullptr, &alto2_cpu_device::f2_late_magic); - set_f2(task, f2_emu_load_dns, &alto2_cpu_device::f2_early_load_dns, &alto2_cpu_device::f2_late_load_dns); - set_f2(task, f2_emu_acdest, &alto2_cpu_device::f2_early_acdest, nullptr); - set_f2(task, f2_emu_load_ir, nullptr, &alto2_cpu_device::f2_late_load_ir); - set_f2(task, f2_emu_idisp, nullptr, &alto2_cpu_device::f2_late_idisp); - set_f2(task, f2_emu_acsource, &alto2_cpu_device::f2_early_acsource, &alto2_cpu_device::f2_late_acsource); } void alto2_cpu_device::exit_emu() diff --git a/src/devices/cpu/alto2/a2ether.cpp b/src/devices/cpu/alto2/a2ether.cpp index 39959ce4360..3a360f8854e 100644 --- a/src/devices/cpu/alto2/a2ether.cpp +++ b/src/devices/cpu/alto2/a2ether.cpp @@ -1321,23 +1321,6 @@ void alto2_cpu_device::init_ether(int task) m_ether_a42 = prom_load(machine(), &pl_enet_a42, memregion("ether_a42")->base()); m_ether_a49 = prom_load(machine(), &pl_enet_a49, memregion("ether_a49")->base()); - set_bs(task, bs_ether_eidfct, &alto2_cpu_device::bs_early_eidfct, nullptr); - - set_f1(task, f1_block, &alto2_cpu_device::f1_early_eth_block, nullptr); - set_f1(task, f1_ether_eilfct, &alto2_cpu_device::f1_early_eilfct, nullptr); - set_f1(task, f1_ether_epfct, &alto2_cpu_device::f1_early_epfct, nullptr); - set_f1(task, f1_ether_ewfct, nullptr, &alto2_cpu_device::f1_late_ewfct); - - set_f2(task, f2_ether_eodfct, nullptr, &alto2_cpu_device::f2_late_eodfct); - set_f2(task, f2_ether_eosfct, nullptr, &alto2_cpu_device::f2_late_eosfct); - set_f2(task, f2_ether_erbfct, nullptr, &alto2_cpu_device::f2_late_erbfct); - set_f2(task, f2_ether_eefct, nullptr, &alto2_cpu_device::f2_late_eefct); - set_f2(task, f2_ether_ebfct, nullptr, &alto2_cpu_device::f2_late_ebfct); - set_f2(task, f2_ether_ecbfct, nullptr, &alto2_cpu_device::f2_late_ecbfct); - set_f2(task, f2_ether_eisfct, nullptr, &alto2_cpu_device::f2_late_eisfct); - - m_active_callback[task] = &alto2_cpu_device::activate_eth; - m_eth.rx_packet = std::make_unique(sizeof(UINT16)*ALTO2_ETHER_PACKET_SIZE); m_eth.tx_packet = std::make_unique(sizeof(UINT16)*ALTO2_ETHER_PACKET_SIZE); diff --git a/src/devices/cpu/alto2/a2ksec.cpp b/src/devices/cpu/alto2/a2ksec.cpp index 9e288aeead9..6ba05395877 100644 --- a/src/devices/cpu/alto2/a2ksec.cpp +++ b/src/devices/cpu/alto2/a2ksec.cpp @@ -17,29 +17,6 @@ void alto2_cpu_device::f1_early_ksec_block() //! disk sector task slot initialization void alto2_cpu_device::init_ksec(int task) { - set_bs(task, bs_ksec_read_kstat, &alto2_cpu_device::bs_early_read_kstat, nullptr); - set_bs(task, bs_ksec_read_kdata, &alto2_cpu_device::bs_early_read_kdata, nullptr); - - set_f1(task, f1_block, &alto2_cpu_device::f1_early_ksec_block, nullptr); - - set_f1(task, f1_task_10, nullptr, nullptr); - set_f1(task, f1_ksec_strobe, nullptr, &alto2_cpu_device::f1_late_strobe); - set_f1(task, f1_ksec_load_kstat, nullptr, &alto2_cpu_device::f1_late_load_kstat); - set_f1(task, f1_ksec_increcno, nullptr, &alto2_cpu_device::f1_late_increcno); - set_f1(task, f1_ksec_clrstat, nullptr, &alto2_cpu_device::f1_late_clrstat); - set_f1(task, f1_ksec_load_kcom, nullptr, &alto2_cpu_device::f1_late_load_kcom); - set_f1(task, f1_ksec_load_kadr, nullptr, &alto2_cpu_device::f1_late_load_kadr); - set_f1(task, f1_ksec_load_kdata, nullptr, &alto2_cpu_device::f1_late_load_kdata); - - set_f2(task, f2_ksec_init, nullptr, &alto2_cpu_device::f2_late_init); - set_f2(task, f2_ksec_rwc, nullptr, &alto2_cpu_device::f2_late_rwc); - set_f2(task, f2_ksec_recno, nullptr, &alto2_cpu_device::f2_late_recno); - set_f2(task, f2_ksec_xfrdat, nullptr, &alto2_cpu_device::f2_late_xfrdat); - set_f2(task, f2_ksec_swrnrdy, nullptr, &alto2_cpu_device::f2_late_swrnrdy); - set_f2(task, f2_ksec_nfer, nullptr, &alto2_cpu_device::f2_late_nfer); - set_f2(task, f2_ksec_strobon, nullptr, &alto2_cpu_device::f2_late_strobon); - set_f2(task, f2_task_17, nullptr, nullptr); - m_task_wakeup |= 1 << task; } diff --git a/src/devices/cpu/alto2/a2kwd.cpp b/src/devices/cpu/alto2/a2kwd.cpp index f93343e908b..e312debecf9 100644 --- a/src/devices/cpu/alto2/a2kwd.cpp +++ b/src/devices/cpu/alto2/a2kwd.cpp @@ -17,28 +17,6 @@ void alto2_cpu_device::f1_early_kwd_block() //! disk word task slot initialization void alto2_cpu_device::init_kwd(int task) { - set_bs(task, bs_kwd_read_kstat, &alto2_cpu_device::bs_early_read_kstat, nullptr); - set_bs(task, bs_kwd_read_kdata, &alto2_cpu_device::bs_early_read_kdata, nullptr); - - set_f1(task, f1_block, &alto2_cpu_device::f1_early_kwd_block, nullptr); - - set_f1(task, f1_task_10, nullptr, nullptr); - set_f1(task, f1_kwd_strobe, nullptr, &alto2_cpu_device::f1_late_strobe); - set_f1(task, f1_kwd_load_kstat, nullptr, &alto2_cpu_device::f1_late_load_kstat); - set_f1(task, f1_kwd_increcno, nullptr, &alto2_cpu_device::f1_late_increcno); - set_f1(task, f1_kwd_clrstat, nullptr, &alto2_cpu_device::f1_late_clrstat); - set_f1(task, f1_kwd_load_kcom, nullptr, &alto2_cpu_device::f1_late_load_kcom); - set_f1(task, f1_kwd_load_kadr, nullptr, &alto2_cpu_device::f1_late_load_kadr); - set_f1(task, f1_kwd_load_kdata, nullptr, &alto2_cpu_device::f1_late_load_kdata); - - set_f2(task, f2_kwd_init, nullptr, &alto2_cpu_device::f2_late_init); - set_f2(task, f2_kwd_rwc, nullptr, &alto2_cpu_device::f2_late_rwc); - set_f2(task, f2_kwd_recno, nullptr, &alto2_cpu_device::f2_late_recno); - set_f2(task, f2_kwd_xfrdat, nullptr, &alto2_cpu_device::f2_late_xfrdat); - set_f2(task, f2_kwd_swrnrdy, nullptr, &alto2_cpu_device::f2_late_swrnrdy); - set_f2(task, f2_kwd_nfer, nullptr, &alto2_cpu_device::f2_late_nfer); - set_f2(task, f2_kwd_strobon, nullptr, &alto2_cpu_device::f2_late_strobon); - set_f2(task, f2_task_17, nullptr, nullptr); } void alto2_cpu_device::exit_kwd() diff --git a/src/devices/cpu/alto2/a2mrt.cpp b/src/devices/cpu/alto2/a2mrt.cpp index 93fedbdbf6a..c072a23129c 100644 --- a/src/devices/cpu/alto2/a2mrt.cpp +++ b/src/devices/cpu/alto2/a2mrt.cpp @@ -29,9 +29,6 @@ void alto2_cpu_device::activate_mrt() //! memory refresh task slots initialization void alto2_cpu_device::init_mrt(int task) { - set_f1(task, f1_block, &alto2_cpu_device::f1_early_mrt_block, nullptr); - /* auto block */ - m_active_callback[task] = &alto2_cpu_device::activate_mrt; } void alto2_cpu_device::exit_mrt() diff --git a/src/devices/cpu/alto2/a2part.cpp b/src/devices/cpu/alto2/a2part.cpp index ecf9da51ea5..7e28c2d1da7 100644 --- a/src/devices/cpu/alto2/a2part.cpp +++ b/src/devices/cpu/alto2/a2part.cpp @@ -16,7 +16,6 @@ void alto2_cpu_device::activate_part() //! parity task slots initialization void alto2_cpu_device::init_part(int task) { - m_active_callback[task] = &alto2_cpu_device::activate_part; } void alto2_cpu_device::exit_part() diff --git a/src/devices/cpu/alto2/a2ram.cpp b/src/devices/cpu/alto2/a2ram.cpp index 9d2f5b37c2d..f482b82f94f 100644 --- a/src/devices/cpu/alto2/a2ram.cpp +++ b/src/devices/cpu/alto2/a2ram.cpp @@ -117,21 +117,14 @@ void alto2_cpu_device::wrtram() { UINT32 bank = GET_CRAM_BANKSEL(m_cram_addr); UINT32 wordaddr = GET_CRAM_WORDADDR(m_cram_addr); - UINT32 value = ((m_m << 16) | m_alu) ^ ALTO2_UCODE_INVERTED; + UINT32 value = ((m_myl << 16) | m_alu) ^ ALTO2_UCODE_INVERTED; UINT32 addr = bank * ALTO2_UCODE_PAGE_SIZE + wordaddr; // write RAM 0,1,2 - LOG((this,LOG_CPU,0," wrtram: RAM%d [%04o] upper:%06o lower:%06o", bank, wordaddr, m_m, m_alu)); + LOG((this,LOG_CPU,0," wrtram: RAM%d [%04o] upper:%06o lower:%06o", bank, wordaddr, m_myl, m_alu)); #if DEBUG_WRTRAM - char buff[128]; - UINT8 oprom[4]; - oprom[0] = m_m / 256; - oprom[1] = m_m % 256; - oprom[2] = m_m / 256; - oprom[3] = m_m % 256; - disasm_disassemble(buff, addr, oprom, oprom, 0); - printf("WR CRAM_BANKSEL=%d RAM%d [%04o] upper:%06o lower:%06o *** %s\n", - GET_CRAM_BANKSEL(m_cram_addr), bank, wordaddr, m_m, m_alu, buff); + printf("WR CRAM_BANKSEL=%d RAM%d [%04o] upper:%06o lower:%06o\n", + GET_CRAM_BANKSEL(m_cram_addr), bank, wordaddr, m_myl, m_alu); #endif m_wrtram_flag = false; @@ -158,7 +151,7 @@ void alto2_cpu_device::bs_early_read_sreg() r = m_s[bank][rsel()]; LOG((this,LOG_RAM,2," <-S%02o; bus &= S[%o][%02o] (%#o)\n", rsel(), bank, rsel(), r)); } else { - r = m_m; + r = m_myl; LOG((this,LOG_RAM,2," <-S%02o; bus &= M (%#o)\n", rsel(), r)); } m_bus &= r; @@ -180,8 +173,8 @@ void alto2_cpu_device::bs_early_load_sreg() void alto2_cpu_device::bs_late_load_sreg() { UINT8 bank = m_s_reg_bank[m_task]; - m_s[bank][rsel()] = m_m; - LOG((this,LOG_RAM,2," S%02o<- S[%o][%02o] := %#o\n", rsel(), bank, rsel(), m_m)); + m_s[bank][rsel()] = m_myl; + LOG((this,LOG_RAM,2," S%02o<- S[%o][%02o] := %#o\n", rsel(), bank, rsel(), m_myl)); } /** @@ -410,18 +403,6 @@ void alto2_cpu_device::f1_late_load_srb() void alto2_cpu_device::init_ram(int task) { m_ram_related[task] = true; - - set_bs(task, bs_ram_read_slocation, &alto2_cpu_device::bs_early_read_sreg, nullptr); - set_bs(task, bs_ram_load_slocation, &alto2_cpu_device::bs_early_load_sreg, &alto2_cpu_device::bs_late_load_sreg); - - set_f1(task, f1_ram_swmode, nullptr, &alto2_cpu_device::f1_late_swmode); - set_f1(task, f1_ram_wrtram, nullptr, &alto2_cpu_device::f1_late_wrtram); - set_f1(task, f1_ram_rdram, nullptr, &alto2_cpu_device::f1_late_rdram); -#if (ALTO2_UCODE_RAM_PAGES == 3) - set_f1(task, f1_ram_load_rmr, 0, &alto2_cpu_device::f1_late_load_rmr); -#else // ALTO2_UCODE_RAM_PAGES != 3 - set_f1(task, f1_ram_load_srb, nullptr, &alto2_cpu_device::f1_late_load_srb); -#endif } void alto2_cpu_device::exit_ram() @@ -433,6 +414,6 @@ void alto2_cpu_device::reset_ram() { m_rdram_flag = false; m_wrtram_flag = false; - m_m = 0; + m_myl = 0; memset(m_s, 0, sizeof(m_s)); } diff --git a/src/devices/cpu/alto2/a2roms.cpp b/src/devices/cpu/alto2/a2roms.cpp index ee46d12c0e5..995d1841da2 100644 --- a/src/devices/cpu/alto2/a2roms.cpp +++ b/src/devices/cpu/alto2/a2roms.cpp @@ -19,12 +19,12 @@ */ static UINT32 ones_u32(UINT32 val) { - val -= ((val >> 1) & 0x55555555); - val = (((val >> 2) & 0x33333333) + (val & 0x33333333)); - val = (((val >> 4) + val) & 0x0f0f0f0f); - val += (val >> 8); - val += (val >> 16); - return (val & 0x0000003f); + val -= ((val >> 1) & 0x55555555); + val = (((val >> 2) & 0x33333333) + (val & 0x33333333)); + val = (((val >> 4) + val) & 0x0f0f0f0f); + val += (val >> 8); + val += (val >> 16); + return val & 0x3f; } /** diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp index 1b9c4e42f40..ff9b98f66ab 100644 --- a/src/devices/cpu/alto2/alto2cpu.cpp +++ b/src/devices/cpu/alto2/alto2cpu.cpp @@ -144,7 +144,7 @@ alto2_cpu_device::alto2_cpu_device(const machine_config& mconfig, const char* ta m_l(0), m_shifter(0), m_laluc0(0), - m_m(0), + m_myl(0), m_cram_addr(0), m_task_wakeup(0), m_reset_mode(0xffff), @@ -188,12 +188,8 @@ alto2_cpu_device::alto2_cpu_device(const machine_config& mconfig, const char* ta memset(m_task_next2, 0x00, sizeof(m_task_next2)); memset(m_r, 0x00, sizeof(m_r)); memset(m_s, 0x00, sizeof(m_s)); - memset(m_active_callback, 0x00, sizeof(m_active_callback)); memset(m_s_reg_bank, 0x00, sizeof(m_s_reg_bank)); memset(m_bank_reg, 0x00, sizeof(m_bank_reg)); - memset(m_bs, 0x00, sizeof(m_bs)); - memset(m_f1, 0x00, sizeof(m_f1)); - memset(m_f2, 0x00, sizeof(m_f2)); memset(m_ram_related, 0x00, sizeof(m_ram_related)); memset(m_drive, 0x00, sizeof(m_drive)); memset(m_sysclka0, 0x00, sizeof(m_sysclka0)); @@ -863,7 +859,7 @@ void alto2_cpu_device::device_start() save_item(NAME(m_l)); save_item(NAME(m_shifter)); save_item(NAME(m_laluc0)); - save_item(NAME(m_m)); + save_item(NAME(m_myl)); save_item(NAME(m_cram_addr)); save_item(NAME(m_task_wakeup)); save_item(NAME(m_reset_mode)); @@ -897,7 +893,7 @@ void alto2_cpu_device::device_start() state_add( A2_L, "L", m_l).formatstr("%06O"); state_add( A2_SHIFTER, "SHIFTER", m_shifter).formatstr("%06O"); state_add( A2_LALUC0, "LALUC0", m_laluc0).mask(1); - state_add( A2_M, "M", m_m).formatstr("%06O"); + state_add( A2_M, "M", m_myl).formatstr("%06O"); state_add_divider(-1); state_add( A2_AC3, "AC(3)", m_r[000]).formatstr("%06O"); state_add( A2_AC2, "AC(2)", m_r[001]).formatstr("%06O"); @@ -1281,42 +1277,42 @@ void alto2_cpu_device::watch_write(UINT32 addr, UINT32 data) #endif /** @brief fatal exit on unitialized dynamic phase BUS source */ -void alto2_cpu_device::fn_bs_bad_0() +void alto2_cpu_device::bs_early_bad() { fatal(9,"fatal: bad early bus source pointer for task %s, mpc:%05o bs:%s\n", task_name(m_task), m_mpc, bs_name(bs())); } /** @brief fatal exit on unitialized latching phase BUS source */ -void alto2_cpu_device::fn_bs_bad_1() +void alto2_cpu_device::bs_late_bad() { fatal(9,"fatal: bad late bus source pointer for task %s, mpc:%05o bs: %s\n", task_name(m_task), m_mpc, bs_name(bs())); } /** @brief fatal exit on unitialized dynamic phase F1 function */ -void alto2_cpu_device::fn_f1_bad_0() +void alto2_cpu_device::f1_early_bad() { fatal(9,"fatal: bad early f1 function pointer for task %s, mpc:%05o f1: %s\n", task_name(m_task), m_mpc, f1_name(f1())); } /** @brief fatal exit on unitialized latching phase F1 function */ -void alto2_cpu_device::fn_f1_bad_1() +void alto2_cpu_device::f1_late_bad() { fatal(9,"fatal: bad late f1 function pointer for task %s, mpc:%05o f1: %s\n", task_name(m_task), m_mpc, f1_name(f1())); } /** @brief fatal exit on unitialized dynamic phase F2 function */ -void alto2_cpu_device::fn_f2_bad_0() +void alto2_cpu_device::f2_early_bad() { fatal(9,"fatal: bad early f2 function pointer for task %s, mpc:%05o f2: %s\n", task_name(m_task), m_mpc, f2_name(f2())); } /** @brief fatal exit on unitialized latching phase F2 function */ -void alto2_cpu_device::fn_f2_bad_1() +void alto2_cpu_device::f2_late_bad() { fatal(9,"fatal: bad late f2 function pointer for task %s, mpc:%05o f2: %s\n", task_name(m_task), m_mpc, f2_name(f2())); @@ -2335,14 +2331,170 @@ void alto2_cpu_device::execute_run() * because the emulator task F2 acsource or acdest may * change the m_rsel */ - ((*this).*m_f2[0][m_task][f2()])(); + switch (f2()) { + case f2_task_12: // f2 12 task specific + switch (m_task) { + case task_emu: // emulator task + f2_early_load_dns(); + break; + } + break; + case f2_task_13: // f2 13 task specific + switch (m_task) { + case task_emu: // emulator task + f2_early_acdest(); + break; + } + break; + case f2_task_16: // f2 16 task specific + switch (m_task) { + case task_emu: // emulator task + f2_early_acsource(); + break; + } + break; + } // early BS function can be done now - if (do_bs) - ((*this).*m_bs[0][m_task][bs()])(); + if (do_bs) { + switch (bs()) { + case bs_read_r: // BUS source is R register + bs_early_read_r(); + break; + case bs_load_r: // load R register from BUS + bs_early_load_r(); + break; + case bs_task_3: // BUS source is task specific + switch (m_task) { + case task_emu: // emulator task + bs_early_read_sreg(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + bs_early_read_kstat(); + break; + case task_ether: // ethernet task + bs_early_eidfct(); + break; + case task_mrt: // memory refresh task + case task_dwt: // display word task + case task_curt: // cursor task + case task_dht: // display horizontal task + case task_dvt: // display vertical task + case task_part: // parity task + break; + default: + bs_early_bad(); + } + break; + case bs_task_4: // BUS source is task specific + switch (m_task) { + case task_emu: // emulator task + bs_early_load_sreg(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + bs_early_read_kdata(); + break; + case task_ether: // ethernet task + case task_mrt: // memory refresh task + case task_dwt: // display word task + case task_curt: // cursor task + case task_dht: // display horizontal task + case task_dvt: // display vertical task + case task_part: // parity task + break; + default: + bs_early_bad(); + } + break; + case bs_read_md: // BUS source is memory data + bs_early_read_md(); + break; + case bs_mouse: // BUS source is mouse data + bs_early_mouse(); + break; + case bs_disp: // BUS source displacement (emulator task) + switch (m_task) { + case task_emu: // emulator task + bs_early_emu_disp(); + break; + default: + bs_early_disp(); + } + break; + } + } // early F1 function - ((*this).*m_f1[0][m_task][f1()])(); + switch (f1()) { + case f1_task: // f1 02 task switch + f1_early_task(); + break; + case f1_block: // f1 03 task block + switch (m_task) { + case task_emu: // emulator task + f1_early_emu_block(); + break; + case task_ksec: // disk sector task + f1_early_ksec_block(); + break; + case task_ether: // ethernet task + f1_early_eth_block(); + break; + case task_mrt: // memory refresh task + f1_early_mrt_block(); + break; + case task_dwt: // display word task + f1_early_dwt_block(); + break; + case task_curt: // cursor task + f1_early_curt_block(); + break; + case task_dht: // display horizontal task + f1_early_dht_block(); + break; + case task_dvt: // display vertical task + f1_early_dvt_block(); + break; + case task_part: // parity task + f1_early_block(); + break; + case task_kwd: // disk word task + f1_early_kwd_block(); + break; + } + break; + + case f1_task_13: // f1 13 task specific + switch (m_task) { + case task_ether: // ethernet task + f1_early_eilfct(); + break; + } + break; + case f1_task_14: // f1 14 task specific + switch (m_task) { + case task_ether: // ethernet task + f1_early_epfct(); + break; + } + break; + case f1_task_16: // f1 16 task specific + switch (m_task) { + case task_emu: // emulator task + f1_early_rsnf(); + break; + } + break; + case f1_task_17: // f1 17 task specific + switch (m_task) { + case task_emu: // emulator task + f1_early_startf(); + break; + } + break; + } /** * The ALU a10 PROM address lines are @@ -2367,14 +2519,255 @@ void alto2_cpu_device::execute_run() m_shifter = m_l; // late F1 function call now - ((*this).*m_f1[1][m_task][f1()])(); + switch (f1()) { + case f1_load_mar: // f1 01 load memory address register + f1_late_load_mar(); + break; + case f1_l_lsh_1: // f1 04 left shift L once + f1_late_l_lsh_1(); + break; + case f1_l_rsh_1: // f1 05 right shift L once + f1_late_l_rsh_1(); + break; + case f1_l_lcy_8: // f1 06 cycle L 8 times + f1_late_l_lcy_8(); + break; + + case f1_task_10: // f1 10 task specific + switch (m_task) { + case task_emu: // emulator task + f1_late_swmode(); + break; + } + break; + case f1_task_11: // f1 11 task specific + switch (m_task) { + case task_emu: // emulator task + f1_late_wrtram(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f1_late_strobe(); + break; + } + break; + case f1_task_12: // f1 12 task specific + switch (m_task) { + case task_emu: // emulator task + f1_late_rdram(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f1_late_load_kstat(); + break; + } + break; + case f1_task_13: // f1 13 task specific + switch (m_task) { + case task_emu: // emulator task +#if (ALTO2_UCODE_RAM_PAGES == 3) + f1_late_load_rmr(); +#else + f1_late_load_srb(); +#endif + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f1_late_increcno(); + break; + } + break; + case f1_task_14: // f1 14 task specific + switch (m_task) { + case task_ksec: // disk sector task + case task_kwd: // disk word task + f1_late_clrstat(); + break; + } + break; + case f1_task_15: // f1 15 task specific + switch (m_task) { + case task_emu: // emulator task + f1_late_emu_load_esrb(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f1_late_load_kcom(); + break; + case task_ether: // ethernet task + f1_late_ewfct(); + break; + } + break; + case f1_task_16: // f1 16 task specific + switch (m_task) { + case task_ksec: // disk sector task + case task_kwd: // disk word task + f1_late_load_kadr(); + break; + } + break; + case f1_task_17: // f1 17 task specific + switch (m_task) { + case task_ksec: // disk sector task + case task_kwd: // disk word task + f1_late_load_kdata(); + break; + } + break; + } // late F2 function call now - ((*this).*m_f2[1][m_task][f2()])(); + switch (f2()) { + case f2_bus_eq_zero: // f2 01 branch on bus equals 0 + f2_late_bus_eq_zero(); + break; + case f2_shifter_lt_zero: // f2 02 branch on shifter less than 0 + f2_late_shifter_lt_zero(); + break; + case f2_shifter_eq_zero: // f2 03 branch on shifter equals 0 + f2_late_shifter_eq_zero(); + break; + case f2_bus: // f2 04 branch on BUS[6-15] + f2_late_bus(); + break; + case f2_alucy: // f2 05 branch on (latched) ALU carry + f2_late_alucy(); + break; + case f2_load_md: // f2 06 load memory data + f2_late_load_md(); + break; + + case f2_task_10: // f2 10 task specific + switch (m_task) { + case task_emu: // emulator task + f2_late_busodd(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f2_late_init(); + break; + case task_ether: // ethernet task + f2_late_eodfct(); + break; + case task_dwt: // display word task + f2_late_dwt_load_ddr(); + break; + case task_curt: // cursor task + f2_late_load_xpreg(); + break; + case task_dht: // display horizontal task + f2_late_evenfield(); + break; + case task_dvt: // display vertical task + f2_late_evenfield(); + break; + } + break; + case f2_task_11: // f2 11 task specific + switch (m_task) { + case task_emu: // emulator task + f2_late_magic(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f2_late_rwc(); + break; + case task_ether: // ethernet task + f2_late_eosfct(); + break; + case task_curt: // cursor task + f2_late_load_csr(); + break; + case task_dht: // display horizontal task + f2_late_dht_setmode(); + break; + } + break; + case f2_task_12: // f2 12 task specific + switch (m_task) { + case task_emu: // emulator task + f2_late_load_dns(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f2_late_recno(); + break; + case task_ether: // ethernet task + f2_late_erbfct(); + break; + } + break; + case f2_task_13: // f2 13 task specific + switch (m_task) { + case task_ksec: // disk sector task + case task_kwd: // disk word task + f2_late_xfrdat(); + break; + case task_ether: // ethernet task + f2_late_eefct(); + break; + } + break; + case f2_task_14: // f2 14 task specific + switch (m_task) { + case task_emu: // emulator task + f2_late_load_ir(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f2_late_swrnrdy(); + break; + case task_ether: // ethernet task + f2_late_ebfct(); + break; + } + break; + case f2_task_15: // f2 15 task specific + switch (m_task) { + case task_emu: // emulator task + f2_late_idisp(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f2_late_nfer(); + break; + case task_ether: // ethernet task + f2_late_ecbfct(); + break; + } + break; + case f2_task_16: // f2 16 task specific + switch (m_task) { + case task_emu: // emulator task + f2_late_acsource(); + break; + case task_ksec: // disk sector task + case task_kwd: // disk word task + f2_late_strobon(); + break; + case task_ether: // ethernet task + f2_late_eisfct(); + break; + } + break; + } // late BS function call now, if no constant was put on the bus - if (do_bs) - ((*this).*m_bs[1][m_task][bs()])(); + if (do_bs) { + switch (bs()) { + case bs_load_r: // load R register from BUS + bs_late_load_r(); + break; + case bs_task_4: // BUS source is task specific + switch (m_task) { + case task_emu: // emulator task + bs_late_load_sreg(); + break; + } + break; + } + } // update T register, if LOADT is set if (loadt()) { @@ -2400,7 +2793,7 @@ void alto2_cpu_device::execute_run() } // update M (MYL) register, if a RAM related task is active if (m_ram_related[m_task]) { - m_m = m_alu; // load M from ALU, if 'GOODTASK' + m_myl = m_alu; // load M from ALU, if 'GOODTASK' m_s[m_s_reg_bank[m_task]][0] = m_alu; // also writes to S[bank][0], which can't be read LOG((this,LOG_CPU,2, " M<- ALU (%#o)\n", m_alu)); } @@ -2422,7 +2815,34 @@ void alto2_cpu_device::execute_run() m_next2 = m_task_next2[m_task]; // get address modifier after task switch (needed?) // let the task know it becomes active now and (most probably) reset the wakeup - ((*this).*m_active_callback[m_task])(); + switch (m_task) { + case task_emu: // emulator task + break; + case task_ksec: // disk sector task + break; + case task_ether: // ethernet task + activate_eth(); + break; + case task_mrt: // memory refresh task + activate_mrt(); + break; + case task_dwt: // display word task + break; + case task_curt: // cursor task + activate_curt(); + break; + case task_dht: // display horizontal task + activate_dht(); + break; + case task_dvt: // display vertical task + activate_dvt(); + break; + case task_part: // parity task + activate_part(); + break; + case task_kwd: // disk word task + break; + } } } @@ -2449,7 +2869,7 @@ void alto2_cpu_device::execute_run() if (m_unload_time < 0) unload_word(); } - + if (m_bitclk_time >= 0) { /** * Subtract the microcycle time from the bitclk time accu. @@ -2479,52 +2899,8 @@ void alto2_cpu_device::hard_reset() for (int task = 0; task < ALTO2_TASKS; task++) { // every task starts at mpc = task number, in either ROM0 or RAM0 m_task_mpc[task] = (m_ctl2k_u38[task] >> 4) ^ 017; - m_active_callback[task] = &alto2_cpu_device::noop; if (0 == (m_reset_mode & (1 << task))) m_task_mpc[task] |= ALTO2_UCODE_RAM_BASE; - - set_bs(task, bs_read_r, &alto2_cpu_device::bs_early_read_r, nullptr); - set_bs(task, bs_load_r, &alto2_cpu_device::bs_early_load_r, &alto2_cpu_device::bs_late_load_r); - set_bs(task, bs_no_source, nullptr, nullptr); - set_bs(task, bs_task_3, &alto2_cpu_device::fn_bs_bad_0, &alto2_cpu_device::fn_bs_bad_1); // task specific - set_bs(task, bs_task_4, &alto2_cpu_device::fn_bs_bad_0, &alto2_cpu_device::fn_bs_bad_1); // task specific - set_bs(task, bs_read_md, &alto2_cpu_device::bs_early_read_md, nullptr); - set_bs(task, bs_mouse, &alto2_cpu_device::bs_early_mouse, nullptr); - set_bs(task, bs_disp, &alto2_cpu_device::bs_early_disp, nullptr); - - set_f1(task, f1_nop, nullptr, nullptr); - set_f1(task, f1_load_mar, nullptr, &alto2_cpu_device::f1_late_load_mar); - set_f1(task, f1_task, &alto2_cpu_device::f1_early_task, nullptr); - set_f1(task, f1_block, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // not all tasks have the f1_block - set_f1(task, f1_l_lsh_1, nullptr, &alto2_cpu_device::f1_late_l_lsh_1); - set_f1(task, f1_l_rsh_1, nullptr, &alto2_cpu_device::f1_late_l_rsh_1); - set_f1(task, f1_l_lcy_8, nullptr, &alto2_cpu_device::f1_late_l_lcy_8); - set_f1(task, f1_const, nullptr, nullptr); - set_f1(task, f1_task_10, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // f1_task_10 to f1_task_17 are task specific - set_f1(task, f1_task_11, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // f1_task_10 to f1_task_17 are task specific - set_f1(task, f1_task_12, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // f1_task_10 to f1_task_17 are task specific - set_f1(task, f1_task_13, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // f1_task_10 to f1_task_17 are task specific - set_f1(task, f1_task_14, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // f1_task_10 to f1_task_17 are task specific - set_f1(task, f1_task_15, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // f1_task_10 to f1_task_17 are task specific - set_f1(task, f1_task_16, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // f1_task_10 to f1_task_17 are task specific - set_f1(task, f1_task_17, &alto2_cpu_device::fn_f1_bad_0, &alto2_cpu_device::fn_f1_bad_1); // f1_task_10 to f1_task_17 are task specific - - set_f2(task, f2_nop, nullptr, nullptr); - set_f2(task, f2_bus_eq_zero, nullptr, &alto2_cpu_device::f2_late_bus_eq_zero); - set_f2(task, f2_shifter_lt_zero,nullptr, &alto2_cpu_device::f2_late_shifter_lt_zero); - set_f2(task, f2_shifter_eq_zero,nullptr, &alto2_cpu_device::f2_late_shifter_eq_zero); - set_f2(task, f2_bus, nullptr, &alto2_cpu_device::f2_late_bus); - set_f2(task, f2_alucy, nullptr, &alto2_cpu_device::f2_late_alucy); - set_f2(task, f2_load_md, nullptr, &alto2_cpu_device::f2_late_load_md); - set_f2(task, f2_const, nullptr, nullptr); - set_f2(task, f2_task_10, &alto2_cpu_device::fn_f2_bad_0, &alto2_cpu_device::fn_f2_bad_1); // f2_task_10 to f2_task_17 are task specific - set_f2(task, f2_task_11, &alto2_cpu_device::fn_f2_bad_0, &alto2_cpu_device::fn_f2_bad_1); // f2_task_10 to f2_task_17 are task specific - set_f2(task, f2_task_12, &alto2_cpu_device::fn_f2_bad_0, &alto2_cpu_device::fn_f2_bad_1); // f2_task_10 to f2_task_17 are task specific - set_f2(task, f2_task_13, &alto2_cpu_device::fn_f2_bad_0, &alto2_cpu_device::fn_f2_bad_1); // f2_task_10 to f2_task_17 are task specific - set_f2(task, f2_task_14, &alto2_cpu_device::fn_f2_bad_0, &alto2_cpu_device::fn_f2_bad_1); // f2_task_10 to f2_task_17 are task specific - set_f2(task, f2_task_15, &alto2_cpu_device::fn_f2_bad_0, &alto2_cpu_device::fn_f2_bad_1); // f2_task_10 to f2_task_17 are task specific - set_f2(task, f2_task_16, &alto2_cpu_device::fn_f2_bad_0, &alto2_cpu_device::fn_f2_bad_1); // f2_task_10 to f2_task_17 are task specific - set_f2(task, f2_task_17, &alto2_cpu_device::fn_f2_bad_0, &alto2_cpu_device::fn_f2_bad_1); // f2_task_10 to f2_task_17 are task specific } init_memory(); @@ -2546,6 +2922,8 @@ void alto2_cpu_device::hard_reset() init_kwd(); m_dsp_time = 0; // reset the display state timing + m_unload_time = 0; // reset the word unload timing accu + m_bitclk_time = 0; // reset the bitclk timing accu m_task = task_emu; // start with task 0 (emulator) m_task_wakeup |= 1 << task_emu; // set wakeup flag } diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h index 63d1e634aae..823500a56cd 100644 --- a/src/devices/cpu/alto2/alto2cpu.h +++ b/src/devices/cpu/alto2/alto2cpu.h @@ -42,14 +42,17 @@ enum { }; #ifndef ALTO2_DEBUG -#define ALTO2_DEBUG 1 //!< define to 1 to enable logerror() output +//! Define to 1 to enable logerror() output. +#define ALTO2_DEBUG 1 #endif #ifndef ALTO2_CRAM_CONFIG -#define ALTO2_CRAM_CONFIG 2 //!< use default CROM/CRAM configuration 2 +//! Use default CROM/CRAM configuration 2. +#define ALTO2_CRAM_CONFIG 2 #endif -#define USE_PRIO_F9318 0 //!< define to 1 to use the F9318 priority encoder code (broken) +//!< Define to 1 to use the F9318 priority encoder code (broken). +#define USE_PRIO_F9318 0 #define ALTO2_TASKS 16 //!< 16 task slots #define ALTO2_REGS 32 //!< 32 16-bit words in the R register file @@ -61,7 +64,7 @@ enum { #define ALTO2_CONST_SIZE 256 //!< number words in the constant ROM -//! inverted bits in the micro instruction 32 bit word +//! Inverted bits in the micro instruction 32 bit word. #define ALTO2_UCODE_INVERTED ((1 << 10) | (1 << 15) | (1 << 19)) /******************************************************************************** @@ -278,8 +281,6 @@ private: speaker_sound_device* m_speaker; - typedef void (alto2_cpu_device::*a2func)(); - //! task numbers enum { task_emu, //!< emulator task @@ -575,10 +576,9 @@ private: UINT16 m_l; //!< L register UINT16 m_shifter; //!< shifter output UINT16 m_laluc0; //!< the latched ALU carry output - UINT16 m_m; //!< M register of RAM related tasks (MYL latch in the schematics) + UINT16 m_myl; //!< M register of RAM related tasks (MYL latch in the schematics) UINT16 m_cram_addr; //!< constant RAM address UINT16 m_task_wakeup; //!< task wakeup: bit 1< Date: Mon, 8 Aug 2016 11:04:59 -0400 Subject: [PATCH 082/116] Add "Memory Reset" input type to Nichibutsu mahjong games as designated in source --- src/mame/drivers/nbmj8688.cpp | 68 +++++++++++++++++------------------ src/mame/drivers/nbmj8891.cpp | 48 ++++++++++++------------- src/mame/drivers/nbmj8991.cpp | 34 +++++++++--------- 3 files changed, 75 insertions(+), 75 deletions(-) diff --git a/src/mame/drivers/nbmj8688.cpp b/src/mame/drivers/nbmj8688.cpp index 314a62da37f..1f8e25d9fc7 100644 --- a/src/mame/drivers/nbmj8688.cpp +++ b/src/mame/drivers/nbmj8688.cpp @@ -435,7 +435,7 @@ static INPUT_PORTS_START( mjsikaku ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -540,7 +540,7 @@ static INPUT_PORTS_START( mmsikaku ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -606,7 +606,7 @@ static INPUT_PORTS_START( otonano ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -672,7 +672,7 @@ static INPUT_PORTS_START( mjcamera ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -736,7 +736,7 @@ static INPUT_PORTS_START( kaguya ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY // PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -803,7 +803,7 @@ static INPUT_PORTS_START( kaguya2 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY // PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -867,7 +867,7 @@ static INPUT_PORTS_START( kanatuen ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -931,7 +931,7 @@ static INPUT_PORTS_START( kyuhito ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -996,7 +996,7 @@ static INPUT_PORTS_START( idhimitu ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1061,7 +1061,7 @@ static INPUT_PORTS_START( secolove ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1126,7 +1126,7 @@ static INPUT_PORTS_START( barline ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1236,7 +1236,7 @@ static INPUT_PORTS_START( citylove ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1298,7 +1298,7 @@ static INPUT_PORTS_START( mcitylov ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN2 @@ -1364,7 +1364,7 @@ static INPUT_PORTS_START( seiha ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1428,7 +1428,7 @@ static INPUT_PORTS_START( seiham ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1494,7 +1494,7 @@ static INPUT_PORTS_START( iemoto ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1558,7 +1558,7 @@ static INPUT_PORTS_START( iemotom ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1623,7 +1623,7 @@ static INPUT_PORTS_START( ryuuha ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1688,7 +1688,7 @@ static INPUT_PORTS_START( bijokkoy ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1764,7 +1764,7 @@ static INPUT_PORTS_START( bijokkog ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1840,7 +1840,7 @@ static INPUT_PORTS_START( housemnq ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1915,7 +1915,7 @@ static INPUT_PORTS_START( housemn2 ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1993,7 +1993,7 @@ static INPUT_PORTS_START( orangec ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN2 @@ -2058,7 +2058,7 @@ static INPUT_PORTS_START( orangeci ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN2 @@ -2123,7 +2123,7 @@ static INPUT_PORTS_START( vipclub ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN2 @@ -2186,7 +2186,7 @@ static INPUT_PORTS_START( livegal ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -2235,7 +2235,7 @@ static INPUT_PORTS_START( ojousan ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -2299,7 +2299,7 @@ static INPUT_PORTS_START( ojousanm ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -2365,7 +2365,7 @@ static INPUT_PORTS_START( korinai ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -2429,7 +2429,7 @@ static INPUT_PORTS_START( korinaim ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -2493,7 +2493,7 @@ static INPUT_PORTS_START( crystalg ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -2555,7 +2555,7 @@ static INPUT_PORTS_START( crystal2 ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -2617,7 +2617,7 @@ static INPUT_PORTS_START( apparel ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -2687,7 +2687,7 @@ static INPUT_PORTS_START( nightlov ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8688_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_TOGGLE // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 diff --git a/src/mame/drivers/nbmj8891.cpp b/src/mame/drivers/nbmj8891.cpp index 25c4fdbb1bd..3e9b2b41351 100644 --- a/src/mame/drivers/nbmj8891.cpp +++ b/src/mame/drivers/nbmj8891.cpp @@ -616,7 +616,7 @@ static INPUT_PORTS_START( hanamomo ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -689,7 +689,7 @@ static INPUT_PORTS_START( mjcamerb ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -755,7 +755,7 @@ static INPUT_PORTS_START( mmcamera ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -798,7 +798,7 @@ static INPUT_PORTS_START( msjiken ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -883,7 +883,7 @@ static INPUT_PORTS_START( gionbana ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -949,7 +949,7 @@ static INPUT_PORTS_START( mgion ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1015,7 +1015,7 @@ static INPUT_PORTS_START( omotesnd ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1080,7 +1080,7 @@ static INPUT_PORTS_START( abunai ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1146,7 +1146,7 @@ static INPUT_PORTS_START( mgmen89 ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1188,7 +1188,7 @@ static INPUT_PORTS_START( mjfocus ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1252,7 +1252,7 @@ static INPUT_PORTS_START( mjfocusm ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1319,7 +1319,7 @@ static INPUT_PORTS_START( scandal ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1383,7 +1383,7 @@ static INPUT_PORTS_START( scandalm ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // COIN2 @@ -1449,7 +1449,7 @@ static INPUT_PORTS_START( mjnanpas ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1515,7 +1515,7 @@ static INPUT_PORTS_START( mjnanpaa ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1584,7 +1584,7 @@ static INPUT_PORTS_START( bananadr ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1649,7 +1649,7 @@ static INPUT_PORTS_START( club90s ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1728,7 +1728,7 @@ static INPUT_PORTS_START( lovehous ) PORT_START("PORT0-2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_outcoin_flag_r, nullptr) // OUT COIN - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -1768,7 +1768,7 @@ static INPUT_PORTS_START( mladyhtr ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1833,7 +1833,7 @@ static INPUT_PORTS_START( chinmoku ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Credit Clear") PORT_CODE(KEYCODE_4) // CREDIT CLEAR @@ -1911,7 +1911,7 @@ static INPUT_PORTS_START( maiko ) PORT_START("PORT0-2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) // PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_outcoin_flag_r, nullptr) // OUT COIN - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) // @@ -1987,7 +1987,7 @@ static INPUT_PORTS_START( mmaiko ) PORT_START("PORT0-2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_outcoin_flag_r, nullptr) // OUT COIN - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -2063,7 +2063,7 @@ static INPUT_PORTS_START( hanaoji ) PORT_START("PORT0-2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) // PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_outcoin_flag_r, nullptr) // OUT COIN - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) // @@ -2229,7 +2229,7 @@ static INPUT_PORTS_START( taiwanmb ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8891_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // COIN OUT - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 diff --git a/src/mame/drivers/nbmj8991.cpp b/src/mame/drivers/nbmj8991.cpp index 50900d54b80..e84c59224d2 100644 --- a/src/mame/drivers/nbmj8991.cpp +++ b/src/mame/drivers/nbmj8991.cpp @@ -288,7 +288,7 @@ static INPUT_PORTS_START( pstadium ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -330,7 +330,7 @@ static INPUT_PORTS_START( triplew1 ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -395,7 +395,7 @@ static INPUT_PORTS_START( ntopstar ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -460,7 +460,7 @@ static INPUT_PORTS_START( mjlstory ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -525,7 +525,7 @@ static INPUT_PORTS_START( vanilla ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -592,7 +592,7 @@ static INPUT_PORTS_START( finalbny ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -657,7 +657,7 @@ static INPUT_PORTS_START( qmhayaku ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -701,7 +701,7 @@ static INPUT_PORTS_START( galkoku ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -770,7 +770,7 @@ static INPUT_PORTS_START( hyouban ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -839,7 +839,7 @@ static INPUT_PORTS_START( galkaika ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -908,7 +908,7 @@ static INPUT_PORTS_START( tokyogal ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -977,7 +977,7 @@ static INPUT_PORTS_START( tokimbsj ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1046,7 +1046,7 @@ static INPUT_PORTS_START( mcontest ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1115,7 +1115,7 @@ static INPUT_PORTS_START( uchuuai ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1184,7 +1184,7 @@ static INPUT_PORTS_START( mjgottub ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1248,7 +1248,7 @@ static INPUT_PORTS_START( av2mj1bb ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 @@ -1315,7 +1315,7 @@ static INPUT_PORTS_START( av2mj2rg ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, nbmj8991_state, nb1413m3_busyflag_r, nullptr) // DRAW BUSY PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE3 ) // MEMORY RESET + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // MEMORY RESET PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // ANALYZER PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) // TEST PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1 From 1326ba90c4e370c35f9b34e02ad1674391415425 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 8 Aug 2016 16:05:22 +0100 Subject: [PATCH 083/116] further MPU4 identification --- src/mame/drivers/mpu4sw.hxx | 465 +++++++++++++++++++++--------------- 1 file changed, 268 insertions(+), 197 deletions(-) diff --git a/src/mame/drivers/mpu4sw.hxx b/src/mame/drivers/mpu4sw.hxx index c8d9c00f8ab..d5204fb74a8 100644 --- a/src/mame/drivers/mpu4sw.hxx +++ b/src/mame/drivers/mpu4sw.hxx @@ -2405,49 +2405,9 @@ GAME_CUSTOM( 199?, m4tutfrt__a5, m4tutfrt, "tui05___.1a3", 0x0000, 0 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4cashat, 0, "csa12y.p1", 0x0000, 0x020000, CRC(0374584a) SHA1(446e1d122d5b38e4ee11d98a4235d7198d98b541), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4cashat__a, m4cashat, "caa22ad.p1", 0x0000, 0x020000, CRC(b6274874) SHA1(7c2dc0f3e8e7bb76f3b90300141b320fa0ca39ac), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4cashat__b, m4cashat, "caa22b.p1", 0x0000, 0x020000, CRC(e7f6f5e5) SHA1(fc16b50ae00525a3c84c0cbf7b418898cc5db1bc), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4cashat__c, m4cashat, "caa22bd.p1", 0x0000, 0x020000, CRC(581b2b6f) SHA1(55f910c7646d5e7d3be6ffd5b4ec0f04fb98b82e), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4cashat__d, m4cashat, "caa22d.p1", 0x0000, 0x020000, CRC(cc494044) SHA1(13ff215f41833aa133fe9d120792c834d1e0752b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4cashat__e, m4cashat, "caa22dh.p1", 0x0000, 0x020000, CRC(18ae14fa) SHA1(20a8f197075ec153ac116b9a85e3591d9d4d045d), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4cashat__f, m4cashat, "caa22dk.p1", 0x0000, 0x020000, CRC(71fa4ee7) SHA1(ddf2cee47f93cc5794d64922658d5892993c8d2f), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4cashat__g, m4cashat, "caa22dr.p1", 0x0000, 0x020000, CRC(c2f5f5d6) SHA1(aebedb84ae388a1f0c558d36893d1341c1959594), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4cashat__h, m4cashat, "caa22dy.p1", 0x0000, 0x020000, CRC(3b3de6b1) SHA1(d72ce7851969466063c6d7952787691a7c44c9dd), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4cashat__i, m4cashat, "caa22h.p1", 0x0000, 0x020000, CRC(a743ca70) SHA1(e4b5ee02524873c2ccb66b4bfca39464c23eb43e), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4cashat__j, m4cashat, "caa22k.p1", 0x0000, 0x020000, CRC(ce17906d) SHA1(18a302132e683b00509982c09c6e3b00ae1201a0), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4cashat__k, m4cashat, "caa22r.p1", 0x0000, 0x020000, CRC(7d182b5c) SHA1(801d1b032e94cc45302a9f84ba7f9ce2b74f6449), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4cashat__l, m4cashat, "caa22s.p1", 0x0000, 0x020000, CRC(e7edf653) SHA1(f2bdf45cc18ad4b45b47d2b2b4641460fcdfa963), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4cashat__m, m4cashat, "caa22y.p1", 0x0000, 0x020000, CRC(84d0383b) SHA1(791666ce17fd65067df446a3320efd22bce23925), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4cashat__n, m4cashat, "caa23ad.p1", 0x0000, 0x020000, CRC(a8641c35) SHA1(18dad4634e27e4f0b791c331b9efcf5e1d56d3bb), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4cashat__o, m4cashat, "caa23b.p1", 0x0000, 0x020000, CRC(a867c129) SHA1(9b0b577938ae0500a8b80211710ed5c0b2a597fa), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4cashat__p, m4cashat, "caa23bd.p1", 0x0000, 0x020000, CRC(46587f2e) SHA1(b14ed6b810ba3039824a0d13c5b75fedd40803b3), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4cashat__q, m4cashat, "caa23d.p1", 0x0000, 0x020000, CRC(83d87488) SHA1(1e13a47de4837e42650c6a4a13a838eb68d0beae), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4cashat__r, m4cashat, "caa23dh.p1", 0x0000, 0x020000, CRC(06ed40bb) SHA1(68f2923c4ecd91231cc66a4be7c797d7b2a46ae0), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4cashat__s, m4cashat, "caa23dk.p1", 0x0000, 0x020000, CRC(6fb91aa6) SHA1(5966be8aa9d5348bbdcb85b21acceaabc3c02602), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4cashat__t, m4cashat, "caa23dr.p1", 0x0000, 0x020000, CRC(dcb6a197) SHA1(a18af78ba604b53a2af1e9b8dfdc6858964f631d), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4cashat__u, m4cashat, "caa23dy.p1", 0x0000, 0x020000, CRC(257eb2f0) SHA1(0a5f9743afb5dd7392425951580532ea5f8f17f1), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4cashat__v, m4cashat, "caa23h.p1", 0x0000, 0x020000, CRC(e8d2febc) SHA1(14fe5e1699fef74145f2f6fff61e75fe3e3a0b3b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4cashat__w, m4cashat, "caa23k.p1", 0x0000, 0x020000, CRC(8186a4a1) SHA1(0d8f59df0fb5a1044f6fb7d81f50f9c9b94add9b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4cashat__x, m4cashat, "caa23r.p1", 0x0000, 0x020000, CRC(32891f90) SHA1(c832c2610606bc5a3beeff8f85c31af496b14427), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4cashat__y, m4cashat, "caa23s.p1", 0x0000, 0x020000, CRC(26a49cdd) SHA1(ee28a22eeb8c4e8ddf041122505f9846d6b6d7d6), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4cashat__z, m4cashat, "caa23y.p1", 0x0000, 0x020000, CRC(cb410cf7) SHA1(31d34a766939a9b2a23be00c2ffd658d854b3ab4), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4cashat__0, m4cashat, "casattack8.bin", 0x0000, 0x020000, CRC(e29ea247) SHA1(ad00ea3bfd2eab51b20fd786cb1ce84de0d98173), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4cashat__1, m4cashat, "catt15g", 0x0000, 0x020000, CRC(3f7a8863) SHA1(df8ed393aeb3a5ec3fd5bdc01c9dbbb630e6d254), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4cashat__2, m4cashat, "catt15t", 0x0000, 0x020000, CRC(c6760c3a) SHA1(b7f4a3af52faf7e430e5b4ec75e2dc97e3f07dc0), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4cashat__3, m4cashat, "csa11ad.p1", 0x0000, 0x020000, CRC(7c1daa59) SHA1(9c0479094ba2f985803e58360b738b0baa2e410a), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4cashat__4, m4cashat, "csa11b.p1", 0x0000, 0x020000, CRC(c740daba) SHA1(afa5bdf9f6aacb3a5126aa828e4d0d2518efe663), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4cashat__5, m4cashat, "csa11bd.p1", 0x0000, 0x020000, CRC(55fccfd1) SHA1(b7c748573e5fb32a6be5e069e7f165a11c62b7d5), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4cashat__6, m4cashat, "csa11d.p1", 0x0000, 0x020000, CRC(ecff6f1b) SHA1(3f37d8e20d5663e376c9dc5876a910a320edcf7d), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4cashat__7, m4cashat, "csa11dh.p1", 0x0000, 0x020000, CRC(bbc0acca) SHA1(80d95505041fd4c869f9d835d0527070f2f582d9), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4cashat__8, m4cashat, "csa11dk.p1", 0x0000, 0x020000, CRC(1549f044) SHA1(22bc130106a23d0e9c354b4aa97d7b7fd8776082), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 36)" ) -GAME_CUSTOM( 199?, m4cashat__9, m4cashat, "csa11dr.p1", 0x0000, 0x020000, CRC(cf121168) SHA1(aa52b528ac565684399dc58aeb56691457727035), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 37)" ) -GAME_CUSTOM( 199?, m4cashat__aa, m4cashat, "csa11dy.p1", 0x0000, 0x020000, CRC(36da020f) SHA1(ca202c7127450d905e4717776e1f1d32fa89279b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 38)" ) -GAME_CUSTOM( 199?, m4cashat__ab, m4cashat, "csa11h.p1", 0x0000, 0x020000, CRC(297cb9a1) SHA1(63460eed75242fc7c27ee1fc9da28221e7bb21b1), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4cashat__ac, m4cashat, "csa11k.p1", 0x0000, 0x020000, CRC(87f5e52f) SHA1(30b7f8c17198045bba30aaabbe74b3c1dc7d0320), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4cashat__ad, m4cashat, "csa11r.p1", 0x0000, 0x020000, CRC(5dae0403) SHA1(6f2238f0fe0797bf0926044bb251fed6f97dbed6), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 41)" ) -GAME_CUSTOM( 199?, m4cashat__ae, m4cashat, "csa11s.p1", 0x0000, 0x020000, CRC(bef7a119) SHA1(88fc2003a7adda928e2e0fb78db32c7ffcbda924), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4cashat__af, m4cashat, "csa11y.p1", 0x0000, 0x020000, CRC(a4661764) SHA1(740be82275358b8e3dcec5982b18a083d043d99d), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 43)" ) +// "(C)1993 BARCREST" and "CSA 1.2" +GAME_CUSTOM( 199?, m4cashat, 0, "csa12s.p1", 0x0000, 0x020000, CRC(61c8af36) SHA1(d81a4056b573194a8627a3618f805d379140ff6a), "Barcrest","Cash Attack (Barcrest) (MPU4) (CSA 1.2)" ) +GAME_CUSTOM( 199?, m4cashat__ar, m4cashat, "csa12y.p1", 0x0000, 0x020000, CRC(0374584a) SHA1(446e1d122d5b38e4ee11d98a4235d7198d98b541), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4cashat__ag, m4cashat, "csa12ad.p1", 0x0000, 0x020000, CRC(b15c5c64) SHA1(7a8c7b929ecaf0e14d9a5d6cdea303f5e3fc1dec), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 44)" ) GAME_CUSTOM( 199?, m4cashat__ah, m4cashat, "csa12b.p1", 0x0000, 0x020000, CRC(60529594) SHA1(a5e70b55b8df6a94c963b970c3a4398b64b0286b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 45)" ) GAME_CUSTOM( 199?, m4cashat__ai, m4cashat, "csa12bd.p1", 0x0000, 0x020000, CRC(98bd39ec) SHA1(ebc5a2690f1453adae0f8faee0159a01df91dd6e), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 46)" ) @@ -2459,7 +2419,53 @@ GAME_CUSTOM( 199?, m4cashat__an, m4cashat, "csa12dy.p1", 0x0000, 0x020 GAME_CUSTOM( 199?, m4cashat__ao, m4cashat, "csa12h.p1", 0x0000, 0x020000, CRC(8e6ef68f) SHA1(b6ac0993938bb065f02498a71628cf532085b347), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 52)" ) GAME_CUSTOM( 199?, m4cashat__ap, m4cashat, "csa12k.p1", 0x0000, 0x020000, CRC(20e7aa01) SHA1(093786b0992c1d9ce5e2d2cfad1eaf1d8e6dc733), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 53)" ) GAME_CUSTOM( 199?, m4cashat__aq, m4cashat, "csa12r.p1", 0x0000, 0x020000, CRC(fabc4b2d) SHA1(3710b7b4bf56e46c60a60fcae82342bf201e38dc), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 54)" ) -GAME_CUSTOM( 199?, m4cashat__ar, m4cashat, "csa12s.p1", 0x0000, 0x020000, CRC(61c8af36) SHA1(d81a4056b573194a8627a3618f805d379140ff6a), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 55)" ) +// "(C)1993 BARCREST" and "CSA 1.1" +GAME_CUSTOM( 199?, m4cashat__ae, m4cashat, "csa11s.p1", 0x0000, 0x020000, CRC(bef7a119) SHA1(88fc2003a7adda928e2e0fb78db32c7ffcbda924), "Barcrest","Cash Attack (Barcrest) (MPU4) (CSA 1.1)" ) +GAME_CUSTOM( 199?, m4cashat__3, m4cashat, "csa11ad.p1", 0x0000, 0x020000, CRC(7c1daa59) SHA1(9c0479094ba2f985803e58360b738b0baa2e410a), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 31)" ) +GAME_CUSTOM( 199?, m4cashat__4, m4cashat, "csa11b.p1", 0x0000, 0x020000, CRC(c740daba) SHA1(afa5bdf9f6aacb3a5126aa828e4d0d2518efe663), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 32)" ) +GAME_CUSTOM( 199?, m4cashat__5, m4cashat, "csa11bd.p1", 0x0000, 0x020000, CRC(55fccfd1) SHA1(b7c748573e5fb32a6be5e069e7f165a11c62b7d5), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 33)" ) +GAME_CUSTOM( 199?, m4cashat__6, m4cashat, "csa11d.p1", 0x0000, 0x020000, CRC(ecff6f1b) SHA1(3f37d8e20d5663e376c9dc5876a910a320edcf7d), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 34)" ) +GAME_CUSTOM( 199?, m4cashat__7, m4cashat, "csa11dh.p1", 0x0000, 0x020000, CRC(bbc0acca) SHA1(80d95505041fd4c869f9d835d0527070f2f582d9), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 35)" ) +GAME_CUSTOM( 199?, m4cashat__8, m4cashat, "csa11dk.p1", 0x0000, 0x020000, CRC(1549f044) SHA1(22bc130106a23d0e9c354b4aa97d7b7fd8776082), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 36)" ) +GAME_CUSTOM( 199?, m4cashat__9, m4cashat, "csa11dr.p1", 0x0000, 0x020000, CRC(cf121168) SHA1(aa52b528ac565684399dc58aeb56691457727035), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 37)" ) +GAME_CUSTOM( 199?, m4cashat__aa, m4cashat, "csa11dy.p1", 0x0000, 0x020000, CRC(36da020f) SHA1(ca202c7127450d905e4717776e1f1d32fa89279b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 38)" ) +GAME_CUSTOM( 199?, m4cashat__ab, m4cashat, "csa11h.p1", 0x0000, 0x020000, CRC(297cb9a1) SHA1(63460eed75242fc7c27ee1fc9da28221e7bb21b1), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 39)" ) +GAME_CUSTOM( 199?, m4cashat__ac, m4cashat, "csa11k.p1", 0x0000, 0x020000, CRC(87f5e52f) SHA1(30b7f8c17198045bba30aaabbe74b3c1dc7d0320), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 40)" ) +GAME_CUSTOM( 199?, m4cashat__ad, m4cashat, "csa11r.p1", 0x0000, 0x020000, CRC(5dae0403) SHA1(6f2238f0fe0797bf0926044bb251fed6f97dbed6), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 41)" ) +GAME_CUSTOM( 199?, m4cashat__af, m4cashat, "csa11y.p1", 0x0000, 0x020000, CRC(a4661764) SHA1(740be82275358b8e3dcec5982b18a083d043d99d), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 43)" ) +// "(C)1993 BARCREST" and "CAA 2.3" +GAME_CUSTOM( 199?, m4cashat__y, m4cashat, "caa23s.p1", 0x0000, 0x020000, CRC(26a49cdd) SHA1(ee28a22eeb8c4e8ddf041122505f9846d6b6d7d6), "Barcrest","Cash Attack (Barcrest) (MPU4) (CAA 2.3)" ) +GAME_CUSTOM( 199?, m4cashat__n, m4cashat, "caa23ad.p1", 0x0000, 0x020000, CRC(a8641c35) SHA1(18dad4634e27e4f0b791c331b9efcf5e1d56d3bb), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4cashat__o, m4cashat, "caa23b.p1", 0x0000, 0x020000, CRC(a867c129) SHA1(9b0b577938ae0500a8b80211710ed5c0b2a597fa), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4cashat__p, m4cashat, "caa23bd.p1", 0x0000, 0x020000, CRC(46587f2e) SHA1(b14ed6b810ba3039824a0d13c5b75fedd40803b3), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4cashat__q, m4cashat, "caa23d.p1", 0x0000, 0x020000, CRC(83d87488) SHA1(1e13a47de4837e42650c6a4a13a838eb68d0beae), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4cashat__r, m4cashat, "caa23dh.p1", 0x0000, 0x020000, CRC(06ed40bb) SHA1(68f2923c4ecd91231cc66a4be7c797d7b2a46ae0), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4cashat__s, m4cashat, "caa23dk.p1", 0x0000, 0x020000, CRC(6fb91aa6) SHA1(5966be8aa9d5348bbdcb85b21acceaabc3c02602), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4cashat__t, m4cashat, "caa23dr.p1", 0x0000, 0x020000, CRC(dcb6a197) SHA1(a18af78ba604b53a2af1e9b8dfdc6858964f631d), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4cashat__u, m4cashat, "caa23dy.p1", 0x0000, 0x020000, CRC(257eb2f0) SHA1(0a5f9743afb5dd7392425951580532ea5f8f17f1), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4cashat__v, m4cashat, "caa23h.p1", 0x0000, 0x020000, CRC(e8d2febc) SHA1(14fe5e1699fef74145f2f6fff61e75fe3e3a0b3b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4cashat__w, m4cashat, "caa23k.p1", 0x0000, 0x020000, CRC(8186a4a1) SHA1(0d8f59df0fb5a1044f6fb7d81f50f9c9b94add9b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4cashat__x, m4cashat, "caa23r.p1", 0x0000, 0x020000, CRC(32891f90) SHA1(c832c2610606bc5a3beeff8f85c31af496b14427), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4cashat__z, m4cashat, "caa23y.p1", 0x0000, 0x020000, CRC(cb410cf7) SHA1(31d34a766939a9b2a23be00c2ffd658d854b3ab4), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 27)" ) +// "(C)1993 BARCREST" and "CAA 2.2" +GAME_CUSTOM( 199?, m4cashat__l, m4cashat, "caa22s.p1", 0x0000, 0x020000, CRC(e7edf653) SHA1(f2bdf45cc18ad4b45b47d2b2b4641460fcdfa963), "Barcrest","Cash Attack (Barcrest) (MPU4) (CAA 2.2)" ) +GAME_CUSTOM( 199?, m4cashat__a, m4cashat, "caa22ad.p1", 0x0000, 0x020000, CRC(b6274874) SHA1(7c2dc0f3e8e7bb76f3b90300141b320fa0ca39ac), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4cashat__b, m4cashat, "caa22b.p1", 0x0000, 0x020000, CRC(e7f6f5e5) SHA1(fc16b50ae00525a3c84c0cbf7b418898cc5db1bc), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4cashat__c, m4cashat, "caa22bd.p1", 0x0000, 0x020000, CRC(581b2b6f) SHA1(55f910c7646d5e7d3be6ffd5b4ec0f04fb98b82e), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4cashat__d, m4cashat, "caa22d.p1", 0x0000, 0x020000, CRC(cc494044) SHA1(13ff215f41833aa133fe9d120792c834d1e0752b), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4cashat__e, m4cashat, "caa22dh.p1", 0x0000, 0x020000, CRC(18ae14fa) SHA1(20a8f197075ec153ac116b9a85e3591d9d4d045d), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4cashat__f, m4cashat, "caa22dk.p1", 0x0000, 0x020000, CRC(71fa4ee7) SHA1(ddf2cee47f93cc5794d64922658d5892993c8d2f), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4cashat__g, m4cashat, "caa22dr.p1", 0x0000, 0x020000, CRC(c2f5f5d6) SHA1(aebedb84ae388a1f0c558d36893d1341c1959594), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4cashat__h, m4cashat, "caa22dy.p1", 0x0000, 0x020000, CRC(3b3de6b1) SHA1(d72ce7851969466063c6d7952787691a7c44c9dd), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4cashat__i, m4cashat, "caa22h.p1", 0x0000, 0x020000, CRC(a743ca70) SHA1(e4b5ee02524873c2ccb66b4bfca39464c23eb43e), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4cashat__j, m4cashat, "caa22k.p1", 0x0000, 0x020000, CRC(ce17906d) SHA1(18a302132e683b00509982c09c6e3b00ae1201a0), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4cashat__k, m4cashat, "caa22r.p1", 0x0000, 0x020000, CRC(7d182b5c) SHA1(801d1b032e94cc45302a9f84ba7f9ce2b74f6449), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4cashat__m, m4cashat, "caa22y.p1", 0x0000, 0x020000, CRC(84d0383b) SHA1(791666ce17fd65067df446a3320efd22bce23925), "Barcrest","Cash Attack (Barcrest) (MPU4) (set 14)" ) +// no copyright string and "CAA 2.3" +GAME_CUSTOM( 199?, m4cashat__0, m4cashat, "casattack8.bin", 0x0000, 0x020000, CRC(e29ea247) SHA1(ad00ea3bfd2eab51b20fd786cb1ce84de0d98173), "hack","Cash Attack (Barcrest) (MPU4) (CAA 2.3, hack, set 1)" ) +GAME_CUSTOM( 199?, m4cashat__1, m4cashat, "catt15g", 0x0000, 0x020000, CRC(3f7a8863) SHA1(df8ed393aeb3a5ec3fd5bdc01c9dbbb630e6d254), "hack","Cash Attack (Barcrest) (MPU4) (CAA 2.3, hack, set 2)" ) +// no copyright string and "CSA 1.2" +GAME_CUSTOM( 199?, m4cashat__2, m4cashat, "catt15t", 0x0000, 0x020000, CRC(c6760c3a) SHA1(b7f4a3af52faf7e430e5b4ec75e2dc97e3f07dc0), "hack","Cash Attack (Barcrest) (MPU4) (CSA 1.2, hack)" ) #define M4RHR_EXTRA_ROMS \ @@ -2478,7 +2484,7 @@ GAME_CUSTOM( 199?, m4cashat__ar, m4cashat, "csa12s.p1", 0x0000, 0x020 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -// "(C)1991 BARCREST" and "CR4 0.2" (HHN on startup) +// "(C)1991 BARCREST" and "CR4 0.9" GAME_CUSTOM( 199?, m4rhr, 0, "cr4s.p1", 0x0000, 0x010000, CRC(836c3e49) SHA1(34dde2fd4fe82ab4a9e16dcf7915705f7b8a007f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9)" ) GAME_CUSTOM( 199?, m4rhr__a, m4rhr, "cr4ad.p1", 0x0000, 0x010000, CRC(b99b3d14) SHA1(2ff68b33881e9b3c2db48c335ccbad783013084a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4rhr__b, m4rhr, "cr4b.p1", 0x0000, 0x010000, CRC(ae2691b8) SHA1(360c5c3d94bf85cf5ead114dd570ea6c61082aa9), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (set 3)" ) @@ -3448,8 +3454,14 @@ GAME_CUSTOM( 199?, m4tenten__a2, m4tenten, "tst01y.p1", 0x0000, 0x010000, GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4andyfh, 0, "afhs.p1", 0x0000, 0x010000, CRC(722660ef) SHA1(e1700f4dc6d14da8e8d8402466057cfd126e067b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "AFH 0.1" +GAME_CUSTOM( 199?, m4andyfh, 0, "afhs.p1", 0x0000, 0x010000, CRC(722660ef) SHA1(e1700f4dc6d14da8e8d8402466057cfd126e067b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (AFH 0.1)" ) +GAME_CUSTOM( 199?, m4andyfh__o, m4andyfh, "afhb.p1", 0x0000, 0x010000, CRC(899945a4) SHA1(ed4a8c9b35e3aa08ea762740a713352560490443), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4andyfh__p, m4andyfh, "afhc.p1", 0x0000, 0x010000, CRC(eff4016e) SHA1(4497ae5033aa4c3b3af8e2f6821dadb3f0683c82), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4andyfh__q, m4andyfh, "afhd.p1", 0x0000, 0x010000, CRC(9f673d80) SHA1(ae2658d817d4d07f2d9f7948f0660f51626d07ac), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4andyfh__r, m4andyfh, "afhr.p1", 0x0000, 0x010000, CRC(232bc900) SHA1(831368184be51b13db30468d519e395a9af7570e), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 19)" ) +// "(C)1991 BARCREST" and "AF3 0.1" +GAME_CUSTOM( 199?, m4andyfh__h, m4andyfh, "af3s.p1", 0x0000, 0x010000, CRC(e9860d9a) SHA1(f1d1323e2329613748602559b6458a19963c091a), "Barcrest","Andy's Full House (Barcrest) (MPU4) (AF3 0.1)" ) GAME_CUSTOM( 199?, m4andyfh__a, m4andyfh, "af3ad.p1", 0x0000, 0x010000, CRC(ef141eca) SHA1(1ba03db9c05f5d60c5e1e0729eb124f6c5c3acf5), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4andyfh__b, m4andyfh, "af3b.p1", 0x0000, 0x010000, CRC(78889d06) SHA1(5ea4c8010b7fd3e2e41d378b69a7cfda27aba99f), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4andyfh__c, m4andyfh, "af3bd.p1", 0x0000, 0x010000, CRC(d9087380) SHA1(1a7f203b722583927eb6f99a493e564100321fe6), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 4)" ) @@ -3457,17 +3469,15 @@ GAME_CUSTOM( 199?, m4andyfh__d, m4andyfh, "af3d.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4andyfh__e, m4andyfh, "af3dk.p1", 0x0000, 0x010000, CRC(4fc4a031) SHA1(c5c68027231988a88610931f395ae08d8e60f962), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4andyfh__f, m4andyfh, "af3dy.p1", 0x0000, 0x010000, CRC(f59c1a50) SHA1(55054a49b7bbf4a27ec808727cfbf3ce9bdfce40), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4andyfh__g, m4andyfh, "af3k.p1", 0x0000, 0x010000, CRC(ddf5edfb) SHA1(ce69c70b1cdcebfa29e1613cb619617a961a649b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4andyfh__h, m4andyfh, "af3s.p1", 0x0000, 0x010000, CRC(e9860d9a) SHA1(f1d1323e2329613748602559b6458a19963c091a), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4andyfh__i, m4andyfh, "af3y.p1", 0x0000, 0x010000, CRC(1895bbe1) SHA1(c084f77004c9086bd75add665b25b0b3e114a91f), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 10)" ) +// "(C)1991 BARCREST" and "AF8 0.1" +GAME_CUSTOM( 199?, m4andyfh__n, m4andyfh, "af8s.p1", 0x0000, 0x010000, CRC(1b06be8e) SHA1(c1b67b23c6e2abca68fb242e24b61333bde688fa), "Barcrest","Andy's Full House (Barcrest) (MPU4) (AF8 0.1)" ) GAME_CUSTOM( 199?, m4andyfh__j, m4andyfh, "af8b.p1", 0x0000, 0x010000, CRC(fa8d002e) SHA1(cad754268706a1c942ce3751aa5a51720a104899), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4andyfh__k, m4andyfh, "af8bd.p1", 0x0000, 0x010000, CRC(f64ce609) SHA1(d36a868647a954fd7974613510aabc6fc18035ee), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4andyfh__l, m4andyfh, "af8c.p1", 0x0000, 0x010000, CRC(6dff4569) SHA1(10809f81924a72b21129158043c023ad6809cced), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4andyfh__m, m4andyfh, "af8k.p1", 0x0000, 0x010000, CRC(0f6cb2a4) SHA1(320954e216e48ef2882f6d4feb7e29c106d49b79), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4andyfh__n, m4andyfh, "af8s.p1", 0x0000, 0x010000, CRC(1b06be8e) SHA1(c1b67b23c6e2abca68fb242e24b61333bde688fa), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4andyfh__o, m4andyfh, "afhb.p1", 0x0000, 0x010000, CRC(899945a4) SHA1(ed4a8c9b35e3aa08ea762740a713352560490443), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4andyfh__p, m4andyfh, "afhc.p1", 0x0000, 0x010000, CRC(eff4016e) SHA1(4497ae5033aa4c3b3af8e2f6821dadb3f0683c82), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4andyfh__q, m4andyfh, "afhd.p1", 0x0000, 0x010000, CRC(9f673d80) SHA1(ae2658d817d4d07f2d9f7948f0660f51626d07ac), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4andyfh__r, m4andyfh, "afhr.p1", 0x0000, 0x010000, CRC(232bc900) SHA1(831368184be51b13db30468d519e395a9af7570e), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 19)" ) +// "(C)1991 BARCREST" and "AFT 0.3" +GAME_CUSTOM( 199?, m4andyfh__1, m4andyfh, "afts.p1", 0x0000, 0x010000, CRC(7f059eec) SHA1(06de497bbae7391bbb09241204dfdd59ecc36569), "Barcrest","Andy's Full House (Barcrest) (MPU4) (AFT 0.3)" ) GAME_CUSTOM( 199?, m4andyfh__s, m4andyfh, "aftad.p1", 0x0000, 0x010000, CRC(72b75e4a) SHA1(fb25a4a455589c51ec7bf1e77faee7f9809eea2c), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 20)" ) GAME_CUSTOM( 199?, m4andyfh__t, m4andyfh, "aftb.p1", 0x0000, 0x010000, CRC(be3cd9ec) SHA1(135f5b575ff1921d08985251b6cd326db4de4f3e), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4andyfh__u, m4andyfh, "aftbd.p1", 0x0000, 0x010000, CRC(d7fd4c6d) SHA1(3eea5f025f25194fd1d4b4cf0643445b11694c7b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 22)" ) @@ -3477,8 +3487,9 @@ GAME_CUSTOM( 199?, m4andyfh__x, m4andyfh, "aftdr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4andyfh__y, m4andyfh, "aftdy.p1", 0x0000, 0x010000, CRC(3e9fc7a6) SHA1(65d181398b3e574b26b060001e9477d5ee40bcc0), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 26)" ) GAME_CUSTOM( 199?, m4andyfh__z, m4andyfh, "aftk.p1", 0x0000, 0x010000, CRC(8d87a910) SHA1(a315210a5c9d880621937412ff6d8d42ac658db2), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 27)" ) GAME_CUSTOM( 199?, m4andyfh__0, m4andyfh, "aftr.p1", 0x0000, 0x010000, CRC(1be08c33) SHA1(21cd201cae159a1a3ee17f9661bc6db5e5a0ad48), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4andyfh__1, m4andyfh, "afts.p1", 0x0000, 0x010000, CRC(7f059eec) SHA1(06de497bbae7391bbb09241204dfdd59ecc36569), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 29)" ) GAME_CUSTOM( 199?, m4andyfh__2, m4andyfh, "afty.p1", 0x0000, 0x010000, CRC(d14f2670) SHA1(a6d21e855fbb90e80c8b8c4af02280343edcb3e8), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 30)" ) +// "(C)1991 BARCREST" and "AFU 0.2" +GAME_CUSTOM( 199?, m4andyfh__ac, m4andyfh, "afus.p1", 0x0000, 0x010000, CRC(efbde76c) SHA1(abad98f2affb46e449a50f5a43729160b275294b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (AFU 0.2)" ) GAME_CUSTOM( 199?, m4andyfh__3, m4andyfh, "afuad.p1", 0x0000, 0x010000, CRC(0f14e261) SHA1(080a5667127e14b6959ff1508f028fd849c27c24), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 31)" ) GAME_CUSTOM( 199?, m4andyfh__4, m4andyfh, "afub.p1", 0x0000, 0x010000, CRC(99c6a4cc) SHA1(36fe83a32aeab413c19bc253edeadf4bc0f73615), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4andyfh__5, m4andyfh, "afubd.p1", 0x0000, 0x010000, CRC(c38d376a) SHA1(843d0dcc0909ea7cd93f6ba707e784b160cb4984), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 33)" ) @@ -3488,8 +3499,9 @@ GAME_CUSTOM( 199?, m4andyfh__8, m4andyfh, "afudr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4andyfh__9, m4andyfh, "afudy.p1", 0x0000, 0x010000, CRC(c2754f00) SHA1(4012231cb4a2eb0e0010f90d173295aa3c1fd6a5), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 37)" ) GAME_CUSTOM( 199?, m4andyfh__aa, m4andyfh, "afuk.p1", 0x0000, 0x010000, CRC(f58fcf3c) SHA1(3731eab62e447a833b7decde842eda6a36cfadef), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 38)" ) GAME_CUSTOM( 199?, m4andyfh__ab, m4andyfh, "afur.p1", 0x0000, 0x010000, CRC(0369ab49) SHA1(53acb382fada789c976b1dd124014778cfe518bc), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 39)" ) -GAME_CUSTOM( 199?, m4andyfh__ac, m4andyfh, "afus.p1", 0x0000, 0x010000, CRC(efbde76c) SHA1(abad98f2affb46e449a50f5a43729160b275294b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4andyfh__ad, m4andyfh, "afuy.p1", 0x0000, 0x010000, CRC(9e0283a7) SHA1(63c0e3f26132a6bd6d8d3a8a3d0ab46e52fb2c09), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 41)" ) +// "(C)1991 BARCREST" and "CA4 0.8" +GAME_CUSTOM( 199?, m4andyfh__al, m4andyfh, "ca4s.p1", 0x0000, 0x010000, CRC(ece1bca7) SHA1(84a168e0d36f7c4f56fc3a7579fe335cc1e5a5ba), "Barcrest","Andy's Full House (Barcrest) (MPU4) (CA4 0.8)" ) GAME_CUSTOM( 199?, m4andyfh__ae, m4andyfh, "ca4ad.p1", 0x0000, 0x010000, CRC(bb311861) SHA1(9606b536c2775997935049caddb79170a98211b4), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 42)" ) GAME_CUSTOM( 199?, m4andyfh__af, m4andyfh, "ca4b.p1", 0x0000, 0x010000, CRC(71e8f0f9) SHA1(663f536f4b3de20c2dcae52d22f3be9be19b0a4d), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4andyfh__ag, m4andyfh, "ca4bd.p1", 0x0000, 0x010000, CRC(808b93e6) SHA1(08667db3f43f8550d7b96b53b92a53029a8d5d29), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 44)" ) @@ -3497,8 +3509,9 @@ GAME_CUSTOM( 199?, m4andyfh__ah, m4andyfh, "ca4d.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4andyfh__ai, m4andyfh, "ca4dk.p1", 0x0000, 0x010000, CRC(23cabc1a) SHA1(a72e14d7616da0b7cc394e466fe6df4c85eea986), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 46)" ) GAME_CUSTOM( 199?, m4andyfh__aj, m4andyfh, "ca4dy.p1", 0x0000, 0x010000, CRC(caa2e461) SHA1(5dd3c609d1cc4bc43a6d00e98a71e927287c41fd), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 47)" ) GAME_CUSTOM( 199?, m4andyfh__ak, m4andyfh, "ca4k.p1", 0x0000, 0x010000, CRC(78b0a533) SHA1(fa0fc59562be59d0aadba923281086a9de8e8934), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 48)" ) -GAME_CUSTOM( 199?, m4andyfh__al, m4andyfh, "ca4s.p1", 0x0000, 0x010000, CRC(ece1bca7) SHA1(84a168e0d36f7c4f56fc3a7579fe335cc1e5a5ba), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 49)" ) GAME_CUSTOM( 199?, m4andyfh__am, m4andyfh, "ca4y.p1", 0x0000, 0x010000, CRC(5c1886f2) SHA1(4d6131989a04db993b7ade74d1950077d52cbc23), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 50)" ) +// "(C)1991 BARCREST" and "CAT 0.2" +GAME_CUSTOM( 199?, m4andyfh__au, m4andyfh, "cats.p1", 0x0000, 0x010000, CRC(e4cb7300) SHA1(fe9daaa587f1796227ad9ccb49869f2288b6d708), "Barcrest","Andy's Full House (Barcrest) (MPU4) (CAT 0.2)" ) GAME_CUSTOM( 199?, m4andyfh__an, m4andyfh, "catad.p1", 0x0000, 0x010000, CRC(b2c5a227) SHA1(0c4253dddef07476778adf10b7afc8415ac2b170), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 51)" ) GAME_CUSTOM( 199?, m4andyfh__ao, m4andyfh, "catb.p1", 0x0000, 0x010000, CRC(34007275) SHA1(102a30e4a83eec9ed144158cc4896c91f4eadd1b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 52)" ) GAME_CUSTOM( 199?, m4andyfh__ap, m4andyfh, "catbd.p1", 0x0000, 0x010000, CRC(9c38229a) SHA1(1c24eff59e22d354e07f9a0655b35029a89a60ef), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 53)" ) @@ -3506,8 +3519,9 @@ GAME_CUSTOM( 199?, m4andyfh__aq, m4andyfh, "catd.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4andyfh__ar, m4andyfh, "catdk.p1", 0x0000, 0x010000, CRC(c85a53ea) SHA1(1b7245b08bc0ad7ddd7ed4498ba4ac910f1df1d1), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 55)" ) GAME_CUSTOM( 199?, m4andyfh__as, m4andyfh, "catdy.p1", 0x0000, 0x010000, CRC(08aa7a9c) SHA1(b8552ad4d9f1ea3c536ba7313ded56f9d47930d3), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 56)" ) GAME_CUSTOM( 199?, m4andyfh__at, m4andyfh, "catk.p1", 0x0000, 0x010000, CRC(843a09b2) SHA1(56e845bcf940d80277b53df8fe847e5e862a05c9), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 57)" ) -GAME_CUSTOM( 199?, m4andyfh__au, m4andyfh, "cats.p1", 0x0000, 0x010000, CRC(e4cb7300) SHA1(fe9daaa587f1796227ad9ccb49869f2288b6d708), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 58)" ) GAME_CUSTOM( 199?, m4andyfh__av, m4andyfh, "caty.p1", 0x0000, 0x010000, CRC(1a5c2413) SHA1(096695d99cc5dcf9d677b7821af5018751e21a89), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 59)" ) +// "(C)1991 BARCREST" and "CA4 0.1" (CAU 0.1 on startup) +GAME_CUSTOM( 199?, m4andyfh__a3, m4andyfh, "caus.p1", 0x0000, 0x010000, CRC(88e263a4) SHA1(2b8bc3d9aab344ca756b4829c4593db74200779e), "Barcrest","Andy's Full House (Barcrest) (MPU4) (CAU 0.1 / CA4 0.1)" ) GAME_CUSTOM( 199?, m4andyfh__aw, m4andyfh, "cauad.p1", 0x0000, 0x010000, CRC(a530d8ce) SHA1(9c919dfe85d947545e35c52b070dcb19ad3660ea), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 60)" ) GAME_CUSTOM( 199?, m4andyfh__ax, m4andyfh, "caub.p1", 0x0000, 0x010000, CRC(4c6f35b7) SHA1(3300d3a8cdeda7183d066ff8fec2bdfbcd816f9b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 61)" ) GAME_CUSTOM( 199?, m4andyfh__ay, m4andyfh, "caubd.p1", 0x0000, 0x010000, CRC(932cb584) SHA1(28dc617a242f01030d3bfdd855b2237b99dfb080), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 62)" ) @@ -3515,7 +3529,6 @@ GAME_CUSTOM( 199?, m4andyfh__az, m4andyfh, "caud.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4andyfh__a0, m4andyfh, "caudk.p1", 0x0000, 0x010000, CRC(9d2ca094) SHA1(343304a09ae0aa36039b4b90f90ac7206f6b020b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 64)" ) GAME_CUSTOM( 199?, m4andyfh__a1, m4andyfh, "caudy.p1", 0x0000, 0x010000, CRC(b8e09c8e) SHA1(b9fc39f754dadfaf359f7df6e51a18e948eda574), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 65)" ) GAME_CUSTOM( 199?, m4andyfh__a2, m4andyfh, "cauk.p1", 0x0000, 0x010000, CRC(38c7b3b0) SHA1(d5ee172e37e65911a4010abe7baae3e32131208d), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4andyfh__a3, m4andyfh, "caus.p1", 0x0000, 0x010000, CRC(88e263a4) SHA1(2b8bc3d9aab344ca756b4829c4593db74200779e), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 67)" ) GAME_CUSTOM( 199?, m4andyfh__a4, m4andyfh, "cauy.p1", 0x0000, 0x010000, CRC(b04ab546) SHA1(5f9d3a24fb0091406e45cdad7f22fad4bda27bff), "Barcrest","Andy's Full House (Barcrest) (MPU4) (set 68)" ) @@ -3534,38 +3547,8 @@ GAME_CUSTOM( 199?, m4andyfh__a4, m4andyfh, "cauy.p1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4bdash, 0, "bls01s.p1", 0x0000, 0x020000, CRC(4e4f403b) SHA1(f040568af530cf0ff060199f98b00e476191da22), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4bdash__a, m4bdash, "bdvarg.bin", 0x0000, 0x020000, CRC(99d579e7) SHA1(afc47144e0a8d464d8547b1ad14b0a3a1c15c027), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4bdash__b, m4bdash, "bld06s", 0x0000, 0x020000, CRC(0bc580b8) SHA1(432ac5aec08bd9d36cc4a0b257c17d6e22015bae), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4bdash__c, m4bdash, "bld07ad.p1", 0x0000, 0x020000, CRC(56438185) SHA1(f78789042a1ac61b7dd333120b9fef76a2805cc7), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4bdash__d, m4bdash, "bld07b.p1", 0x0000, 0x020000, CRC(4b24ec01) SHA1(80763e2832d9ef9c49f8729fbc93843865422d47), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4bdash__e, m4bdash, "bld07bd.p1", 0x0000, 0x020000, CRC(db592f40) SHA1(bca6b78ea13ccab1f49d6b6078071739cb418778), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4bdash__f, m4bdash, "bld07c.p1", 0x0000, 0x020000, CRC(7c6e5113) SHA1(814fb61aa64eecfa8b6d8e9c39a7b3b3287247dd), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4bdash__g, m4bdash, "bld07d.p1", 0x0000, 0x020000, CRC(363fe777) SHA1(181b10e828b1308725cbe185c655c7deb7899cbe), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4bdash__h, m4bdash, "bld07dh.p1", 0x0000, 0x020000, CRC(b299b28c) SHA1(3784cc7e33cd31c6ef5fd7fbc336b1b024a13993), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4bdash__i, m4bdash, "bld07dk.p1", 0x0000, 0x020000, CRC(919e8716) SHA1(4be8b30a3db436fab8dfc9a131f2ca2b16ba6f7d), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4bdash__j, m4bdash, "bld07dr.p1", 0x0000, 0x020000, CRC(22913c27) SHA1(33ed5a70b30d16fd607ec56a5ab085b55778c483), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4bdash__k, m4bdash, "bld07dy.p1", 0x0000, 0x020000, CRC(167da7e8) SHA1(1cb81ad595ad5c7b70aed4f48ce9f6ae34d92089), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4bdash__l, m4bdash, "bld07h.p1", 0x0000, 0x020000, CRC(22e471cd) SHA1(3e6e0a052761e1ed108475687dead185eef10119), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4bdash__m, m4bdash, "bld07k.p1", 0x0000, 0x020000, CRC(01e34457) SHA1(5e9d8cb558222340df42904365ad90288ca5cdf2), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4bdash__n, m4bdash, "bld07r.p1", 0x0000, 0x020000, CRC(b2ecff66) SHA1(9d8bca3e137a654d786b9257ce1206c7118ac6e0), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4bdash__o, m4bdash, "bld07s.p1", 0x0000, 0x020000, CRC(b9c61540) SHA1(d6752d90a431cde17c7915746f645ef3157eeffe), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4bdash__p, m4bdash, "bld07y.p1", 0x0000, 0x020000, CRC(860064a9) SHA1(8e13df769bde73bc5af3fa8010b39502e269f63f), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4bdash__q, m4bdash, "bld10ad.p1", 0x0000, 0x020000, CRC(04b2781e) SHA1(828426d6191974050e3ccbfbc826d5474dc18312), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4bdash__r, m4bdash, "bld10b.p1", 0x0000, 0x020000, CRC(160a6c83) SHA1(e2421fbc166b9e64a2b10afbfd12ebc724077248), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4bdash__s, m4bdash, "bld10bd.p1", 0x0000, 0x020000, CRC(89a8d6db) SHA1(c93b8d7c57a970649204078f3428fc766ada32f7), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4bdash__t, m4bdash, "bld10c.p1", 0x0000, 0x020000, CRC(2140d191) SHA1(151aba51cf0909f8bc3d252ef49a2ae2e96adf32), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4bdash__u, m4bdash, "bld10d.p1", 0x0000, 0x020000, CRC(6b1167f5) SHA1(2aeb0fa0964867d90412bfd895da664d9be8a339), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4bdash__v, m4bdash, "bld10dh.p1", 0x0000, 0x020000, CRC(e0684b17) SHA1(eb2832a3344aa9dfdc10c845faf3ae67171c40e9), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4bdash__w, m4bdash, "bld10dk.p1", 0x0000, 0x020000, CRC(c36f7e8d) SHA1(1ee7bcca0cfdd27cd23328f60aa5230325db6366), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4bdash__x, m4bdash, "bld10dr.p1", 0x0000, 0x020000, CRC(7060c5bc) SHA1(e409684b5f2494c1e580e4c9db001e89ef63ea1a), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4bdash__y, m4bdash, "bld10dy.p1", 0x0000, 0x020000, CRC(448c5e73) SHA1(38193dbe23266d29344439d75e020b8236d34037), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4bdash__z, m4bdash, "bld10h.p1", 0x0000, 0x020000, CRC(7fcaf14f) SHA1(e093bbaea83f7b2683b968b70d821ec42addab92), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4bdash__0, m4bdash, "bld10k.p1", 0x0000, 0x020000, CRC(5ccdc4d5) SHA1(b7be6f027092106ef5e33ff988a153050f48943b), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4bdash__1, m4bdash, "bld10r.p1", 0x0000, 0x020000, CRC(efc27fe4) SHA1(1ed3c5c92505b7fdf4993a9c8b119eff5e9a6f94), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4bdash__2, m4bdash, "bld10s.p1", 0x0000, 0x020000, CRC(c59c186b) SHA1(83f16e15a215fe1cf3c07fac7268b00c55e0ff5b), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4bdash__3, m4bdash, "bld10y.p1", 0x0000, 0x020000, CRC(db2ee42b) SHA1(b6a4bb4f78c14428a7bd2286b8fda51acb0c9e10), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 31)" ) +// "(C)1993 BARCREST" and "BLS 0.1" +GAME_CUSTOM( 199?, m4bdash, 0, "bls01s.p1", 0x0000, 0x020000, CRC(4e4f403b) SHA1(f040568af530cf0ff060199f98b00e476191da22), "Barcrest","Boulder Dash (Barcrest) (MPU4) (BLS 0.1)" ) GAME_CUSTOM( 199?, m4bdash__4, m4bdash, "bls01ad.p1", 0x0000, 0x020000, CRC(2425cab4) SHA1(9df08f9dffc0ac5fe5994ad086e6b8eb8d03baa9), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 32)" ) GAME_CUSTOM( 199?, m4bdash__5, m4bdash, "bls01b.p1", 0x0000, 0x020000, CRC(64d1e31d) SHA1(e30d199bd1d60ceabef27cfa81605eb3b307f68e), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 33)" ) GAME_CUSTOM( 199?, m4bdash__6, m4bdash, "bls01bd.p1", 0x0000, 0x020000, CRC(a93f6471) SHA1(d895c7825c713626be57dd9eef2dbfc5f591825b), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 34)" ) @@ -3579,6 +3562,40 @@ GAME_CUSTOM( 199?, m4bdash__ad, m4bdash, "bls01h.p1", 0x0000, 0x020000, CR GAME_CUSTOM( 199?, m4bdash__ae, m4bdash, "bls01k.p1", 0x0000, 0x020000, CRC(2e164b4b) SHA1(37d1c45db0002c7e8f16ede87cfe62cfbdbf39e8), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 42)" ) GAME_CUSTOM( 199?, m4bdash__af, m4bdash, "bls01r.p1", 0x0000, 0x020000, CRC(9d19f07a) SHA1(bb1e2d8f6e1fd75d6c9a15448fc29b21d8f14bf7), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4bdash__ag, m4bdash, "bls01y.p1", 0x0000, 0x020000, CRC(a9f56bb5) SHA1(771ea854bdc71af0ce09952be53671629babfa9b), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 44)" ) +// "(C)1993 BARCREST" and "BLD 0.6" +GAME_CUSTOM( 199?, m4bdash__b, m4bdash, "bld06s", 0x0000, 0x020000, CRC(0bc580b8) SHA1(432ac5aec08bd9d36cc4a0b257c17d6e22015bae), "Barcrest","Boulder Dash (Barcrest) (MPU4) (BLD 0.6)" ) +// "(C)1993 BARCREST" and "BLD 0.7" +GAME_CUSTOM( 199?, m4bdash__o, m4bdash, "bld07s.p1", 0x0000, 0x020000, CRC(b9c61540) SHA1(d6752d90a431cde17c7915746f645ef3157eeffe), "Barcrest","Boulder Dash (Barcrest) (MPU4) (BLD 0.7)" ) +GAME_CUSTOM( 199?, m4bdash__c, m4bdash, "bld07ad.p1", 0x0000, 0x020000, CRC(56438185) SHA1(f78789042a1ac61b7dd333120b9fef76a2805cc7), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4bdash__d, m4bdash, "bld07b.p1", 0x0000, 0x020000, CRC(4b24ec01) SHA1(80763e2832d9ef9c49f8729fbc93843865422d47), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4bdash__e, m4bdash, "bld07bd.p1", 0x0000, 0x020000, CRC(db592f40) SHA1(bca6b78ea13ccab1f49d6b6078071739cb418778), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4bdash__f, m4bdash, "bld07c.p1", 0x0000, 0x020000, CRC(7c6e5113) SHA1(814fb61aa64eecfa8b6d8e9c39a7b3b3287247dd), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4bdash__g, m4bdash, "bld07d.p1", 0x0000, 0x020000, CRC(363fe777) SHA1(181b10e828b1308725cbe185c655c7deb7899cbe), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4bdash__h, m4bdash, "bld07dh.p1", 0x0000, 0x020000, CRC(b299b28c) SHA1(3784cc7e33cd31c6ef5fd7fbc336b1b024a13993), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4bdash__i, m4bdash, "bld07dk.p1", 0x0000, 0x020000, CRC(919e8716) SHA1(4be8b30a3db436fab8dfc9a131f2ca2b16ba6f7d), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4bdash__j, m4bdash, "bld07dr.p1", 0x0000, 0x020000, CRC(22913c27) SHA1(33ed5a70b30d16fd607ec56a5ab085b55778c483), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4bdash__k, m4bdash, "bld07dy.p1", 0x0000, 0x020000, CRC(167da7e8) SHA1(1cb81ad595ad5c7b70aed4f48ce9f6ae34d92089), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4bdash__l, m4bdash, "bld07h.p1", 0x0000, 0x020000, CRC(22e471cd) SHA1(3e6e0a052761e1ed108475687dead185eef10119), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4bdash__m, m4bdash, "bld07k.p1", 0x0000, 0x020000, CRC(01e34457) SHA1(5e9d8cb558222340df42904365ad90288ca5cdf2), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4bdash__n, m4bdash, "bld07r.p1", 0x0000, 0x020000, CRC(b2ecff66) SHA1(9d8bca3e137a654d786b9257ce1206c7118ac6e0), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4bdash__p, m4bdash, "bld07y.p1", 0x0000, 0x020000, CRC(860064a9) SHA1(8e13df769bde73bc5af3fa8010b39502e269f63f), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 17)" ) +// "(C)1993 BARCREST" and "BLD 1.0" +GAME_CUSTOM( 199?, m4bdash__2, m4bdash, "bld10s.p1", 0x0000, 0x020000, CRC(c59c186b) SHA1(83f16e15a215fe1cf3c07fac7268b00c55e0ff5b), "Barcrest","Boulder Dash (Barcrest) (MPU4) (BLD 1.0)" ) +GAME_CUSTOM( 199?, m4bdash__q, m4bdash, "bld10ad.p1", 0x0000, 0x020000, CRC(04b2781e) SHA1(828426d6191974050e3ccbfbc826d5474dc18312), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4bdash__r, m4bdash, "bld10b.p1", 0x0000, 0x020000, CRC(160a6c83) SHA1(e2421fbc166b9e64a2b10afbfd12ebc724077248), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4bdash__s, m4bdash, "bld10bd.p1", 0x0000, 0x020000, CRC(89a8d6db) SHA1(c93b8d7c57a970649204078f3428fc766ada32f7), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4bdash__t, m4bdash, "bld10c.p1", 0x0000, 0x020000, CRC(2140d191) SHA1(151aba51cf0909f8bc3d252ef49a2ae2e96adf32), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4bdash__u, m4bdash, "bld10d.p1", 0x0000, 0x020000, CRC(6b1167f5) SHA1(2aeb0fa0964867d90412bfd895da664d9be8a339), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4bdash__v, m4bdash, "bld10dh.p1", 0x0000, 0x020000, CRC(e0684b17) SHA1(eb2832a3344aa9dfdc10c845faf3ae67171c40e9), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4bdash__w, m4bdash, "bld10dk.p1", 0x0000, 0x020000, CRC(c36f7e8d) SHA1(1ee7bcca0cfdd27cd23328f60aa5230325db6366), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4bdash__x, m4bdash, "bld10dr.p1", 0x0000, 0x020000, CRC(7060c5bc) SHA1(e409684b5f2494c1e580e4c9db001e89ef63ea1a), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4bdash__y, m4bdash, "bld10dy.p1", 0x0000, 0x020000, CRC(448c5e73) SHA1(38193dbe23266d29344439d75e020b8236d34037), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4bdash__z, m4bdash, "bld10h.p1", 0x0000, 0x020000, CRC(7fcaf14f) SHA1(e093bbaea83f7b2683b968b70d821ec42addab92), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4bdash__0, m4bdash, "bld10k.p1", 0x0000, 0x020000, CRC(5ccdc4d5) SHA1(b7be6f027092106ef5e33ff988a153050f48943b), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4bdash__1, m4bdash, "bld10r.p1", 0x0000, 0x020000, CRC(efc27fe4) SHA1(1ed3c5c92505b7fdf4993a9c8b119eff5e9a6f94), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 29)" ) +GAME_CUSTOM( 199?, m4bdash__3, m4bdash, "bld10y.p1", 0x0000, 0x020000, CRC(db2ee42b) SHA1(b6a4bb4f78c14428a7bd2286b8fda51acb0c9e10), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 31)" ) +// "(C)1993 BARCREST" and "BLS 0.2" +GAME_CUSTOM( 199?, m4bdash__at, m4bdash, "bls02s.p1", 0x0000, 0x020000, CRC(b8e435d5) SHA1(500c30d687d3e029f22de2bf132c12349c1575b4), "Barcrest","Boulder Dash (Barcrest) (MPU4) (BLS 0.2)" ) GAME_CUSTOM( 199?, m4bdash__ah, m4bdash, "bls02ad.p1", 0x0000, 0x020000, CRC(f4b6828b) SHA1(8ca39a9dc29b40a097489e34ababaf70eb58c326), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 45)" ) GAME_CUSTOM( 199?, m4bdash__ai, m4bdash, "bls02b.p1", 0x0000, 0x020000, CRC(d75f9bdb) SHA1(2018e1ebe4f00782be649544bc8d56d923d6c198), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 46)" ) GAME_CUSTOM( 199?, m4bdash__aj, m4bdash, "bls02bd.p1", 0x0000, 0x020000, CRC(79ac2c4e) SHA1(83d6828272438ae0d687b40368701cbccac32d9f), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 47)" ) @@ -3591,19 +3608,23 @@ GAME_CUSTOM( 199?, m4bdash__ap, m4bdash, "bls02dy.p1", 0x0000, 0x020000, CR GAME_CUSTOM( 199?, m4bdash__aq, m4bdash, "bls02h.p1", 0x0000, 0x020000, CRC(be9f0617) SHA1(fcc491ae5cb5312f47726c4b9ffda99317171bab), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 54)" ) GAME_CUSTOM( 199?, m4bdash__ar, m4bdash, "bls02k.p1", 0x0000, 0x020000, CRC(9d98338d) SHA1(0e43896ae8361894c9060ec7a74dd23c6e2bed56), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 55)" ) GAME_CUSTOM( 199?, m4bdash__as, m4bdash, "bls02r.p1", 0x0000, 0x020000, CRC(2e9788bc) SHA1(586a30b3485e0ceb8b9b389e103fdbab78115446), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 56)" ) -GAME_CUSTOM( 199?, m4bdash__at, m4bdash, "bls02s.p1", 0x0000, 0x020000, CRC(b8e435d5) SHA1(500c30d687d3e029f22de2bf132c12349c1575b4), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 57)" ) GAME_CUSTOM( 199?, m4bdash__au, m4bdash, "bls02y.p1", 0x0000, 0x020000, CRC(1a7b1373) SHA1(dde4754d92f0fde495ab826294a650ac81fd586e), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 58)" ) -GAME_CUSTOM( 199?, m4bdash__av, m4bdash, "bold15g", 0x0000, 0x020000, CRC(fa400d34) SHA1(2faeb9b880fb4980aa0d96b4b962c879498445f2), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4bdash__aw, m4bdash, "bold15t", 0x0000, 0x020000, CRC(f3f331ae) SHA1(d999c8571549d8d26b7b861299d77c7282aef700), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 60)" ) -GAME_CUSTOM( 199?, m4bdash__ax, m4bdash, "bo__x__x.2_0", 0x0000, 0x020000, CRC(7e54982f) SHA1(c5187d2f6a5b202af5fd6326d52451d3b3f48f33), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4bdash__ay, m4bdash, "bo__x__x.2_1", 0x0000, 0x020000, CRC(3e48d8ad) SHA1(73d69712993819d012c2ab2a8a36b7ebad419144), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4bdash__az, m4bdash, "bo__x_dx.2_0", 0x0000, 0x020000, CRC(d0d9e7b1) SHA1(31e858991fc1dfe9c1a8bd7955096617ebe0a4ce), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4bdash__a0, m4bdash, "bo__x_dx.2_1", 0x0000, 0x020000, CRC(b6e146c4) SHA1(8bda363f16bd258d5c6ba1b20cecc0a76e0965f7), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 64)" ) -GAME_CUSTOM( 199?, m4bdash__a1, m4bdash, "bo__xa_x.2_0", 0x0000, 0x020000, CRC(e7054491) SHA1(7d102b1071d90ff29ea4a9418478b17b93c08059), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4bdash__a2, m4bdash, "bo__xa_x.2_1", 0x0000, 0x020000, CRC(813de5e4) SHA1(498923261e49b20666a930593fcf25ccfc9a9d79), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4bdash__a3, m4bdash, "bo__xb_x.2_0", 0x0000, 0x020000, CRC(adc2ecc7) SHA1(75e4216ff022c1ae0642913c9aaa7e241b806fcd), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 67)" ) -GAME_CUSTOM( 199?, m4bdash__a4, m4bdash, "bo__xb_x.2_1", 0x0000, 0x020000, CRC(cbfa4db2) SHA1(d1ed60f876b4f056f478cfc23b08a7789379e143), "Barcrest","Boulder Dash (Barcrest) (MPU4) (set 68)" ) - +// "(C)1999 BWB" and "BO_ 2.0" +GAME_CUSTOM( 199?, m4bdash__ax, m4bdash, "bo__x__x.2_0", 0x0000, 0x020000, CRC(7e54982f) SHA1(c5187d2f6a5b202af5fd6326d52451d3b3f48f33), "Bwb","Boulder Dash (Barcrest) (MPU4) (BO_ 2.0, set 1)" ) +GAME_CUSTOM( 199?, m4bdash__az, m4bdash, "bo__x_dx.2_0", 0x0000, 0x020000, CRC(d0d9e7b1) SHA1(31e858991fc1dfe9c1a8bd7955096617ebe0a4ce), "Bwb","Boulder Dash (Barcrest) (MPU4) (BO_ 2.0, set 2)" ) +GAME_CUSTOM( 199?, m4bdash__a1, m4bdash, "bo__xa_x.2_0", 0x0000, 0x020000, CRC(e7054491) SHA1(7d102b1071d90ff29ea4a9418478b17b93c08059), "Bwb","Boulder Dash (Barcrest) (MPU4) (BO_ 2.0, set 3)" ) +GAME_CUSTOM( 199?, m4bdash__a3, m4bdash, "bo__xb_x.2_0", 0x0000, 0x020000, CRC(adc2ecc7) SHA1(75e4216ff022c1ae0642913c9aaa7e241b806fcd), "Bwb","Boulder Dash (Barcrest) (MPU4) (BO_ 2.0, set 4)" ) +// "(C)1999 BWB" and "BO_ 2.1" +GAME_CUSTOM( 199?, m4bdash__ay, m4bdash, "bo__x__x.2_1", 0x0000, 0x020000, CRC(3e48d8ad) SHA1(73d69712993819d012c2ab2a8a36b7ebad419144), "Bwb","Boulder Dash (Barcrest) (MPU4) (BO_ 2.1, set 1)" ) +GAME_CUSTOM( 199?, m4bdash__a0, m4bdash, "bo__x_dx.2_1", 0x0000, 0x020000, CRC(b6e146c4) SHA1(8bda363f16bd258d5c6ba1b20cecc0a76e0965f7), "Bwb","Boulder Dash (Barcrest) (MPU4) (BO_ 2.1, set 2)" ) +GAME_CUSTOM( 199?, m4bdash__a2, m4bdash, "bo__xa_x.2_1", 0x0000, 0x020000, CRC(813de5e4) SHA1(498923261e49b20666a930593fcf25ccfc9a9d79), "Bwb","Boulder Dash (Barcrest) (MPU4) (BO_ 2.1, set 3)" ) +GAME_CUSTOM( 199?, m4bdash__a4, m4bdash, "bo__xb_x.2_1", 0x0000, 0x020000, CRC(cbfa4db2) SHA1(d1ed60f876b4f056f478cfc23b08a7789379e143), "Bwb","Boulder Dash (Barcrest) (MPU4) (BO_ 2.1, set 4)" ) +// no copyright string and "BLD 1.0" +GAME_CUSTOM( 199?, m4bdash__a, m4bdash, "bdvarg.bin", 0x0000, 0x020000, CRC(99d579e7) SHA1(afc47144e0a8d464d8547b1ad14b0a3a1c15c027), "hack","Boulder Dash (Barcrest) (MPU4) (BLD 1.0, hack)" ) +// no copyright string and "BLD 0.7" +GAME_CUSTOM( 199?, m4bdash__av, m4bdash, "bold15g", 0x0000, 0x020000, CRC(fa400d34) SHA1(2faeb9b880fb4980aa0d96b4b962c879498445f2), "hack","Boulder Dash (Barcrest) (MPU4) (BLD 0.7, hack)" ) +// no copyright string and "BLS 0.1" +GAME_CUSTOM( 199?, m4bdash__aw, m4bdash, "bold15t", 0x0000, 0x020000, CRC(f3f331ae) SHA1(d999c8571549d8d26b7b861299d77c7282aef700), "hack","Boulder Dash (Barcrest) (MPU4) (BLS 0.1, hack)" ) #define M4PRZDTY_EXTRA_ROMS \ @@ -3619,7 +3640,15 @@ GAME_CUSTOM( 199?, m4bdash__a4, m4bdash, "bo__xb_x.2_1", 0x0000, 0x020000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4przdty, 0, "pdus.p1", 0x0000, 0x010000, CRC(eaa2ae08) SHA1(a4cef3ee8c005fb717625699260d24ef6a368824), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "PDU 0.2" +GAME_CUSTOM( 199?, m4przdty, 0, "pdus.p1", 0x0000, 0x010000, CRC(eaa2ae08) SHA1(a4cef3ee8c005fb717625699260d24ef6a368824), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (PDU 0.2)" ) +GAME_CUSTOM( 199?, m4przdty__l, m4przdty, "pdub.p1", 0x0000, 0x010000, CRC(e50a571b) SHA1(b8412ae7211bfbf8098ae3ae70dfc2a99cd8558d), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4przdty__m, m4przdty, "pdud.p1", 0x0000, 0x010000, CRC(24cddc59) SHA1(c4fa0530387c5cd172d51b766315d3874cc61618), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4przdty__n, m4przdty, "pdudy.p1", 0x0000, 0x010000, CRC(b852ea1f) SHA1(375f0baaf64b1ea1e118f6d93417877174e094bb), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4przdty__o, m4przdty, "pduk.p1", 0x0000, 0x010000, CRC(7d1c1897) SHA1(aa7753bef9b580f0a134960d74115cb43b91494f), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4przdty__p, m4przdty, "pduy.p1", 0x0000, 0x010000, CRC(460d967b) SHA1(ea55c87674d62ee6f525ae1ff08267e8b4b126aa), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 17)" ) +// "(C)1993 BARCREST" and "PD8 0.2" +GAME_CUSTOM( 199?, m4przdty__j, m4przdty, "pd8s.p1", 0x0000, 0x010000, CRC(65816bdb) SHA1(52717f789676ad66e4b8c5c023e23262408ef0b3), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (PD8 0.2)" ) GAME_CUSTOM( 199?, m4przdty__a, m4przdty, "pd8ad.p1", 0x0000, 0x010000, CRC(ff2bde9d) SHA1(6f75d1c4f8b136ad9dbfd6c0182dbe0f54f856a9), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przdty__b, m4przdty, "pd8b.p1", 0x0000, 0x010000, CRC(123f8081) SHA1(1619e23f563f9c70e64dccf36743c60ee597cad4), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przdty__c, m4przdty, "pd8bd.p1", 0x0000, 0x010000, CRC(6136acca) SHA1(616cfc419beef50b642714df9b257ef0322bdfd4), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 4)" ) @@ -3629,13 +3658,7 @@ GAME_CUSTOM( 199?, m4przdty__f, m4przdty, "pd8dk.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4przdty__g, m4przdty, "pd8dy.p1", 0x0000, 0x010000, CRC(8446848a) SHA1(23840190a3543c7fee0334bd1e9c0000eb2b7908), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4przdty__h, m4przdty, "pd8j.p1", 0x0000, 0x010000, CRC(8d74c338) SHA1(482fc028a04bd257a36b46ba3e6949f95cacd271), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4przdty__i, m4przdty, "pd8k.p1", 0x0000, 0x010000, CRC(f4753cad) SHA1(4d41a2c40f56267ea31375046058ab2b22700414), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4przdty__j, m4przdty, "pd8s.p1", 0x0000, 0x010000, CRC(65816bdb) SHA1(52717f789676ad66e4b8c5c023e23262408ef0b3), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4przdty__k, m4przdty, "pd8y.p1", 0x0000, 0x010000, CRC(c958ed40) SHA1(35c1905656d12c788e8766424dd400669189e2c7), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4przdty__l, m4przdty, "pdub.p1", 0x0000, 0x010000, CRC(e50a571b) SHA1(b8412ae7211bfbf8098ae3ae70dfc2a99cd8558d), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4przdty__m, m4przdty, "pdud.p1", 0x0000, 0x010000, CRC(24cddc59) SHA1(c4fa0530387c5cd172d51b766315d3874cc61618), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4przdty__n, m4przdty, "pdudy.p1", 0x0000, 0x010000, CRC(b852ea1f) SHA1(375f0baaf64b1ea1e118f6d93417877174e094bb), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4przdty__o, m4przdty, "pduk.p1", 0x0000, 0x010000, CRC(7d1c1897) SHA1(aa7753bef9b580f0a134960d74115cb43b91494f), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4przdty__p, m4przdty, "pduy.p1", 0x0000, 0x010000, CRC(460d967b) SHA1(ea55c87674d62ee6f525ae1ff08267e8b4b126aa), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (set 17)" ) #define M4PRZMON_EXTRA_ROMS \ @@ -3650,8 +3673,9 @@ GAME_CUSTOM( 199?, m4przdty__p, m4przdty, "pduy.p1", 0x0000, 0x010000, CRC ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4przmon, 0, "fp8ad.p1", 0x0000, 0x010000, CRC(9c1c443a) SHA1(58e45501c33d0fd8ecca7e7bc40fef60ebb519e9), "Barcrest","Prize Money (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "FP8 0.1" +GAME_CUSTOM( 199?, m4przmon, 0, "fp8s.p1", 0x0000, 0x010000, CRC(b43eef89) SHA1(15991ad9223ddce77277f5451b5557ff59e2647c), "Barcrest","Prize Money (Barcrest) (MPU4) (FP8 0.1)" ) +GAME_CUSTOM( 199?, m4przmon__i, m4przmon, "fp8ad.p1", 0x0000, 0x010000, CRC(9c1c443a) SHA1(58e45501c33d0fd8ecca7e7bc40fef60ebb519e9), "Barcrest","Prize Money (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4przmon__a, m4przmon, "fp8b.p1", 0x0000, 0x010000, CRC(2a8cd9da) SHA1(2364853f3c78ca4f47aac8609649f06bf3a98ba1), "Barcrest","Prize Money (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przmon__b, m4przmon, "fp8bd.p1", 0x0000, 0x010000, CRC(bbb342fd) SHA1(5117304284a25ce43798a0a1c8c1c45d25f707ab), "Barcrest","Prize Money (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przmon__c, m4przmon, "fp8d.p1", 0x0000, 0x010000, CRC(2e6dea1e) SHA1(8b0877277c414693b0d6c9d22ef86cbb487b4d2e), "Barcrest","Prize Money (Barcrest) (MPU4) (set 4)" ) @@ -3660,26 +3684,30 @@ GAME_CUSTOM( 199?, m4przmon__e, m4przmon, "fp8dk.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4przmon__f, m4przmon, "fp8dy.p1", 0x0000, 0x010000, CRC(2c8d3a96) SHA1(413e619c76209f948885ea0ff2388a2fcb0134d6), "Barcrest","Prize Money (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4przmon__g, m4przmon, "fp8j.p1", 0x0000, 0x010000, CRC(2a834685) SHA1(184a5e157dc2994823f4a1077b3bc0e3b69fda34), "Barcrest","Prize Money (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4przmon__h, m4przmon, "fp8k.p1", 0x0000, 0x010000, CRC(48cf748a) SHA1(2116f6cc00822ac9d4d3b090443d0f84fe3b5194), "Barcrest","Prize Money (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4przmon__i, m4przmon, "fp8s.p1", 0x0000, 0x010000, CRC(b43eef89) SHA1(15991ad9223ddce77277f5451b5557ff59e2647c), "Barcrest","Prize Money (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4przmon__j, m4przmon, "fp8y.p1", 0x0000, 0x010000, CRC(c3ee5211) SHA1(02c51f28bdeb7b7fdc7bb95cdc79117eb733789c), "Barcrest","Prize Money (Barcrest) (MPU4) (set 11)" ) +// "(C)1991 BARCREST" and "FPM 0.3" +GAME_CUSTOM( 199?, m4przmon__o, m4przmon, "fpms.p1", 0x0000, 0x010000, CRC(2d71e7f5) SHA1(16040a042cb0824b44869e618f38edcabd9d47d6), "Barcrest","Prize Money (Barcrest) (MPU4) (FPM 0.3)" ) GAME_CUSTOM( 199?, m4przmon__k, m4przmon, "fpmb.p1", 0x0000, 0x010000, CRC(e3265d54) SHA1(e283d1675e529c600454f12f87fce370d517e11c), "Barcrest","Prize Money (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4przmon__l, m4przmon, "fpmd.p1", 0x0000, 0x010000, CRC(60b2051c) SHA1(9543997fe8fa168bcc66edc3aef6f7e69b4fb326), "Barcrest","Prize Money (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4przmon__m, m4przmon, "fpmdy.p1", 0x0000, 0x010000, CRC(422b8f68) SHA1(d18926c7228dbd8f5228b6bd03d265318b5296fe), "Barcrest","Prize Money (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4przmon__n, m4przmon, "fpmk.p1", 0x0000, 0x010000, CRC(84f58f68) SHA1(e2297d53c8a7ee3c5058fc734b1f4ec533e93734), "Barcrest","Prize Money (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4przmon__o, m4przmon, "fpms.p1", 0x0000, 0x010000, CRC(2d71e7f5) SHA1(16040a042cb0824b44869e618f38edcabd9d47d6), "Barcrest","Prize Money (Barcrest) (MPU4) (set 16)" ) GAME_CUSTOM( 199?, m4przmon__p, m4przmon, "fpmy.p1", 0x0000, 0x010000, CRC(2728c725) SHA1(d36f8129731f9479ed526f9abfab8647cf43fdce), "Barcrest","Prize Money (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4przmon__q, m4przmon, "mt_05a__.3o3", 0x0000, 0x010000, CRC(4175f4a9) SHA1(b0e172e4862aa3b7be7accefc90e98d07d449b65), "Barcrest","Prize Money (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4przmon__r, m4przmon, "mt_05a__.4o1", 0x0000, 0x010000, CRC(637fecee) SHA1(8c970bdf703177c71dde5c774c75929ac42b6eb0), "Barcrest","Prize Money (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4przmon__s, m4przmon, "mt_05s__.3o3", 0x0000, 0x010000, CRC(92d674b7) SHA1(a828a9b0d870122bc09d865de90b8efa428f3fd0), "Barcrest","Prize Money (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4przmon__t, m4przmon, "mt_05sb_.3o3", 0x0000, 0x010000, CRC(1158e506) SHA1(8c91bfe29545bbbc0d136a8c9abef785cadc3c64), "Barcrest","Prize Money (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4przmon__u, m4przmon, "mt_05sd_.3o3", 0x0000, 0x010000, CRC(5ed3d947) SHA1(4b9bc9be6e79014ad6ca95293eb464af39e40dc1), "Barcrest","Prize Money (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4przmon__v, m4przmon, "mt_10a__.3o3", 0x0000, 0x010000, CRC(6a8172a4) SHA1(92c081535258677e90d9f9748a168926c7a0cbed), "Barcrest","Prize Money (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4przmon__w, m4przmon, "mt_10a__.4o1", 0x0000, 0x010000, CRC(36eeac30) SHA1(daa662392874806d18d4a161d39caed7e0abca73), "Barcrest","Prize Money (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4przmon__x, m4przmon, "mt_10s__.3o3", 0x0000, 0x010000, CRC(1b66f0f8) SHA1(308227b0144f0568df8190810e0de627b413a742), "Barcrest","Prize Money (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4przmon__y, m4przmon, "mt_10sb_.3o3", 0x0000, 0x010000, CRC(06a33d34) SHA1(5fa1269a7cf42ef14e2a19143a07bf28b38ad920), "Barcrest","Prize Money (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4przmon__z, m4przmon, "mt_10sd_.3o3", 0x0000, 0x010000, CRC(42629cb1) SHA1(12f695e1f70bf93100c1af8052dcee9131711510), "Barcrest","Prize Money (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4przmon__0, m4przmon, "mti05___.4o1", 0x0000, 0x010000, CRC(0e82c258) SHA1(c4aa7d32bcd9418e2919be8be8a2f9e60d46f316), "Barcrest","Prize Money (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4przmon__1, m4przmon, "mti10___.4o1", 0x0000, 0x010000, CRC(a35e0571) SHA1(9a22946047e76392f0c4534f892ee9ae9e700503), "Barcrest","Prize Money (Barcrest) (MPU4) (set 29)" ) +// "(C)1995 B.W.B." and "MC 53.0" +GAME_CUSTOM( 199?, m4przmon__q, m4przmon, "mt_05a__.3o3", 0x0000, 0x010000, CRC(4175f4a9) SHA1(b0e172e4862aa3b7be7accefc90e98d07d449b65), "Bwb","Prize Money (Barcrest) (MPU4) (MC 53.0 K)" ) +GAME_CUSTOM( 199?, m4przmon__s, m4przmon, "mt_05s__.3o3", 0x0000, 0x010000, CRC(92d674b7) SHA1(a828a9b0d870122bc09d865de90b8efa428f3fd0), "Bwb","Prize Money (Barcrest) (MPU4) (MC 53.0 )" ) +GAME_CUSTOM( 199?, m4przmon__t, m4przmon, "mt_05sb_.3o3", 0x0000, 0x010000, CRC(1158e506) SHA1(8c91bfe29545bbbc0d136a8c9abef785cadc3c64), "Bwb","Prize Money (Barcrest) (MPU4) (MC 53.0 YD)" ) +GAME_CUSTOM( 199?, m4przmon__u, m4przmon, "mt_05sd_.3o3", 0x0000, 0x010000, CRC(5ed3d947) SHA1(4b9bc9be6e79014ad6ca95293eb464af39e40dc1), "Bwb","Prize Money (Barcrest) (MPU4) (MC 53.0 D)" ) +// "(C)1995 B.W.B." and "MT054.0" +GAME_CUSTOM( 199?, m4przmon__r, m4przmon, "mt_05a__.4o1", 0x0000, 0x010000, CRC(637fecee) SHA1(8c970bdf703177c71dde5c774c75929ac42b6eb0), "Bwb","Prize Money (Barcrest) (MPU4) (MT054.0 K)" ) +GAME_CUSTOM( 199?, m4przmon__0, m4przmon, "mti05___.4o1", 0x0000, 0x010000, CRC(0e82c258) SHA1(c4aa7d32bcd9418e2919be8be8a2f9e60d46f316), "Bwb","Prize Money (Barcrest) (MPU4) (MT054.0 C)" ) +// "(C)1995 B.W.B." and "MC103.0" +GAME_CUSTOM( 199?, m4przmon__v, m4przmon, "mt_10a__.3o3", 0x0000, 0x010000, CRC(6a8172a4) SHA1(92c081535258677e90d9f9748a168926c7a0cbed), "Bwb","Prize Money (Barcrest) (MPU4) (MC103.0 K)" ) +GAME_CUSTOM( 199?, m4przmon__x, m4przmon, "mt_10s__.3o3", 0x0000, 0x010000, CRC(1b66f0f8) SHA1(308227b0144f0568df8190810e0de627b413a742), "Bwb","Prize Money (Barcrest) (MPU4) (MC103.0)" ) +GAME_CUSTOM( 199?, m4przmon__y, m4przmon, "mt_10sb_.3o3", 0x0000, 0x010000, CRC(06a33d34) SHA1(5fa1269a7cf42ef14e2a19143a07bf28b38ad920), "Bwb","Prize Money (Barcrest) (MPU4) (MC103.0 YD)" ) +GAME_CUSTOM( 199?, m4przmon__z, m4przmon, "mt_10sd_.3o3", 0x0000, 0x010000, CRC(42629cb1) SHA1(12f695e1f70bf93100c1af8052dcee9131711510), "Bwb","Prize Money (Barcrest) (MPU4) (MC103.0D)" ) +// "(C)1995 B.W.B." and "MT104.0" +GAME_CUSTOM( 199?, m4przmon__w, m4przmon, "mt_10a__.4o1", 0x0000, 0x010000, CRC(36eeac30) SHA1(daa662392874806d18d4a161d39caed7e0abca73), "Bwb","Prize Money (Barcrest) (MPU4) (MT104.0 K)" ) +GAME_CUSTOM( 199?, m4przmon__1, m4przmon, "mti10___.4o1", 0x0000, 0x010000, CRC(a35e0571) SHA1(9a22946047e76392f0c4534f892ee9ae9e700503), "Bwb","Prize Money (Barcrest) (MPU4) (MT104.0 C)" ) #define M4PRZHR_EXTRA_ROMS \ ROM_REGION( 0x100000, "msm6376", 0 ) \ @@ -3694,7 +3722,17 @@ GAME_CUSTOM( 199?, m4przmon__1, m4przmon, "mti10___.4o1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4przhr, 0, "prly.p1", 0x0000, 0x010000, CRC(feeac121) SHA1(e01f32fb4cdfbe61fdcd89749a33185ac0410720), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "PRL 0.3" +GAME_CUSTOM( 199?, m4przhr, 0, "prls.p1", 0x0000, 0x010000, CRC(8cc08272) SHA1(8b25b99291a288f198573272d705c3592c7c60e6), "Barcrest","Prize High Roller (Barcrest) (MPU4) (PRL 0.3)" ) +GAME_CUSTOM( 199?, m4przhr__p, m4przhr, "prly.p1", 0x0000, 0x010000, CRC(feeac121) SHA1(e01f32fb4cdfbe61fdcd89749a33185ac0410720), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4przhr__j, m4przhr, "prlb.p1", 0x0000, 0x010000, CRC(b76f96cb) SHA1(2b0196542a99e60215ced488c7f5b2ae47b66ada), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4przhr__k, m4przhr, "prlbd.p1", 0x0000, 0x010000, CRC(efad3703) SHA1(2a2dd6e913936a3232aa51972bfd1d2f6f4e9857), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4przhr__l, m4przhr, "prld.p1", 0x0000, 0x010000, CRC(aeff3794) SHA1(84bdd743ec49ff8f1d4f34a2c9e14f427bc38b83), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4przhr__m, m4przhr, "prldk.p1", 0x0000, 0x010000, CRC(c003cabf) SHA1(1f031d362591d675d2cffec041a0762e431e64f5), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4przhr__n, m4przhr, "prldy.p1", 0x0000, 0x010000, CRC(15b4e8f3) SHA1(92c3be901f038a18906db674129e153ea61d70f4), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4przhr__o, m4przhr, "prlk.p1", 0x0000, 0x010000, CRC(f2be8c36) SHA1(411a5e1614a4f7963ebbb87e1a3a63209801f6da), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 16)" ) +// "(C)1991 BARCREST" and "PR3 0.1" +GAME_CUSTOM( 199?, m4przhr__h, m4przhr, "pr3s.p1", 0x0000, 0x010000, CRC(e4968894) SHA1(92b4b930f3bf370b213a72ad8328f19d5ebbd471), "Barcrest","Prize High Roller (Barcrest) (MPU4) (PR3 0.1)" ) GAME_CUSTOM( 199?, m4przhr__a, m4przhr, "pr3ad.p1", 0x0000, 0x010000, CRC(8b047599) SHA1(fd2f21c2ed3e5cb4e4ace7ffa620131a1897cf92), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przhr__b, m4przhr, "pr3b.p1", 0x0000, 0x010000, CRC(11d42c71) SHA1(ede99d2bbe597e4057a28c843b4b1b089e3427d2), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przhr__c, m4przhr, "pr3bd.p1", 0x0000, 0x010000, CRC(b682a11f) SHA1(a5cb9d016e0ff877f506c890aa6733551aef5507), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 4)" ) @@ -3702,15 +3740,7 @@ GAME_CUSTOM( 199?, m4przhr__d, m4przhr, "pr3d.p1", 0x0000, 0x010000, CRC(7d GAME_CUSTOM( 199?, m4przhr__e, m4przhr, "pr3dk.p1", 0x0000, 0x010000, CRC(6f6b1df4) SHA1(c4db1a793e79a47d614154fb0091be2253012489), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4przhr__f, m4przhr, "pr3dy.p1", 0x0000, 0x010000, CRC(1ecf832e) SHA1(6b72bc6b25e8019b1867f17cfd74913e2850eacb), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4przhr__g, m4przhr, "pr3k.p1", 0x0000, 0x010000, CRC(41423db6) SHA1(928b7c91fe12b4cef2c6b9828f0dd0f51e223d75), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4przhr__h, m4przhr, "pr3s.p1", 0x0000, 0x010000, CRC(e4968894) SHA1(92b4b930f3bf370b213a72ad8328f19d5ebbd471), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4przhr__i, m4przhr, "pr3y.p1", 0x0000, 0x010000, CRC(81b214c0) SHA1(792db44df880ac58e0da8ed47fe25881a24891b0), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4przhr__j, m4przhr, "prlb.p1", 0x0000, 0x010000, CRC(b76f96cb) SHA1(2b0196542a99e60215ced488c7f5b2ae47b66ada), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4przhr__k, m4przhr, "prlbd.p1", 0x0000, 0x010000, CRC(efad3703) SHA1(2a2dd6e913936a3232aa51972bfd1d2f6f4e9857), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4przhr__l, m4przhr, "prld.p1", 0x0000, 0x010000, CRC(aeff3794) SHA1(84bdd743ec49ff8f1d4f34a2c9e14f427bc38b83), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4przhr__m, m4przhr, "prldk.p1", 0x0000, 0x010000, CRC(c003cabf) SHA1(1f031d362591d675d2cffec041a0762e431e64f5), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4przhr__n, m4przhr, "prldy.p1", 0x0000, 0x010000, CRC(15b4e8f3) SHA1(92c3be901f038a18906db674129e153ea61d70f4), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4przhr__o, m4przhr, "prlk.p1", 0x0000, 0x010000, CRC(f2be8c36) SHA1(411a5e1614a4f7963ebbb87e1a3a63209801f6da), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4przhr__p, m4przhr, "prls.p1", 0x0000, 0x010000, CRC(8cc08272) SHA1(8b25b99291a288f198573272d705c3592c7c60e6), "Barcrest","Prize High Roller (Barcrest) (MPU4) (set 17)" ) #define M4GCLUE_EXTRA_ROMS \ @@ -3728,7 +3758,9 @@ GAME_CUSTOM( 199?, m4przhr__p, m4przhr, "prls.p1", 0x0000, 0x010000, CRC(8c ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4gclue, 0, "c2002ad.p1", 0x0000, 0x010000, CRC(39507216) SHA1(dc49d9cea63cd5e88e4076bfca3aae88521056be), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "C20 0.2" +GAME_CUSTOM( 199?, m4gclue, 0, "c2002s.p1", 0x0000, 0x010000, CRC(fe640d18) SHA1(598e5a92bd26457cbd0cbd1f73cddb56054ff826), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (C20 0.2)" ) +GAME_CUSTOM( 199?, m4gclue__j, m4gclue, "c2002ad.p1", 0x0000, 0x010000, CRC(39507216) SHA1(dc49d9cea63cd5e88e4076bfca3aae88521056be), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4gclue__a, m4gclue, "c2002b.p1", 0x0000, 0x010000, CRC(1a552423) SHA1(3025c7a8f98817a8b0233c7682452d5d6df081c5), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4gclue__b, m4gclue, "c2002bd.p1", 0x0000, 0x010000, CRC(1eff74d1) SHA1(7cfba92237b3de1ea54c0d8b8619dd09a68c3b51), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4gclue__c, m4gclue, "c2002c.p1", 0x0000, 0x010000, CRC(3c73d6c8) SHA1(63bb5df7063bf33e2b9f88db53ad64666967ecca), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 4)" ) @@ -3738,8 +3770,9 @@ GAME_CUSTOM( 199?, m4gclue__f, m4gclue, "c2002dr.p1", 0x0000, 0x010000, CR GAME_CUSTOM( 199?, m4gclue__g, m4gclue, "c2002dy.p1", 0x0000, 0x010000, CRC(1bf36c0c) SHA1(584fa498821129cfe9fb5c64cbf29c10abef0c57), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4gclue__h, m4gclue, "c2002k.p1", 0x0000, 0x010000, CRC(05e65abe) SHA1(560c2a7ac5af90ce5d0f1b34ec097bf5f733ec90), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4gclue__i, m4gclue, "c2002r.p1", 0x0000, 0x010000, CRC(49ce30ab) SHA1(501f509aae61059349107657516b559106d06f49), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4gclue__j, m4gclue, "c2002s.p1", 0x0000, 0x010000, CRC(fe640d18) SHA1(598e5a92bd26457cbd0cbd1f73cddb56054ff826), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4gclue__k, m4gclue, "c2002y.p1", 0x0000, 0x010000, CRC(d4a51845) SHA1(7808ff2d62eeadbb894379857266770fe9954384), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 12)" ) +// "(C)1991 BARCREST" and "C25 0.4" +GAME_CUSTOM( 199?, m4gclue__v, m4gclue, "c2504s.p1", 0x0000, 0x010000, CRC(47d6791f) SHA1(e232586605b096849480002ddb7b77a8b113a388), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (C25 0.4)" ) GAME_CUSTOM( 199?, m4gclue__l, m4gclue, "c2504ad.p1", 0x0000, 0x010000, CRC(f721de72) SHA1(8e64360f5b0de9d9b2afda6361e2b6d4ec3b1baf), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4gclue__m, m4gclue, "c2504b.p1", 0x0000, 0x010000, CRC(4cd01058) SHA1(705b3979c8728e98810cb3cd4d4b4e926e52d78b), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4gclue__n, m4gclue, "c2504bd.p1", 0x0000, 0x010000, CRC(34d6d202) SHA1(1c596abdbcce801f5363871f9959d07ba9568083), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 15)" ) @@ -3750,7 +3783,6 @@ GAME_CUSTOM( 199?, m4gclue__r, m4gclue, "c2504dr.p1", 0x0000, 0x010000, CR GAME_CUSTOM( 199?, m4gclue__s, m4gclue, "c2504dy.p1", 0x0000, 0x010000, CRC(a71ccade) SHA1(65cd823aa4136fcf8d93058e4ef708e4b01caa3a), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 20)" ) GAME_CUSTOM( 199?, m4gclue__t, m4gclue, "c2504k.p1", 0x0000, 0x010000, CRC(aa4af6e9) SHA1(18654cf751e157d11010e991e74127aa15cb3cfc), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4gclue__u, m4gclue, "c2504r.p1", 0x0000, 0x010000, CRC(62bbd71d) SHA1(0b7f97a213a8f5b457aa54f760e19ebd00b1d334), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4gclue__v, m4gclue, "c2504s.p1", 0x0000, 0x010000, CRC(47d6791f) SHA1(e232586605b096849480002ddb7b77a8b113a388), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 23)" ) GAME_CUSTOM( 199?, m4gclue__w, m4gclue, "c2504y.p1", 0x0000, 0x010000, CRC(ffd0fff3) SHA1(5f30353e73331315be99281c7ed435d05a9bfc5b), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (set 24)" ) #define M4VEGAST_EXTRA_ROMS \ @@ -3768,7 +3800,9 @@ GAME_CUSTOM( 199?, m4gclue__w, m4gclue, "c2504y.p1", 0x0000, 0x010000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4vegast, 0, "uvsad.p1", 0x0000, 0x020000, CRC(f26d7fa8) SHA1(bb37be4a189bd38bd71afd836e94a55f9ef84ad4), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "UVS 0.3" +GAME_CUSTOM( 199?, m4vegast, 0, "uvss.p1", 0x0000, 0x020000, CRC(8b5b120f) SHA1(90749c4f986a248252661b8e4157871330673ecd), "Barcrest","Vegas Strip (Barcrest) (MPU4) (UVS 0.3)" ) +GAME_CUSTOM( 199?, m4vegast__h, m4vegast, "uvsad.p1", 0x0000, 0x020000, CRC(f26d7fa8) SHA1(bb37be4a189bd38bd71afd836e94a55f9ef84ad4), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4vegast__a, m4vegast, "uvsb.p1", 0x0000, 0x020000, CRC(32e017ff) SHA1(3e8aa863b85164ee9d535244bafb82b14ee19528), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4vegast__b, m4vegast, "uvsbd.p1", 0x0000, 0x020000, CRC(7f77d16d) SHA1(7f34a687877ca1d9257ee1c39ca5b3c44a42782e), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4vegast__c, m4vegast, "uvsc.p1", 0x0000, 0x020000, CRC(05aaaaed) SHA1(7eee93204467b9ecdff4b742a6e16306b83778ba), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 4)" ) @@ -3776,8 +3810,9 @@ GAME_CUSTOM( 199?, m4vegast__d, m4vegast, "uvsd.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4vegast__e, m4vegast, "uvsdk.p1", 0x0000, 0x020000, CRC(35b0793b) SHA1(90ef897fcd9cfb48007e5788a4df02053e38430c), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4vegast__f, m4vegast, "uvsdy.p1", 0x0000, 0x020000, CRC(b25359c5) SHA1(da4aa9b5069db222e22f24cd78f641c70a015166), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4vegast__g, m4vegast, "uvsk.p1", 0x0000, 0x020000, CRC(7827bfa9) SHA1(720d9793e97f2e11c1c9b18e3b4fa6ec7e29250a), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4vegast__h, m4vegast, "uvss.p1", 0x0000, 0x020000, CRC(8b5b120f) SHA1(90749c4f986a248252661b8e4157871330673ecd), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4vegast__i, m4vegast, "uvsy.p1", 0x0000, 0x020000, CRC(ffc49f57) SHA1(fb64afa2fefb3ff1c0f9b71aa3d00e1a17903e84), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 10)" ) +// "(C)1993 BARCREST" and "VSG 0.4" +GAME_CUSTOM( 199?, m4vegast__t, m4vegast, "vsg04s.p1", 0x0000, 0x020000, CRC(aff47295) SHA1(d249f280b721c96b7c36329e2c2bb955fa91aa59), "Barcrest","Vegas Strip (Barcrest) (MPU4) (VSG 0.4)" ) GAME_CUSTOM( 199?, m4vegast__j, m4vegast, "vsg04ad.p1", 0x0000, 0x020000, CRC(d63f8f24) SHA1(f3dcd908bceb5a508927a83d23e82577e8684240), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4vegast__k, m4vegast, "vsg04b.p1", 0x0000, 0x020000, CRC(4211e2bf) SHA1(5f634d074d0f95673f734c5600ac990fb7510bdc), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4vegast__l, m4vegast, "vsg04bd.p1", 0x0000, 0x020000, CRC(5b2521e1) SHA1(67d2496e7a52f9aa984d57a5b76f995506051a8c), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 13)" ) @@ -3788,10 +3823,11 @@ GAME_CUSTOM( 199?, m4vegast__p, m4vegast, "vsg04dr.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4vegast__q, m4vegast, "vsg04dy.p1", 0x0000, 0x020000, CRC(9601a949) SHA1(39a06f671b8f817039b9861887dd9521e7f3acdd), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4vegast__r, m4vegast, "vsg04k.p1", 0x0000, 0x020000, CRC(08d64ae9) SHA1(5cfe1b2fe0933d06618a2c88e1a63224686e972f), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4vegast__s, m4vegast, "vsg04r.p1", 0x0000, 0x020000, CRC(bbd9f1d8) SHA1(22312ff72d5b2fbe6416a7e84435e1df456a3547), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4vegast__t, m4vegast, "vsg04s.p1", 0x0000, 0x020000, CRC(aff47295) SHA1(d249f280b721c96b7c36329e2c2bb955fa91aa59), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4vegast__u, m4vegast, "vsg04y.p1", 0x0000, 0x020000, CRC(8f356a17) SHA1(33ac5e8a455175471466f7c7f35c66f795067bf2), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4vegast__v, m4vegast, "lvs", 0x0000, 0x020000, CRC(dcb0dc80) SHA1(6045b332eb4af09f6e0a669ea0b78ef4ac389ac2), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4vegast__x, m4vegast, "vstr2010", 0x0000, 0x020000, CRC(126365e3) SHA1(1e648b7a8cb1ff49e43e2fdc30f482b2b73ed6d7), "Barcrest","Vegas Strip (Barcrest) (MPU4) (set 25)" ) +// "(C)1993 BARCREST" and "VSG 0.3" (most of the sets with 2010 in the filenames are hacks tho) +GAME_CUSTOM( 199?, m4vegast__x, m4vegast, "vstr2010", 0x0000, 0x020000, CRC(126365e3) SHA1(1e648b7a8cb1ff49e43e2fdc30f482b2b73ed6d7), "Barcrest","Vegas Strip (Barcrest) (MPU4) (VSG 0.3)" ) +// "(C)1993 BARCREST" and "VSG 0.3" (but doesn't boot?) +GAME_CUSTOM( 199?, m4vegast__v, m4vegast, "lvs", 0x0000, 0x020000, CRC(dcb0dc80) SHA1(6045b332eb4af09f6e0a669ea0b78ef4ac389ac2), "hack?","Vegas Strip (Barcrest) (MPU4) (VSG 0.3, hack?)" ) #define M4HOTROD_EXTRA_ROMS \ @@ -3854,10 +3890,8 @@ GAME_CUSTOM( 199?, m4hotrod__t, m4hotrod, "hrod_10_.8", 0x000 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4buc, 0, "buccaneer5-15sw.bin", 0x000000, 0x020000, CRC(9b92d1f6) SHA1(d374fe966a1b039c971f278ab1113640e7629233), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4buc__a, m4buc, "bucc15g", 0x000000, 0x020000, CRC(63dd1180) SHA1(a557af6927744b4ce2773c70db5ce1a7708ceb2c), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4buc__b, m4buc, "bucc15t", 0x000000, 0x020000, CRC(66104749) SHA1(4b5a9a3f1409e207cad42ea29a205a18facf57ab), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 3)" ) +// "(C)1993 BARCREST" and "BUG 0.4" +GAME_CUSTOM( 199?, m4buc, 0, "bug04s.p1", 0x000000, 0x020000, CRC(0f76cf1d) SHA1(e0081f88e23958564a87346082629c4fdc0cc147), "Barcrest","Buccaneer (Barcrest) (MPU4) (BUG 0.4)" ) GAME_CUSTOM( 199?, m4buc__c, m4buc, "bug04ad.p1", 0x000000, 0x020000, CRC(c6171b29) SHA1(a66aa4b05f974aa9cea9e05e95d14a0e746374be), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4buc__d, m4buc, "bug04b.p1", 0x000000, 0x020000, CRC(4358fe51) SHA1(6e61397f71018d3f9d369a0ac8fefacafbada2d5), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4buc__e, m4buc, "bug04bd.p1", 0x000000, 0x020000, CRC(282b7832) SHA1(1ae3e45606bb875dd178beab231bdaa472687d46), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 6)" ) @@ -3869,8 +3903,9 @@ GAME_CUSTOM( 199?, m4buc__j, m4buc, "bug04dy.p1", 0x000000, 0x020000 GAME_CUSTOM( 199?, m4buc__k, m4buc, "bug04h.p1", 0x000000, 0x020000, CRC(03edc1c4) SHA1(52a3040ec602008dc9143900d149251235282dca), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4buc__l, m4buc, "bug04k.p1", 0x000000, 0x020000, CRC(6ab99bd9) SHA1(d199e88dd22f6c2d31c23413c4c3f262834f5751), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4buc__m, m4buc, "bug04r.p1", 0x000000, 0x020000, CRC(d9b620e8) SHA1(01e7232f62dc33d3a9a26ee5456c2bb47dd4fce4), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4buc__n, m4buc, "bug04s.p1", 0x000000, 0x020000, CRC(0f76cf1d) SHA1(e0081f88e23958564a87346082629c4fdc0cc147), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 15)" ) GAME_CUSTOM( 199?, m4buc__o, m4buc, "bug04y.p1", 0x000000, 0x020000, CRC(207e338f) SHA1(3a95d0029e3e3a8f839f335ed1a981e8d6124dcc), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 16)" ) +// "(C)1993 BARCREST" and "BUG 0.5" +GAME_CUSTOM( 199?, m4buc__0, m4buc, "bug05s.p1", 0x000000, 0x020000, CRC(99ce7ada) SHA1(6cdb17d8dfd759ceb2d7acd5f6b15952106f3178), "Barcrest","Buccaneer (Barcrest) (MPU4) (BUG 0.5)" ) GAME_CUSTOM( 199?, m4buc__p, m4buc, "bug05ad.p1", 0x000000, 0x020000, CRC(515539dd) SHA1(6f8eb199f4738edb6f405f3d5df1ba0256dfa0bf), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4buc__q, m4buc, "bug05b.p1", 0x000000, 0x020000, CRC(a4e57b87) SHA1(64a76762b028349da9fb14141d27423785bdb9c8), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4buc__r, m4buc, "bug05bd.p1", 0x000000, 0x020000, CRC(bf695ac6) SHA1(24f5c4f46ed5d269426357ef578774ac456be1d0), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 19)" ) @@ -3882,8 +3917,9 @@ GAME_CUSTOM( 199?, m4buc__w, m4buc, "bug05dy.p1", 0x000000, 0x020000 GAME_CUSTOM( 199?, m4buc__x, m4buc, "bug05h.p1", 0x000000, 0x020000, CRC(e4504412) SHA1(84596d14c1474f7965956ed707261dbe272d9c14), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 25)" ) GAME_CUSTOM( 199?, m4buc__y, m4buc, "bug05k.p1", 0x000000, 0x020000, CRC(8d041e0f) SHA1(94c4fa84f6c978c725593c6086c61521cd791c74), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 26)" ) GAME_CUSTOM( 199?, m4buc__z, m4buc, "bug05r.p1", 0x000000, 0x020000, CRC(3e0ba53e) SHA1(041dbf7f086dce0182f855249d832b68942e2c33), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4buc__0, m4buc, "bug05s.p1", 0x000000, 0x020000, CRC(99ce7ada) SHA1(6cdb17d8dfd759ceb2d7acd5f6b15952106f3178), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4buc__1, m4buc, "bug05y.p1", 0x000000, 0x020000, CRC(c7c3b659) SHA1(66aa9481b69ee282ecfa8f7614b7d476919e35b3), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 29)" ) +// "(C)1993 BARCREST" and "BUS 0.1" +GAME_CUSTOM( 199?, m4buc__ad, m4buc, "bus01s.p1", 0x000000, 0x020000, CRC(d5a35734) SHA1(7b905ac16eb50d462e9edc5bb50fe660b6f7c81b), "Barcrest","Buccaneer (Barcrest) (MPU4) (BUS 0.1)" ) GAME_CUSTOM( 199?, m4buc__2, m4buc, "bus01ad.p1", 0x000000, 0x020000, CRC(0f5920ee) SHA1(5152c24fd3e3642a5324e68465403a6ce199db5a), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 30)" ) GAME_CUSTOM( 199?, m4buc__3, m4buc, "bus01b.p1", 0x000000, 0x020000, CRC(656d2609) SHA1(525fc8e2dc1d6bfe17c24e28ccde0f0a580e4330), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 31)" ) GAME_CUSTOM( 199?, m4buc__4, m4buc, "bus01bd.p1", 0x000000, 0x020000, CRC(e16543f5) SHA1(98dc6a098ad13c1f7c3e0e1079eed92931ce279c), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 32)" ) @@ -3895,8 +3931,9 @@ GAME_CUSTOM( 199?, m4buc__9, m4buc, "bus01dy.p1", 0x000000, 0x020000 GAME_CUSTOM( 199?, m4buc__aa, m4buc, "bus01h.p1", 0x000000, 0x020000, CRC(25d8199c) SHA1(84be66148fe14d85bd69fb4c9b5263b7c208e690), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 38)" ) GAME_CUSTOM( 199?, m4buc__ab, m4buc, "bus01k.p1", 0x000000, 0x020000, CRC(4c8c4381) SHA1(0e6204e6f937ca8b9dc31927d31ec11db18068c0), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 39)" ) GAME_CUSTOM( 199?, m4buc__ac, m4buc, "bus01r.p1", 0x000000, 0x020000, CRC(ff83f8b0) SHA1(bbd56730eccb4df1815b98921522beec5c74a9bd), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 40)" ) -GAME_CUSTOM( 199?, m4buc__ad, m4buc, "bus01s.p1", 0x000000, 0x020000, CRC(d5a35734) SHA1(7b905ac16eb50d462e9edc5bb50fe660b6f7c81b), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 41)" ) GAME_CUSTOM( 199?, m4buc__ae, m4buc, "bus01y.p1", 0x000000, 0x020000, CRC(064bebd7) SHA1(8b19edae49c919ddf20d2ebff43ffec79809d90c), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 42)" ) +// "(C)1993 BARCREST" and "BUS 0.2" +GAME_CUSTOM( 199?, m4buc__aq, m4buc, "bus02s.p1", 0x000000, 0x020000, CRC(c43f9f09) SHA1(83501473bf8fc17748fa42ab446d4bc54eeb2a80), "Barcrest","Buccaneer (Barcrest) (MPU4) (BUS 0.2)" ) GAME_CUSTOM( 199?, m4buc__af, m4buc, "bus02ad.p1", 0x000000, 0x020000, CRC(a1ad9f3d) SHA1(bfb61b1f2a449293d23d6c385a0aab67ccdcc8fe), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4buc__ag, m4buc, "bus02b.p1", 0x000000, 0x020000, CRC(f6d1181b) SHA1(f4606b4f9522293ad73936f9dd80e54b9ee58f33), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 44)" ) GAME_CUSTOM( 199?, m4buc__ah, m4buc, "bus02bd.p1", 0x000000, 0x020000, CRC(4f91fc26) SHA1(66e2aec28ec474a8d9c11dd7375de0c2050db963), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 45)" ) @@ -3908,16 +3945,22 @@ GAME_CUSTOM( 199?, m4buc__am, m4buc, "bus02dy.p1", 0x000000, 0x020000 GAME_CUSTOM( 199?, m4buc__an, m4buc, "bus02h.p1", 0x000000, 0x020000, CRC(b664278e) SHA1(ab009d09f1e3a8aa3c425db689553c3ac63f17ce), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 51)" ) GAME_CUSTOM( 199?, m4buc__ao, m4buc, "bus02k.p1", 0x000000, 0x020000, CRC(df307d93) SHA1(1dda940868273f81c501dcee27c9d6bc91f411e1), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 52)" ) GAME_CUSTOM( 199?, m4buc__ap, m4buc, "bus02r.p1", 0x000000, 0x020000, CRC(6c3fc6a2) SHA1(f65cab3fcc5a7176dded8ebf3de8ff90479686c6), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 53)" ) -GAME_CUSTOM( 199?, m4buc__aq, m4buc, "bus02s.p1", 0x000000, 0x020000, CRC(c43f9f09) SHA1(83501473bf8fc17748fa42ab446d4bc54eeb2a80), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 54)" ) GAME_CUSTOM( 199?, m4buc__ar, m4buc, "bus02y.p1", 0x000000, 0x020000, CRC(95f7d5c5) SHA1(301949ad27963041a3cef000ed9ffd16c119b18d), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 55)" ) -GAME_CUSTOM( 199?, m4buc__as, m4buc, "br_sj___.1_1", 0x000000, 0x020000, CRC(02c30d48) SHA1(8e5d09d721bf6e1876d672b6c84f46666cf42b90), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 56)" ) -GAME_CUSTOM( 199?, m4buc__at, m4buc, "br_sj_b_.1_1", 0x000000, 0x020000, CRC(490ec8a7) SHA1(faf9f450d48382aeb7b8e01750fc226c30e761d3), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 57)" ) -GAME_CUSTOM( 199?, m4buc__au, m4buc, "br_sj_d_.1_1", 0x000000, 0x020000, CRC(ac4e72d6) SHA1(303f77e536b8da79a926dc5b30441ae9071f683b), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 58)" ) -GAME_CUSTOM( 199?, m4buc__av, m4buc, "br_sj_k_.1_1", 0x000000, 0x020000, CRC(1c71f108) SHA1(10f4e99b0af4a102ed23098123d82da2a8f1c5be), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4buc__aw, m4buc, "br_sjb__.1_1", 0x000000, 0x020000, CRC(d15579a0) SHA1(577c7cd11da15083327dba385a6769b346be2b71), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 60)" ) -GAME_CUSTOM( 199?, m4buc__ax, m4buc, "br_sjbg_.1_1", 0x000000, 0x020000, CRC(5f8ec0ae) SHA1(8eacfd43e3f875af862b77f044b7a9f1487af4a1), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4buc__ay, m4buc, "br_sjbt_.1_1", 0x000000, 0x020000, CRC(00f9581e) SHA1(1461539f501250a08bf66e4a94e4b84113dc0dc5), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4buc__az, m4buc, "br_sjwb_.1_1", 0x000000, 0x020000, CRC(d15cb680) SHA1(4ab485eb2d1d57c690926e430e0c8b2af045381d), "Barcrest","Buccaneer (Barcrest) (MPU4) (set 63)" ) + +// "(C)1999 BWB" and "BR_ 1.0" +GAME_CUSTOM( 199?, m4buc__as, m4buc, "br_sj___.1_1", 0x000000, 0x020000, CRC(02c30d48) SHA1(8e5d09d721bf6e1876d672b6c84f46666cf42b90), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 1)" ) +GAME_CUSTOM( 199?, m4buc__at, m4buc, "br_sj_b_.1_1", 0x000000, 0x020000, CRC(490ec8a7) SHA1(faf9f450d48382aeb7b8e01750fc226c30e761d3), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 2)" ) +GAME_CUSTOM( 199?, m4buc__au, m4buc, "br_sj_d_.1_1", 0x000000, 0x020000, CRC(ac4e72d6) SHA1(303f77e536b8da79a926dc5b30441ae9071f683b), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 3)" ) +GAME_CUSTOM( 199?, m4buc__av, m4buc, "br_sj_k_.1_1", 0x000000, 0x020000, CRC(1c71f108) SHA1(10f4e99b0af4a102ed23098123d82da2a8f1c5be), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 4)" ) +GAME_CUSTOM( 199?, m4buc__aw, m4buc, "br_sjb__.1_1", 0x000000, 0x020000, CRC(d15579a0) SHA1(577c7cd11da15083327dba385a6769b346be2b71), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 5)" ) +GAME_CUSTOM( 199?, m4buc__ax, m4buc, "br_sjbg_.1_1", 0x000000, 0x020000, CRC(5f8ec0ae) SHA1(8eacfd43e3f875af862b77f044b7a9f1487af4a1), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 6)" ) +GAME_CUSTOM( 199?, m4buc__ay, m4buc, "br_sjbt_.1_1", 0x000000, 0x020000, CRC(00f9581e) SHA1(1461539f501250a08bf66e4a94e4b84113dc0dc5), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 7)" ) +GAME_CUSTOM( 199?, m4buc__az, m4buc, "br_sjwb_.1_1", 0x000000, 0x020000, CRC(d15cb680) SHA1(4ab485eb2d1d57c690926e430e0c8b2af045381d), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 8)" ) +GAME_CUSTOM( 199?, m4buc__n, m4buc, "buccaneer5-15sw.bin", 0x000000, 0x020000, CRC(9b92d1f6) SHA1(d374fe966a1b039c971f278ab1113640e7629233), "Bwb","Buccaneer (Barcrest) (MPU4) (BR_ 1.0, set 9)" ) +// no copyright string and "BUG 0.4" +GAME_CUSTOM( 199?, m4buc__a, m4buc, "bucc15g", 0x000000, 0x020000, CRC(63dd1180) SHA1(a557af6927744b4ce2773c70db5ce1a7708ceb2c), "hack","Buccaneer (Barcrest) (MPU4) (BUG 0.4, hack)" ) +// no copyright string and "BUS 0.1" +GAME_CUSTOM( 199?, m4buc__b, m4buc, "bucc15t", 0x000000, 0x020000, CRC(66104749) SHA1(4b5a9a3f1409e207cad42ea29a205a18facf57ab), "hack","Buccaneer (Barcrest) (MPU4) (BUS 0.1, hack)" ) #undef GAME_CUSTOM @@ -3928,29 +3971,40 @@ GAME_CUSTOM( 199?, m4buc__az, m4buc, "br_sjwb_.1_1", 0x000000, 0x020000 ROM_END \ GAME(year, setname, parent ,mod2 ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4hypvip, 0, "5p4hypervyper.bin", 0x0000, 0x010000, CRC(51ac9288) SHA1(1580079b6e710506ab03e1d8a89af65cd06cedd2), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4hypvip__a, m4hypvip, "h.viper10p610m.bin", 0x0000, 0x010000, CRC(104b0c48) SHA1(ab4cdb596a0cfb877ed1b6bf801e4a759b53971f), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4hypvip__b, m4hypvip, "h6yc.p1", 0x0000, 0x010000, CRC(8faca3bc) SHA1(9d666371f1118ccb1a94bfc4e6c79b540a84842b), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 3)" ) +// "(C)1991 BARCREST" and "H6Y 0.3" +GAME_CUSTOM( 199?, m4hypvip, 0, "h6ys.p1", 0x0000, 0x010000, CRC(4af914ff) SHA1(3d9b7c65ec1129ee64e3f4e14e43e4c39c76166b), "Barcrest","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3)" ) +GAME_CUSTOM( 199?, m4hypvip__e, m4hypvip, "h6yc.p1", 0x0000, 0x010000, CRC(8faca3bc) SHA1(9d666371f1118ccb1a94bfc4e6c79b540a84842b), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4hypvip__c, m4hypvip, "h6yd.p1", 0x0000, 0x010000, CRC(862e7f5b) SHA1(2f5bbc31978fb9fd0ba17f0de220152da87cf06f), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4hypvip__d, m4hypvip, "h6yk.p1", 0x0000, 0x010000, CRC(51f43c88) SHA1(d6ee4f537d09b33e9b13c972e1bda01a28f54f8e), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4hypvip__e, m4hypvip, "h6ys.p1", 0x0000, 0x010000, CRC(4af914ff) SHA1(3d9b7c65ec1129ee64e3f4e14e43e4c39c76166b), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4hypvip__f, m4hypvip, "h6yy.p1", 0x0000, 0x010000, CRC(bed4b3bb) SHA1(7c592fbc6541c03777ff0498db90c575b3193222), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4hypvip__g, m4hypvip, "hv056c", 0x0000, 0x010000, CRC(91dcef99) SHA1(8fb6245fa8731b58799c0d2edc0e6c6942984a6f), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4hypvip__h, m4hypvip, "hv05_101", 0x0000, 0x010000, CRC(e1fa633d) SHA1(3f446c3396142631141cf85db507f3ae288847e3), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4hypvip__i, m4hypvip, "hv108c", 0x0000, 0x010000, CRC(4d40ebfe) SHA1(0e355fe5b185ba595c5040335956037b8ed21599), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4hypvip__j, m4hypvip, "hv10_101", 0x0000, 0x010000, CRC(57714454) SHA1(de99f5a66081191a7280c54e875fd17cc94e111b), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4hypvip__k, m4hypvip, "hv20_101", 0x0000, 0x010000, CRC(b2ab79c9) SHA1(fd097b5b062d725fa0607117d6b52be6cbf7e597), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4hypvip__l, m4hypvip, "hvyp10p", 0x0000, 0x010000, CRC(b4af635a) SHA1(420cdf3a6899e432d74e3b10a57414cbedc0913e), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4hypvip__m, m4hypvip, "hvyp56c", 0x0000, 0x010000, CRC(297d3cf8) SHA1(78f4de2ed69fb38b944a54d4d5927ff791e7876c), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4hypvip__n, m4hypvip, "hvypr206", 0x0000, 0x010000, CRC(e1d96b8c) SHA1(e21b1bdbca1bae41f0e7274e3521f99eb984759e), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4hypvip__o, m4hypvip, "hyp55", 0x0000, 0x010000, CRC(07bd7455) SHA1(0d0a017c90e8d28500594f55c9a60dfc08aff5c3), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4hypvip__p, m4hypvip, "hypr58c", 0x0000, 0x010000, CRC(d6028f8f) SHA1(54a3188ddb5196808a1161a0e1e6a8c1fe8bfde3), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4hypvip__q, m4hypvip, "hvip_05_.8", 0x0000, 0x010000, CRC(625f1b9d) SHA1(f8dc0cde774f3fc4fb3d66d014ad47e9576c0f44), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4hypvip__r, m4hypvip, "hvip_10_.8", 0x0000, 0x010000, CRC(f91d7fec) SHA1(4c8130f9ce0ee3b14744e2b3cab79d4a65767e78), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4hypvip__s, m4hypvip, "hvip_20_.8", 0x0000, 0x010000, CRC(61a608c7) SHA1(1ed98c8bd90a3a789ba00b6b39f49e3aa0fcb1ca), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4hypvip__t, m4hypvip, "hypv_05_.4", 0x0000, 0x010000, CRC(246f171c) SHA1(7bbefb0cae57cf8097aa6d033df1a428e8bfe744), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4hypvip__u, m4hypvip, "hypv_10_.4", 0x0000, 0x010000, CRC(f85d21a1) SHA1(55ed92147335a1471b7b443f68dd700f579d21f3), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4hypvip__v, m4hypvip, "hypv_20_.4", 0x0000, 0x010000, CRC(27a0162b) SHA1(2d1342edbfa29c4f2ee1f1a825f3eeb0489fbaf5), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 23)" ) +// "(C)1991 BARCREST" and "H6Y 0.3" (but hack, doesn't want usual characterizer) +GAME_CUSTOM( 199?, m4hypvip__k, m4hypvip, "hv20_101", 0x0000, 0x010000, CRC(b2ab79c9) SHA1(fd097b5b062d725fa0607117d6b52be6cbf7e597), "hack","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 1)" ) +GAME_CUSTOM( 199?, m4hypvip__s, m4hypvip, "hvip_20_.8", 0x0000, 0x010000, CRC(61a608c7) SHA1(1ed98c8bd90a3a789ba00b6b39f49e3aa0fcb1ca), "hack","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 2)" ) +GAME_CUSTOM( 199?, m4hypvip__v, m4hypvip, "hypv_20_.4", 0x0000, 0x010000, CRC(27a0162b) SHA1(2d1342edbfa29c4f2ee1f1a825f3eeb0489fbaf5), "hack","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 3)" ) +// "(C)1991 BARCREST" and "H6Y 0.2" +GAME_CUSTOM( 199?, m4hypvip__n, m4hypvip, "hvypr206", 0x0000, 0x010000, CRC(e1d96b8c) SHA1(e21b1bdbca1bae41f0e7274e3521f99eb984759e), "Barcrest","Hyper Viper (Barcrest) (MPU4) (H6Y 0.2 Y)" ) +// "(C)1993 B.W.B." and "HVP 3.0" +GAME_CUSTOM( 199?, m4hypvip__l, m4hypvip, "hvyp10p", 0x0000, 0x010000, CRC(b4af635a) SHA1(420cdf3a6899e432d74e3b10a57414cbedc0913e), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0)" ) +// "(C)1994 B.W.B." and "HVP 3.0" +GAME_CUSTOM( 199?, m4hypvip__a, m4hypvip, "h.viper10p610m.bin", 0x0000, 0x010000, CRC(104b0c48) SHA1(ab4cdb596a0cfb877ed1b6bf801e4a759b53971f), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C)" ) +GAME_CUSTOM( 199?, m4hypvip__m, m4hypvip, "hvyp56c", 0x0000, 0x010000, CRC(297d3cf8) SHA1(78f4de2ed69fb38b944a54d4d5927ff791e7876c), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, bad?)" ) // bad rom? checksum alarm +// "(C)1995 B.W.B." and "HVC 1.0" +GAME_CUSTOM( 199?, m4hypvip__b, m4hypvip, "5p4hypervyper.bin", 0x0000, 0x010000, CRC(51ac9288) SHA1(1580079b6e710506ab03e1d8a89af65cd06cedd2), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVC 1.0 C)" ) +// no copyright string and "HVP 3.0" +GAME_CUSTOM( 199?, m4hypvip__g, m4hypvip, "hv056c", 0x0000, 0x010000, CRC(91dcef99) SHA1(8fb6245fa8731b58799c0d2edc0e6c6942984a6f), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 1)" ) +GAME_CUSTOM( 199?, m4hypvip__h, m4hypvip, "hv05_101", 0x0000, 0x010000, CRC(e1fa633d) SHA1(3f446c3396142631141cf85db507f3ae288847e3), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 2)" ) +GAME_CUSTOM( 199?, m4hypvip__o, m4hypvip, "hyp55", 0x0000, 0x010000, CRC(07bd7455) SHA1(0d0a017c90e8d28500594f55c9a60dfc08aff5c3), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 3)" ) +GAME_CUSTOM( 199?, m4hypvip__p, m4hypvip, "hypr58c", 0x0000, 0x010000, CRC(d6028f8f) SHA1(54a3188ddb5196808a1161a0e1e6a8c1fe8bfde3), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 4)" ) +GAME_CUSTOM( 199?, m4hypvip__t, m4hypvip, "hypv_05_.4", 0x0000, 0x010000, CRC(246f171c) SHA1(7bbefb0cae57cf8097aa6d033df1a428e8bfe744), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 5)" ) +GAME_CUSTOM( 199?, m4hypvip__q, m4hypvip, "hvip_05_.8", 0x0000, 0x010000, CRC(625f1b9d) SHA1(f8dc0cde774f3fc4fb3d66d014ad47e9576c0f44), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, hack, set 1)" ) +// "DICK WAS ERE" and "HVP 3.0" +GAME_CUSTOM( 199?, m4hypvip__i, m4hypvip, "hv108c", 0x0000, 0x010000, CRC(4d40ebfe) SHA1(0e355fe5b185ba595c5040335956037b8ed21599), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 6)" ) +GAME_CUSTOM( 199?, m4hypvip__j, m4hypvip, "hv10_101", 0x0000, 0x010000, CRC(57714454) SHA1(de99f5a66081191a7280c54e875fd17cc94e111b), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 7)" ) +GAME_CUSTOM( 199?, m4hypvip__u, m4hypvip, "hypv_10_.4", 0x0000, 0x010000, CRC(f85d21a1) SHA1(55ed92147335a1471b7b443f68dd700f579d21f3), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 8)" ) +GAME_CUSTOM( 199?, m4hypvip__r, m4hypvip, "hvip_10_.8", 0x0000, 0x010000, CRC(f91d7fec) SHA1(4c8130f9ce0ee3b14744e2b3cab79d4a65767e78), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, hack, set 2)" ) + + + #define M4JWLCWN_EXTRA_ROMS \ @@ -3970,7 +4024,8 @@ GAME_CUSTOM( 199?, m4hypvip__v, m4hypvip, "hypv_20_.4", 0x0000, 0 GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4jwlcwn, 0, "cje0.8", 0x0000, 0x020000, CRC(2074bf61) SHA1(d84201fb7d2590b16816e0369e89789d02088a6d), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "CJE 1.0" +GAME_CUSTOM( 199?, m4jwlcwn, 0, "cje10s.p1", 0x0000, 0x020000, CRC(5f3b72b7) SHA1(8faf0de0282a67c88170c13856b8816c38396e19), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0)" ) GAME_CUSTOM( 199?, m4jwlcwn__a, m4jwlcwn, "cje10ad.p1", 0x0000, 0x020000, CRC(b245d706) SHA1(704cc3bcae099c71dcc2bd96095cb4b48857a23a), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4jwlcwn__b, m4jwlcwn, "cje10b.p1", 0x0000, 0x020000, CRC(0ef3387b) SHA1(852bdac93fb448089633133a546bdb8da4d6887b), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4jwlcwn__c, m4jwlcwn, "cje10bd.p1", 0x0000, 0x020000, CRC(3f5f79c3) SHA1(a89502dae9843fddd471fd5eb1d39e84d7124c7e), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 4)" ) @@ -3981,8 +4036,11 @@ GAME_CUSTOM( 199?, m4jwlcwn__g, m4jwlcwn, "cje10dr.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4jwlcwn__h, m4jwlcwn, "cje10dy.p1", 0x0000, 0x020000, CRC(f27bf16b) SHA1(f6c6986ed96c9fca90f94921fb984e58425179b9), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4jwlcwn__i, m4jwlcwn, "cje10k.p1", 0x0000, 0x020000, CRC(4434902d) SHA1(31c7be1235cdfd00099d1e09644a0f76fc7a26f7), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4jwlcwn__j, m4jwlcwn, "cje10r.p1", 0x0000, 0x020000, CRC(f73b2b1c) SHA1(bd9ee8047b4b0cc30b92d5460d34fa2628a72dde), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4jwlcwn__k, m4jwlcwn, "cje10s.p1", 0x0000, 0x020000, CRC(5f3b72b7) SHA1(8faf0de0282a67c88170c13856b8816c38396e19), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4jwlcwn__l, m4jwlcwn, "cje10y.p1", 0x0000, 0x020000, CRC(c3d7b0d3) SHA1(5c314fcaab08e7a551e6ad7a2e0fa08a03d4c80d), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 13)" ) +// "(C)1993 BARCREST" and "CJE 0.8" +GAME_CUSTOM( 199?, m4jwlcwn__k, m4jwlcwn, "cje0.8", 0x0000, 0x020000, CRC(2074bf61) SHA1(d84201fb7d2590b16816e0369e89789d02088a6d), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (CJE 0.8 Y)" ) +// "(C)1993 BARCREST" and "CJH 1.0" +GAME_CUSTOM( 199?, m4jwlcwn__w, m4jwlcwn, "cjh10s.p1", 0x0000, 0x020000, CRC(eb22d1bb) SHA1(4a8c19a8c71ef018f1fae146ba60632a94d895fc), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0)" ) GAME_CUSTOM( 199?, m4jwlcwn__m, m4jwlcwn, "cjh10ad.p1", 0x0000, 0x020000, CRC(db6a3f77) SHA1(9986150dd84839ea726405dec1b731b0477d1d29), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4jwlcwn__n, m4jwlcwn, "cjh10b.p1", 0x0000, 0x020000, CRC(67009ea4) SHA1(84e97bcb23ba876e33976a6081f24561e0b3faac), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 15)" ) GAME_CUSTOM( 199?, m4jwlcwn__o, m4jwlcwn, "cjh10bd.p1", 0x0000, 0x020000, CRC(567091b2) SHA1(8b7f33802e03d7e4ede06d345afedf8631f69412), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 16)" ) @@ -3993,17 +4051,25 @@ GAME_CUSTOM( 199?, m4jwlcwn__s, m4jwlcwn, "cjh10dr.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4jwlcwn__t, m4jwlcwn, "cjh10dy.p1", 0x0000, 0x020000, CRC(9b54191a) SHA1(ae01b3842ab83572abc4966e94956623103b2bda), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4jwlcwn__u, m4jwlcwn, "cjh10k.p1", 0x0000, 0x020000, CRC(2dc736f2) SHA1(eae27aad3faca98c3dc0873cd00f3babe4d67302), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 22)" ) GAME_CUSTOM( 199?, m4jwlcwn__v, m4jwlcwn, "cjh10r.p1", 0x0000, 0x020000, CRC(9ec88dc3) SHA1(01016ca0785a11e800fbddb7a7cc7e4be6ffdb09), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4jwlcwn__w, m4jwlcwn, "cjh10s.p1", 0x0000, 0x020000, CRC(eb22d1bb) SHA1(4a8c19a8c71ef018f1fae146ba60632a94d895fc), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 24)" ) GAME_CUSTOM( 199?, m4jwlcwn__x, m4jwlcwn, "cjh10y.p1", 0x0000, 0x020000, CRC(aa24160c) SHA1(2014420ce92297dbe1ef286d801c25aa67976b2e), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4jwlcwn__y, m4jwlcwn, "jewel15g", 0x0000, 0x020000, CRC(bf3b8b63) SHA1(1ee91745438b9458ffbd43380bf9c6fd784fd054), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4jwlcwn__z, m4jwlcwn, "jewel15t", 0x0000, 0x020000, CRC(5828fd3b) SHA1(be95d5c3c9729547dcb0815c868e8d654826e34e), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4jwlcwn__0, m4jwlcwn, "jitc2010", 0x0000, 0x020000, CRC(1c946895) SHA1(43215c4099197a67bf0a6100e3dc3b81759cfc76), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4jwlcwn__1, m4jwlcwn, "jc__x___.4_1", 0x0000, 0x020000, CRC(5bf060ca) SHA1(a13795b145ff230437764f5414ec443e8fe4d783), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4jwlcwn__2, m4jwlcwn, "jc__x__c.3_1", 0x0000, 0x020000, CRC(b5e11e92) SHA1(87d7febf350ff7e4175bb6b8544181de66415e12), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4jwlcwn__3, m4jwlcwn, "jc__xa_4.3_1", 0x0000, 0x020000, CRC(e6abb23e) SHA1(05b9286c4c1ec6364fd57d412336192ca61325a9), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4jwlcwn__4, m4jwlcwn, "jc__xa_5.1_1", 0x0000, 0x020000, CRC(09f897c7) SHA1(5f6ad23f92b9fa4fdde57dd80317e1e998de9d54), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4jwlcwn__5, m4jwlcwn, "jc__xa_8.4_1", 0x0000, 0x020000, CRC(27346ae8) SHA1(0fa13205e45e8dab0e1a25e6492ff2987633eb0f), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4jwlcwn__6, m4jwlcwn, "jc_xx__c.3_1", 0x0000, 0x020000, CRC(0787fd51) SHA1(90fc71e0ea9b79d3296611c1e6f720150e17d51b), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (set 34)" ) +// "(C)1993 BARCREST" and "CJH 0.8" +GAME_CUSTOM( 199?, m4jwlcwn__0, m4jwlcwn, "jitc2010", 0x0000, 0x020000, CRC(1c946895) SHA1(43215c4099197a67bf0a6100e3dc3b81759cfc76), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (CJH 0.8)" ) +// "(C)1997 B.W.B." and "JC8 4.4" +GAME_CUSTOM( 199?, m4jwlcwn__1, m4jwlcwn, "jc__x___.4_1", 0x0000, 0x020000, CRC(5bf060ca) SHA1(a13795b145ff230437764f5414ec443e8fe4d783), "Bwb","Jewel In the Crown (Barcrest) (MPU4) (JC8 4.4)" ) +// "(C)1997 B.W.B." and "JCC 3.3" +GAME_CUSTOM( 199?, m4jwlcwn__2, m4jwlcwn, "jc__x__c.3_1", 0x0000, 0x020000, CRC(b5e11e92) SHA1(87d7febf350ff7e4175bb6b8544181de66415e12), "Bwb","Jewel In the Crown (Barcrest) (MPU4) (JCC 3.3)" ) +// "(C)1997 B.W.B." and "JC4 3.1" +GAME_CUSTOM( 199?, m4jwlcwn__3, m4jwlcwn, "jc__xa_4.3_1", 0x0000, 0x020000, CRC(e6abb23e) SHA1(05b9286c4c1ec6364fd57d412336192ca61325a9), "Bwb","Jewel In the Crown (Barcrest) (MPU4) (JC4 3.1)" ) +// "(C)1997 B.W.B." and "JC5 1.9" +GAME_CUSTOM( 199?, m4jwlcwn__4, m4jwlcwn, "jc__xa_5.1_1", 0x0000, 0x020000, CRC(09f897c7) SHA1(5f6ad23f92b9fa4fdde57dd80317e1e998de9d54), "Bwb","Jewel In the Crown (Barcrest) (MPU4) (JC5 1.9)" ) +// "(C)1997 B.W.B." and "JC8 4.2" +GAME_CUSTOM( 199?, m4jwlcwn__5, m4jwlcwn, "jc__xa_8.4_1", 0x0000, 0x020000, CRC(27346ae8) SHA1(0fa13205e45e8dab0e1a25e6492ff2987633eb0f), "Bwb","Jewel In the Crown (Barcrest) (MPU4) (JC8 4.2)" ) +// "(C)1997 B.W.B." and "JCC 3.7" +GAME_CUSTOM( 199?, m4jwlcwn__6, m4jwlcwn, "jc_xx__c.3_1", 0x0000, 0x020000, CRC(0787fd51) SHA1(90fc71e0ea9b79d3296611c1e6f720150e17d51b), "Bwb","Jewel In the Crown (Barcrest) (MPU4) (JCC 3.7)" ) +// no copyright string and "CJH 1.0" +GAME_CUSTOM( 199?, m4jwlcwn__y, m4jwlcwn, "jewel15g", 0x0000, 0x020000, CRC(bf3b8b63) SHA1(1ee91745438b9458ffbd43380bf9c6fd784fd054), "hack","Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0, hack)" ) +// no copyright string and "CJE 1.0" +GAME_CUSTOM( 199?, m4jwlcwn__z, m4jwlcwn, "jewel15t", 0x0000, 0x020000, CRC(5828fd3b) SHA1(be95d5c3c9729547dcb0815c868e8d654826e34e), "hack","Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0, hack)" ) #define M4BAGTEL_EXTRA_ROMS \ @@ -4019,14 +4085,18 @@ GAME_CUSTOM( 199?, m4jwlcwn__6, m4jwlcwn, "jc_xx__c.3_1", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4bagtel, 0, "bgt05s.p1", 0x0000, 0x010000, CRC(ddf1c7dc) SHA1(a786e5e04538ce498493795fc4054bb5de57ffd2), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4bagtel__a, m4bagtel, "bg201c.p1", 0x0000, 0x010000, CRC(ee9bf501) SHA1(5c6ee55cfac5bb92695b412fe56f4c843dcae424), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4bagtel__b, m4bagtel, "bg201dy.p1", 0x0000, 0x010000, CRC(c4916bc0) SHA1(7600a5be6ff235d19f7c99b44b86054555b43638), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4bagtel__c, m4bagtel, "bg201s.p1", 0x0000, 0x010000, CRC(639b078b) SHA1(0c5d270457b2ae88c3885838f96ce29824996e77), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 4)" ) +// "(C)1991 BARCREST" and "BGT 0.5" +GAME_CUSTOM( 199?, m4bagtel, 0, "bgt05s.p1", 0x0000, 0x010000, CRC(ddf1c7dc) SHA1(a786e5e04538ce498493795fc4054bb5de57ffd2), "Barcrest","Bagatelle (Barcrest) (MPU4) (BGT 0.5)" ) GAME_CUSTOM( 199?, m4bagtel__d, m4bagtel, "bgt05dk.p1", 0x0000, 0x010000, CRC(4acaf68d) SHA1(fb7e04c8201829c252add05599218fb2b32c8533), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4bagtel__e, m4bagtel, "bgt05k.p1", 0x0000, 0x010000, CRC(72eb14ad) SHA1(18f9dbc5fd85e14d507b4c69d03d01f24aabb325), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4bagtel__f, m4bagtel, "bgt05r.p1", 0x0000, 0x010000, CRC(e92ad743) SHA1(649496429572a339dea50e262b7eb2ef22273bea), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4bagtel__g, m4bagtel, "bgt05y.p1", 0x0000, 0x010000, CRC(f2508bfa) SHA1(936fb79d5d953d1e2138a55754cbd364d3c307ed), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 8)" ) +// "(C)1991 BARCREST" and "BG2 0.1" +GAME_CUSTOM( 199?, m4bagtel__c, m4bagtel, "bg201s.p1", 0x0000, 0x010000, CRC(639b078b) SHA1(0c5d270457b2ae88c3885838f96ce29824996e77), "Barcrest","Bagatelle (Barcrest) (MPU4) (BG2 0.1)" ) +GAME_CUSTOM( 199?, m4bagtel__a, m4bagtel, "bg201c.p1", 0x0000, 0x010000, CRC(ee9bf501) SHA1(5c6ee55cfac5bb92695b412fe56f4c843dcae424), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4bagtel__b, m4bagtel, "bg201dy.p1", 0x0000, 0x010000, CRC(c4916bc0) SHA1(7600a5be6ff235d19f7c99b44b86054555b43638), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 3)" ) +// "(C)1991 BARCREST" and "EL1 0.1" +GAME_CUSTOM( 199?, m4bagtel__r, m4bagtel, "el101s.p1", 0x0000, 0x010000, CRC(2035faf2) SHA1(1b640fee2f0ace25dfaa702ab2602cdec5ab6018), "Barcrest","Bagatelle (Barcrest) (MPU4) (EL1 0.1)" ) GAME_CUSTOM( 199?, m4bagtel__h, m4bagtel, "el101ad.p1", 0x0000, 0x010000, CRC(fcb39192) SHA1(a604122e40c313ed240f722a48f56d1478754ed3), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4bagtel__i, m4bagtel, "el101b.p1", 0x0000, 0x010000, CRC(947548b4) SHA1(dc74fa15843ec4c34f5bd7269b041ed4406832c2), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4bagtel__j, m4bagtel, "el101bd.p1", 0x0000, 0x010000, CRC(338664f4) SHA1(074261acbf0611d7d54f2718eed04ef6eda81b50), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 11)" ) @@ -4037,8 +4107,9 @@ GAME_CUSTOM( 199?, m4bagtel__n, m4bagtel, "el101dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4bagtel__o, m4bagtel, "el101dy.p1", 0x0000, 0x010000, CRC(81e29484) SHA1(3ac48cef176df5d4ab3b00dc9366f7c9192c8c77), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 16)" ) GAME_CUSTOM( 199?, m4bagtel__p, m4bagtel, "el101k.p1", 0x0000, 0x010000, CRC(0dd7427e) SHA1(83373dca6ec50a03506bda2c220949b2d2f0a7db), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4bagtel__q, m4bagtel, "el101r.p1", 0x0000, 0x010000, CRC(6299ff71) SHA1(137842a886fb4790571b94d94199b362cd86bc3c), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4bagtel__r, m4bagtel, "el101s.p1", 0x0000, 0x010000, CRC(2035faf2) SHA1(1b640fee2f0ace25dfaa702ab2602cdec5ab6018), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 19)" ) GAME_CUSTOM( 199?, m4bagtel__s, m4bagtel, "el101y.p1", 0x0000, 0x010000, CRC(fff2d79f) SHA1(5d1142d8d96803c8b4ddba43283e21bab3a0b598), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 20)" ) +// "(C)1991 BARCREST" and "EL2 0.1" +GAME_CUSTOM( 199?, m4bagtel__3, m4bagtel, "el201s.p1", 0x0000, 0x010000, CRC(87280546) SHA1(f7af53fc1c5e98897c36eaec013f13b1da283c53), "Barcrest","Bagatelle (Barcrest) (MPU4) (EL2 0.1)" ) GAME_CUSTOM( 199?, m4bagtel__t, m4bagtel, "el201ad.p1", 0x0000, 0x010000, CRC(7ebf37ba) SHA1(d6d09d707458aa8a17507e3a1a396569b1eaef4d), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4bagtel__u, m4bagtel, "el201b.p1", 0x0000, 0x010000, CRC(ed9c0546) SHA1(8884420caa7bd9347d882f79f05288c2581026b1), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 22)" ) GAME_CUSTOM( 199?, m4bagtel__v, m4bagtel, "el201bd.p1", 0x0000, 0x010000, CRC(48a35af0) SHA1(17a8f4c178a744dd4b7ab16388a9622f335e3a79), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 23)" ) @@ -4049,8 +4120,9 @@ GAME_CUSTOM( 199?, m4bagtel__z, m4bagtel, "el201dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4bagtel__0, m4bagtel, "el201dy.p1", 0x0000, 0x010000, CRC(16a93996) SHA1(b151e4f16d0d78cd6651976d7108d3e8e8a17696), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 28)" ) GAME_CUSTOM( 199?, m4bagtel__1, m4bagtel, "el201k.p1", 0x0000, 0x010000, CRC(4fb93561) SHA1(ec4575ff6243a6402db7286826197262821d52e4), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 29)" ) GAME_CUSTOM( 199?, m4bagtel__2, m4bagtel, "el201r.p1", 0x0000, 0x010000, CRC(118e1494) SHA1(dc5d4a06d99c2855fd737178e0df19a5b6eb422b), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4bagtel__3, m4bagtel, "el201s.p1", 0x0000, 0x010000, CRC(87280546) SHA1(f7af53fc1c5e98897c36eaec013f13b1da283c53), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 31)" ) GAME_CUSTOM( 199?, m4bagtel__4, m4bagtel, "el201y.p1", 0x0000, 0x010000, CRC(8ce53c7a) SHA1(cf6f863be222eec894da34a414c0a6dd0c8601d7), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 32)" ) +// "(C)1991 BARCREST" and "EL3 1.0" +GAME_CUSTOM( 199?, m4bagtel__af, m4bagtel, "el310s.p1", 0x0000, 0x010000, CRC(5e1cace4) SHA1(b78d8021ef91127f8a60cdcb458723de8925fba5), "Barcrest","Bagatelle (Barcrest) (MPU4) (EL3 1.0)" ) GAME_CUSTOM( 199?, m4bagtel__5, m4bagtel, "el310ad.p1", 0x0000, 0x010000, CRC(7029e664) SHA1(a4e0996710dc6c5cd2b6a79f83e08406a153a01d), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 33)" ) GAME_CUSTOM( 199?, m4bagtel__6, m4bagtel, "el310b.p1", 0x0000, 0x010000, CRC(aa10ed40) SHA1(0722be3c2c582b1179f3dafd4ed6c38f503ee17a), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 34)" ) GAME_CUSTOM( 199?, m4bagtel__7, m4bagtel, "el310bd.p1", 0x0000, 0x010000, CRC(b9204c03) SHA1(ecd3fcc301f5a7ce63b06dc4153b18602c405289), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 35)" ) @@ -4061,7 +4133,6 @@ GAME_CUSTOM( 199?, m4bagtel__ab, m4bagtel, "el310dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4bagtel__ac, m4bagtel, "el310dy.p1", 0x0000, 0x010000, CRC(41f1ac45) SHA1(b3fe09704de422ecc0f7632ec8b8bad646498cd3), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 40)" ) GAME_CUSTOM( 199?, m4bagtel__ad, m4bagtel, "el310k.p1", 0x0000, 0x010000, CRC(8bb4d65c) SHA1(f05b448e7ba9808fb3a1c1f25f4e50fc27549031), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 41)" ) GAME_CUSTOM( 199?, m4bagtel__ae, m4bagtel, "el310r.p1", 0x0000, 0x010000, CRC(0ea8a744) SHA1(2839dd86b54ed073765d97a82b056e20eb05f32f), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 42)" ) -GAME_CUSTOM( 199?, m4bagtel__af, m4bagtel, "el310s.p1", 0x0000, 0x010000, CRC(5e1cace4) SHA1(b78d8021ef91127f8a60cdcb458723de8925fba5), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 43)" ) GAME_CUSTOM( 199?, m4bagtel__ag, m4bagtel, "el310y.p1", 0x0000, 0x010000, CRC(9653f0c6) SHA1(188056b8b704f9b06f93144ce358ec47cc026902), "Barcrest","Bagatelle (Barcrest) (MPU4) (set 45)" ) From 7a38579dd5dcc01c92087661b4da27eec4cd4d72 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Mon, 8 Aug 2016 18:31:20 +0100 Subject: [PATCH 084/116] more mpu4 ident --- src/mame/drivers/mpu4sw.hxx | 375 +++++++++++++++++++----------------- 1 file changed, 203 insertions(+), 172 deletions(-) diff --git a/src/mame/drivers/mpu4sw.hxx b/src/mame/drivers/mpu4sw.hxx index d5204fb74a8..79386c3bee0 100644 --- a/src/mame/drivers/mpu4sw.hxx +++ b/src/mame/drivers/mpu4sw.hxx @@ -3963,6 +3963,8 @@ GAME_CUSTOM( 199?, m4buc__a, m4buc, "bucc15g", 0x000000, 0x020000 GAME_CUSTOM( 199?, m4buc__b, m4buc, "bucc15t", 0x000000, 0x020000, CRC(66104749) SHA1(4b5a9a3f1409e207cad42ea29a205a18facf57ab), "hack","Buccaneer (Barcrest) (MPU4) (BUS 0.1, hack)" ) +// These were mixed in Hyper Viper and Super Hyper Viper sets, not sure if the software is actually different, maybe the Bwb rebuilds were 'Super' ? + #undef GAME_CUSTOM #define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ ROM_START( setname ) \ @@ -3972,11 +3974,12 @@ GAME_CUSTOM( 199?, m4buc__b, m4buc, "bucc15t", 0x000000, 0x020000 GAME(year, setname, parent ,mod2 ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) // "(C)1991 BARCREST" and "H6Y 0.3" -GAME_CUSTOM( 199?, m4hypvip, 0, "h6ys.p1", 0x0000, 0x010000, CRC(4af914ff) SHA1(3d9b7c65ec1129ee64e3f4e14e43e4c39c76166b), "Barcrest","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3)" ) +GAME_CUSTOM( 199?, m4hypvip, 0, "h6ys.p1", 0x0000, 0x010000, CRC(4af914ff) SHA1(3d9b7c65ec1129ee64e3f4e14e43e4c39c76166b), "Barcrest","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, set 1)" ) GAME_CUSTOM( 199?, m4hypvip__e, m4hypvip, "h6yc.p1", 0x0000, 0x010000, CRC(8faca3bc) SHA1(9d666371f1118ccb1a94bfc4e6c79b540a84842b), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4hypvip__c, m4hypvip, "h6yd.p1", 0x0000, 0x010000, CRC(862e7f5b) SHA1(2f5bbc31978fb9fd0ba17f0de220152da87cf06f), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4hypvip__d, m4hypvip, "h6yk.p1", 0x0000, 0x010000, CRC(51f43c88) SHA1(d6ee4f537d09b33e9b13c972e1bda01a28f54f8e), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4hypvip__f, m4hypvip, "h6yy.p1", 0x0000, 0x010000, CRC(bed4b3bb) SHA1(7c592fbc6541c03777ff0498db90c575b3193222), "Barcrest","Hyper Viper (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4suphv, m4hypvip, "hyperviper.bin", 0x0000, 0x010000, CRC(8373f6a3) SHA1(79bff20ab80ffe11447595c6fe8e5ab90d432e17), "Barcrest","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, set 2)" ) // hack? // "(C)1991 BARCREST" and "H6Y 0.3" (but hack, doesn't want usual characterizer) GAME_CUSTOM( 199?, m4hypvip__k, m4hypvip, "hv20_101", 0x0000, 0x010000, CRC(b2ab79c9) SHA1(fd097b5b062d725fa0607117d6b52be6cbf7e597), "hack","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 1)" ) GAME_CUSTOM( 199?, m4hypvip__s, m4hypvip, "hvip_20_.8", 0x0000, 0x010000, CRC(61a608c7) SHA1(1ed98c8bd90a3a789ba00b6b39f49e3aa0fcb1ca), "hack","Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 2)" ) @@ -3984,11 +3987,28 @@ GAME_CUSTOM( 199?, m4hypvip__v, m4hypvip, "hypv_20_.4", 0x0000, 0 // "(C)1991 BARCREST" and "H6Y 0.2" GAME_CUSTOM( 199?, m4hypvip__n, m4hypvip, "hvypr206", 0x0000, 0x010000, CRC(e1d96b8c) SHA1(e21b1bdbca1bae41f0e7274e3521f99eb984759e), "Barcrest","Hyper Viper (Barcrest) (MPU4) (H6Y 0.2 Y)" ) // "(C)1993 B.W.B." and "HVP 3.0" -GAME_CUSTOM( 199?, m4hypvip__l, m4hypvip, "hvyp10p", 0x0000, 0x010000, CRC(b4af635a) SHA1(420cdf3a6899e432d74e3b10a57414cbedc0913e), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0)" ) +GAME_CUSTOM( 199?, m4hypvip__l, m4hypvip, "hvyp10p", 0x0000, 0x010000, CRC(b4af635a) SHA1(420cdf3a6899e432d74e3b10a57414cbedc0913e), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 1)" ) +GAME_CUSTOM( 199?, m4suphv__a, m4hypvip, "hv_05___.3h3", 0x0000, 0x010000, CRC(13bfa891) SHA1(ffddd14a019d52029bf8d4f680d8d05413a9f0b7), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 2)" ) +GAME_CUSTOM( 199?, m4suphv__d, m4hypvip, "hv_05_d_.3h3", 0x0000, 0x010000, CRC(50c66ce8) SHA1(ef12525fc3ac82caf80326edaac81bb9fbc3245c), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 3)" ) +GAME_CUSTOM( 199?, m4suphv__g, m4hypvip, "hv_10___.3h3", 0x0000, 0x010000, CRC(627caac7) SHA1(4851ce2441850743ea68ecbf89bde3f4cd6c2b4c), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 4)" ) +GAME_CUSTOM( 199?, m4suphv__i, m4hypvip, "hv_10_d_.3h3", 0x0000, 0x010000, CRC(15cfa26e) SHA1(6bc3feaba65d1797b9945f23a89e983f56b13f79), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 5)" ) +GAME_CUSTOM( 199?, m4suphv__j, m4hypvip, "hv_10_d_.3n3", 0x0000, 0x010000, CRC(b81f1d0a) SHA1(5fd293be2b75393069c9f5e099b4700ff930f081), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 6)" ) +GAME_CUSTOM( 199?, m4suphv__l, m4hypvip, "hvi05___.3h3", 0x0000, 0x010000, CRC(6959332e) SHA1(edaa5f86ad4389b0a3bc2e6679fe8f62520be3ae), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 7)" ) +GAME_CUSTOM( 199?, m4suphv__o, m4hypvip, "hvi10___.3h3", 0x0000, 0x010000, CRC(6c1b4b89) SHA1(e8eb4e689d43c5b9e8354aa7375ca3ba12ed1160), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 8)" ) +GAME_CUSTOM( 199?, m4suphv__p, m4hypvip, "hvi10___.3n3", 0x0000, 0x010000, CRC(9d95cf8c) SHA1(26daf3975e1e3a605bc4392700c5470b52450d6e), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 9)" ) +// "(C)1993 B.W.B." and "HVP 4.0" +GAME_CUSTOM( 199?, m4suphv__c, m4hypvip, "hv_05___.4n3", 0x0000, 0x010000, CRC(f607f351) SHA1(d7b779b80fa964a27b106bd9d5ca3be16a11d5e9), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 1)" ) +GAME_CUSTOM( 199?, m4suphv__f, m4hypvip, "hv_05_d_.4n3", 0x0000, 0x010000, CRC(f4d702d7) SHA1(268c7f6443c7ae587caf5b227fcd438530a06bcc), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 2)" ) +GAME_CUSTOM( 199?, m4suphv__n, m4hypvip, "hvi05___.4n3", 0x0000, 0x010000, CRC(38a33c2b) SHA1(21004092b81e08146291fd3a025652f0edbe47dc), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 3)" ) // "(C)1994 B.W.B." and "HVP 3.0" -GAME_CUSTOM( 199?, m4hypvip__a, m4hypvip, "h.viper10p610m.bin", 0x0000, 0x010000, CRC(104b0c48) SHA1(ab4cdb596a0cfb877ed1b6bf801e4a759b53971f), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C)" ) -GAME_CUSTOM( 199?, m4hypvip__m, m4hypvip, "hvyp56c", 0x0000, 0x010000, CRC(297d3cf8) SHA1(78f4de2ed69fb38b944a54d4d5927ff791e7876c), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, bad?)" ) // bad rom? checksum alarm -// "(C)1995 B.W.B." and "HVC 1.0" +GAME_CUSTOM( 199?, m4hypvip__a, m4hypvip, "h.viper10p610m.bin", 0x0000, 0x010000, CRC(104b0c48) SHA1(ab4cdb596a0cfb877ed1b6bf801e4a759b53971f), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, C)" ) +GAME_CUSTOM( 199?, m4hypvip__m, m4hypvip, "hvyp56c", 0x0000, 0x010000, CRC(297d3cf8) SHA1(78f4de2ed69fb38b944a54d4d5927ff791e7876c), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, C, bad?)" ) // bad rom? checksum alarm +GAME_CUSTOM( 199?, m4suphv__b, m4hypvip, "hv_05___.3o3", 0x0000, 0x010000, CRC(9ae86366) SHA1(614ae0ab184645c9f568796783f29a177eda3208), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 1)" ) +GAME_CUSTOM( 199?, m4suphv__e, m4hypvip, "hv_05_d_.3o3", 0x0000, 0x010000, CRC(87dfca0e) SHA1(3ab4105680acc46d3633a722f40ff1af0a520a7f), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 2)" ) +GAME_CUSTOM( 199?, m4suphv__h, m4hypvip, "hv_10___.3o3", 0x0000, 0x010000, CRC(02e4d86a) SHA1(47aa83e8bcd85e8ba7fb972cdd1ead7fe21e0418), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 3)" ) +GAME_CUSTOM( 199?, m4suphv__k, m4hypvip, "hv_10_d_.3o3", 0x0000, 0x010000, CRC(85f176b9) SHA1(30380d58bf2834829764cbdbdc7d950632e61e6d), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 4)" ) +GAME_CUSTOM( 199?, m4suphv__m, m4hypvip, "hvi05___.3o3", 0x0000, 0x010000, CRC(cdba80a5) SHA1(6c9fac7e5ee324b18922cc7a053495f1977bcb6d), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 5)" ) + // "(C)1995 B.W.B." and "HVC 1.0" GAME_CUSTOM( 199?, m4hypvip__b, m4hypvip, "5p4hypervyper.bin", 0x0000, 0x010000, CRC(51ac9288) SHA1(1580079b6e710506ab03e1d8a89af65cd06cedd2), "Bwb","Hyper Viper (Barcrest) (MPU4) (HVC 1.0 C)" ) // no copyright string and "HVP 3.0" GAME_CUSTOM( 199?, m4hypvip__g, m4hypvip, "hv056c", 0x0000, 0x010000, CRC(91dcef99) SHA1(8fb6245fa8731b58799c0d2edc0e6c6942984a6f), "hack","Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 1)" ) @@ -4151,7 +4171,15 @@ GAME_CUSTOM( 199?, m4bagtel__ag, m4bagtel, "el310y.p1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4przwta, 0, "pwnr.p1", 0x0000, 0x020000, CRC(cf619ad2) SHA1(3eeccccb304afd5faf2563e0e65f8123e463d363), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "PWN 0.4" +GAME_CUSTOM( 199?, m4przwta, 0, "pwns.p1", 0x0000, 0x020000, CRC(b3b87954) SHA1(f998ebf8047930f006213040ed5e6a9f90844143), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (PWN 0.4)" ) +GAME_CUSTOM( 199?, m4przwta__p, m4przwta, "pwnr.p1", 0x0000, 0x020000, CRC(cf619ad2) SHA1(3eeccccb304afd5faf2563e0e65f8123e463d363), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4przwta__l, m4przwta, "pwna.p1", 0x0000, 0x020000, CRC(bbb32770) SHA1(36815dca6550a1a417b3e809b041a7b4670f5b75), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4przwta__m, m4przwta, "pwnb.p1", 0x0000, 0x020000, CRC(36a989b5) SHA1(631399c65b697417ed9a95961463b8349a97b142), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4przwta__n, m4przwta, "pwndy.p1", 0x0000, 0x020000, CRC(6b739a41) SHA1(64f4b380c725f6159c6201147ab4062d6375d98b), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4przwta__o, m4przwta, "pwnk.p1", 0x0000, 0x020000, CRC(7c6e21e3) SHA1(d6aeb5948e0800050193575a3b5c06c11f46eed8), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 16)" ) +// "(C)1993 BARCREST" and "PW8 0.2" +GAME_CUSTOM( 199?, m4przwta__j, m4przwta, "pw8s.p1", 0x0000, 0x020000, CRC(3d77c91d) SHA1(3ab79073f5d9c13f751892aa33c2668521887bf8), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2)" ) GAME_CUSTOM( 199?, m4przwta__a, m4przwta, "pw8ad.p1", 0x0000, 0x020000, CRC(71257e43) SHA1(1db17aa1fc684873511a46e5e7421b459040d0cc), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przwta__b, m4przwta, "pw8b.p1", 0x0000, 0x020000, CRC(52b2af18) SHA1(1ce00b94a2d16b5140a110e604b97af6860fd577), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przwta__c, m4przwta, "pw8bd.p1", 0x0000, 0x020000, CRC(fc3fd086) SHA1(8fa8b75faf2196e87acbafc3a48a2ba628f6cc66), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 4)" ) @@ -4161,13 +4189,7 @@ GAME_CUSTOM( 199?, m4przwta__f, m4przwta, "pw8dk.p1", 0x0000, 0x020000, CRC GAME_CUSTOM( 199?, m4przwta__g, m4przwta, "pw8dy.p1", 0x0000, 0x020000, CRC(311b582e) SHA1(f53254b8c6f65087f67d60f0d0441228e1024cc8), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4przwta__h, m4przwta, "pw8j.p1", 0x0000, 0x020000, CRC(766739cb) SHA1(8b7cd7f02fb25f5e50febdb90c8f39f3a6840a35), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4przwta__i, m4przwta, "pw8k.p1", 0x0000, 0x020000, CRC(1875074e) SHA1(fb25c4ed4ba9d6aa5fb45a8ba9c73b18062173f0), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4przwta__j, m4przwta, "pw8s.p1", 0x0000, 0x020000, CRC(3d77c91d) SHA1(3ab79073f5d9c13f751892aa33c2668521887bf8), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4przwta__k, m4przwta, "pw8y.p1", 0x0000, 0x020000, CRC(9f9627b0) SHA1(19c9dc7033b1e85676222a8b3a866392a4afdd1e), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4przwta__l, m4przwta, "pwna.p1", 0x0000, 0x020000, CRC(bbb32770) SHA1(36815dca6550a1a417b3e809b041a7b4670f5b75), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4przwta__m, m4przwta, "pwnb.p1", 0x0000, 0x020000, CRC(36a989b5) SHA1(631399c65b697417ed9a95961463b8349a97b142), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4przwta__n, m4przwta, "pwndy.p1", 0x0000, 0x020000, CRC(6b739a41) SHA1(64f4b380c725f6159c6201147ab4062d6375d98b), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4przwta__o, m4przwta, "pwnk.p1", 0x0000, 0x020000, CRC(7c6e21e3) SHA1(d6aeb5948e0800050193575a3b5c06c11f46eed8), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4przwta__p, m4przwta, "pwns.p1", 0x0000, 0x020000, CRC(b3b87954) SHA1(f998ebf8047930f006213040ed5e6a9f90844143), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (set 17)" ) #define M4BERSER_EXTRA_ROMS \ @@ -4182,8 +4204,17 @@ GAME_CUSTOM( 199?, m4przwta__p, m4przwta, "pwns.p1", 0x0000, 0x020000, CRC ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4berser, 0, "bess.p1", 0x0000, 0x010000, CRC(b95bafbe) SHA1(034c80ef5fd0a12fad918c9b01bafb9a99c2e991), "Barcrest","Berserk (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "BES 0.6" +GAME_CUSTOM( 199?, m4berser, 0, "bess.p1", 0x0000, 0x010000, CRC(b95bafbe) SHA1(034c80ef5fd0a12fad918c9b01bafb9a99c2e991), "Barcrest","Berserk (Barcrest) (MPU4) (BES 0.6)" ) +GAME_CUSTOM( 199?, m4berser__u, m4berser, "besb.p1", 0x0000, 0x010000, CRC(a0aa05f9) SHA1(3831c07e9e33c83b2f7148a34037023433b49cd0), "Barcrest","Berserk (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4berser__v, m4berser, "besc.p1", 0x0000, 0x010000, CRC(3a7ea673) SHA1(469e104ca1008c274f2a58c3ec6e96b40e1b4fb6), "Barcrest","Berserk (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4berser__w, m4berser, "besd.p1", 0x0000, 0x010000, CRC(ac7daf9c) SHA1(9951cf3194bc5acc17044dfb4b854edb0cc2c090), "Barcrest","Berserk (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4berser__x, m4berser, "besdk.p1", 0x0000, 0x010000, CRC(f9d20012) SHA1(d3942406af0573a58e49a24f98b4e3c0a9ff508e), "Barcrest","Berserk (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4berser__y, m4berser, "besdy.p1", 0x0000, 0x010000, CRC(461ac51f) SHA1(217f169bd2bc4108145231e9b974d2f890a4f25e), "Barcrest","Berserk (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4berser__z, m4berser, "besk.p1", 0x0000, 0x010000, CRC(03eb2a05) SHA1(375f47bd1d0f21fde5ea0fcf7b79c02db9f8c9c6), "Barcrest","Berserk (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4berser__0, m4berser, "besy.p1", 0x0000, 0x010000, CRC(64a49f88) SHA1(6bd1275e9172e311ead36566432729530c1b6c21), "Barcrest","Berserk (Barcrest) (MPU4) (set 28)" ) +// "(C)1991 BARCREST" and "BE3 0.1" +GAME_CUSTOM( 199?, m4berser__h, m4berser, "be3s.p1", 0x0000, 0x010000, CRC(1a66772e) SHA1(e604315cea3db5f3859f1756e84b37b805f1f995), "Barcrest","Berserk (Barcrest) (MPU4) (BE3 0.1)" ) GAME_CUSTOM( 199?, m4berser__a, m4berser, "be3ad.p1", 0x0000, 0x010000, CRC(db4d77e9) SHA1(80e9ecf0a5d213e23fe8d328fbe8af52d49e2897), "Barcrest","Berserk (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4berser__b, m4berser, "be3b.p1", 0x0000, 0x010000, CRC(b25e9adb) SHA1(cc72c7a02868d56371f6d1bbaf78a017147b1a5a), "Barcrest","Berserk (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4berser__c, m4berser, "be3bd.p1", 0x0000, 0x010000, CRC(ed511aa3) SHA1(e6efe14490fa62ec9e5565e92216e371ab98b78a), "Barcrest","Berserk (Barcrest) (MPU4) (set 4)" ) @@ -4191,8 +4222,9 @@ GAME_CUSTOM( 199?, m4berser__d, m4berser, "be3d.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4berser__e, m4berser, "be3dk.p1", 0x0000, 0x010000, CRC(82b4513e) SHA1(a36eebef35dbc2fbc25d39fde811e180a3682b67), "Barcrest","Berserk (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4berser__f, m4berser, "be3dy.p1", 0x0000, 0x010000, CRC(6f2869f2) SHA1(b006f467463038b5987764f9eedec1d7357ade65), "Barcrest","Berserk (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4berser__g, m4berser, "be3k.p1", 0x0000, 0x010000, CRC(12b3954a) SHA1(cce68a720a0bb1ce64cbf6ab2902a712403516cd), "Barcrest","Berserk (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4berser__h, m4berser, "be3s.p1", 0x0000, 0x010000, CRC(1a66772e) SHA1(e604315cea3db5f3859f1756e84b37b805f1f995), "Barcrest","Berserk (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4berser__i, m4berser, "be3y.p1", 0x0000, 0x010000, CRC(5c6451ca) SHA1(b63b9289fdef3be6add1e1ee22f9e316f296cc97), "Barcrest","Berserk (Barcrest) (MPU4) (set 10)" ) +// "(C)1991 BARCREST" and "BE8 0.1" +GAME_CUSTOM( 199?, m4berser__s, m4berser, "be8s.p1", 0x0000, 0x010000, CRC(12d0fb4f) SHA1(103a468a0712dfc44b140cad01cd49b6f159b621), "Barcrest","Berserk (Barcrest) (MPU4) (BE8 0.1)" ) GAME_CUSTOM( 199?, m4berser__j, m4berser, "be8ad.p1", 0x0000, 0x010000, CRC(0c196fd2) SHA1(830917f4c9bb7df35ac7d1e4fdcbb3eaac65ec5f), "Barcrest","Berserk (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4berser__k, m4berser, "be8b.p1", 0x0000, 0x010000, CRC(8f25875d) SHA1(e53ca0322838891274e0c5c61882a6690df3f1a0), "Barcrest","Berserk (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4berser__l, m4berser, "be8bcd.p1", 0x0000, 0x010000, CRC(40d40ecd) SHA1(a728a2ea63dc7d520e2f189e18b4884fb5f292bc), "Barcrest","Berserk (Barcrest) (MPU4) (set 13)" ) @@ -4202,16 +4234,9 @@ GAME_CUSTOM( 199?, m4berser__o, m4berser, "be8d.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4berser__p, m4berser, "be8dk.p1", 0x0000, 0x010000, CRC(39a3f145) SHA1(00242636e7519e37ed4f5e65ecf41c315c2607ad), "Barcrest","Berserk (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4berser__q, m4berser, "be8dy.p1", 0x0000, 0x010000, CRC(5f885b13) SHA1(c398bb40fbac39530ba7b96bf4a4fde575c9fa87), "Barcrest","Berserk (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4berser__r, m4berser, "be8k.p1", 0x0000, 0x010000, CRC(b66051b6) SHA1(910bd0a4112a81df0160efd86bed1a8a59b2acb8), "Barcrest","Berserk (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4berser__s, m4berser, "be8s.p1", 0x0000, 0x010000, CRC(12d0fb4f) SHA1(103a468a0712dfc44b140cad01cd49b6f159b621), "Barcrest","Berserk (Barcrest) (MPU4) (set 20)" ) GAME_CUSTOM( 199?, m4berser__t, m4berser, "be8y.p1", 0x0000, 0x010000, CRC(80d73997) SHA1(99e76616e9a73f111bdd560f2691b99905e4e454), "Barcrest","Berserk (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4berser__u, m4berser, "besb.p1", 0x0000, 0x010000, CRC(a0aa05f9) SHA1(3831c07e9e33c83b2f7148a34037023433b49cd0), "Barcrest","Berserk (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4berser__v, m4berser, "besc.p1", 0x0000, 0x010000, CRC(3a7ea673) SHA1(469e104ca1008c274f2a58c3ec6e96b40e1b4fb6), "Barcrest","Berserk (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4berser__w, m4berser, "besd.p1", 0x0000, 0x010000, CRC(ac7daf9c) SHA1(9951cf3194bc5acc17044dfb4b854edb0cc2c090), "Barcrest","Berserk (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4berser__x, m4berser, "besdk.p1", 0x0000, 0x010000, CRC(f9d20012) SHA1(d3942406af0573a58e49a24f98b4e3c0a9ff508e), "Barcrest","Berserk (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4berser__y, m4berser, "besdy.p1", 0x0000, 0x010000, CRC(461ac51f) SHA1(217f169bd2bc4108145231e9b974d2f890a4f25e), "Barcrest","Berserk (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4berser__z, m4berser, "besk.p1", 0x0000, 0x010000, CRC(03eb2a05) SHA1(375f47bd1d0f21fde5ea0fcf7b79c02db9f8c9c6), "Barcrest","Berserk (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4berser__0, m4berser, "besy.p1", 0x0000, 0x010000, CRC(64a49f88) SHA1(6bd1275e9172e311ead36566432729530c1b6c21), "Barcrest","Berserk (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4berser__1, m4berser, "be_05a_4.1_1", 0x0000, 0x010000, CRC(e4ec1624) SHA1(e6241edb729796dd248abca6bf67281379c39af2), "Barcrest","Berserk (Barcrest) (MPU4) (set 29)" ) +// "(C)1996 B.W.B." and "BE4 1.1" +GAME_CUSTOM( 199?, m4berser__1, m4berser, "be_05a_4.1_1", 0x0000, 0x010000, CRC(e4ec1624) SHA1(e6241edb729796dd248abca6bf67281379c39af2), "Bwb","Berserk (Barcrest) (MPU4) (BE4 1.1 KS)" ) @@ -4227,7 +4252,8 @@ GAME_CUSTOM( 199?, m4berser__1, m4berser, "be_05a_4.1_1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4vivess, 0, "se8s.p1", 0x0000, 0x010000, CRC(d5c261de) SHA1(5f70944ffe03109ad16f162370fd3653d131034d), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "SE8 0.1" +GAME_CUSTOM( 199?, m4vivess, 0, "se8s.p1", 0x0000, 0x010000, CRC(d5c261de) SHA1(5f70944ffe03109ad16f162370fd3653d131034d), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1)" ) GAME_CUSTOM( 199?, m4vivess__a, m4vivess, "se8ad.p1", 0x0000, 0x010000, CRC(4f799dfe) SHA1(e85108ab0aad92a64eabf5c7562068caf22f8d5b), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4vivess__b, m4vivess, "se8b.p1", 0x0000, 0x010000, CRC(876efabb) SHA1(6ca1d37416b5401ba10977dad6a5881bdc7246ed), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4vivess__c, m4vivess, "se8bd.p1", 0x0000, 0x010000, CRC(39fe1c08) SHA1(99a04561555c819fc2954897e7831cf2c38db702), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 4)" ) @@ -4236,11 +4262,12 @@ GAME_CUSTOM( 199?, m4vivess__f, m4vivess, "se8dk.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4vivess__g, m4vivess, "se8dy.p1", 0x0000, 0x010000, CRC(36dcf85f) SHA1(e635501e6ba7dc4e56f1e00b472b32c030aa6592), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4vivess__i, m4vivess, "se8k.p1", 0x0000, 0x010000, CRC(befb76cd) SHA1(f60e17538acd6f5b20e786f8a51a0471ee3246c8), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4vivess__j, m4vivess, "se8y.p1", 0x0000, 0x010000, CRC(8be03e81) SHA1(f51024036f56b2009905e9c08bb292f2a280c0f6), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 9)" ) +// "(C)1993 BARCREST" and "SES 0.2" +GAME_CUSTOM( 199?, m4vivess__o, m4vivess, "sess.p1", 0x0000, 0x010000, CRC(0e8d5c05) SHA1(bf05e4e83d6d4fb7c471e8ca22df21b357d8ed9b), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (SES 0.2)" ) GAME_CUSTOM( 199?, m4vivess__k, m4vivess, "sesb.p1", 0x0000, 0x010000, CRC(0e3dc285) SHA1(53cf28228192b6e83d0ff95c8de2fb978720d363), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4vivess__l, m4vivess, "sesd.p1", 0x0000, 0x010000, CRC(549aaf0b) SHA1(084aca4429e27ce2642991aae8738d85c0157e54), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4vivess__m, m4vivess, "sesdy.p1", 0x0000, 0x010000, CRC(1869edd8) SHA1(b76dfa439eef641817a9bdf9c737cb06ac54efea), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4vivess__n, m4vivess, "sesk.p1", 0x0000, 0x010000, CRC(ebdb5ec4) SHA1(f7ec6e8c0142a0885fda066f379e7bd22f5844e5), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4vivess__o, m4vivess, "sess.p1", 0x0000, 0x010000, CRC(0e8d5c05) SHA1(bf05e4e83d6d4fb7c471e8ca22df21b357d8ed9b), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 14)" ) GAME_CUSTOM( 199?, m4vivess__p, m4vivess, "sesy.p1", 0x0000, 0x010000, CRC(126472e9) SHA1(3bebd273debbc9b71fce83cdc1031927698f7775), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (set 15)" ) @@ -4257,8 +4284,8 @@ GAME_CUSTOM( 199?, m4vivess__p, m4vivess, "sesy.p1", 0x0000, 0x010000, CRC ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4ttdia, 0, "tda04s.p1", 0x0000, 0x020000, CRC(1240642e) SHA1(7eaf02d5c00707a0a6d98d247c293cad1ca87108), "Barcrest","Ten Ten Do It Again (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "TDA 0.4" +GAME_CUSTOM( 199?, m4ttdia, 0, "tda04s.p1", 0x0000, 0x020000, CRC(1240642e) SHA1(7eaf02d5c00707a0a6d98d247c293cad1ca87108), "Barcrest","Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4)" ) GAME_CUSTOM( 199?, m4ttdia__a, m4ttdia, "tda04ad.p1", 0x0000, 0x020000, CRC(79d804ba) SHA1(0616a2718aea85692ce5c5086f18e54a531efb19), "Barcrest","Ten Ten Do It Again (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4ttdia__b, m4ttdia, "tda04b.p1", 0x0000, 0x020000, CRC(dc755e6a) SHA1(386a1baf7d86d73dff1d6034f60094a55255d6bc), "Barcrest","Ten Ten Do It Again (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4ttdia__c, m4ttdia, "tda04bd.p1", 0x0000, 0x020000, CRC(f4c2aa7f) SHA1(aae114e9ab813809a8f8e2e12773a9f6379f535d), "Barcrest","Ten Ten Do It Again (Barcrest) (MPU4) (set 4)" ) @@ -4288,7 +4315,15 @@ GAME_CUSTOM( 199?, m4ttdia__m, m4ttdia, "tda04y.p1", 0x0000, 0x020000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4przve, 0, "pess.p1", 0x0000, 0x010000, CRC(d8e79833) SHA1(f68fd1bd057a353832c7de3e2818906ab2b844b7), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "PES 0.4" +GAME_CUSTOM( 199?, m4przve, 0, "pess.p1", 0x0000, 0x010000, CRC(d8e79833) SHA1(f68fd1bd057a353832c7de3e2818906ab2b844b7), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PES 0.4)" ) +GAME_CUSTOM( 199?, m4przve__l, m4przve, "pesb.p1", 0x0000, 0x010000, CRC(bf0ffed9) SHA1(ab8cd98ae7dfb3582aad7ae8c669a6d97f144f88), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4przve__m, m4przve, "pesd.p1", 0x0000, 0x010000, CRC(6f7b1e16) SHA1(412a22ebb61b77541da067ba74621c8e54364471), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4przve__n, m4przve, "pesdy.p1", 0x0000, 0x010000, CRC(94db27b4) SHA1(fe745a991a5e78fc9054480d3ce5bf6b7f5f9fe4), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4przve__o, m4przve, "pesk.p1", 0x0000, 0x010000, CRC(9e7b9f58) SHA1(86c2a83964f925448dda189546d9909b10e52673), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4przve__p, m4przve, "pesy.p1", 0x0000, 0x010000, CRC(fbfc1563) SHA1(870239cab39eff33303fe06dfd1dd3db708f0f2d), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 17)" ) +// "(C)1993 BARCREST" and "PE8 0.1" +GAME_CUSTOM( 199?, m4przve__j, m4przve, "pe8s.p1", 0x0000, 0x010000, CRC(e8463e69) SHA1(923d6c79470a65cf66b089ef09898acea928aa9b), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (PE8 0.1)" ) GAME_CUSTOM( 199?, m4przve__a, m4przve, "pe8ad.p1", 0x0000, 0x010000, CRC(3a81422e) SHA1(bb77365ed7bc7c2cd9e1cfe6e266c6edfd3562a3), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przve__b, m4przve, "pe8b.p1", 0x0000, 0x010000, CRC(9f36b112) SHA1(265451557afcfdc1aa8e77616f4b871698b20c5f), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przve__c, m4przve, "pe8bd.p1", 0x0000, 0x010000, CRC(af0689b5) SHA1(0e3cf464c855b0dcfeac403bda80818287707abe), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 4)" ) @@ -4298,13 +4333,7 @@ GAME_CUSTOM( 199?, m4przve__f, m4przve, "pe8dk.p1", 0x0000, 0x010000, CRC(fc GAME_CUSTOM( 199?, m4przve__g, m4przve, "pe8dy.p1", 0x0000, 0x010000, CRC(6abc5682) SHA1(ae8754f0e214738adae4bc856cd72b0920aaa67a), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4przve__h, m4przve, "pe8j.p1", 0x0000, 0x010000, CRC(d3bf07f1) SHA1(3e539f24ef25c8d6fbfbdcd469fa8a2908dd2ec2), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4przve__i, m4przve, "pe8k.p1", 0x0000, 0x010000, CRC(efba0d3f) SHA1(2205b94f5a6ed23e834cfeb0d3ebe5ed66d942a1), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4przve__j, m4przve, "pe8s.p1", 0x0000, 0x010000, CRC(e8463e69) SHA1(923d6c79470a65cf66b089ef09898acea928aa9b), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4przve__k, m4przve, "pe8y.p1", 0x0000, 0x010000, CRC(c324b75f) SHA1(bf3409a193539e1e032c856a5316bec674043d57), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4przve__l, m4przve, "pesb.p1", 0x0000, 0x010000, CRC(bf0ffed9) SHA1(ab8cd98ae7dfb3582aad7ae8c669a6d97f144f88), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4przve__m, m4przve, "pesd.p1", 0x0000, 0x010000, CRC(6f7b1e16) SHA1(412a22ebb61b77541da067ba74621c8e54364471), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4przve__n, m4przve, "pesdy.p1", 0x0000, 0x010000, CRC(94db27b4) SHA1(fe745a991a5e78fc9054480d3ce5bf6b7f5f9fe4), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4przve__o, m4przve, "pesk.p1", 0x0000, 0x010000, CRC(9e7b9f58) SHA1(86c2a83964f925448dda189546d9909b10e52673), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4przve__p, m4przve, "pesy.p1", 0x0000, 0x010000, CRC(fbfc1563) SHA1(870239cab39eff33303fe06dfd1dd3db708f0f2d), "Barcrest","Prize Viva Esapana (Barcrest) (MPU4) (set 17)" ) #define M4SHOCM_EXTRA_ROMS \ @@ -4319,7 +4348,8 @@ GAME_CUSTOM( 199?, m4przve__p, m4przve, "pesy.p1", 0x0000, 0x010000, CRC(fb ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4shocm, 0, "scms.p1", 0x0000, 0x020000, CRC(8cb17f49) SHA1(6c67d5d65567ba3677f51f9c636e1f8e253111de), "Barcrest","Showcase Crystal Maze (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "SCM 0.1" +GAME_CUSTOM( 199?, m4shocm, 0, "scms.p1", 0x0000, 0x020000, CRC(8cb17f49) SHA1(6c67d5d65567ba3677f51f9c636e1f8e253111de), "Barcrest","Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1)" ) GAME_CUSTOM( 199?, m4shocm__a, m4shocm, "scmad.p1", 0x0000, 0x020000, CRC(0960b887) SHA1(02b029760d141664a7c5860a29b158d8c2dec4e7), "Barcrest","Showcase Crystal Maze (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4shocm__b, m4shocm, "scmb.p1", 0x0000, 0x020000, CRC(c96e88cd) SHA1(61abff544c979efabf5e53d2c53d7cbe90c1f265), "Barcrest","Showcase Crystal Maze (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4shocm__c, m4shocm, "scmbd.p1", 0x0000, 0x020000, CRC(847a1642) SHA1(0bb6d2494888c5e45bf4bfd0f6ba123283346361), "Barcrest","Showcase Crystal Maze (Barcrest) (MPU4) (set 4)" ) @@ -4345,7 +4375,9 @@ GAME_CUSTOM( 199?, m4shocm__j, m4shocm, "scmk.p1", 0x0000, 0x020000, CRC(83 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4actbnk, 0, "acts.p1", 0x0000, 0x010000, CRC(49a9007c) SHA1(b205270e53264c3d8cb009a5780cacba1ce2e2a8), "Barcrest","Action Bank (Barcrest) (MPU4) (set 1)" ) +// these require a jackpot key to be inserted +// "(C)1993 BARCREST" and "ACT 0.7" +GAME_CUSTOM( 199?, m4actbnk, 0, "acts.p1", 0x0000, 0x010000, CRC(49a9007c) SHA1(b205270e53264c3d8cb009a5780cacba1ce2e2a8), "Barcrest","Action Bank (Barcrest) (MPU4) (ACT 0.7)" ) GAME_CUSTOM( 199?, m4actbnk__a, m4actbnk, "actb.p1", 0x0000, 0x010000, CRC(1429708e) SHA1(8b3ecb443e5920ccec80695a142cb1eb9596b1c1), "Barcrest","Action Bank (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4actbnk__b, m4actbnk, "actbd.p1", 0x0000, 0x010000, CRC(727d7bb6) SHA1(765a9944ee27b175ba1f45bf82dcf7ef0defd076), "Barcrest","Action Bank (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4actbnk__c, m4actbnk, "actc.p1", 0x0000, 0x010000, CRC(0a2498e5) SHA1(97f1e35426156c8eece6f76f3ecffa85714ade5b), "Barcrest","Action Bank (Barcrest) (MPU4) (set 4)" ) @@ -4372,7 +4404,9 @@ GAME_CUSTOM( 199?, m4actbnk__i, m4actbnk, "actad.p1", 0x0000, 0x010000, CRC ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4crdome, 0, "cd212k.p1", 0x0000, 0x020000, CRC(673b10a1) SHA1(996ade8193f448970beea2c5b81d9f27c05f162f), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "CD2 1.2" +GAME_CUSTOM( 199?, m4crdome, 0, "cd212s.p1", 0x0000, 0x020000, CRC(f7d9d5e3) SHA1(1378e28c0a2c59a42a440502f20cc011625f43b5), "Barcrest","Crystal Dome (Barcrest) (MPU4) (CD2 1.2)" ) +GAME_CUSTOM( 199?, m4crdome__j, m4crdome, "cd212k.p1", 0x0000, 0x020000, CRC(673b10a1) SHA1(996ade8193f448970beea2c5b81d9f27c05f162f), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4crdome__a, m4crdome, "cd212c.p1", 0x0000, 0x020000, CRC(1ab605e5) SHA1(03327b2fac9d3d2891dc5950aa89ac4947c7b444), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4crdome__b, m4crdome, "cd212ad.p1", 0x0000, 0x020000, CRC(c76cab39) SHA1(abbe5d629929ff89b499cd4d0e15e9fa13fc33de), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4crdome__c, m4crdome, "cd212b.p1", 0x0000, 0x020000, CRC(2dfcb8f7) SHA1(ba711fb20556c447f4bb3a11fc1cc6a3599bfd6d), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 4)" ) @@ -4382,11 +4416,13 @@ GAME_CUSTOM( 199?, m4crdome__f, m4crdome, "cd212dk.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4crdome__g, m4crdome, "cd212dr.p1", 0x0000, 0x020000, CRC(b3be169b) SHA1(eb4699fdce371d94feec410c640bd49bfdccba98), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4crdome__h, m4crdome, "cd212dy.p1", 0x0000, 0x020000, CRC(87528d54) SHA1(974fa2c29af43c903add28dca0ea3b04f612d2f7), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4crdome__i, m4crdome, "cd212r.p1", 0x0000, 0x020000, CRC(d434ab90) SHA1(d42258bd965e8a028a418681a1307234c9b1c450), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4crdome__j, m4crdome, "cd212s.p1", 0x0000, 0x020000, CRC(f7d9d5e3) SHA1(1378e28c0a2c59a42a440502f20cc011625f43b5), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4crdome__k, m4crdome, "cd212y.p1", 0x0000, 0x020000, CRC(e0d8305f) SHA1(ddf1125eba0e470f6ae811fe050d4000300cfd0c), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4crdome__l, m4crdome, "cdom15r", 0x0000, 0x020000, CRC(28f9ee8e) SHA1(e3484933dd0b8ddc2eeefc4dc95ce5379565e750), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4crdome__m, m4crdome, "cdome10", 0x0000, 0x020000, CRC(945c9277) SHA1(6afee54b332152f6767781a040799d865999b292), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4crdome__n, m4crdome, "cdome8ac", 0x0000, 0x020000, CRC(0553bfe6) SHA1(77abfa556f04dca1be52fbed357807e6ada10458), "Barcrest","Crystal Dome (Barcrest) (MPU4) (set 15)" ) +// "(C)1993 BARCREST" and "CD2 1.0" +GAME_CUSTOM( 199?, m4crdome__m, m4crdome, "cdome10", 0x0000, 0x020000, CRC(945c9277) SHA1(6afee54b332152f6767781a040799d865999b292), "Barcrest","Crystal Dome (Barcrest) (MPU4) (CD2 1.0 C)" ) +// "(C)1993 BARCREST" and "CD2 0.2" +GAME_CUSTOM( 199?, m4crdome__n, m4crdome, "cdome8ac", 0x0000, 0x020000, CRC(0553bfe6) SHA1(77abfa556f04dca1be52fbed357807e6ada10458), "Barcrest","Crystal Dome (Barcrest) (MPU4) (CD2 0.2 C)" ) +// no copyright string and "CD2 1.2" +GAME_CUSTOM( 199?, m4crdome__l, m4crdome, "cdom15r", 0x0000, 0x020000, CRC(28f9ee8e) SHA1(e3484933dd0b8ddc2eeefc4dc95ce5379565e750), "hack","Crystal Dome (Barcrest) (MPU4) (CD2 1.2, hack)" ) #define M4ROCKMN_EXTRA_ROMS \ @@ -4406,8 +4442,9 @@ GAME_CUSTOM( 199?, m4crdome__n, m4crdome, "cdome8ac", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4rockmn, 0, "rok06c.p1", 0x0000, 0x020000, CRC(8e3a628f) SHA1(3bedb095af710f0b6376a5d99c072f7b3d3de0af), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "ROK 0.6" +GAME_CUSTOM( 199?, m4rockmn, 0, "rok06s.p1", 0x0000, 0x020000, CRC(e8b89551) SHA1(753828fd8631588c7725ee4f013f3c78d23f7038), "Barcrest","Rocket Money (Barcrest) (MPU4) (ROK 0.6)" ) +GAME_CUSTOM( 199?, m4rockmn__j, m4rockmn, "rok06c.p1", 0x0000, 0x020000, CRC(8e3a628f) SHA1(3bedb095af710f0b6376a5d99c072f7b3d3de0af), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4rockmn__a, m4rockmn, "rok06ad.p1", 0x0000, 0x020000, CRC(9daa1e35) SHA1(11e7a503c289813cc2ea4507bf5255957e92bc12), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4rockmn__b, m4rockmn, "rok06b.p1", 0x0000, 0x020000, CRC(b970df9d) SHA1(4230c3130a52502fb0a8aabf60fd33e90a7fa266), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4rockmn__c, m4rockmn, "rok06bd.p1", 0x0000, 0x020000, CRC(10b0b0f0) SHA1(a2f485e7578648aadb8ddb04ea885f4315b9ab82), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 4)" ) @@ -4417,7 +4454,6 @@ GAME_CUSTOM( 199?, m4rockmn__f, m4rockmn, "rok06dr.p1", 0x0000, 0x020000, GAME_CUSTOM( 199?, m4rockmn__g, m4rockmn, "rok06dy.p1", 0x0000, 0x020000, CRC(dd943858) SHA1(ac8e53f72f98b217f190a9d3a9822a41b3028adb), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4rockmn__h, m4rockmn, "rok06k.p1", 0x0000, 0x020000, CRC(f3b777cb) SHA1(2d5b67c69458712c370801702a813f81640ce184), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4rockmn__i, m4rockmn, "rok06r.p1", 0x0000, 0x020000, CRC(40b8ccfa) SHA1(8868a0ca622e5331204b2431bf64e723a1a79222), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4rockmn__j, m4rockmn, "rok06s.p1", 0x0000, 0x020000, CRC(e8b89551) SHA1(753828fd8631588c7725ee4f013f3c78d23f7038), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4rockmn__k, m4rockmn, "rok06y.p1", 0x0000, 0x020000, CRC(74545735) SHA1(79ee259656fb71c24382c6670150e49a5b8bc62f), "Barcrest","Rocket Money (Barcrest) (MPU4) (set 12)" ) @@ -4436,17 +4472,9 @@ GAME_CUSTOM( 199?, m4rockmn__k, m4rockmn, "rok06y.p1", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4madhse, 0, "mh502y.p1", 0x0000, 0x010000, CRC(3ec1955a) SHA1(6939e6f5d749249825c41df8e05957450eaf1007), "Barcrest","Mad House (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4madhse__a, m4madhse, "madc.p1", 0x0000, 0x010000, CRC(96da2d58) SHA1(23686a4dc5adaac81ba173f8fa0ea5ff8ac26260), "Barcrest","Mad House (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4madhse__b, m4madhse, "mhty.p1", 0x0000, 0x010000, CRC(e86e4542) SHA1(fb1b1d319c443daa1184eac4f6b0668ff3c6a1c5), "Barcrest","Mad House (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4madhse__c, m4madhse, "mads.p1", 0x0000, 0x010000, CRC(d4ea7f14) SHA1(808c64b65542c6bfd8336feec025e947c8c904ee), "Barcrest","Mad House (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4madhse__d, m4madhse, "md8c.p1", 0x0000, 0x010000, CRC(3d9c9cf7) SHA1(3f663fe9bd61d163d58bb4c51bea59121678aa76), "Barcrest","Mad House (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4madhse__e, m4madhse, "md8d.p1", 0x0000, 0x010000, CRC(6d150df3) SHA1(e93fda497696b06ad854b3b06e2b61737cef3fc1), "Barcrest","Mad House (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4madhse__f, m4madhse, "md8dy.p1", 0x0000, 0x010000, CRC(af01407f) SHA1(46359220e34dede4cc5e8c11699d01460dd9a469), "Barcrest","Mad House (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4madhse__g, m4madhse, "md8k.p1", 0x0000, 0x010000, CRC(c713f706) SHA1(65480171d3d69a670b9ce2c566425998134ad502), "Barcrest","Mad House (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4madhse__h, m4madhse, "md8s.p1", 0x0000, 0x010000, CRC(0d8a1a3e) SHA1(4df8b1c1834bbffb4798d9ed5135b6cb29b08e73), "Barcrest","Mad House (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4madhse__i, m4madhse, "md8y.p1", 0x0000, 0x010000, CRC(15fc9590) SHA1(a01bd5cea5873c8175262f668e330b2975a03eb1), "Barcrest","Mad House (Barcrest) (MPU4) (set 10)" ) +// "(C)1993 BARCREST" and "MH5 0.2" +GAME_CUSTOM( 199?, m4madhse, 0, "mh502s.p1", 0x0000, 0x010000, CRC(063cc07b) SHA1(0b43a5cf6094bd8c99e4395f31ff073389dd56ce), "Barcrest","Mad House (Barcrest) (MPU4) (MH5 0.2)" ) +GAME_CUSTOM( 199?, m4madhse__s, m4madhse, "mh502y.p1", 0x0000, 0x010000, CRC(3ec1955a) SHA1(6939e6f5d749249825c41df8e05957450eaf1007), "Barcrest","Mad House (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4madhse__j, m4madhse, "mh502ad.p1", 0x0000, 0x010000, CRC(55714741) SHA1(287ed4c0b070537e3cf9bf3a47bdf205e34b7ea8), "Barcrest","Mad House (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4madhse__k, m4madhse, "mh502b.p1", 0x0000, 0x010000, CRC(7d6a3e3a) SHA1(5ac43616bde8079d430c7a8f78884770396cc9e9), "Barcrest","Mad House (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4madhse__l, m4madhse, "mh502bd.p1", 0x0000, 0x010000, CRC(63bd7096) SHA1(ded53d603f7d1ed65914d9483923c74424964b59), "Barcrest","Mad House (Barcrest) (MPU4) (set 13)" ) @@ -4456,7 +4484,18 @@ GAME_CUSTOM( 199?, m4madhse__o, m4madhse, "mh502dr.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4madhse__p, m4madhse, "mh502dy.p1", 0x0000, 0x010000, CRC(de670300) SHA1(32e17baed9c971e879974489ee9da375a0dbf735), "Barcrest","Mad House (Barcrest) (MPU4) (set 17)" ) GAME_CUSTOM( 199?, m4madhse__q, m4madhse, "mh502k.p1", 0x0000, 0x010000, CRC(3aa341ec) SHA1(8012ee1d3f67fbdd5682ee07ac77dbb482b027ca), "Barcrest","Mad House (Barcrest) (MPU4) (set 18)" ) GAME_CUSTOM( 199?, m4madhse__r, m4madhse, "mh502r.p1", 0x0000, 0x010000, CRC(a3aabdb4) SHA1(74e53a315b10264c23b8b00d6a4d5f99d3f204a3), "Barcrest","Mad House (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4madhse__s, m4madhse, "mh502s.p1", 0x0000, 0x010000, CRC(063cc07b) SHA1(0b43a5cf6094bd8c99e4395f31ff073389dd56ce), "Barcrest","Mad House (Barcrest) (MPU4) (set 20)" ) +// "(C)1993 BARCREST" and "MD8 0.1" +GAME_CUSTOM( 199?, m4madhse__h, m4madhse, "md8s.p1", 0x0000, 0x010000, CRC(0d8a1a3e) SHA1(4df8b1c1834bbffb4798d9ed5135b6cb29b08e73), "Barcrest","Mad House (Barcrest) (MPU4) (MD8 0.1)" ) +GAME_CUSTOM( 199?, m4madhse__d, m4madhse, "md8c.p1", 0x0000, 0x010000, CRC(3d9c9cf7) SHA1(3f663fe9bd61d163d58bb4c51bea59121678aa76), "Barcrest","Mad House (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4madhse__e, m4madhse, "md8d.p1", 0x0000, 0x010000, CRC(6d150df3) SHA1(e93fda497696b06ad854b3b06e2b61737cef3fc1), "Barcrest","Mad House (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4madhse__f, m4madhse, "md8dy.p1", 0x0000, 0x010000, CRC(af01407f) SHA1(46359220e34dede4cc5e8c11699d01460dd9a469), "Barcrest","Mad House (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4madhse__g, m4madhse, "md8k.p1", 0x0000, 0x010000, CRC(c713f706) SHA1(65480171d3d69a670b9ce2c566425998134ad502), "Barcrest","Mad House (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4madhse__i, m4madhse, "md8y.p1", 0x0000, 0x010000, CRC(15fc9590) SHA1(a01bd5cea5873c8175262f668e330b2975a03eb1), "Barcrest","Mad House (Barcrest) (MPU4) (set 10)" ) +// "(C)1993 BARCREST" and "MAD 0.5" +GAME_CUSTOM( 199?, m4madhse__c, m4madhse, "mads.p1", 0x0000, 0x010000, CRC(d4ea7f14) SHA1(808c64b65542c6bfd8336feec025e947c8c904ee), "Barcrest","Mad House (Barcrest) (MPU4) (MAD 0.5)" ) +GAME_CUSTOM( 199?, m4madhse__a, m4madhse, "madc.p1", 0x0000, 0x010000, CRC(96da2d58) SHA1(23686a4dc5adaac81ba173f8fa0ea5ff8ac26260), "Barcrest","Mad House (Barcrest) (MPU4) (set 2)" ) +// "(C)1993 BARCREST" and "MHT 0.2" +GAME_CUSTOM( 199?, m4madhse__0, m4madhse, "mhts.p1", 0x0000, 0x010000, CRC(751b4574) SHA1(a04820f48e0df936813ca984c77da08d703e6474), "Barcrest","Mad House (Barcrest) (MPU4) (MHT 0.2)" ) GAME_CUSTOM( 199?, m4madhse__t, m4madhse, "mhtad.p1", 0x0000, 0x010000, CRC(edfe01be) SHA1(5d738acc0a39906f085c1bc55caf683d6b6a4f6c), "Barcrest","Mad House (Barcrest) (MPU4) (set 21)" ) GAME_CUSTOM( 199?, m4madhse__u, m4madhse, "mhtb.p1", 0x0000, 0x010000, CRC(272a3c62) SHA1(c6d71295d11350a0b778382a276b8bdf88faede9), "Barcrest","Mad House (Barcrest) (MPU4) (set 22)" ) GAME_CUSTOM( 199?, m4madhse__v, m4madhse, "mhtbd.p1", 0x0000, 0x010000, CRC(f73a3808) SHA1(5f74eb64a9b12b9c2c1141b30e64325b8a5beece), "Barcrest","Mad House (Barcrest) (MPU4) (set 23)" ) @@ -4464,7 +4503,7 @@ GAME_CUSTOM( 199?, m4madhse__w, m4madhse, "mhtd.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4madhse__x, m4madhse, "mhtdk.p1", 0x0000, 0x010000, CRC(ceafb47e) SHA1(32b7e23229524cc79ca24ee00368a9b4c76a35c7), "Barcrest","Mad House (Barcrest) (MPU4) (set 25)" ) GAME_CUSTOM( 199?, m4madhse__y, m4madhse, "mhtdy.p1", 0x0000, 0x010000, CRC(36748788) SHA1(04a541f1a6b94dca2bff16d50674f968e896bea7), "Barcrest","Mad House (Barcrest) (MPU4) (set 26)" ) GAME_CUSTOM( 199?, m4madhse__z, m4madhse, "mhtk.p1", 0x0000, 0x010000, CRC(1ebfb014) SHA1(493bf3ca37f2e49c5f00d7b8f6122e42f7b71f73), "Barcrest","Mad House (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4madhse__0, m4madhse, "mhts.p1", 0x0000, 0x010000, CRC(751b4574) SHA1(a04820f48e0df936813ca984c77da08d703e6474), "Barcrest","Mad House (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4madhse__b, m4madhse, "mhty.p1", 0x0000, 0x010000, CRC(e86e4542) SHA1(fb1b1d319c443daa1184eac4f6b0668ff3c6a1c5), "Barcrest","Mad House (Barcrest) (MPU4) (set 3)" ) #define M4NHTT_EXTRA_ROMS \ ROM_REGION( 0x100000, "msm6376", 0 ) \ @@ -4478,7 +4517,9 @@ GAME_CUSTOM( 199?, m4madhse__0, m4madhse, "mhts.p1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4nhtt, 0, "nht01b.p1", 0x0000, 0x010000, CRC(8201a051) SHA1(a87550c0cdc0b14a30e8814bfef939eb5cf414f8), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "NHT 0.1" +GAME_CUSTOM( 199?, m4nhtt, 0, "nht01s.p1", 0x0000, 0x010000, CRC(a4a44ddf) SHA1(e64953f3cd2559a8ebdacb2b0c12c84fd5c4b836), "Barcrest","New Hit the Top (Barcrest) (MPU4) (NHT 0.1)" ) +GAME_CUSTOM( 199?, m4nhtt__i, m4nhtt, "nht01b.p1", 0x0000, 0x010000, CRC(8201a051) SHA1(a87550c0cdc0b14a30e8814bfef939eb5cf414f8), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4nhtt__a, m4nhtt, "nht01ad.p1", 0x0000, 0x010000, CRC(a5c6ce9a) SHA1(f21dcc1a70fa45637f236aede9c6fa2e962af8f5), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4nhtt__b, m4nhtt, "nht01bd.p1", 0x0000, 0x010000, CRC(21c50c56) SHA1(66c7dfa15447a2519cad58daebe0832c4c2f6f5e), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4nhtt__c, m4nhtt, "nht01d.p1", 0x0000, 0x010000, CRC(4d0868a0) SHA1(1f70273928582b87693f046e10e22c19d6bcf87e), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 4)" ) @@ -4487,7 +4528,6 @@ GAME_CUSTOM( 199?, m4nhtt__e, m4nhtt, "nht01dr.p1", 0x0000, 0x010000, CRC(7 GAME_CUSTOM( 199?, m4nhtt__f, m4nhtt, "nht01dy.p1", 0x0000, 0x010000, CRC(954df9ba) SHA1(61cfb2c68921576549d40ba6776877322e4dd338), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4nhtt__g, m4nhtt, "nht01k.p1", 0x0000, 0x010000, CRC(c9ab03b3) SHA1(acc26a54bfe6e26fc2c8ac58268ee9347bc4ddb9), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4nhtt__h, m4nhtt, "nht01r.p1", 0x0000, 0x010000, CRC(f5ec653e) SHA1(aed9320ab164dd0f2b3dfaee3aacde5ba62e31ef), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4nhtt__i, m4nhtt, "nht01s.p1", 0x0000, 0x010000, CRC(a4a44ddf) SHA1(e64953f3cd2559a8ebdacb2b0c12c84fd5c4b836), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4nhtt__j, m4nhtt, "nht01y.p1", 0x0000, 0x010000, CRC(54c02b5d) SHA1(75b3056d714ee232325f8a1058bef46d902d0b64), "Barcrest","New Hit the Top (Barcrest) (MPU4) (set 11)" ) @@ -4504,8 +4544,8 @@ GAME_CUSTOM( 199?, m4nhtt__j, m4nhtt, "nht01y.p1", 0x0000, 0x010000, CRC(5 GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4przfrt, 0, "pfr03s.p1", 0x0000, 0x010000, CRC(0ea80adb) SHA1(948a23fe8ccf6f423957a478a57bb875cc7b2cc2), "Barcrest","Prize Fruit & Loot (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "PFR 0.3" +GAME_CUSTOM( 199?, m4przfrt, 0, "pfr03s.p1", 0x0000, 0x010000, CRC(0ea80adb) SHA1(948a23fe8ccf6f423957a478a57bb875cc7b2cc2), "Barcrest","Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3)" ) GAME_CUSTOM( 199?, m4przfrt__a, m4przfrt, "pfr03ad.p1", 0x0000, 0x010000, CRC(860cbd1b) SHA1(a3a3c0c3c5aff9b469ae82cf514937973b752421), "Barcrest","Prize Fruit & Loot (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przfrt__b, m4przfrt, "pfr03b.p1", 0x0000, 0x010000, CRC(2a7ba02c) SHA1(178fbf0301d263b32f9a8ac00e79731d074576d9), "Barcrest","Prize Fruit & Loot (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przfrt__c, m4przfrt, "pfr03bd.p1", 0x0000, 0x010000, CRC(dfff487c) SHA1(bf4bbb17241595ceb2c373c2bbd72fcecddedfd2), "Barcrest","Prize Fruit & Loot (Barcrest) (MPU4) (set 4)" ) @@ -4532,7 +4572,9 @@ GAME_CUSTOM( 199?, m4przfrt__l, m4przfrt, "pfr03o.p1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4tutcl, 0, "f2u01ad.p1", 0x0000, 0x010000, CRC(65537552) SHA1(b0a761dcc6e0a9f01cfb934b570356ca67fdd099), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "F2U 0.1" +GAME_CUSTOM( 199?, m4tutcl, 0, "f2u01s.p1", 0x0000, 0x010000, CRC(25b68f22) SHA1(7f484dbc841e1e87d9f5e322cf497b6b68e4a096), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (F2U 0.1)" ) +GAME_CUSTOM( 199?, m4tutcl__j, m4tutcl, "f2u01ad.p1", 0x0000, 0x010000, CRC(65537552) SHA1(b0a761dcc6e0a9f01cfb934b570356ca67fdd099), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4tutcl__a, m4tutcl, "f2u01b.p1", 0x0000, 0x010000, CRC(2cae37df) SHA1(5aed985476b7b747a99a4046b846ee4a359776af), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4tutcl__b, m4tutcl, "f2u01bd.p1", 0x0000, 0x010000, CRC(0dd91ccf) SHA1(bcdfc39025d02e7a51f69757238dfa44fe9d3655), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4tutcl__c, m4tutcl, "f2u01c.p1", 0x0000, 0x010000, CRC(6b6d9bb9) SHA1(140e9cbb8b484116e5fb9a7670d41fb0bcb37ec0), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 4)" ) @@ -4542,7 +4584,6 @@ GAME_CUSTOM( 199?, m4tutcl__f, m4tutcl, "f2u01dr.p1", 0x0000, 0x010000, CR GAME_CUSTOM( 199?, m4tutcl__g, m4tutcl, "f2u01dy.p1", 0x0000, 0x010000, CRC(24dd0a73) SHA1(a75129e414dd8cbe5f6f44e39b1d3dc3d7dfafb2), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4tutcl__h, m4tutcl, "f2u01k.p1", 0x0000, 0x010000, CRC(b9cec403) SHA1(90a1f49202ea9b79e2ab097cf95cf94088c52926), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4tutcl__i, m4tutcl, "f2u01r.p1", 0x0000, 0x010000, CRC(471e39d7) SHA1(874db6f2d04ed0b2c6756efba5fa1140d2fbfc58), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4tutcl__j, m4tutcl, "f2u01s.p1", 0x0000, 0x010000, CRC(25b68f22) SHA1(7f484dbc841e1e87d9f5e322cf497b6b68e4a096), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4tutcl__k, m4tutcl, "f2u01y.p1", 0x0000, 0x010000, CRC(5a583a6f) SHA1(0421d079de12a7379c13832108e8608c9a01f41d), "Barcrest","Tutti Fruity Classic (Barcrest) (MPU4) (set 12)" ) @@ -4559,8 +4600,15 @@ GAME_CUSTOM( 199?, m4tutcl__k, m4tutcl, "f2u01y.p1", 0x0000, 0x010000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4przmns, 0, "spmy.p1", 0x0000, 0x010000, CRC(2b27b2a0) SHA1(07950616da39e39d19452859390d3eaad89ea377), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "SPM 0.2" +GAME_CUSTOM( 199?, m4przmns, 0, "spms.p1", 0x0000, 0x010000, CRC(7d684358) SHA1(b07b13d6827e5ea4127eb763f4233a3d35ea99e6), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (SPM 0.2)" ) +GAME_CUSTOM( 199?, m4przmns__n, m4przmns, "spmy.p1", 0x0000, 0x010000, CRC(2b27b2a0) SHA1(07950616da39e39d19452859390d3eaad89ea377), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4przmns__j, m4przmns, "spmb.p1", 0x0000, 0x010000, CRC(752dd1c6) SHA1(e180c959bc3fb8bce9da22ed6e74fa03e4562a74), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4przmns__k, m4przmns, "spmd.p1", 0x0000, 0x010000, CRC(34172b4f) SHA1(8594d3863e3de3e6300cd5f4588545bf82c89e00), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4przmns__l, m4przmns, "spmdy.p1", 0x0000, 0x010000, CRC(1abed85e) SHA1(0b2d7e0127c30f6704a7f64a2955ecf3e8010206), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4przmns__m, m4przmns, "spmk.p1", 0x0000, 0x010000, CRC(ba2f467a) SHA1(327ebad946b028f387e04e9db9f882320995d175), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 14)" ) +// "(C)1991 BARCREST" and "SM8 0.1" +GAME_CUSTOM( 199?, m4przmns__h, m4przmns, "sm8s.p1", 0x0000, 0x010000, CRC(be159855) SHA1(277884b5417857fa661b09d3e41bef2b22b89f6c), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1)" ) GAME_CUSTOM( 199?, m4przmns__a, m4przmns, "sm8ad.p1", 0x0000, 0x010000, CRC(6272ae09) SHA1(96130f62646424dd9f2f34f2858a2635ec615f03), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przmns__b, m4przmns, "sm8b.p1", 0x0000, 0x010000, CRC(25d95c1b) SHA1(7aa448d1fb383d1b89e71bbc63a554eaa5e06141), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przmns__c, m4przmns, "sm8bd.p1", 0x0000, 0x010000, CRC(bf58108f) SHA1(a0dfc2447a014f4a9b1abad3f954ee9c58251289), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 4)" ) @@ -4568,13 +4616,7 @@ GAME_CUSTOM( 199?, m4przmns__d, m4przmns, "sm8d.p1", 0x0000, 0x010000, CRC GAME_CUSTOM( 199?, m4przmns__e, m4przmns, "sm8dk.p1", 0x0000, 0x010000, CRC(f077ac65) SHA1(9baa5d2fd9833838d48c202a57aaa98783130dbc), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4przmns__f, m4przmns, "sm8dy.p1", 0x0000, 0x010000, CRC(2df61788) SHA1(003d6e172cee41cf9704dc285c2a0b39ee247ea8), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4przmns__g, m4przmns, "sm8k.p1", 0x0000, 0x010000, CRC(8d02ca2b) SHA1(b5defdc50fee9e9f1379571b638702c0779fd450), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4przmns__h, m4przmns, "sm8s.p1", 0x0000, 0x010000, CRC(be159855) SHA1(277884b5417857fa661b09d3e41bef2b22b89f6c), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4przmns__i, m4przmns, "sm8y.p1", 0x0000, 0x010000, CRC(51e76e1d) SHA1(3045ab447871c7369c5ed53da75326e64d6e57d9), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4przmns__j, m4przmns, "spmb.p1", 0x0000, 0x010000, CRC(752dd1c6) SHA1(e180c959bc3fb8bce9da22ed6e74fa03e4562a74), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4przmns__k, m4przmns, "spmd.p1", 0x0000, 0x010000, CRC(34172b4f) SHA1(8594d3863e3de3e6300cd5f4588545bf82c89e00), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4przmns__l, m4przmns, "spmdy.p1", 0x0000, 0x010000, CRC(1abed85e) SHA1(0b2d7e0127c30f6704a7f64a2955ecf3e8010206), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4przmns__m, m4przmns, "spmk.p1", 0x0000, 0x010000, CRC(ba2f467a) SHA1(327ebad946b028f387e04e9db9f882320995d175), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4przmns__n, m4przmns, "spms.p1", 0x0000, 0x010000, CRC(7d684358) SHA1(b07b13d6827e5ea4127eb763f4233a3d35ea99e6), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (set 15)" ) #define M4PRZRF_EXTRA_ROMS \ ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 ) \ @@ -4588,7 +4630,9 @@ GAME_CUSTOM( 199?, m4przmns__n, m4przmns, "spms.p1", 0x0000, 0x010000, CRC ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4przrf, 0, "pr8ad.p1", 0x0000, 0x020000, CRC(ebada7c9) SHA1(4a1e2f746116c23f87b53d25bd8b11322962306f), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "PR8 0.1" +GAME_CUSTOM( 199?, m4przrf, 0, "pr8s.p1", 0x0000, 0x020000, CRC(bbbdd4f4) SHA1(72c2a8b3404384b524f49fc2d6507e2d8dab85cb), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (PR8 0.1)" ) +GAME_CUSTOM( 199?, m4przrf__i, m4przrf, "pr8ad.p1", 0x0000, 0x020000, CRC(ebada7c9) SHA1(4a1e2f746116c23f87b53d25bd8b11322962306f), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4przrf__a, m4przrf, "pr8b.p1", 0x0000, 0x020000, CRC(4a6448b6) SHA1(061dbc1603fff0cb60e02acdf21881047b2b7d43), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przrf__b, m4przrf, "pr8bd.p1", 0x0000, 0x020000, CRC(66b7090c) SHA1(774f5b1403109ccc7ac1bc188f30e8b3a5025aad), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przrf__c, m4przrf, "pr8d.p1", 0x0000, 0x020000, CRC(377f43c0) SHA1(14e29f1832afc47f06752d7da11cc2cb40fcb368), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 4)" ) @@ -4597,7 +4641,6 @@ GAME_CUSTOM( 199?, m4przrf__e, m4przrf, "pr8dk.p1", 0x0000, 0x020000, CRC(2c GAME_CUSTOM( 199?, m4przrf__f, m4przrf, "pr8dy.p1", 0x0000, 0x020000, CRC(ab9381a4) SHA1(90c3a048ad5c1e19007b6e089750a9e4b299d2a3), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4przrf__g, m4przrf, "pr8j.p1", 0x0000, 0x020000, CRC(6eb1de65) SHA1(b9e13173191e9a45fab29936b303a914e372918f), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4przrf__h, m4przrf, "pr8k.p1", 0x0000, 0x020000, CRC(00a3e0e0) SHA1(c0671052de5cdd7f169ca50590b9c4f0f10cb678), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4przrf__i, m4przrf, "pr8s.p1", 0x0000, 0x020000, CRC(bbbdd4f4) SHA1(72c2a8b3404384b524f49fc2d6507e2d8dab85cb), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4przrf__j, m4przrf, "pr8y.p1", 0x0000, 0x020000, CRC(8740c01e) SHA1(c75f4ad724e735a2ffabc9f7cce96dcb341eaf4a), "Barcrest","Prize Rich And Famous (Barcrest) (MPU4) (set 11)" ) #define M4PRZRFM_EXTRA_ROMS \ @@ -4612,13 +4655,15 @@ GAME_CUSTOM( 199?, m4przrf__j, m4przrf, "pr8y.p1", 0x0000, 0x020000, CRC(87 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4przrfm, 0, "prub.p1", 0x0000, 0x010000, CRC(748f220f) SHA1(5d729057d521fa656375610e424cfd4088f6ea02), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "PRU 0.2" +GAME_CUSTOM( 199?, m4przrfm, 0, "prus.p1", 0x0000, 0x010000, CRC(d6c22253) SHA1(f9a25dd1c6f16849a6eb1febdc2da16080cc6838), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (PRU 0.2)" ) +GAME_CUSTOM( 199?, m4przrfm__d, m4przrfm, "prub.p1", 0x0000, 0x010000, CRC(748f220f) SHA1(5d729057d521fa656375610e424cfd4088f6ea02), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4przrfm__a, m4przrfm, "prud.p1", 0x0000, 0x010000, CRC(426bf7c1) SHA1(998b7968d4ed2fb0d1fcaf13929c76670100d9df), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przrfm__b, m4przrfm, "prudy.p1", 0x0000, 0x010000, CRC(e9f76ebd) SHA1(8f1151e123e73ac40fdb6f071960d1ed3e72692a), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przrfm__c, m4przrfm, "pruk.p1", 0x0000, 0x010000, CRC(b995d098) SHA1(22107fbbc8c4e026fc34159114cdbfcd130f814e), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4przrfm__d, m4przrfm, "prus.p1", 0x0000, 0x010000, CRC(d6c22253) SHA1(f9a25dd1c6f16849a6eb1febdc2da16080cc6838), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4przrfm__e, m4przrfm, "pruy.p1", 0x0000, 0x010000, CRC(fcd8add4) SHA1(14e922daf24d981a3a65463bf64213722d8ba758), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 6)" ) +// "(C)1993 BARCREST" and "RM8 0.1" +GAME_CUSTOM( 199?, m4przrfm__n, m4przrfm, "rm8s.p1", 0x0000, 0x010000, CRC(9ab83f24) SHA1(bdc72a9d6f22244a2be86b035fac84433705ce78), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1)" ) GAME_CUSTOM( 199?, m4przrfm__f, m4przrfm, "rm8b.p1", 0x0000, 0x010000, CRC(181da11e) SHA1(c06a9626a541a56d707f9b80806714020cefa7b2), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4przrfm__g, m4przrfm, "rm8bd.p1", 0x0000, 0x010000, CRC(b3d983b5) SHA1(7881c31617855983981f93190afddb0aa880ce0a), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 8)" ) GAME_CUSTOM( 199?, m4przrfm__h, m4przrfm, "rm8d.p1", 0x0000, 0x010000, CRC(94377ab0) SHA1(2c43dfd11eeca53faae661d7af4a986fdbb6d7e9), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 9)" ) @@ -4627,7 +4672,6 @@ GAME_CUSTOM( 199?, m4przrfm__j, m4przrfm, "rm8dk.p1", 0x0000, 0x010000, GAME_CUSTOM( 199?, m4przrfm__k, m4przrfm, "rm8dy.p1", 0x0000, 0x010000, CRC(bac738e3) SHA1(21bd359cfeaf1e33268cecef08d8c7d23d89360c), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4przrfm__l, m4przrfm, "rm8j.p1", 0x0000, 0x010000, CRC(b825b8fd) SHA1(6fa58784018fd7be6528e60d8642803cca55c15d), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4przrfm__m, m4przrfm, "rm8k.p1", 0x0000, 0x010000, CRC(3f559f9e) SHA1(f70c127490859a3b4c405fd0efd18168dd3b0728), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4przrfm__n, m4przrfm, "rm8s.p1", 0x0000, 0x010000, CRC(9ab83f24) SHA1(bdc72a9d6f22244a2be86b035fac84433705ce78), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 15)" ) GAME_CUSTOM( 199?, m4przrfm__o, m4przrfm, "rm8y.p1", 0x0000, 0x010000, CRC(47a3873e) SHA1(51baf82a7a4dee10b1a2f7862030f960912d8d7c), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (set 16)" ) @@ -4647,12 +4691,13 @@ GAME_CUSTOM( 199?, m4przrfm__o, m4przrfm, "rm8y.p1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4przwo, 0, "pwo206ac", 0x0000, 0x010000, CRC(b9dd88e7) SHA1(4c60e7a28b538ff2483839fc66600037ccd99440), "Barcrest","Prize What's On (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "PWO 0.5" +GAME_CUSTOM( 199?, m4przwo, 0, "pwos.p1", 0x0000, 0x010000, CRC(6a87aa68) SHA1(3dc8c006de3adcada43c3581be0ff921081ecff0), "Barcrest","Prize What's On (Barcrest) (MPU4) (PWO 0.5)" ) +GAME_CUSTOM( 199?, m4przwo__e, m4przwo, "pwo206ac", 0x0000, 0x010000, CRC(b9dd88e7) SHA1(4c60e7a28b538ff2483839fc66600037ccd99440), "Barcrest","Prize What's On (Barcrest) (MPU4) (PWO 0.5 C)" ) GAME_CUSTOM( 199?, m4przwo__a, m4przwo, "pwob.p1", 0x0000, 0x010000, CRC(9e9f65d7) SHA1(69d28a1e08d2bde1a9c4d55555478808546ad4f0), "Barcrest","Prize What's On (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przwo__b, m4przwo, "pwod.p1", 0x0000, 0x010000, CRC(ae97b585) SHA1(d6b90d8b696a21f9fa6b06c63a329b1370edd224), "Barcrest","Prize What's On (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przwo__c, m4przwo, "pwody.p1", 0x0000, 0x010000, CRC(3abfd1c9) SHA1(131811807396103641d73cd7cef1797a6cecb35b), "Barcrest","Prize What's On (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4przwo__d, m4przwo, "pwok.p1", 0x0000, 0x010000, CRC(b8631e11) SHA1(c01aff60dad14945c2b45992f0112c6fc0ae7c5a), "Barcrest","Prize What's On (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4przwo__e, m4przwo, "pwos.p1", 0x0000, 0x010000, CRC(6a87aa68) SHA1(3dc8c006de3adcada43c3581be0ff921081ecff0), "Barcrest","Prize What's On (Barcrest) (MPU4) (set 6)" ) GAME_CUSTOM( 199?, m4przwo__f, m4przwo, "pwoy.p1", 0x0000, 0x010000, CRC(1ada4987) SHA1(05a0480f5a92faaedc8183d948c7e2d657bda2a4), "Barcrest","Prize What's On (Barcrest) (MPU4) (set 7)" ) @@ -4672,8 +4717,9 @@ GAME_CUSTOM( 199?, m4przwo__f, m4przwo, "pwoy.p1", 0x0000, 0x010000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4rhog2, 0, "2rh06c.p1", 0x0000, 0x020000, CRC(62c312bc) SHA1(6b02345c97b130deabad58a238ba9045161b5a80), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "2RH 0.6" +GAME_CUSTOM( 199?, m4rhog2, 0, "2rh06s.p1", 0x0000, 0x020000, CRC(2ea10eed) SHA1(825bd6a53100b389f7d67ec49e4535c1de0ece74), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6)" ) +GAME_CUSTOM( 199?, m4rhog2__l, m4rhog2, "2rh06c.p1", 0x0000, 0x020000, CRC(62c312bc) SHA1(6b02345c97b130deabad58a238ba9045161b5a80), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4rhog2__a, m4rhog2, "2rh06ad.p1", 0x0000, 0x020000, CRC(f44040d1) SHA1(685bbfe5f975c7e5b3efee17e1833f6f51b223af), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4rhog2__b, m4rhog2, "2rh06b.p1", 0x0000, 0x020000, CRC(5589afae) SHA1(15c9c65089cc2754d644dabfd6f5a32a2a788219), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4rhog2__c, m4rhog2, "2rh06bd.p1", 0x0000, 0x020000, CRC(795aee14) SHA1(7703c8456aaa2e27f71a7edbfa74fb2d7434a762), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 4)" ) @@ -4685,39 +4731,9 @@ GAME_CUSTOM( 199?, m4rhog2__h, m4rhog2, "2rh06dy.p1", 0x0000, 0x020000, CR GAME_CUSTOM( 199?, m4rhog2__i, m4rhog2, "2rh06h.p1", 0x0000, 0x020000, CRC(9b65ffed) SHA1(65ab62fe772bd54793c45cc1105a189f21bb5d25), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4rhog2__j, m4rhog2, "2rh06k.p1", 0x0000, 0x020000, CRC(1f4e07f8) SHA1(35459640bc215c465b84df073505e8fd6077a332), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4rhog2__k, m4rhog2, "2rh06r.p1", 0x0000, 0x020000, CRC(ac41bcc9) SHA1(0de0c0976ef5c58084f02310495b246dc7c23e60), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4rhog2__l, m4rhog2, "2rh06s.p1", 0x0000, 0x020000, CRC(2ea10eed) SHA1(825bd6a53100b389f7d67ec49e4535c1de0ece74), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 13)" ) GAME_CUSTOM( 199?, m4rhog2__m, m4rhog2, "2rh06y.p1", 0x0000, 0x020000, CRC(98ad2706) SHA1(862a725bad97d28580dad102a71750465c7b0f5d), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 14)" ) -#undef GAME_CUSTOM -#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ - ROM_START( setname ) \ - ROM_REGION( length, "maincpu", 0 ) \ - ROM_LOAD( name, offset, length, hash ) \ - ROM_END \ - GAME(year, setname, parent ,mod2 ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - - - - -GAME_CUSTOM( 199?, m4suphv, 0, "hyperviper.bin", 0x0000, 0x010000, CRC(8373f6a3) SHA1(79bff20ab80ffe11447595c6fe8e5ab90d432e17), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4suphv__a, m4suphv, "hv_05___.3h3", 0x0000, 0x010000, CRC(13bfa891) SHA1(ffddd14a019d52029bf8d4f680d8d05413a9f0b7), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4suphv__b, m4suphv, "hv_05___.3o3", 0x0000, 0x010000, CRC(9ae86366) SHA1(614ae0ab184645c9f568796783f29a177eda3208), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4suphv__c, m4suphv, "hv_05___.4n3", 0x0000, 0x010000, CRC(f607f351) SHA1(d7b779b80fa964a27b106bd9d5ca3be16a11d5e9), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4suphv__d, m4suphv, "hv_05_d_.3h3", 0x0000, 0x010000, CRC(50c66ce8) SHA1(ef12525fc3ac82caf80326edaac81bb9fbc3245c), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4suphv__e, m4suphv, "hv_05_d_.3o3", 0x0000, 0x010000, CRC(87dfca0e) SHA1(3ab4105680acc46d3633a722f40ff1af0a520a7f), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4suphv__f, m4suphv, "hv_05_d_.4n3", 0x0000, 0x010000, CRC(f4d702d7) SHA1(268c7f6443c7ae587caf5b227fcd438530a06bcc), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4suphv__g, m4suphv, "hv_10___.3h3", 0x0000, 0x010000, CRC(627caac7) SHA1(4851ce2441850743ea68ecbf89bde3f4cd6c2b4c), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4suphv__h, m4suphv, "hv_10___.3o3", 0x0000, 0x010000, CRC(02e4d86a) SHA1(47aa83e8bcd85e8ba7fb972cdd1ead7fe21e0418), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4suphv__i, m4suphv, "hv_10_d_.3h3", 0x0000, 0x010000, CRC(15cfa26e) SHA1(6bc3feaba65d1797b9945f23a89e983f56b13f79), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4suphv__j, m4suphv, "hv_10_d_.3n3", 0x0000, 0x010000, CRC(b81f1d0a) SHA1(5fd293be2b75393069c9f5e099b4700ff930f081), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4suphv__k, m4suphv, "hv_10_d_.3o3", 0x0000, 0x010000, CRC(85f176b9) SHA1(30380d58bf2834829764cbdbdc7d950632e61e6d), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4suphv__l, m4suphv, "hvi05___.3h3", 0x0000, 0x010000, CRC(6959332e) SHA1(edaa5f86ad4389b0a3bc2e6679fe8f62520be3ae), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4suphv__m, m4suphv, "hvi05___.3o3", 0x0000, 0x010000, CRC(cdba80a5) SHA1(6c9fac7e5ee324b18922cc7a053495f1977bcb6d), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4suphv__n, m4suphv, "hvi05___.4n3", 0x0000, 0x010000, CRC(38a33c2b) SHA1(21004092b81e08146291fd3a025652f0edbe47dc), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4suphv__o, m4suphv, "hvi10___.3h3", 0x0000, 0x010000, CRC(6c1b4b89) SHA1(e8eb4e689d43c5b9e8354aa7375ca3ba12ed1160), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4suphv__p, m4suphv, "hvi10___.3n3", 0x0000, 0x010000, CRC(9d95cf8c) SHA1(26daf3975e1e3a605bc4392700c5470b52450d6e), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (set 17)" ) - #define M4SHODF_EXTRA_ROMS \ ROM_REGION( 0x100000, "msm6376", 0 ) \ @@ -4734,20 +4750,21 @@ GAME_CUSTOM( 199?, m4suphv__p, m4suphv, "hvi10___.3n3", 0x0000, 0x010000 GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4shodf, 0, "sdfs.p1", 0x0000, 0x010000, CRC(5df9abdb) SHA1(0dce3a7ff4d2f11c370a3a2578c592910a9e7371), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4shodf__a, m4shodf, "sd8b.p1", 0x0000, 0x010000, CRC(79f7fea2) SHA1(5bfa695aef54c9621a91beac2e6c8a09d3b2974b), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4shodf__b, m4shodf, "sd8d.p1", 0x0000, 0x010000, CRC(060a1b37) SHA1(fb4fbc1164f97f13eb10edbd4e8a37502d716340), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4shodf__c, m4shodf, "sd8dk.p1", 0x0000, 0x010000, CRC(20982264) SHA1(178ce24ce21e865608133fe2ae281ba2adbdf1d4), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4shodf__d, m4shodf, "sd8dy.p1", 0x0000, 0x010000, CRC(3fb73b48) SHA1(328f827a92e6fb8ccfb3a82c52401b2d31e974bf), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4shodf__e, m4shodf, "sd8k.p1", 0x0000, 0x010000, CRC(0d8f2238) SHA1(55643a1f9fe136fb724b05efc0362b6295c9caf9), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4shodf__f, m4shodf, "sd8s.p1", 0x0000, 0x010000, CRC(59d696e4) SHA1(e51a9a0bc1348b44e77f85343463154ad680ef89), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4shodf__g, m4shodf, "sd8y.p1", 0x0000, 0x010000, CRC(f79c2e78) SHA1(f6c298b77a9c32378e3f219063daab17e551d083), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 8)" ) +// "(C)1993 BARCREST" and "SDF 0.2" +GAME_CUSTOM( 199?, m4shodf, 0, "sdfs.p1", 0x0000, 0x010000, CRC(5df9abdb) SHA1(0dce3a7ff4d2f11c370a3a2578c592910a9e7371), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (SDF 0.2)" ) GAME_CUSTOM( 199?, m4shodf__h, m4shodf, "sdfb.p1", 0x0000, 0x010000, CRC(a15204bb) SHA1(c862822615e82e5f2f9f2f3cb7e31f804fd859be), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 9)" ) GAME_CUSTOM( 199?, m4shodf__i, m4shodf, "sdfd.p1", 0x0000, 0x010000, CRC(19913c83) SHA1(894da549e790b9062f36fdce90b8e8d284d513e6), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4shodf__j, m4shodf, "sdfdy.p1", 0x0000, 0x010000, CRC(df1325b1) SHA1(002780fcecf895d20a2a3c0c57fbe4dd675a1e42), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 11)" ) GAME_CUSTOM( 199?, m4shodf__k, m4shodf, "sdfk.p1", 0x0000, 0x010000, CRC(32def2fb) SHA1(45064f319cb5268745e8d5210ceed3a84a8e7f20), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 12)" ) GAME_CUSTOM( 199?, m4shodf__l, m4shodf, "sdfy.p1", 0x0000, 0x010000, CRC(dbb6aa80) SHA1(976f5811a0a578c7f2497ac654f7c416b6018a34), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 13)" ) +// "(C)1993 BARCREST" and "SD8 0.1" +GAME_CUSTOM( 199?, m4shodf__f, m4shodf, "sd8s.p1", 0x0000, 0x010000, CRC(59d696e4) SHA1(e51a9a0bc1348b44e77f85343463154ad680ef89), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (SD8 0.1)" ) +GAME_CUSTOM( 199?, m4shodf__a, m4shodf, "sd8b.p1", 0x0000, 0x010000, CRC(79f7fea2) SHA1(5bfa695aef54c9621a91beac2e6c8a09d3b2974b), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4shodf__b, m4shodf, "sd8d.p1", 0x0000, 0x010000, CRC(060a1b37) SHA1(fb4fbc1164f97f13eb10edbd4e8a37502d716340), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4shodf__c, m4shodf, "sd8dk.p1", 0x0000, 0x010000, CRC(20982264) SHA1(178ce24ce21e865608133fe2ae281ba2adbdf1d4), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4shodf__d, m4shodf, "sd8dy.p1", 0x0000, 0x010000, CRC(3fb73b48) SHA1(328f827a92e6fb8ccfb3a82c52401b2d31e974bf), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4shodf__e, m4shodf, "sd8k.p1", 0x0000, 0x010000, CRC(0d8f2238) SHA1(55643a1f9fe136fb724b05efc0362b6295c9caf9), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4shodf__g, m4shodf, "sd8y.p1", 0x0000, 0x010000, CRC(f79c2e78) SHA1(f6c298b77a9c32378e3f219063daab17e551d083), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (set 8)" ) #define M4LUCKSC_EXTRA_ROMS \ @@ -4766,19 +4783,24 @@ GAME_CUSTOM( 199?, m4shodf__l, m4shodf, "sdfy.p1", 0x0000, 0x010000, CRC(db ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4lucksc, 0, "clu14d.p1", 0x0000, 0x020000, CRC(7a64199f) SHA1(62c7c8a4475a8005a1f969550d0717c9cc44bada), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 1)" ) +// "(C)1996 BARCREST" and "CLU 1.4" +GAME_CUSTOM( 199?, m4lucksc, 0, "clu14s.p1", 0x0000, 0x020000, CRC(5f66d7cc) SHA1(bd8a832739d7aef4d04b89a94dd2886e89a6e0c2), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (CLU 1.4)" ) +GAME_CUSTOM( 199?, m4lucksc__b, m4lucksc, "clu14d.p1", 0x0000, 0x020000, CRC(7a64199f) SHA1(62c7c8a4475a8005a1f969550d0717c9cc44bada), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4lucksc__a, m4lucksc, "clu14f.p1", 0x0000, 0x020000, CRC(07e90cdb) SHA1(5d4bf7f6f84f2890a0119de898f01e3e99bfbb7f), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4lucksc__b, m4lucksc, "clu14s.p1", 0x0000, 0x020000, CRC(5f66d7cc) SHA1(bd8a832739d7aef4d04b89a94dd2886e89a6e0c2), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 3)" ) +// "(C)1996 BARCREST" and "GLS 0.6" +GAME_CUSTOM( 199?, m4lucksc__e, m4lucksc, "gls06s.p1", 0x0000, 0x020000, CRC(975adb8d) SHA1(b92d1ad93e51f55111921060939359471c2e5384), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (GLS 0.6)" ) GAME_CUSTOM( 199?, m4lucksc__c, m4lucksc, "gls06d.p1", 0x0000, 0x020000, CRC(2f7f8a9a) SHA1(04243f190597e3d3bdd258b8146b71e9c7cd90c7), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 4)" ) GAME_CUSTOM( 199?, m4lucksc__d, m4lucksc, "gls06f.p1", 0x0000, 0x020000, CRC(52f29fde) SHA1(97df15c89540d8bbb15abb86f6a2e9d0e022c9df), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4lucksc__e, m4lucksc, "gls06s.p1", 0x0000, 0x020000, CRC(975adb8d) SHA1(b92d1ad93e51f55111921060939359471c2e5384), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 6)" ) +// "(C)1996 BARCREST" and "GS3 0.1" +GAME_CUSTOM( 199?, m4lucksc__h, m4lucksc, "gs301s.p1", 0x0000, 0x020000, CRC(53314dc6) SHA1(28b5d2a03b8f6221b80f10c46985fa906cc9be32), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (GS3 0.1)" ) GAME_CUSTOM( 199?, m4lucksc__f, m4lucksc, "gs301d.p1", 0x0000, 0x020000, CRC(e0807af7) SHA1(1740d4d56ad71407a4d2bb13b43c9d5f31caf638), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 7)" ) GAME_CUSTOM( 199?, m4lucksc__g, m4lucksc, "gs301f.p1", 0x0000, 0x020000, CRC(9d0d6fb3) SHA1(9206299604190deace09136ca2eebb9ad2792815), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4lucksc__h, m4lucksc, "gs301s.p1", 0x0000, 0x020000, CRC(53314dc6) SHA1(28b5d2a03b8f6221b80f10c46985fa906cc9be32), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 9)" ) +// "(C)1996 BARCREST" and "LS3 0.1" +GAME_CUSTOM( 199?, m4lucksc__k, m4lucksc, "ls301s.p1", 0x0000, 0x020000, CRC(7e9e97f1) SHA1(43760792b529db8acb497d38ad3951abdebcf76b), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (LS3 0.1)" ) GAME_CUSTOM( 199?, m4lucksc__i, m4lucksc, "ls301d.p1", 0x0000, 0x020000, CRC(39fb0ddf) SHA1(3a6934892585bde6a99f1d2e2fd95677cf37fcfe), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 10)" ) GAME_CUSTOM( 199?, m4lucksc__j, m4lucksc, "ls301f.p1", 0x0000, 0x020000, CRC(4476189b) SHA1(b94c6abbbf37ae28869b1f9c882de8fa56b2c676), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4lucksc__k, m4lucksc, "ls301s.p1", 0x0000, 0x020000, CRC(7e9e97f1) SHA1(43760792b529db8acb497d38ad3951abdebcf76b), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4lucksc__l, m4lucksc, "lsc_.1_1", 0x0000, 0x020000, CRC(79ce3db0) SHA1(409e9d3b08284dee3af696fb7c839c0ca35eddee), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (set 13)" ) +// "(C)1998 BWB" and "LSC 1.0" +GAME_CUSTOM( 199?, m4lucksc__l, m4lucksc, "lsc_.1_1", 0x0000, 0x020000, CRC(79ce3db0) SHA1(409e9d3b08284dee3af696fb7c839c0ca35eddee), "Bwb","Lucky Strike Club (Barcrest) (MPU4) (LSC 1.0)" ) #define M4PRZLUX_EXTRA_ROMS \ @@ -4795,7 +4817,8 @@ GAME_CUSTOM( 199?, m4lucksc__l, m4lucksc, "lsc_.1_1", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4przlux, 0, "plxs.p1", 0x0000, 0x010000, CRC(0aea0339) SHA1(28da52924fe2bf00799ef466143103e08399f5f5), "Barcrest","Prize Luxor (Barcrest) (MPU4) (set 1)" ) +// "(C)1993 BARCREST" and "PLX 0.2" +GAME_CUSTOM( 199?, m4przlux, 0, "plxs.p1", 0x0000, 0x010000, CRC(0aea0339) SHA1(28da52924fe2bf00799ef466143103e08399f5f5), "Barcrest","Prize Luxor (Barcrest) (MPU4) (PLX 0.2)" ) GAME_CUSTOM( 199?, m4przlux__a, m4przlux, "plxad.p1", 0x0000, 0x010000, CRC(e52ddf4f) SHA1(ec3f198fb6658cadd45046ef7586f9178f95d814), "Barcrest","Prize Luxor (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4przlux__b, m4przlux, "plxb.p1", 0x0000, 0x010000, CRC(03b0f7bd) SHA1(0ce1cec1afa0a2efee3bc55a2b9cdf8fec7d3ebc), "Barcrest","Prize Luxor (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4przlux__c, m4przlux, "plxd.p1", 0x0000, 0x010000, CRC(46ae371e) SHA1(a164d0336ed6bf7d25f406e28a01bbec86f4b723), "Barcrest","Prize Luxor (Barcrest) (MPU4) (set 4)" ) @@ -4817,33 +4840,33 @@ GAME_CUSTOM( 199?, m4przlux__f, m4przlux, "plxy.p1", 0x0000, 0x010000, CRC ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4topdog, 0, "td_20_b4.7_1", 0x0000, 0x010000, CRC(fe864f25) SHA1(b9f97aaf0425b4987b5bfa0b793e9226fdffe58f), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4topdog__a, m4topdog, "td_20_bc.7_1", 0x0000, 0x010000, CRC(3af18a9f) SHA1(0db7427d934363d021265fcac811505867f20d47), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4topdog__b, m4topdog, "td_20_d4.7_1", 0x0000, 0x010000, CRC(35da9e2d) SHA1(a2d1efd7c9cbe4bb5ce7574c6bea2edf55f3e08f), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4topdog__c, m4topdog, "td_20_dc.7_1", 0x0000, 0x010000, CRC(b90dfbce) SHA1(b9eb9393fbd33725d372b3b6648c261cf0ae486f), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4topdog__d, m4topdog, "td_20_k4.7_1", 0x0000, 0x010000, CRC(44618034) SHA1(0fce08e279a16d94422155c695b9b5f124b657ea), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4topdog__e, m4topdog, "td_20_kc.7_1", 0x0000, 0x010000, CRC(8ec10cf7) SHA1(cdc479f7f41f2205285a9db6539dce83feef6af4), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4topdog__f, m4topdog, "td_20a_4.7_1", 0x0000, 0x010000, CRC(e7bcc879) SHA1(6c963d059867bdd506af1826fe038daa560a3623), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4topdog__g, m4topdog, "td_20a_c.7_1", 0x0000, 0x010000, CRC(ea229917) SHA1(3e42c1eca1a89b2d536498156beddddcba9899b2), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4topdog__h, m4topdog, "td_20b_4.7_1", 0x0000, 0x010000, CRC(79468269) SHA1(709f34a0ebea816cb268b5dc36c3d02939cd6224), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4topdog__i, m4topdog, "td_20b_c.7_1", 0x0000, 0x010000, CRC(1301d28b) SHA1(b0fc0c73dedd89bbdb5845ec9f91530959fabeb6), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4topdog__j, m4topdog, "td_20bg4.7_1", 0x0000, 0x010000, CRC(4cb61b04) SHA1(6bb56cd06240c1bbb73406fe132e302822dec0df), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4topdog__k, m4topdog, "td_20bgc.7_1", 0x0000, 0x010000, CRC(8ce831d0) SHA1(e58ca3b38e8dc7196c27cf00123a6e7122bd7f58), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4topdog__l, m4topdog, "td_20bt4.7_1", 0x0000, 0x010000, CRC(2cdd5be2) SHA1(bc1afe70268eb7e3cb8fe1a43d262201faec0613), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4topdog__m, m4topdog, "td_20btc.7_1", 0x0000, 0x010000, CRC(67e96c75) SHA1(da9dd06f5d4773fa8e3945cf89cfdde4c465acb9), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4topdog__n, m4topdog, "td_25_bc.8_1", 0x0000, 0x010000, CRC(ac324184) SHA1(d6743c8cbbe719b12f47792a07ec2e898630591b), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4topdog__o, m4topdog, "td_25_dc.8_1", 0x0000, 0x010000, CRC(6ea8077c) SHA1(672976af1fad0257be7a15b839ec261653704be8), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4topdog__p, m4topdog, "td_25_kc.8_1", 0x0000, 0x010000, CRC(e006de48) SHA1(2c09e04d2dc3ec369c4c01eb1ff1af57156d05c1), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4topdog__q, m4topdog, "td_25a_c.8_1", 0x0000, 0x010000, CRC(84e54ba8) SHA1(dd09094854463f4b7033773be77d4a2d7f06b650), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4topdog__r, m4topdog, "td_25b_c.8_1", 0x0000, 0x010000, CRC(314f4f03) SHA1(a7c399ddf453305d0dbe2a63e57427b261c48c2c), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4topdog__s, m4topdog, "td_25bgc.8_1", 0x0000, 0x010000, CRC(efc0899c) SHA1(0d0e5a006d260a1bfcde7966c06360386c949f29), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4topdog__t, m4topdog, "td_25bgp.2_1", 0x0000, 0x010000, CRC(f0894f48) SHA1(63056dd434d18bb9a052db25cc6ce29d0c3f9f82), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4topdog__u, m4topdog, "td_25btc.8_1", 0x0000, 0x010000, CRC(f5dec7d9) SHA1(ffb361745aebb3c7d6bf4925d95904e8ced13a35), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4topdog__v, m4topdog, "td_30a_c.1_1", 0x0000, 0x010000, CRC(f0986895) SHA1(65c24de42a3009959c9bb7f5b42536aa6fd70c2b), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4topdog__w, m4topdog, "td_30b_c.1_1", 0x0000, 0x010000, CRC(7683cf72) SHA1(4319954b833ef6b0d88b8d22c5e700a9df96dc65), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4topdog__x, m4topdog, "td_30bdc.1_1", 0x0000, 0x010000, CRC(f5a4481b) SHA1(75b32b0996315b8ce833fd695377716dbeb0b7e4), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4topdog__y, m4topdog, "td_30bgc.1_1", 0x0000, 0x010000, CRC(1ffe440f) SHA1(adc1909fbbfe7e63bb89b29878bda5a6df776a6a), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4topdog__z, m4topdog, "td_30btc.1_1", 0x0000, 0x010000, CRC(5109516c) SHA1(a4919465286be9e1f0e7970a91a89738f8fcad4e), "Barcrest / Bwb","Top Dog (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4topdog, 0, "td_20_b4.7_1", 0x0000, 0x010000, CRC(fe864f25) SHA1(b9f97aaf0425b4987b5bfa0b793e9226fdffe58f), "Bwb","Top Dog (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4topdog__a, m4topdog, "td_20_bc.7_1", 0x0000, 0x010000, CRC(3af18a9f) SHA1(0db7427d934363d021265fcac811505867f20d47), "Bwb","Top Dog (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4topdog__b, m4topdog, "td_20_d4.7_1", 0x0000, 0x010000, CRC(35da9e2d) SHA1(a2d1efd7c9cbe4bb5ce7574c6bea2edf55f3e08f), "Bwb","Top Dog (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4topdog__c, m4topdog, "td_20_dc.7_1", 0x0000, 0x010000, CRC(b90dfbce) SHA1(b9eb9393fbd33725d372b3b6648c261cf0ae486f), "Bwb","Top Dog (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4topdog__d, m4topdog, "td_20_k4.7_1", 0x0000, 0x010000, CRC(44618034) SHA1(0fce08e279a16d94422155c695b9b5f124b657ea), "Bwb","Top Dog (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4topdog__e, m4topdog, "td_20_kc.7_1", 0x0000, 0x010000, CRC(8ec10cf7) SHA1(cdc479f7f41f2205285a9db6539dce83feef6af4), "Bwb","Top Dog (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4topdog__f, m4topdog, "td_20a_4.7_1", 0x0000, 0x010000, CRC(e7bcc879) SHA1(6c963d059867bdd506af1826fe038daa560a3623), "Bwb","Top Dog (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4topdog__g, m4topdog, "td_20a_c.7_1", 0x0000, 0x010000, CRC(ea229917) SHA1(3e42c1eca1a89b2d536498156beddddcba9899b2), "Bwb","Top Dog (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4topdog__h, m4topdog, "td_20b_4.7_1", 0x0000, 0x010000, CRC(79468269) SHA1(709f34a0ebea816cb268b5dc36c3d02939cd6224), "Bwb","Top Dog (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4topdog__i, m4topdog, "td_20b_c.7_1", 0x0000, 0x010000, CRC(1301d28b) SHA1(b0fc0c73dedd89bbdb5845ec9f91530959fabeb6), "Bwb","Top Dog (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4topdog__j, m4topdog, "td_20bg4.7_1", 0x0000, 0x010000, CRC(4cb61b04) SHA1(6bb56cd06240c1bbb73406fe132e302822dec0df), "Bwb","Top Dog (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4topdog__k, m4topdog, "td_20bgc.7_1", 0x0000, 0x010000, CRC(8ce831d0) SHA1(e58ca3b38e8dc7196c27cf00123a6e7122bd7f58), "Bwb","Top Dog (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4topdog__l, m4topdog, "td_20bt4.7_1", 0x0000, 0x010000, CRC(2cdd5be2) SHA1(bc1afe70268eb7e3cb8fe1a43d262201faec0613), "Bwb","Top Dog (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4topdog__m, m4topdog, "td_20btc.7_1", 0x0000, 0x010000, CRC(67e96c75) SHA1(da9dd06f5d4773fa8e3945cf89cfdde4c465acb9), "Bwb","Top Dog (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4topdog__n, m4topdog, "td_25_bc.8_1", 0x0000, 0x010000, CRC(ac324184) SHA1(d6743c8cbbe719b12f47792a07ec2e898630591b), "Bwb","Top Dog (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4topdog__o, m4topdog, "td_25_dc.8_1", 0x0000, 0x010000, CRC(6ea8077c) SHA1(672976af1fad0257be7a15b839ec261653704be8), "Bwb","Top Dog (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4topdog__p, m4topdog, "td_25_kc.8_1", 0x0000, 0x010000, CRC(e006de48) SHA1(2c09e04d2dc3ec369c4c01eb1ff1af57156d05c1), "Bwb","Top Dog (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4topdog__q, m4topdog, "td_25a_c.8_1", 0x0000, 0x010000, CRC(84e54ba8) SHA1(dd09094854463f4b7033773be77d4a2d7f06b650), "Bwb","Top Dog (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4topdog__r, m4topdog, "td_25b_c.8_1", 0x0000, 0x010000, CRC(314f4f03) SHA1(a7c399ddf453305d0dbe2a63e57427b261c48c2c), "Bwb","Top Dog (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4topdog__s, m4topdog, "td_25bgc.8_1", 0x0000, 0x010000, CRC(efc0899c) SHA1(0d0e5a006d260a1bfcde7966c06360386c949f29), "Bwb","Top Dog (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4topdog__t, m4topdog, "td_25bgp.2_1", 0x0000, 0x010000, CRC(f0894f48) SHA1(63056dd434d18bb9a052db25cc6ce29d0c3f9f82), "Bwb","Top Dog (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4topdog__u, m4topdog, "td_25btc.8_1", 0x0000, 0x010000, CRC(f5dec7d9) SHA1(ffb361745aebb3c7d6bf4925d95904e8ced13a35), "Bwb","Top Dog (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4topdog__v, m4topdog, "td_30a_c.1_1", 0x0000, 0x010000, CRC(f0986895) SHA1(65c24de42a3009959c9bb7f5b42536aa6fd70c2b), "Bwb","Top Dog (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4topdog__w, m4topdog, "td_30b_c.1_1", 0x0000, 0x010000, CRC(7683cf72) SHA1(4319954b833ef6b0d88b8d22c5e700a9df96dc65), "Bwb","Top Dog (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4topdog__x, m4topdog, "td_30bdc.1_1", 0x0000, 0x010000, CRC(f5a4481b) SHA1(75b32b0996315b8ce833fd695377716dbeb0b7e4), "Bwb","Top Dog (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4topdog__y, m4topdog, "td_30bgc.1_1", 0x0000, 0x010000, CRC(1ffe440f) SHA1(adc1909fbbfe7e63bb89b29878bda5a6df776a6a), "Bwb","Top Dog (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4topdog__z, m4topdog, "td_30btc.1_1", 0x0000, 0x010000, CRC(5109516c) SHA1(a4919465286be9e1f0e7970a91a89738f8fcad4e), "Bwb","Top Dog (Barcrest) (MPU4) (set 27)" ) #define M4KINGQ_EXTRA_ROMS \ ROM_REGION( 0x200000, "msm6376", 0 ) \ @@ -4942,11 +4965,13 @@ GAME_CUSTOM( 199?, m4kingqc__5, m4kingqc, "cn_30btc.1_1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4typcl, 0, "ctp12s.p1", 0x0000, 0x020000, CRC(5f0bbd2a) SHA1(ba1fa09ea7b4713a99b2033bdbbf6b15f973dcca), "Barcrest","Take Your Pick Club (Barcrest) (MPU4) (set 1)" ) +// "(C)1996 BARCREST" and "CTP 1.2" +GAME_CUSTOM( 199?, m4typcl, 0, "ctp12s.p1", 0x0000, 0x020000, CRC(5f0bbd2a) SHA1(ba1fa09ea7b4713a99b2033bdbbf6b15f973dcca), "Barcrest","Take Your Pick Club (Barcrest) (MPU4) (CTP 1.2)" ) GAME_CUSTOM( 199?, m4typcl__a, m4typcl, "ctp13d.p1", 0x0000, 0x020000, CRC(a0f081b9) SHA1(794bba6ed86c3f332165c4b3224315256c939926), "Barcrest","Take Your Pick Club (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4typcl__b, m4typcl, "ctp13f.p1", 0x0000, 0x020000, CRC(dd7d94fd) SHA1(127ef8159facf647dff37109bcbb94311a8343f1), "Barcrest","Take Your Pick Club (Barcrest) (MPU4) (set 3)" ) GAME_CUSTOM( 199?, m4typcl__c, m4typcl, "ctp13s.p1", 0x0000, 0x020000, CRC(f0a69f92) SHA1(cd34fb26ecbe6a6e8602a8549c5f331a525567df), "Barcrest","Take Your Pick Club (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4typcl__d, m4typcl, "ntp02.p1", 0x0000, 0x020000, CRC(6063e27d) SHA1(c99599fbc7146d8fcf62432994098dd51250b17b), "Barcrest","Take Your Pick Club (Barcrest) (MPU4) (set 5)" ) +// "(C)1996 BARCREST" and "NTP 0.2" +GAME_CUSTOM( 199?, m4typcl__d, m4typcl, "ntp02.p1", 0x0000, 0x020000, CRC(6063e27d) SHA1(c99599fbc7146d8fcf62432994098dd51250b17b), "Barcrest","Take Your Pick Club (Barcrest) (MPU4) (NTP 0.2)" ) #define M4ANDYBT_EXTRA_ROMS \ @@ -4964,10 +4989,12 @@ GAME_CUSTOM( 199?, m4typcl__d, m4typcl, "ntp02.p1", 0x0000, 0x020000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4andybt, 0, "abt18d.p1", 0x0000, 0x020000, CRC(77874578) SHA1(455964614b67af14f5baa5883e1076e986de9e9c), "Barcrest","Andy's Big Time Club (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "ABT 1.8" +GAME_CUSTOM( 199?, m4andybt, 0, "abt18s.p1", 0x0000, 0x020000, CRC(625263e4) SHA1(23fa0547164cc1f9b7c6cd26e06b0d779bf0329d), "Barcrest","Andy's Big Time Club (Barcrest) (MPU4) (ABT 1.8)" ) +GAME_CUSTOM( 199?, m4andybt__b, m4andybt, "abt18d.p1", 0x0000, 0x020000, CRC(77874578) SHA1(455964614b67af14f5baa5883e1076e986de9e9c), "Barcrest","Andy's Big Time Club (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4andybt__a, m4andybt, "abt18f.p1", 0x0000, 0x020000, CRC(cdd756af) SHA1(b1bb851ad2a2ba631e13509a476fe60cb8a24e69), "Barcrest","Andy's Big Time Club (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4andybt__b, m4andybt, "abt18s.p1", 0x0000, 0x020000, CRC(625263e4) SHA1(23fa0547164cc1f9b7c6cd26e06b0d779bf0329d), "Barcrest","Andy's Big Time Club (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4andybt__c, m4andybt, "abt1.5", 0x0000, 0x020000, CRC(05303209) SHA1(6a9eba19e7138ede122ec04c062556763b80f6c0), "Barcrest","Andy's Big Time Club (Barcrest) (MPU4) (set 4)" ) +// "(C)1991 BARCREST" and "ABT 1.5" +GAME_CUSTOM( 199?, m4andybt__c, m4andybt, "abt1.5", 0x0000, 0x020000, CRC(05303209) SHA1(6a9eba19e7138ede122ec04c062556763b80f6c0), "Barcrest","Andy's Big Time Club (Barcrest) (MPU4) (ABT 1.5)" ) #define M4THESTR_EXTRA_ROMS \ @@ -5069,10 +5096,11 @@ GAME_CUSTOM( 199?, m4cpycat__8, m4cpycat, "co_30btc.2_1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod2 ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4hypclb, 0, "hpcd.p1", 0x0000, 0x010000, CRC(7fac8944) SHA1(32f0f16ef6c4b99fe70464341a1ce226f6221122), "Barcrest","Hyper Viper Club (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "HPC 0.5" +GAME_CUSTOM( 199?, m4hypclb, 0, "hpcs.p1", 0x0000, 0x010000, CRC(55601e10) SHA1(78c3f13cd122e86ff8b7750b375c26e56c6b27c6), "Barcrest","Hyper Viper Club (Barcrest) (MPU4) (HPC 0.5)" ) +GAME_CUSTOM( 199?, m4hypclb__c, m4hypclb, "hpcd.p1", 0x0000, 0x010000, CRC(7fac8944) SHA1(32f0f16ef6c4b99fe70464341a1ce226f6221122), "Barcrest","Hyper Viper Club (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4hypclb__a, m4hypclb, "hpcf.p1", 0x0000, 0x010000, CRC(2931a558) SHA1(2f7fe541edc502738dd6603435deaef1cb26a1e2), "Barcrest","Hyper Viper Club (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4hypclb__b, m4hypclb, "hpcfd.p1", 0x0000, 0x010000, CRC(b127e577) SHA1(da034086bb92934f73d1a2be776f91462274479d), "Barcrest","Hyper Viper Club (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4hypclb__c, m4hypclb, "hpcs.p1", 0x0000, 0x010000, CRC(55601e10) SHA1(78c3f13cd122e86ff8b7750b375c26e56c6b27c6), "Barcrest","Hyper Viper Club (Barcrest) (MPU4) (set 4)" ) #define M4BNKROL_EXTRA_ROMS \ @@ -5088,13 +5116,14 @@ GAME_CUSTOM( 199?, m4hypclb__c, m4hypclb, "hpcs.p1", 0x0000, 0x010000, CRC ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4bnkrol, 0, "cbr05s.p1", 0x0000, 0x020000, CRC(a8b53a0d) SHA1(661ab61aa8f427b92fdee02539f19e5dd2243da7), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4bnkrol__a, m4bnkrol, "br301d.p1", 0x0000, 0x020000, CRC(b9334e2d) SHA1(263808eb5ea3f9987eb7579b43329cb27e109921), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4bnkrol__b, m4bnkrol, "br301f.p1", 0x0000, 0x020000, CRC(c4be5b69) SHA1(9b08d5c0c5aebeef9f0767f5bd456cc6b05ea317), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4bnkrol__c, m4bnkrol, "br301s.p1", 0x0000, 0x020000, CRC(1e117651) SHA1(c06d3f14e55be83c89c8132cf219d46acc42991c), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (set 4)" ) +// "(C)1996 BARCREST" and "CBR 0.5" +GAME_CUSTOM( 199?, m4bnkrol, 0, "cbr05s.p1", 0x0000, 0x020000, CRC(a8b53a0d) SHA1(661ab61aa8f427b92fdee02539f19e5dd2243da7), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (CBR 0.5)" ) GAME_CUSTOM( 199?, m4bnkrol__d, m4bnkrol, "cbr05d.p1", 0x0000, 0x020000, CRC(44cefec0) SHA1(7034c5acd44ccd3cd985ba4945c004c070a599a4), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (set 5)" ) GAME_CUSTOM( 199?, m4bnkrol__e, m4bnkrol, "cbr05f.p1", 0x0000, 0x020000, CRC(3943eb84) SHA1(76a00db6a0c6655c3a7942550c788822bacd73e5), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (set 6)" ) +// "(C)1996 BARCREST" and "BR3 0.1" +GAME_CUSTOM( 199?, m4bnkrol__c, m4bnkrol, "br301s.p1", 0x0000, 0x020000, CRC(1e117651) SHA1(c06d3f14e55be83c89c8132cf219d46acc42991c), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (BR3 0.1)" ) +GAME_CUSTOM( 199?, m4bnkrol__a, m4bnkrol, "br301d.p1", 0x0000, 0x020000, CRC(b9334e2d) SHA1(263808eb5ea3f9987eb7579b43329cb27e109921), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4bnkrol__b, m4bnkrol, "br301f.p1", 0x0000, 0x020000, CRC(c4be5b69) SHA1(9b08d5c0c5aebeef9f0767f5bd456cc6b05ea317), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (set 3)" ) #define M4TIC_EXTRA_ROMS \ @@ -5143,10 +5172,12 @@ GAME_CUSTOM( 199?, m4tic__s, m4tic, "tti20___.2_1", 0x0000, 0x010000, CRC(9105 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4rhrcl, 0, "rhrc.hex", 0x0000, 0x010000, CRC(e4b89d53) SHA1(fc222d56cdba2891048726d6e6ecd8a4028ba8ba), "Barcrest","Red Hot Roll Club (Barcrest) (MPU4) (set 1)" ) +// "(C)1991 BARCREST" and "RH2 1.1" +GAME_CUSTOM( 199?, m4rhrcl, 0, "rh2s.p1", 0x0000, 0x010000, CRC(aa15e8a8) SHA1(243e7562a4cf938527afebbd99581acea1ab4134), "Barcrest","Red Hot Roll Club (Barcrest) (MPU4) (RH2 1.1)" ) GAME_CUSTOM( 199?, m4rhrcl__a, m4rhrcl, "rh2d.p1", 0x0000, 0x010000, CRC(b55a01c3) SHA1(8c94c2ca509ac7631528df78e82fb39b5f579c45), "Barcrest","Red Hot Roll Club (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4rhrcl__b, m4rhrcl, "rh2f.p1", 0x0000, 0x010000, CRC(83466c89) SHA1(790d626e361bfec1265edc6f6ce51f098eb774ba), "Barcrest","Red Hot Roll Club (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4rhrcl__c, m4rhrcl, "rh2s.p1", 0x0000, 0x010000, CRC(aa15e8a8) SHA1(243e7562a4cf938527afebbd99581acea1ab4134), "Barcrest","Red Hot Roll Club (Barcrest) (MPU4) (set 4)" ) +// "(C)1991 BARCREST" and "RH2 1.0" +GAME_CUSTOM( 199?, m4rhrcl__c, m4rhrcl, "rhrc.hex", 0x0000, 0x010000, CRC(e4b89d53) SHA1(fc222d56cdba2891048726d6e6ecd8a4028ba8ba), "Barcrest","Red Hot Roll Club (Barcrest) (MPU4) (RH2 1.0)" ) #define M4RHOGC_EXTRA_ROMS \ ROM_REGION( 0x48, "fakechr", 0 ) \ @@ -5163,9 +5194,9 @@ GAME_CUSTOM( 199?, m4rhrcl__c, m4rhrcl, "rh2s.p1", 0x0000, 0x010000, CRC(aa ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4rhogc, 0, "rhcf.p1", 0x0000, 0x010000, CRC(0b726e87) SHA1(12c334e7dd712b9e19e8241b1a8e278ff84110d4), "Barcrest","Road Hog Club (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4rhogc__a, m4rhogc, "rhcs.p1", 0x0000, 0x010000, CRC(d1541050) SHA1(ef1ee3b9319e2a357540cf0de902de439267c3e2), "Barcrest","Road Hog Club (Barcrest) (MPU4) (set 2)" ) +// "(C)1991 BARCREST" and "RHC 0.5" +GAME_CUSTOM( 199?, m4rhogc, 0, "rhcs.p1", 0x0000, 0x010000, CRC(d1541050) SHA1(ef1ee3b9319e2a357540cf0de902de439267c3e2), "Barcrest","Road Hog Club (Barcrest) (MPU4) (RHC 0.5)" ) +GAME_CUSTOM( 199?, m4rhogc__a, m4rhogc, "rhcf.p1", 0x0000, 0x010000, CRC(0b726e87) SHA1(12c334e7dd712b9e19e8241b1a8e278ff84110d4), "Barcrest","Road Hog Club (Barcrest) (MPU4) (set 1)" ) GAME_CUSTOM( 199?, m4rhogc__b, m4rhogc, "rhcd.p1", 0x0000, 0x010000, CRC(7a7df536) SHA1(9c53e5c6a5f3a32de05a574e1c8dedc3e5be66eb), "Barcrest","Road Hog Club (Barcrest) (MPU4) (set 3)" ) #define M4GB006_EXTRA_ROMS \ From 828f8247089c0c9ab2381b50734e894285a9af8e Mon Sep 17 00:00:00 2001 From: AJR Date: Mon, 8 Aug 2016 13:38:40 -0400 Subject: [PATCH 085/116] Make address maps complain when entry bounds lie outside the global mask (nw) - Alter a bunch of address maps so all validity checks pass. These includes global address masks in Hexaa and the Newbrain FDC (regression testing should be done here). - Remove the Lisa wraparound read/write handlers. --- src/devices/bus/newbrain/fdc.cpp | 2 +- src/emu/addrmap.cpp | 15 ++++++-- src/mame/drivers/arkanoid.cpp | 2 +- src/mame/drivers/calomega.cpp | 4 +-- src/mame/drivers/eacc.cpp | 2 +- src/mame/drivers/galaxy.cpp | 4 +-- src/mame/drivers/goldnpkr.cpp | 2 +- src/mame/drivers/lc80.cpp | 6 ++-- src/mame/drivers/lisa.cpp | 2 -- src/mame/drivers/s6.cpp | 2 +- src/mame/drivers/slc1.cpp | 2 +- src/mame/drivers/toobin.cpp | 32 ++++++++--------- src/mame/includes/lisa.h | 4 --- src/mame/machine/lisa.cpp | 60 -------------------------------- src/mame/machine/m1comm.cpp | 2 +- 15 files changed, 43 insertions(+), 98 deletions(-) diff --git a/src/devices/bus/newbrain/fdc.cpp b/src/devices/bus/newbrain/fdc.cpp index 92499b19028..d4fadb9df70 100644 --- a/src/devices/bus/newbrain/fdc.cpp +++ b/src/devices/bus/newbrain/fdc.cpp @@ -80,7 +80,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( newbrain_fdc_io, AS_IO, 8, newbrain_fdc_t ) ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xd1) + ADDRESS_MAP_GLOBAL_MASK(0x71) AM_RANGE(0x00, 0x01) AM_MIRROR(0x10) AM_DEVICE(UPD765_TAG, upd765a_device, map) AM_RANGE(0x20, 0x20) AM_MIRROR(0x11) AM_WRITE(fdc_auxiliary_w) AM_RANGE(0x40, 0x40) AM_MIRROR(0x11) AM_READ(fdc_control_r) diff --git a/src/emu/addrmap.cpp b/src/emu/addrmap.cpp index 2b3f45b1795..a8fe7281d1d 100644 --- a/src/emu/addrmap.cpp +++ b/src/emu/addrmap.cpp @@ -32,8 +32,8 @@ address_map_entry::address_map_entry(device_t &device, address_map &map, offs_t : m_next(nullptr), m_map(map), m_devbase(device), - m_addrstart((map.m_globalmask == 0) ? start : start & map.m_globalmask), - m_addrend((map.m_globalmask == 0) ? end : end & map.m_globalmask), + m_addrstart(start), + m_addrend(end), m_addrmirror(0), m_addrmask(0), m_addrselect(0), @@ -47,6 +47,17 @@ address_map_entry::address_map_entry(device_t &device, address_map &map, offs_t m_bytemirror(0), m_bytemask(0) { + if (map.m_globalmask != 0 && (start & ~map.m_globalmask) != 0) + { + osd_printf_warning("AS_%d map entry start %08X lies outside global address mask %08X\n", map.m_spacenum, start, map.m_globalmask); + m_addrstart &= map.m_globalmask; + } + + if (map.m_globalmask != 0 && (end & ~map.m_globalmask) != 0) + { + osd_printf_warning("AS_%d map entry end %08X lies outside global address mask %08X\n", map.m_spacenum, end, map.m_globalmask); + m_addrend &= map.m_globalmask; + } } diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp index 6daff2641bf..7e025e7c311 100644 --- a/src/mame/drivers/arkanoid.cpp +++ b/src/mame/drivers/arkanoid.cpp @@ -878,7 +878,7 @@ READ8_MEMBER(arkanoid_state::hexaa_sub_90_r) } static ADDRESS_MAP_START( hexaa_sub_iomap, AS_IO, 8, arkanoid_state ) - ADDRESS_MAP_GLOBAL_MASK(0x0f) + ADDRESS_MAP_GLOBAL_MASK(0x9f) AM_RANGE(0x00, 0x0f) AM_RAM // ?? could be communication with the other chip (protection?) AM_RANGE(0x80, 0x80) AM_WRITE(hexaa_sub_80_w) AM_RANGE(0x90, 0x90) AM_READ(hexaa_sub_90_r) diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp index 9226a748b92..a247dc12de0 100644 --- a/src/mame/drivers/calomega.cpp +++ b/src/mame/drivers/calomega.cpp @@ -843,7 +843,7 @@ static ADDRESS_MAP_START( s903mod_map, AS_PROGRAM, 8, calomega_state ) AM_RANGE(0x08c8, 0x08cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram") AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1800, 0xffff) AM_ROM + AM_RANGE(0x1800, 0x3fff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( sys905_map, AS_PROGRAM, 8, calomega_state ) @@ -856,7 +856,7 @@ static ADDRESS_MAP_START( sys905_map, AS_PROGRAM, 8, calomega_state ) AM_RANGE(0x10c8, 0x10cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram") AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2800, 0xffff) AM_ROM + AM_RANGE(0x2800, 0x7fff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( sys906_map, AS_PROGRAM, 8, calomega_state ) diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp index cc91872dddf..3aef6f02258 100644 --- a/src/mame/drivers/eacc.cpp +++ b/src/mame/drivers/eacc.cpp @@ -96,7 +96,7 @@ static ADDRESS_MAP_START(eacc_mem, AS_PROGRAM, 8, eacc_state) ADDRESS_MAP_GLOBAL_MASK(0xc7ff) // A11,A12,A13 not connected AM_RANGE(0x0000, 0x001f) AM_RAM AM_SHARE("nvram") // inside cpu, battery-backed AM_RANGE(0x0020, 0x007f) AM_RAM // inside cpu - AM_RANGE(0x6000, 0x67ff) AM_ROM AM_MIRROR(0x8000) + AM_RANGE(0x4000, 0x47ff) AM_ROM AM_MIRROR(0x8000) AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x7fc) AM_DEVREADWRITE("pia", pia6821_device, read, write) ADDRESS_MAP_END diff --git a/src/mame/drivers/galaxy.cpp b/src/mame/drivers/galaxy.cpp index 8a6a884ea8d..79f3b47ee61 100644 --- a/src/mame/drivers/galaxy.cpp +++ b/src/mame/drivers/galaxy.cpp @@ -37,8 +37,8 @@ Galaksija driver by Krzysztof Strzecha and Miodrag Milanovic static ADDRESS_MAP_START (galaxyp_io, AS_IO, 8, galaxy_state ) ADDRESS_MAP_GLOBAL_MASK(0x01) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xbe, 0xbe) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0xbf, 0xbf) AM_DEVWRITE("ay8910", ay8910_device, data_w) + AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay8910", ay8910_device, address_w) + AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay8910", ay8910_device, data_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index 591d3e8a589..c70d153a41d 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -1690,7 +1690,7 @@ static ADDRESS_MAP_START( wildcrdb_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x2101, 0x2101) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0xffff) AM_ROM + AM_RANGE(0x3000, 0x7fff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( wildcrdb_mcu_map, AS_PROGRAM, 8, goldnpkr_state ) diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp index b29f5836f35..9deed1fc2fe 100644 --- a/src/mame/drivers/lc80.cpp +++ b/src/mame/drivers/lc80.cpp @@ -64,9 +64,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( lc80_io, AS_IO, 8, lc80_state ) ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read, write) - AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read, write) - AM_RANGE(0xec, 0xef) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) + AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read, write) + AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read, write) + AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) ADDRESS_MAP_END /* Input Ports */ diff --git a/src/mame/drivers/lisa.cpp b/src/mame/drivers/lisa.cpp index 34e9b8bbe1f..1e5dad25b03 100644 --- a/src/mame/drivers/lisa.cpp +++ b/src/mame/drivers/lisa.cpp @@ -31,7 +31,6 @@ static ADDRESS_MAP_START(lisa_fdc_map, AS_PROGRAM, 8, lisa_state ) AM_RANGE(0x0400, 0x07ff) AM_READWRITE(lisa_fdc_io_r, lisa_fdc_io_w) /* disk controller (IWM and TTL logic) */ AM_RANGE(0x0800, 0x0fff) AM_NOP AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("fdccpu", 0x1000) AM_SHARE("fdc_rom") /* ROM */ - AM_RANGE(0x2000, 0xffff) AM_READWRITE(lisa_fdc_r, lisa_fdc_w) /* handler for wrap-around */ ADDRESS_MAP_END static ADDRESS_MAP_START(lisa210_fdc_map, AS_PROGRAM, 8, lisa_state ) @@ -41,7 +40,6 @@ static ADDRESS_MAP_START(lisa210_fdc_map, AS_PROGRAM, 8, lisa_state ) AM_RANGE(0x0800, 0x0bff) AM_READWRITE(lisa_fdc_io_r, lisa_fdc_io_w) /* disk controller (IWM and TTL logic) */ AM_RANGE(0x0c00, 0x0fff) AM_NOP /* nothing, or IO port wrap-around ??? */ AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("fdccpu", 0x1000) AM_SHARE("fdc_rom") /* ROM */ - AM_RANGE(0x2000, 0xffff) AM_READWRITE(lisa_fdc_r, lisa_fdc_w) /* handler for wrap-around */ ADDRESS_MAP_END diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp index cc28d6f3c58..86ababe599e 100644 --- a/src/mame/drivers/s6.cpp +++ b/src/mame/drivers/s6.cpp @@ -120,7 +120,7 @@ static ADDRESS_MAP_START( s6_main_map, AS_PROGRAM, 8, s6_state ) AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0xb000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs + AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/slc1.cpp b/src/mame/drivers/slc1.cpp index f367e3b1705..a2eec395f04 100644 --- a/src/mame/drivers/slc1.cpp +++ b/src/mame/drivers/slc1.cpp @@ -182,7 +182,7 @@ static ADDRESS_MAP_START( slc1_map, AS_PROGRAM, 8, slc1_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0x4fff) AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_MIRROR(0xc00) + AM_RANGE(0x4000, 0x43ff) AM_RAM AM_MIRROR(0xc00) ADDRESS_MAP_END static ADDRESS_MAP_START( slc1_io, AS_IO, 8, slc1_state ) diff --git a/src/mame/drivers/toobin.cpp b/src/mame/drivers/toobin.cpp index f07cf0c4110..d35126e0033 100644 --- a/src/mame/drivers/toobin.cpp +++ b/src/mame/drivers/toobin.cpp @@ -86,22 +86,22 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, toobin_state ) AM_RANGE(0xc08000, 0xc097ff) AM_MIRROR(0x046000) AM_RAM_DEVWRITE("alpha", tilemap_device, write) AM_SHARE("alpha") AM_RANGE(0xc09800, 0xc09fff) AM_MIRROR(0x046000) AM_RAM AM_SHARE("mob") AM_RANGE(0xc10000, 0xc107ff) AM_MIRROR(0x047800) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xba6000, 0xba6001) AM_MIRROR(0x4500fe) AM_READNOP /* who knows? read at controls time */ - AM_RANGE(0xba8000, 0xba8001) AM_MIRROR(0x4500fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xba8100, 0xba8101) AM_MIRROR(0x4500fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff) - AM_RANGE(0xba8300, 0xba8301) AM_MIRROR(0x45003e) AM_WRITE(intensity_w) - AM_RANGE(0xba8340, 0xba8341) AM_MIRROR(0x45003e) AM_WRITE(interrupt_scan_w) AM_SHARE("interrupt_scan") - AM_RANGE(0xba8380, 0xba8381) AM_MIRROR(0x45003e) AM_RAM_WRITE(slip_w) AM_SHARE("mob:slip") - AM_RANGE(0xba83c0, 0xba83c1) AM_MIRROR(0x45003e) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0xba8400, 0xba8401) AM_MIRROR(0x4500fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w) - AM_RANGE(0xba8500, 0xba8501) AM_MIRROR(0x4500fe) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write) - AM_RANGE(0xba8600, 0xba8601) AM_MIRROR(0x4500fe) AM_WRITE(xscroll_w) AM_SHARE("xscroll") - AM_RANGE(0xba8700, 0xba8701) AM_MIRROR(0x4500fe) AM_WRITE(yscroll_w) AM_SHARE("yscroll") - AM_RANGE(0xba8800, 0xba8801) AM_MIRROR(0x4507fe) AM_READ_PORT("FF8800") - AM_RANGE(0xba9000, 0xba9001) AM_MIRROR(0x4507fe) AM_READ_PORT("FF9000") - AM_RANGE(0xba9800, 0xba9801) AM_MIRROR(0x4507fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff) - AM_RANGE(0xbaa000, 0xbaafff) AM_MIRROR(0x451000) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff) - AM_RANGE(0xbac000, 0xbaffff) AM_MIRROR(0x450000) AM_RAM + AM_RANGE(0x826000, 0x826001) AM_MIRROR(0x4500fe) AM_READNOP /* who knows? read at controls time */ + AM_RANGE(0x828000, 0x828001) AM_MIRROR(0x4500fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) + AM_RANGE(0x828100, 0x828101) AM_MIRROR(0x4500fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff) + AM_RANGE(0x828300, 0x828301) AM_MIRROR(0x45003e) AM_WRITE(intensity_w) + AM_RANGE(0x828340, 0x828341) AM_MIRROR(0x45003e) AM_WRITE(interrupt_scan_w) AM_SHARE("interrupt_scan") + AM_RANGE(0x828380, 0x828381) AM_MIRROR(0x45003e) AM_RAM_WRITE(slip_w) AM_SHARE("mob:slip") + AM_RANGE(0x8283c0, 0x8283c1) AM_MIRROR(0x45003e) AM_WRITE(scanline_int_ack_w) + AM_RANGE(0x828400, 0x828401) AM_MIRROR(0x4500fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w) + AM_RANGE(0x828500, 0x828501) AM_MIRROR(0x4500fe) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write) + AM_RANGE(0x828600, 0x828601) AM_MIRROR(0x4500fe) AM_WRITE(xscroll_w) AM_SHARE("xscroll") + AM_RANGE(0x828700, 0x828701) AM_MIRROR(0x4500fe) AM_WRITE(yscroll_w) AM_SHARE("yscroll") + AM_RANGE(0x828800, 0x828801) AM_MIRROR(0x4507fe) AM_READ_PORT("FF8800") + AM_RANGE(0x829000, 0x829001) AM_MIRROR(0x4507fe) AM_READ_PORT("FF9000") + AM_RANGE(0x829800, 0x829801) AM_MIRROR(0x4507fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff) + AM_RANGE(0x82a000, 0x82afff) AM_MIRROR(0x451000) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff) + AM_RANGE(0x82c000, 0x82ffff) AM_MIRROR(0x450000) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/includes/lisa.h b/src/mame/includes/lisa.h index f359191d605..b3a32f84a21 100644 --- a/src/mame/includes/lisa.h +++ b/src/mame/includes/lisa.h @@ -192,10 +192,6 @@ public: int m_videoROM_address; DECLARE_READ8_MEMBER(lisa_fdc_io_r); DECLARE_WRITE8_MEMBER(lisa_fdc_io_w); - DECLARE_READ8_MEMBER(lisa_fdc_r); - DECLARE_READ8_MEMBER(lisa210_fdc_r); - DECLARE_WRITE8_MEMBER(lisa_fdc_w); - DECLARE_WRITE8_MEMBER(lisa210_fdc_w); DECLARE_READ16_MEMBER(lisa_r); DECLARE_WRITE16_MEMBER(lisa_w); DECLARE_READ16_MEMBER(lisa_IO_r); diff --git a/src/mame/machine/lisa.cpp b/src/mame/machine/lisa.cpp index 2e0cf3de51f..94b05e25270 100644 --- a/src/mame/machine/lisa.cpp +++ b/src/mame/machine/lisa.cpp @@ -1221,66 +1221,6 @@ WRITE8_MEMBER(lisa_state::lisa_fdc_io_w) } } -READ8_MEMBER(lisa_state::lisa_fdc_r) -{ - if (! (offset & 0x1000)) - { - if (! (offset & 0x0800)) - if (! (offset & 0x0400)) - return m_fdc_ram[offset & 0x03ff]; - else - return lisa_fdc_io_r(space, offset & 0x03ff); - else - return 0; /* ??? */ - } - else - return m_fdc_rom[offset & 0x0fff]; -} - -READ8_MEMBER(lisa_state::lisa210_fdc_r) -{ - if (! (offset & 0x1000)) - { - if (! (offset & 0x0400)) - if (! (offset & 0x0800)) - return m_fdc_ram[offset & 0x03ff]; - else - return lisa_fdc_io_r(space, offset & 0x03ff); - else - return 0; /* ??? */ - } - else - return m_fdc_rom[offset & 0x0fff]; -} - -WRITE8_MEMBER(lisa_state::lisa_fdc_w) -{ - if (! (offset & 0x1000)) - { - if (! (offset & 0x0800)) - { - if (! (offset & 0x0400)) - m_fdc_ram[offset & 0x03ff] = data; - else - lisa_fdc_io_w(space, offset & 0x03ff, data); - } - } -} - -WRITE8_MEMBER(lisa_state::lisa210_fdc_w) -{ - if (! (offset & 0x1000)) - { - if (! (offset & 0x0400)) - { - if (! (offset & 0x0800)) - m_fdc_ram[offset & 0x03ff] = data; - else - lisa_fdc_io_w(space, offset & 0x03ff, data); - } - } -} - READ16_MEMBER(lisa_state::lisa_r) { int answer=0; diff --git a/src/mame/machine/m1comm.cpp b/src/mame/machine/m1comm.cpp index 38b17b14501..a395c5885cb 100644 --- a/src/mame/machine/m1comm.cpp +++ b/src/mame/machine/m1comm.cpp @@ -77,7 +77,7 @@ static ADDRESS_MAP_START( m1comm_io, AS_IO, 8, m1comm_device ) AM_RANGE(0x20, 0x2F) AM_READWRITE(dma_reg_r, dma_reg_w) AM_RANGE(0x40, 0x40) AM_READWRITE(syn_r, syn_w) AM_RANGE(0x60, 0x60) AM_READWRITE(zfg_r, zfg_w) - AM_RANGE(0xFFFF, 0xFFFF) AM_RAM + AM_RANGE(0xFF, 0xFF) AM_RAM ADDRESS_MAP_END MACHINE_CONFIG_FRAGMENT( m1comm ) From ac0dc89ec1773aada67d219f3c358c149fd5b59e Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 8 Aug 2016 20:59:48 +0300 Subject: [PATCH 086/116] pofo: Expansion WIP. (nw) --- src/devices/bus/pofo/hpc104.cpp | 78 +++-- src/devices/bus/pofo/ram.h | 2 +- src/devices/bus/pofo/rom.h | 2 +- src/mame/drivers/pofo.cpp | 495 ++++++++++++++++++++++---------- 4 files changed, 395 insertions(+), 182 deletions(-) diff --git a/src/devices/bus/pofo/hpc104.cpp b/src/devices/bus/pofo/hpc104.cpp index 7552055b2a7..5483fc72c2b 100644 --- a/src/devices/bus/pofo/hpc104.cpp +++ b/src/devices/bus/pofo/hpc104.cpp @@ -10,6 +10,14 @@ +//************************************************************************** +// MACROS / CONSTANTS +//************************************************************************** + +#define LOG 0 + + + //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** @@ -157,23 +165,28 @@ UINT8 hpc104_t::nrdi_r(address_space &space, offs_t offset, UINT8 data, bool iom { data = m_exp->nrdi_r(space, offset, data, iom, bcom, m_ncc1_out || ncc1); - if (!(!m_ncc1_out || ncc1)) + if (!iom) { - data = m_ccm->nrdi_r(space, offset & 0x1ffff); - } + if (!(!m_ncc1_out || ncc1)) + { + if (LOG) logerror("%s %s CCM0 read %05x\n", machine().time().as_string(), machine().describe_context(), offset & 0x1ffff); - if (m_sw1) - { - if (offset >= 0x5f000 && offset < 0x9f000) - { - data = m_nvram[offset - 0x5f000]; + data = m_ccm->nrdi_r(space, offset & 0x1ffff); } - } - else - { - if (offset >= 0x1f000 && offset < 0x5f000) + + if (m_sw1) { - data = m_nvram[offset - 0x1f000] = data; + if (offset >= 0x5f000 && offset < 0x9f000) + { + data = m_nvram[offset - 0x5f000]; + } + } + else + { + if (offset >= 0x1f000 && offset < 0x5f000) + { + data = m_nvram[offset - 0x1f000] = data; + } } } @@ -189,31 +202,40 @@ void hpc104_t::nwri_w(address_space &space, offs_t offset, UINT8 data, bool iom, { m_exp->nwri_w(space, offset, data, iom, bcom, m_ncc1_out || ncc1); - if (!bcom) + if (!iom) { - if ((offset & 0x0f) == 0x0c) + if (!(!m_ncc1_out || ncc1)) { - m_ncc1_out = BIT(data, 0); + if (LOG) logerror("%s %s CCM1 write %05x:%02x\n", machine().time().as_string(), machine().describe_context(), offset & 0x1ffff, data); + + m_ccm->nwri_w(space, offset & 0x1ffff, data); } - } - if (!(!m_ncc1_out || ncc1)) - { - m_ccm->nwri_w(space, offset & 0x1ffff, data); - } - - if (m_sw1) - { - if (offset >= 0x5f000 && offset < 0x9f000) + if (m_sw1) { - m_nvram[offset - 0x5f000] = data; + if (offset >= 0x5f000 && offset < 0x9f000) + { + m_nvram[offset - 0x5f000] = data; + } + } + else + { + if (offset >= 0x1f000 && offset < 0x5f000) + { + m_nvram[offset - 0x1f000] = data; + } } } else { - if (offset >= 0x1f000 && offset < 0x5f000) + if (!bcom) { - m_nvram[offset - 0x1f000] = data; + if ((offset & 0x0f) == 0x0c) + { + m_ncc1_out = BIT(data, 0); + + if (LOG) logerror("NCC1 out %u\n", machine().time().as_string(), machine().describe_context(), m_ncc1_out); + } } } } diff --git a/src/devices/bus/pofo/ram.h b/src/devices/bus/pofo/ram.h index fb8f7917890..77af70f33be 100644 --- a/src/devices/bus/pofo/ram.h +++ b/src/devices/bus/pofo/ram.h @@ -41,7 +41,7 @@ protected: virtual void nvram_write(emu_file &file) override { if (m_nvram != nullptr) { file.write(m_nvram, m_nvram.bytes()); } } // device_portfolio_memory_card_slot_interface overrides - bool cdet() override { return 0; } + virtual bool cdet() override { return 0; } virtual UINT8 nrdi_r(address_space &space, offs_t offset) override; virtual void nwri_w(address_space &space, offs_t offset, UINT8 data) override; diff --git a/src/devices/bus/pofo/rom.h b/src/devices/bus/pofo/rom.h index 4d854b5b9f8..48503fef58b 100644 --- a/src/devices/bus/pofo/rom.h +++ b/src/devices/bus/pofo/rom.h @@ -34,7 +34,7 @@ protected: virtual void device_start() override; // device_portfolio_memory_card_slot_interface overrides - bool cdet() override { return 0; } + virtual bool cdet() override { return 0; } virtual UINT8 nrdi_r(address_space &space, offs_t offset) override; }; diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index 9e92c6939e6..fb69a9fc48a 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -18,12 +18,13 @@ TODO: + - cursor is missing + - where do CDET and NMD1 connect to ?? - create chargen ROM from tech manual - - memory error interrupt vector - i/o port 8051 - screen contrast - system tick frequency selection (1 or 128 Hz) - - speaker + - soft power off */ @@ -38,6 +39,12 @@ #include "sound/speaker.h" #include "video/hd61830.h" + + +//************************************************************************** +// MACROS / CONSTANTS +//************************************************************************** + #define LOG 0 #define M80C88A_TAG "u1" @@ -45,6 +52,14 @@ #define TIMER_TICK_TAG "tick" #define SCREEN_TAG "screen" +static const UINT8 INTERRUPT_VECTOR[] = { 0x08, 0x09, 0x00 }; + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + class portfolio_state : public driver_device { public: @@ -56,6 +71,8 @@ public: m_ccm(*this, PORTFOLIO_MEMORY_CARD_SLOT_A_TAG), m_exp(*this, PORTFOLIO_EXPANSION_SLOT_TAG), m_timer_tick(*this, TIMER_TICK_TAG), + m_nvram(*this, "nvram"), + m_ram(*this, "ram"), m_rom(*this, M80C88A_TAG), m_char_rom(*this, HD61830_TAG), m_y0(*this, "Y0"), @@ -67,8 +84,7 @@ public: m_y6(*this, "Y6"), m_y7(*this, "Y7"), m_battery(*this, "BATTERY"), - m_contrast(*this, "contrast"), - m_ram(*this, RAM_TAG) + m_keylatch(0xff) { } required_device m_maincpu; @@ -77,6 +93,8 @@ public: required_device m_ccm; required_device m_exp; required_device m_timer_tick; + required_device m_nvram; + required_device m_ram; required_region_ptr m_rom; required_region_ptr m_char_rom; required_ioport m_y0; @@ -112,8 +130,11 @@ public: ROM_EXT }; - DECLARE_READ8_MEMBER( rom_b_r ); - DECLARE_WRITE8_MEMBER( rom_b_w ); + DECLARE_READ8_MEMBER( mem_r ); + DECLARE_WRITE8_MEMBER( mem_w ); + + DECLARE_READ8_MEMBER( io_r ); + DECLARE_WRITE8_MEMBER( io_w ); DECLARE_READ8_MEMBER( irq_status_r ); DECLARE_READ8_MEMBER( keyboard_r ); @@ -123,47 +144,29 @@ public: DECLARE_WRITE8_MEMBER( irq_mask_w ); DECLARE_WRITE8_MEMBER( speaker_w ); DECLARE_WRITE8_MEMBER( power_w ); - DECLARE_WRITE8_MEMBER( unknown_w ); + DECLARE_WRITE8_MEMBER( select_w ); DECLARE_WRITE8_MEMBER( counter_w ); + DECLARE_WRITE8_MEMBER( contrast_w ); DECLARE_WRITE_LINE_MEMBER( iint_w ); DECLARE_WRITE_LINE_MEMBER( eint_w ); - /* interrupt state */ - UINT8 m_ip; /* interrupt pending */ - UINT8 m_ie; /* interrupt enable */ - - /* counter state */ + UINT8 m_ip; + UINT8 m_ie; UINT16 m_counter; - - /* keyboard state */ UINT8 m_keylatch; - int m_rom_b; - /* video state */ - required_shared_ptr m_contrast; - - /* peripheral state */ DECLARE_PALETTE_INIT(portfolio); TIMER_DEVICE_CALLBACK_MEMBER(keyboard_tick); TIMER_DEVICE_CALLBACK_MEMBER(system_tick); TIMER_DEVICE_CALLBACK_MEMBER(counter_tick); DECLARE_READ8_MEMBER(hd61830_rd_r); IRQ_CALLBACK_MEMBER(portfolio_int_ack); - required_device m_ram; }; -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -static const UINT8 INTERRUPT_VECTOR[] = { 0x08, 0x09, 0x00 }; - - - //************************************************************************** // INTERRUPTS //************************************************************************** @@ -189,12 +192,33 @@ void portfolio_state::trigger_interrupt(int level) // set interrupt pending bit m_ip |= 1 << level; - //logerror("%s IP set %01x : %u\n", machine().time().as_string(), m_ip, level); - check_interrupt(); } +//------------------------------------------------- +// iint_w - internal interrupt +//------------------------------------------------- + +WRITE_LINE_MEMBER( portfolio_state::iint_w ) +{ + // TODO +} + + +//------------------------------------------------- +// eint_w - external interrupt +//------------------------------------------------- + +WRITE_LINE_MEMBER( portfolio_state::eint_w ) +{ + if (state) + { + trigger_interrupt(INT_EXTERNAL); + } +} + + //------------------------------------------------- // irq_status_r - interrupt status read //------------------------------------------------- @@ -213,7 +237,7 @@ WRITE8_MEMBER( portfolio_state::irq_mask_w ) { m_ie = data; - if (LOG) logerror("IE %02x\n", data); + if (LOG) logerror("%s %s IE %01x\n", machine().time().as_string(), machine().describe_context(), data); check_interrupt(); } @@ -234,6 +258,8 @@ IRQ_CALLBACK_MEMBER(portfolio_state::portfolio_int_ack) // clear interrupt pending bit m_ip &= ~(1 << i); + if (LOG) logerror("%s %s IP %01x\n", machine().time().as_string(), machine().describe_context(), m_ip); + if (i == 3) vector = m_exp->eack_r(); else @@ -243,8 +269,6 @@ IRQ_CALLBACK_MEMBER(portfolio_state::portfolio_int_ack) } } - //logerror("IP ack %01x\n", m_ip); - check_interrupt(); return vector; @@ -352,9 +376,9 @@ WRITE8_MEMBER( portfolio_state::speaker_w ) */ - m_speaker->level_w(!BIT(data, 7)); + if (LOG) logerror("%s %s SPEAKER %02x\n", machine().time().as_string(), machine().describe_context(), data); - if (LOG) logerror("SPEAKER %02x\n", data); + m_speaker->level_w(!BIT(data, 7)); } @@ -384,7 +408,12 @@ WRITE8_MEMBER( portfolio_state::power_w ) */ - if (LOG) logerror("POWER %02x\n", data); + if (LOG) logerror("%s %s POWER %02x\n", machine().time().as_string(), machine().describe_context(), data); + + if (BIT(data, 1)) + { + // TODO power off + } } @@ -398,36 +427,51 @@ READ8_MEMBER( portfolio_state::battery_r ) bit signal description - 0 - 1 - 2 - 3 - 4 + 0 ? 1=boots from B: + 1 ? 1=boots from external ROM + 2 ? 1=boots from B: + 3 ? 1=boots from ??? + 4 ? 5 PDET 1=peripheral connected 6 BATD? 0=battery low - 7 1=cold boot + 7 ? 1=cold boot */ UINT8 data = 0; - /* peripheral detect */ + // peripheral detect data |= m_exp->pdet_r() << 5; - /* battery status */ - data |= BIT(m_battery->read(), 0) << 6; + // battery status + data |= (m_battery->read() & 0x03) << 6; return data; } //------------------------------------------------- -// unknown_w - ? +// select_w - //------------------------------------------------- -WRITE8_MEMBER( portfolio_state::unknown_w ) +WRITE8_MEMBER( portfolio_state::select_w ) { - if (LOG) logerror("UNKNOWN %02x\n", data); + /* + + bit description + + 0 ? + 1 ? + 2 ? + 3 ? + 4 + 5 + 6 ? + 7 ? + + */ + + if (LOG) logerror("%s %s SELECT %02x\n", machine().time().as_string(), machine().describe_context(), data); switch (data & 0x0f) { @@ -464,52 +508,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(portfolio_state::counter_tick) } -//------------------------------------------------- -// rom_b_r - -//------------------------------------------------- - -READ8_MEMBER( portfolio_state::rom_b_r ) -{ - UINT8 data = 0; - - switch (m_rom_b) - { - case ROM_APP: - data = m_rom[offset]; - break; - - case CCM_A: - data = m_ccm->nrdi_r(space, offset & 0x1ffff); - break; - - case CCM_B: - // TODO this is wired thru the expansion slot - break; - - case ROM_EXT: - // TODO ??? - break; - } - - return data; -} - - -//------------------------------------------------- -// rom_b_w - -//------------------------------------------------- - -WRITE8_MEMBER( portfolio_state::rom_b_w ) -{ - switch (m_rom_b) - { - case CCM_A: - m_ccm->nwri_w(space, offset & 0x1ffff, data); - break; - } -} - - //------------------------------------------------- // counter_r - counter register read //------------------------------------------------- @@ -553,6 +551,223 @@ WRITE8_MEMBER( portfolio_state::counter_w ) +//************************************************************************** +// MEMORY MAPPING +//************************************************************************** + +//------------------------------------------------- +// mem_r - +//------------------------------------------------- + +READ8_MEMBER( portfolio_state::mem_r ) +{ + UINT8 data = 0; + + int iom = 0; + int bcom = 1; + int ncc1 = 1; + + if (offset < 0x1f000) + { + data = m_ram->read(offset); + } + else if (offset >= 0xb0000 && offset < 0xc0000) + { + data = m_ram->read(0x1f000 + (offset & 0xfff)); + } + else if (offset >= 0xc0000 && offset < 0xe0000) + { + switch (m_rom_b) + { + case ROM_APP: + data = m_rom[offset & 0x3ffff]; + break; + + case CCM_A: + if (LOG) logerror("%s %s CCM0 read %05x\n", machine().time().as_string(), machine().describe_context(), offset & 0x1ffff); + + data = m_ccm->nrdi_r(space, offset & 0x1ffff); + break; + + case CCM_B: + ncc1 = 0; + break; + + case ROM_EXT: + // TODO + break; + } + } + else if (offset >= 0xe0000) + { + data = m_rom[offset & 0x3ffff]; + } + + data = m_exp->nrdi_r(space, offset, data, iom, bcom, ncc1); + + return data; +} + + +//------------------------------------------------- +// mem_w - +//------------------------------------------------- + +WRITE8_MEMBER( portfolio_state::mem_w ) +{ + int iom = 0; + int bcom = 1; + int ncc1 = 1; + + if (offset < 0x1f000) + { + m_ram->write(offset, data); + } + else if (offset >= 0xb0000 && offset < 0xc0000) + { + m_ram->write(0x1f000 + (offset & 0xfff), data); + } + else if (offset >= 0xc0000 && offset < 0xe0000) + { + switch (m_rom_b) + { + case CCM_A: + if (LOG) logerror("%s %s CCM0 write %05x:%02x\n", machine().time().as_string(), machine().describe_context(), offset & 0x1ffff, data); + + m_ccm->nwri_w(space, offset & 0x1ffff, data); + break; + + case CCM_B: + ncc1 = 0; + break; + } + } + + m_exp->nwri_w(space, offset, data, iom, bcom, ncc1); +} + + +//------------------------------------------------- +// io_r - +//------------------------------------------------- + +READ8_MEMBER( portfolio_state::io_r ) +{ + UINT8 data = 0; + + int iom = 1; + int bcom = 1; + int ncc1 = 0; + + if ((offset & 0xff00) == 0x8000) + { + switch ((offset >> 4) & 0x0f) + { + case 0: + data = keyboard_r(space, 0); + break; + + case 1: + if (offset & 0x01) + { + data = m_lcdc->status_r(space, 0); + } + else + { + data = m_lcdc->data_r(space, 0); + } + break; + + case 4: + data = counter_r(space, offset & 0x01); + break; + + case 5: + if (offset & 0x01) + { + data = battery_r(space, 0); + } + else + { + data = irq_status_r(space, 0); + } + break; + + case 7: + bcom = 0; + break; + } + } + + data = m_exp->nrdi_r(space, offset, data, iom, bcom, ncc1); + + return data; +} + + +//------------------------------------------------- +// io_w - +//------------------------------------------------- + +WRITE8_MEMBER( portfolio_state::io_w ) +{ + int iom = 1; + int bcom = 1; + int ncc1 = 0; + + if ((offset & 0xff00) == 0x8000) + { + switch ((offset >> 4) & 0x0f) + { + case 1: + if (offset & 0x01) + { + m_lcdc->control_w(space, 0, data); + } + else + { + m_lcdc->data_w(space, 0, data); + } + break; + + case 2: + speaker_w(space, 0, data); + break; + + case 3: + power_w(space, 0, data); + break; + + case 4: + counter_w(space, offset & 0x01, data); + break; + + case 5: + if (offset & 0x01) + { + select_w(space, 0, data); + } + else + { + irq_mask_w(space, 0, data); + } + break; + + case 6: + contrast_w(space, 0, data); + break; + + case 7: + bcom = 0; + break; + } + } + + m_exp->nwri_w(space, offset, data, iom, bcom, ncc1); +} + + + //************************************************************************** // ADDRESS MAPS //************************************************************************** @@ -562,11 +777,7 @@ WRITE8_MEMBER( portfolio_state::counter_w ) //------------------------------------------------- static ADDRESS_MAP_START( portfolio_mem, AS_PROGRAM, 8, portfolio_state ) - AM_RANGE(0x00000, 0x1efff) AM_RAM AM_SHARE("nvram1") - AM_RANGE(0x1f000, 0x9efff) AM_RAM // expansion - AM_RANGE(0xb0000, 0xb0fff) AM_MIRROR(0xf000) AM_RAM AM_SHARE("nvram2") // video RAM - AM_RANGE(0xc0000, 0xdffff) AM_READWRITE(rom_b_r, rom_b_w) - AM_RANGE(0xe0000, 0xfffff) AM_ROM AM_REGION(M80C88A_TAG, 0x20000) + AM_RANGE(0x00000, 0xfffff) AM_READWRITE(mem_r, mem_w) ADDRESS_MAP_END @@ -575,15 +786,7 @@ ADDRESS_MAP_END //------------------------------------------------- static ADDRESS_MAP_START( portfolio_io, AS_IO, 8, portfolio_state ) - AM_RANGE(0x8000, 0x8000) AM_READ(keyboard_r) - AM_RANGE(0x8010, 0x8010) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, data_r, data_w) - AM_RANGE(0x8011, 0x8011) AM_DEVREADWRITE(HD61830_TAG, hd61830_device, status_r, control_w) - AM_RANGE(0x8020, 0x8020) AM_WRITE(speaker_w) - AM_RANGE(0x8030, 0x8030) AM_WRITE(power_w) - AM_RANGE(0x8040, 0x8041) AM_READWRITE(counter_r, counter_w) - AM_RANGE(0x8050, 0x8050) AM_READWRITE(irq_status_r, irq_mask_w) - AM_RANGE(0x8051, 0x8051) AM_READWRITE(battery_r, unknown_w) - AM_RANGE(0x8060, 0x8060) AM_RAM AM_SHARE("contrast") + AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_r, io_w) ADDRESS_MAP_END @@ -681,6 +884,9 @@ static INPUT_PORTS_START( portfolio ) PORT_CONFNAME( 0x01, 0x01, "Battery Status" ) PORT_CONFSETTING( 0x01, DEF_STR( Normal ) ) PORT_CONFSETTING( 0x00, "Low Battery" ) + PORT_CONFNAME( 0x02, 0x00, "Boot" ) + PORT_CONFSETTING( 0x02, "Cold" ) + PORT_CONFSETTING( 0x00, "Warm" ) INPUT_PORTS_END @@ -689,6 +895,20 @@ INPUT_PORTS_END // VIDEO //************************************************************************** +//------------------------------------------------- +// contrast_w - +//------------------------------------------------- + +WRITE8_MEMBER( portfolio_state::contrast_w ) +{ + if (LOG) logerror("%s %s CONTRAST %02x\n", machine().time().as_string(), machine().describe_context(), data); +} + + +//------------------------------------------------- +// PALETTE_INIT( portfolio ) +//------------------------------------------------- + PALETTE_INIT_MEMBER(portfolio_state, portfolio) { palette.set_pen_color(0, rgb_t(138, 146, 148)); @@ -735,21 +955,6 @@ GFXDECODE_END -//************************************************************************** -// DEVICE CONFIGURATION -//************************************************************************** - -WRITE_LINE_MEMBER( portfolio_state::iint_w ) -{ -} - -WRITE_LINE_MEMBER( portfolio_state::eint_w ) -{ - if (state) - trigger_interrupt(INT_EXTERNAL); -} - - //************************************************************************** // MACHINE INITIALIZATION //************************************************************************** @@ -760,29 +965,14 @@ WRITE_LINE_MEMBER( portfolio_state::eint_w ) void portfolio_state::machine_start() { - address_space &program = m_maincpu->space(AS_PROGRAM); + m_nvram->set_base(m_ram->pointer(), m_ram->size()); - /* memory expansions */ - switch (m_ram->size()) - { - case 128 * 1024: - program.unmap_readwrite(0x1f000, 0x9efff); - break; - - case 384 * 1024: - program.unmap_readwrite(0x5f000, 0x9efff); - break; - } - - /* set initial values */ - m_keylatch = 0xff; - - /* register for state saving */ + // state saving save_item(NAME(m_ip)); save_item(NAME(m_ie)); save_item(NAME(m_counter)); save_item(NAME(m_keylatch)); - save_pointer(NAME(m_contrast.target()), m_contrast.bytes()); + save_item(NAME(m_rom_b)); } @@ -792,6 +982,9 @@ void portfolio_state::machine_start() void portfolio_state::machine_reset() { + m_lcdc->reset(); + + m_exp->reset(); } @@ -805,13 +998,13 @@ void portfolio_state::machine_reset() //------------------------------------------------- static MACHINE_CONFIG_START( portfolio, portfolio_state ) - /* basic machine hardware */ + // basic machine hardware MCFG_CPU_ADD(M80C88A_TAG, I8088, XTAL_4_9152MHz) MCFG_CPU_PROGRAM_MAP(portfolio_mem) MCFG_CPU_IO_MAP(portfolio_io) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(portfolio_state,portfolio_int_ack) - /* video hardware */ + // video hardware MCFG_SCREEN_ADD(SCREEN_TAG, LCD) MCFG_SCREEN_REFRESH_RATE(72) MCFG_SCREEN_UPDATE_DEVICE(HD61830_TAG, hd61830_device, screen_update) @@ -830,7 +1023,7 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_HD61830_RD_CALLBACK(READ8(portfolio_state, hd61830_rd_r)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - /* sound hardware */ + // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) @@ -847,19 +1040,17 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("counter", portfolio_state, counter_tick, attotime::from_hz(XTAL_32_768kHz/16384)) MCFG_TIMER_DRIVER_ADD_PERIODIC(TIMER_TICK_TAG, portfolio_state, system_tick, attotime::from_hz(XTAL_32_768kHz/32768)) - /* fake keyboard */ + // fake keyboard MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", portfolio_state, keyboard_tick, attotime::from_usec(2500)) - /* software lists */ + // software list MCFG_SOFTWARE_LIST_ADD("cart_list", "pofo") - /* internal ram */ + // internal ram MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("128K") - MCFG_RAM_EXTRA_OPTIONS("384K,640K") - MCFG_NVRAM_ADD_RANDOM_FILL("nvram1") - MCFG_NVRAM_ADD_RANDOM_FILL("nvram2") + MCFG_NVRAM_ADD_RANDOM_FILL("nvram") MACHINE_CONFIG_END @@ -888,5 +1079,5 @@ ROM_END // SYSTEM DRIVERS //************************************************************************** -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1989, pofo, 0, 0, portfolio, portfolio, driver_device, 0, "Atari", "Portfolio", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS +COMP( 1989, pofo, 0, 0, portfolio, portfolio, driver_device, 0, "Atari", "Portfolio", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) From 86994a37021b1b7c7a3c0fb98a67d972befcbb5c Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 8 Aug 2016 21:14:25 +0300 Subject: [PATCH 087/116] pofo: Better palette. (nw) --- src/mame/drivers/pofo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index fb69a9fc48a..cf4fdd2a8d8 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -911,8 +911,8 @@ WRITE8_MEMBER( portfolio_state::contrast_w ) PALETTE_INIT_MEMBER(portfolio_state, portfolio) { - palette.set_pen_color(0, rgb_t(138, 146, 148)); - palette.set_pen_color(1, rgb_t(92, 83, 88)); + palette.set_pen_color(0, rgb_t(142, 193, 172)); + palette.set_pen_color(1, rgb_t(67, 71, 151)); } From 50de0788363edd672a3af13e8a5e8d922837e759 Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Sun, 10 Jul 2016 16:25:04 +0300 Subject: [PATCH 088/116] ms7004: enable serial rx and re-add PORT_CODEs for F17..F20 --- src/mame/machine/ms7004.cpp | 28 ++++++++++++++++++---------- src/mame/machine/ms7004.h | 7 +++++++ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/mame/machine/ms7004.cpp b/src/mame/machine/ms7004.cpp index fb8ca4068cb..1e5cca40e0a 100644 --- a/src/mame/machine/ms7004.cpp +++ b/src/mame/machine/ms7004.cpp @@ -316,8 +316,8 @@ INPUT_PORTS_START( ms7004 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 0") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) PORT_START("KBD0") // vertical row 15 - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F17") //PORT_CODE(KEYCODE_F17) PORT_CHAR(UCHAR_MAMEKEY(F17)) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F18") //PORT_CODE(KEYCODE_F18) PORT_CHAR(UCHAR_MAMEKEY(F18)) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F17") PORT_CODE(KEYCODE_F17) PORT_CHAR(UCHAR_MAMEKEY(F17)) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F18") PORT_CODE(KEYCODE_F18) PORT_CHAR(UCHAR_MAMEKEY(F18)) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF2") PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF3") PORT_CODE(KEYCODE_ASTERISK) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 8") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) @@ -326,8 +326,8 @@ INPUT_PORTS_START( ms7004 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) PORT_START("KBD4") // vertical row 16 - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F19") //PORT_CODE(KEYCODE_F19) PORT_CHAR(UCHAR_MAMEKEY(F19)) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F20") //PORT_CODE(KEYCODE_F20) PORT_CHAR(UCHAR_MAMEKEY(F20)) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F19") PORT_CODE(KEYCODE_F19) PORT_CHAR(UCHAR_MAMEKEY(F19)) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F20") PORT_CODE(KEYCODE_F20) PORT_CHAR(UCHAR_MAMEKEY(F20)) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF4") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num ,") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) @@ -375,7 +375,8 @@ ms7004_device::ms7004_device(const machine_config &mconfig, const char *tag, dev m_kbd13(*this, "KBD13"), m_kbd14(*this, "KBD14"), m_kbd15(*this, "KBD15"), - m_tx_handler(*this) + m_tx_handler(*this), + m_rts_handler(*this) { } @@ -386,6 +387,7 @@ ms7004_device::ms7004_device(const machine_config &mconfig, const char *tag, dev void ms7004_device::device_start() { m_tx_handler.resolve_safe(); + m_rts_handler.resolve_safe(); } @@ -395,9 +397,15 @@ void ms7004_device::device_start() void ms7004_device::device_reset() { + m_rts_handler(0); } +WRITE_LINE_MEMBER( ms7004_device::write_rxd ) +{ + DBG_LOG(1,0,("write_rxd %d\n", state)); +} + //------------------------------------------------- // p1_w - //------------------------------------------------- @@ -441,7 +449,7 @@ WRITE8_MEMBER( ms7004_device::p2_w ) 6 LED "Caps" 7 LED "Hold" */ - DBG_LOG(2,0,( "%s: p2_w %02x = col %d\n", tag(), data, data&15)); + DBG_LOG(2,0,( "p2_w %02x = col %d\n", data, data&15)); m_p2 = data; m_i8243->i8243_p2_w(space, offset, data); @@ -456,8 +464,8 @@ WRITE8_MEMBER( ms7004_device::i8243_port_w ) { int sense = 0; - DBG_LOG(2,0,( "%s: 8243 port %d data %02xH\n", - tag(), offset + 4, data)); + DBG_LOG(2,0,( "8243 port %d data %02xH\n", + offset + 4, data)); if (data) { switch(offset << 4 | data) { @@ -480,8 +488,8 @@ WRITE8_MEMBER( ms7004_device::i8243_port_w ) } m_keylatch = BIT(sense, (m_p1 & 7)); if (m_keylatch) - DBG_LOG(1,0,( "%s: row %d col %02x t1 %d\n", - tag(), (m_p1 & 7), (offset << 4 | data), m_keylatch)); + DBG_LOG(1,0,( "row %d col %02x t1 %d\n", + (m_p1 & 7), (offset << 4 | data), m_keylatch)); } } diff --git a/src/mame/machine/ms7004.h b/src/mame/machine/ms7004.h index cbf36f3f311..ef9e9608d25 100644 --- a/src/mame/machine/ms7004.h +++ b/src/mame/machine/ms7004.h @@ -22,6 +22,9 @@ #define MCFG_MS7004_TX_HANDLER(_cb) \ devcb = &ms7004_device::set_tx_handler(*device, DEVCB_##_cb); +#define MCFG_MS7004_RTS_HANDLER(_cb) \ + devcb = &ms7004_device::set_rts_handler(*device, DEVCB_##_cb); + //************************************************************************** // TYPE DEFINITIONS @@ -36,12 +39,15 @@ public: ms7004_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); template static devcb_base &set_tx_handler(device_t &device, _Object wr) { return downcast(device).m_tx_handler.set_callback(wr); } + template static devcb_base &set_rts_handler(device_t &device, _Object wr) { return downcast(device).m_rts_handler.set_callback(wr); } DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_WRITE8_MEMBER( p2_w ); DECLARE_READ8_MEMBER( t1_r ); DECLARE_WRITE8_MEMBER( i8243_port_w ); + DECLARE_WRITE_LINE_MEMBER( write_rxd ); + protected: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; @@ -77,6 +83,7 @@ private: UINT8 m_p2; devcb_write_line m_tx_handler; + devcb_write_line m_rts_handler; }; // device type definition From 77e2e34f57e00792ac29fe0c3acda4ae1b534dea Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Mon, 18 Jul 2016 02:05:40 +0300 Subject: [PATCH 089/116] dvk_ksm: drop dvk_ksm01 variant and merge ROM sets; minor cleanup --- src/mame/drivers/dvk_ksm.cpp | 35 ++++++++++------------------------- src/mame/mame.lst | 1 - 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp index 60cfee34578..855be480138 100644 --- a/src/mame/drivers/dvk_ksm.cpp +++ b/src/mame/drivers/dvk_ksm.cpp @@ -11,7 +11,13 @@ Hardware revisions (XXX verify everything): - 7.102.076 -- has DIP switches, SRAM at 0x2000, model name "KSM" - - 7.102.228 -- no DIP switches, SRAM at 0x2100, model name "KSM-01" + - 7.102.228 -- no DIP switches, ?? SRAM at 0x2100, model name "KSM-01" + + Two sets of dumps exist: + - one puts SRAM at 0x2000, which is where technical manual puts it, + but chargen has 1 missing pixel in 'G' character. + - another puts SRAM at 0x2100, but has no missing pixel. + Merge them for now into one (SRAM at 0x2000 and no missing pixel). Emulates a VT52 without copier (ESC Z response is ESC / M), with Hold Screen mode and Graphics character set (but it is unique and @@ -49,7 +55,7 @@ ksm|DVK KSM, To do: - verify if pixel stretching is done by hw - verify details of hw revisions (memory map, DIP presence...) - - baud rate selection (missing feature in bitbanger) + - baud rate selection ****************************************************************************/ @@ -222,8 +228,7 @@ WRITE8_MEMBER(ksm_state::ksm_ppi_portc_w) WRITE_LINE_MEMBER(ksm_state::write_keyboard_clock) { -// KSM never sends data to keyboard -// m_i8251kbd->write_txc(state); + m_i8251kbd->write_txc(state); m_i8251kbd->write_rxc(state); } @@ -335,8 +340,7 @@ static MACHINE_CONFIG_START( ksm, ksm_state ) MCFG_CPU_IO_MAP(ksm_io) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb) - MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", ksm_state, scanline_callback, attotime::from_hz(50*28*11)) - MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL_15_4MHz/KSM_HORZ_START)) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ksm_state, scanline_callback, "screen", 0, 1) MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green) MCFG_SCREEN_UPDATE_DRIVER(ksm_state, screen_update) @@ -383,29 +387,11 @@ static MACHINE_CONFIG_START( ksm, ksm_state ) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(ksm_state, write_keyboard_clock)) MACHINE_CONFIG_END - -/* - Assumes that SRAM is at 0x2000, which is where technical manual puts it. - Chargen has 1 missing pixel in 'G' character. -*/ ROM_START( dvk_ksm ) ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00) ROM_LOAD( "ksm_04_rom0_d32.bin", 0x0000, 0x0800, CRC(6ad62715) SHA1(20f8f95119bc7fc6e0f16c67864e339a86edb44d)) ROM_LOAD( "ksm_05_rom1_d33.bin", 0x0800, 0x0800, CRC(5b29bcd2) SHA1(1f4f82c2f88f1e8615ec02076559dc606497e654)) - ROM_REGION(0x0800, "chargen", ROMREGION_ERASE00) - ROM_LOAD("ksm_03_cg_d31.bin", 0x0000, 0x0800, CRC(98853aa7) SHA1(09b8e1b5b10a00c0b0ae7e36ad1328113d31230a)) -ROM_END - -/* - Assumes that SRAM is at 0x2100, otherwise identical. - Chargen has no missing pixels in 'G' character. -*/ -ROM_START( dvk_ksm01 ) - ROM_REGION(0x1000, "maincpu", ROMREGION_ERASE00) - ROM_LOAD( "ksm_04_rom0_d32.bin", 0x0000, 0x0800, CRC(5276dc9a) SHA1(dd41dfb4cb3f1cf22d96d95f1ff6a27fe4eb9a38)) - ROM_LOAD( "ksm_05_rom1_d33.bin", 0x0800, 0x0800, CRC(5b29bcd2) SHA1(1f4f82c2f88f1e8615ec02076559dc606497e654)) - ROM_REGION(0x0800, "chargen", ROMREGION_ERASE00) ROM_LOAD("ksm_03_cg_d31.bin", 0x0000, 0x0800, CRC(6a8477e2) SHA1(c7871a96f135db05c3c8d718fbdf1728e22e72b7)) ROM_END @@ -414,4 +400,3 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ COMP( 1986, dvk_ksm, 0, 0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM", 0) -COMP( 198?, dvk_ksm01,dvk_ksm,0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM-01", 0) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e3534e65d86..b82ddc9d18c 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -11178,7 +11178,6 @@ dvk_kcgd // @source:dvk_ksm.cpp dvk_ksm // -dvk_ksm01 // @source:dwarfd.cpp dwarfd // (c) 198? Electro-Sports From 01844ed061534e6a6da9f47626b7a11019908fb5 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Mon, 8 Aug 2016 19:51:32 -0400 Subject: [PATCH 090/116] More softlist-related conversions of strings to std::string --- src/emu/diimage.cpp | 28 ++++++++++++++-------------- src/emu/diimage.h | 6 +++--- src/emu/softlist_dev.cpp | 12 ++++++------ src/emu/softlist_dev.h | 4 ++-- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index d8f9a2ee7e8..9120191c3ae 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -1038,7 +1038,7 @@ image_init_result device_image_interface::load_software(const std::string &softl // Check if there's a software list defined for this device and use that if we're not creating an image std::string list_name; - bool softload = load_software_part(softlist_name.c_str(), m_software_part_ptr, &list_name); + bool softload = load_software_part(softlist_name, m_software_part_ptr, &list_name); if (!softload) { m_is_loading = false; @@ -1272,7 +1272,7 @@ void device_image_interface::update_names(const device_type device_type, const c // case. //------------------------------------------------- -void device_image_interface::software_name_split(const char *swlist_swname, std::string &swlist_name, std::string &swname, std::string &swpart) +void device_image_interface::software_name_split(const std::string &swlist_swname, std::string &swlist_name, std::string &swname, std::string &swpart) { // reset all output parameters swlist_name.clear(); @@ -1280,26 +1280,26 @@ void device_image_interface::software_name_split(const char *swlist_swname, std: swpart.clear(); // if no colon, this is the swname by itself - const char *split1 = strchr(swlist_swname, ':'); - if (split1 == nullptr) + auto split1 = swlist_swname.find_first_of(':'); + if (split1 == std::string::npos) { - swname.assign(swlist_swname); + swname = swlist_swname; return; } // if one colon, it is the swname and swpart alone - const char *split2 = strchr(split1 + 1, ':'); - if (split2 == nullptr) + auto split2 = swlist_swname.find_first_of(':', split1 + 1); + if (split2 == std::string::npos) { - swname.assign(swlist_swname, split1 - swlist_swname); - swpart.assign(split1 + 1); + swname = swlist_swname.substr(0, split1); + swpart = swlist_swname.substr(split1 + 1); return; } // if two colons present, split into 3 parts - swlist_name.assign(swlist_swname, split1 - swlist_swname); - swname.assign(split1 + 1, split2 - (split1 + 1)); - swpart.assign(split2 + 1); + swlist_name = swlist_swname.substr(0, split1); + swname = swlist_swname.substr(split1 + 1, split2 - (split1 + 1)); + swpart = swlist_swname.substr(split2 + 1); } @@ -1307,7 +1307,7 @@ void device_image_interface::software_name_split(const char *swlist_swname, std: // find_software_item //------------------------------------------------- -const software_part *device_image_interface::find_software_item(const char *path, bool restrict_to_interface, software_list_device **dev) const +const software_part *device_image_interface::find_software_item(const std::string &path, bool restrict_to_interface, software_list_device **dev) const { // split full software name into software list name and short software name std::string swlist_name, swinfo_name, swpart_name; @@ -1386,7 +1386,7 @@ const software_list_loader &device_image_interface::get_software_list_loader() c // sw_info and sw_part are also set. //------------------------------------------------- -bool device_image_interface::load_software_part(const char *path, const software_part *&swpart, std::string *list_name) +bool device_image_interface::load_software_part(const std::string &path, const software_part *&swpart, std::string *list_name) { // if no match has been found, we suggest similar shortnames software_list_device *swlist; diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 34d48c87615..8156050884b 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -239,7 +239,7 @@ public: bool load_software(software_list_device &swlist, const char *swname, const rom_entry *entry); int reopen_for_write(const std::string &path); - static void software_name_split(const char *swlist_swname, std::string &swlist_name, std::string &swname, std::string &swpart); + static void software_name_split(const std::string &swlist_swname, std::string &swlist_name, std::string &swname, std::string &swpart); static void static_set_user_loadable(device_t &device, bool user_loadable) { device_image_interface *img; if (!device.interface(img)) @@ -272,8 +272,8 @@ protected: void image_checkhash(); void update_names(const device_type device_type = nullptr, const char *inst = nullptr, const char *brief = nullptr); - const software_part *find_software_item(const char *path, bool restrict_to_interface, software_list_device **device = nullptr) const; - bool load_software_part(const char *path, const software_part *&swpart, std::string *list_name = nullptr); + const software_part *find_software_item(const std::string &path, bool restrict_to_interface, software_list_device **device = nullptr) const; + bool load_software_part(const std::string &path, const software_part *&swpart, std::string *list_name = nullptr); std::string software_get_default_slot(const char *default_card_slot) const; void add_format(std::unique_ptr &&format); diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index eac92c08939..a7ad66fb3a2 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -128,10 +128,10 @@ void software_list_device::device_start() // and optional interface //------------------------------------------------- -void software_list_device::find_approx_matches(const char *name, int matches, const software_info **list, const char *interface) +void software_list_device::find_approx_matches(const std::string &name, int matches, const software_info **list, const char *interface) { // if no name, return - if (name == nullptr || name[0] == 0) + if (name.empty()) return; // initialize everyone's states @@ -149,8 +149,8 @@ void software_list_device::find_approx_matches(const char *name, int matches, co if ((interface == nullptr || part.matches_interface(interface)) && is_compatible(part) == SOFTWARE_IS_COMPATIBLE) { // pick the best match between driver name and description - int longpenalty = driver_list::penalty_compare(name, swinfo.longname().c_str()); - int shortpenalty = driver_list::penalty_compare(name, swinfo.shortname().c_str()); + int longpenalty = driver_list::penalty_compare(name.c_str(), swinfo.longname().c_str()); + int shortpenalty = driver_list::penalty_compare(name.c_str(), swinfo.shortname().c_str()); int curpenalty = std::min(longpenalty, shortpenalty); // insert into the sorted table of matches @@ -209,13 +209,13 @@ software_list_device *software_list_device::find_by_name(const machine_config &c // name, across all software list devices //------------------------------------------------- -void software_list_device::display_matches(const machine_config &config, const char *interface, const char *name) +void software_list_device::display_matches(const machine_config &config, const char *interface, const std::string &name) { // check if there is at least one software list software_list_device_iterator deviter(config.root_device()); if (deviter.first() != nullptr) osd_printf_error("\n\"%s\" approximately matches the following\n" - "supported software items (best match first):\n\n", name); + "supported software items (best match first):\n\n", name.c_str()); // iterate through lists for (software_list_device &swlistdev : deviter) diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h index 49ab4fad1ff..dd3b92940ae 100644 --- a/src/emu/softlist_dev.h +++ b/src/emu/softlist_dev.h @@ -152,13 +152,13 @@ public: // operations const software_info *find(const char *look_for); - void find_approx_matches(const char *name, int matches, const software_info **list, const char *interface); + void find_approx_matches(const std::string &name, int matches, const software_info **list, const char *interface); void release(); software_compatibility is_compatible(const software_part &part) const; // static helpers static software_list_device *find_by_name(const machine_config &mconfig, const std::string &name); - static void display_matches(const machine_config &config, const char *interface, const char *name); + static void display_matches(const machine_config &config, const char *interface, const std::string &name); static device_image_interface *find_mountable_image(const machine_config &mconfig, const software_part &part); protected: From f09bc3136338c31f5c2092f94ee0f1e9820b5ebb Mon Sep 17 00:00:00 2001 From: briantro Date: Tue, 9 Aug 2016 01:05:44 -0500 Subject: [PATCH 091/116] apple2gs.cpp - Fix rom load for 03 rom - NW Seems on real hardware the high address line for FE-FF rom is swapped so we need to do this manually as we load the rom. Confirmation that the current rom image is correct via several sources dating back to at least 2012. --- src/mame/drivers/apple2gs.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/apple2gs.cpp b/src/mame/drivers/apple2gs.cpp index ca65f5fdfd1..11c62e0b299 100644 --- a/src/mame/drivers/apple2gs.cpp +++ b/src/mame/drivers/apple2gs.cpp @@ -451,7 +451,8 @@ ROM_START(apple2gs) // 341-0728 is the MASK rom version while 341-0737 is the EPROM version - SAME data. ROM_LOAD("341-0728", 0x00000, 0x20000, CRC(8d410067) SHA1(c0f4704233ead14cb8e1e8a68fbd7063c56afd27) ) /* 341-0728: IIgs ROM03 FC-FD */ // 341-0748 is the MASK rom version while 341-0749 is the EPROM version - SAME data. - ROM_LOAD("341-0748", 0x20000, 0x20000, CRC(18190283) SHA1(c70576869deec92ca82c78438b1d5c686eac7480) ) /* 341-0748: IIgs ROM03 FE-FF */ + ROM_LOAD("341-0748", 0x30000, 0x10000, CRC(18190283) SHA1(c70576869deec92ca82c78438b1d5c686eac7480) ) /* 341-0748: IIgs ROM03 FE-FF */ + ROM_CONTINUE ( 0x20000, 0x10000) /* high address line is inverted on PCB? */ ROM_REGION(0x20000, "es5503", ROMREGION_ERASE00) From cf9502a61cfe5bd29595032df239a33ac2c74615 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Tue, 9 Aug 2016 09:04:30 +0200 Subject: [PATCH 092/116] Synced BGFX so it can compile with clang 4.0 (nw) --- .../bgfx/3rdparty/ocornut-imgui/imgui.cpp | 42 +++++--- 3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h | 13 +-- .../3rdparty/ocornut-imgui/imgui_demo.cpp | 3 +- .../3rdparty/ocornut-imgui/imgui_internal.h | 3 - .../bgfx/3rdparty/ocornut-imgui/imgui_wm.cpp | 4 +- 3rdparty/bgfx/examples/common/imgui/imgui.cpp | 6 +- 3rdparty/bgfx/examples/common/imgui/imgui.h | 4 +- .../examples/common/nanovg/nanovg_bgfx.cpp | 99 +++++++++++++++---- .../bgfx/examples/common/nanovg/nanovg_bgfx.h | 36 ++++++- 3rdparty/bgfx/src/renderer_mtl.h | 10 ++ 3rdparty/bgfx/src/renderer_mtl.mm | 7 ++ 11 files changed, 175 insertions(+), 52 deletions(-) diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp index e3c3b915d2c..623ac90a4c9 100644 --- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp +++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.cpp @@ -209,15 +209,15 @@ - 2015/05/27 (1.40) - removed the third 'repeat_if_held' parameter from Button() - sorry! it was rarely used and inconsistent. Use PushButtonRepeat(true) / PopButtonRepeat() to enable repeat on desired buttons. - 2015/05/11 (1.40) - changed BeginPopup() API, takes a string identifier instead of a bool. ImGui needs to manage the open/closed state of popups. Call OpenPopup() to actually set the "open" state of a popup. BeginPopup() returns true if the popup is opened. - 2015/05/03 (1.40) - removed style.AutoFitPadding, using style.WindowPadding makes more sense (the default values were already the same). - - 2015/04/13 (1.38) - renamed IsClipped() to IsRectClipped(). Kept inline redirection function (will obsolete). + - 2015/04/13 (1.38) - renamed IsClipped() to IsRectClipped(). Kept inline redirection function until 1.50. - 2015/04/09 (1.38) - renamed ImDrawList::AddArc() to ImDrawList::AddArcFast() for compatibility with future API - 2015/04/03 (1.38) - removed ImGuiCol_CheckHovered, ImGuiCol_CheckActive, replaced with the more general ImGuiCol_FrameBgHovered, ImGuiCol_FrameBgActive. - 2014/04/03 (1.38) - removed support for passing -FLT_MAX..+FLT_MAX as the range for a SliderFloat(). Use DragFloat() or Inputfloat() instead. - - 2015/03/17 (1.36) - renamed GetItemBoxMin()/GetItemBoxMax()/IsMouseHoveringBox() to GetItemRectMin()/GetItemRectMax()/IsMouseHoveringRect(). Kept inline redirection function (will obsolete). + - 2015/03/17 (1.36) - renamed GetItemBoxMin()/GetItemBoxMax()/IsMouseHoveringBox() to GetItemRectMin()/GetItemRectMax()/IsMouseHoveringRect(). Kept inline redirection function until 1.50. - 2015/03/15 (1.36) - renamed style.TreeNodeSpacing to style.IndentSpacing, ImGuiStyleVar_TreeNodeSpacing to ImGuiStyleVar_IndentSpacing - - 2015/03/13 (1.36) - renamed GetWindowIsFocused() to IsWindowFocused(). Kept inline redirection function (will obsolete). + - 2015/03/13 (1.36) - renamed GetWindowIsFocused() to IsWindowFocused(). Kept inline redirection function until 1.50. - 2015/03/08 (1.35) - renamed style.ScrollBarWidth to style.ScrollbarWidth (casing) - - 2015/02/27 (1.34) - renamed OpenNextNode(bool) to SetNextTreeNodeOpened(bool, ImGuiSetCond). Kept inline redirection function (will obsolete). + - 2015/02/27 (1.34) - renamed OpenNextNode(bool) to SetNextTreeNodeOpened(bool, ImGuiSetCond). Kept inline redirection function until 1.50. - 2015/02/27 (1.34) - renamed ImGuiSetCondition_*** to ImGuiSetCond_***, and _FirstUseThisSession becomes _Once. - 2015/02/11 (1.32) - changed text input callback ImGuiTextEditCallback return type from void-->int. reserved for future use, return 0 for now. - 2015/02/10 (1.32) - renamed GetItemWidth() to CalcItemWidth() to clarify its evolving behavior @@ -1202,6 +1202,20 @@ ImU32 ImGui::ColorConvertFloat4ToU32(const ImVec4& in) return out; } +ImU32 ImGui::GetColorU32(ImGuiCol idx, float alpha_mul) +{ + ImVec4 c = GImGui->Style.Colors[idx]; + c.w *= GImGui->Style.Alpha * alpha_mul; + return ImGui::ColorConvertFloat4ToU32(c); +} + +ImU32 ImGui::GetColorU32(const ImVec4& col) +{ + ImVec4 c = col; + c.w *= GImGui->Style.Alpha; + return ImGui::ColorConvertFloat4ToU32(c); +} + // Convert rgb floats ([0-1],[0-1],[0-1]) to hsv floats ([0-1],[0-1],[0-1]), from Foley & van Dam p592 // Optimized http://lolengine.net/blog/2013/01/13/fast-rgb-to-hsv void ImGui::ColorConvertRGBtoHSV(float r, float g, float b, float& out_h, float& out_s, float& out_v) @@ -1841,7 +1855,7 @@ void ImGui::ItemSize(const ImVec2& size, float text_offset_y) window->DC.CursorMaxPos.x = ImMax(window->DC.CursorMaxPos.x, window->DC.CursorPosPrevLine.x); window->DC.CursorMaxPos.y = ImMax(window->DC.CursorMaxPos.y, window->DC.CursorPos.y); - //window->DrawList->AddCircle(window->DC.CursorMaxPos, 3.0f, 0xFF0000FF, 4); // Debug + //window->DrawList->AddCircle(window->DC.CursorMaxPos, 3.0f, IM_COL32(255,0,0,255), 4); // Debug window->DC.PrevLineHeight = line_height; window->DC.PrevLineTextBaseOffset = text_base_offset; @@ -2693,10 +2707,10 @@ void ImGui::Render() const ImVec2 size = cursor_data.Size; const ImTextureID tex_id = g.IO.Fonts->TexID; g.OverlayDrawList.PushTextureID(tex_id); - g.OverlayDrawList.AddImage(tex_id, pos+ImVec2(1,0), pos+ImVec2(1,0) + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], 0x30000000); // Shadow - g.OverlayDrawList.AddImage(tex_id, pos+ImVec2(2,0), pos+ImVec2(2,0) + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], 0x30000000); // Shadow - g.OverlayDrawList.AddImage(tex_id, pos, pos + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], 0xFF000000); // Black border - g.OverlayDrawList.AddImage(tex_id, pos, pos + size, cursor_data.TexUvMin[0], cursor_data.TexUvMax[0], 0xFFFFFFFF); // White fill + g.OverlayDrawList.AddImage(tex_id, pos+ImVec2(1,0), pos+ImVec2(1,0) + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], IM_COL32(0,0,0,48)); // Shadow + g.OverlayDrawList.AddImage(tex_id, pos+ImVec2(2,0), pos+ImVec2(2,0) + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], IM_COL32(0,0,0,48)); // Shadow + g.OverlayDrawList.AddImage(tex_id, pos, pos + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], IM_COL32(0,0,0,255)); // Black border + g.OverlayDrawList.AddImage(tex_id, pos, pos + size, cursor_data.TexUvMin[0], cursor_data.TexUvMax[0], IM_COL32(255,255,255,255)); // White fill g.OverlayDrawList.PopTextureID(); } if (!g.OverlayDrawList.VtxBuffer.empty()) @@ -6172,7 +6186,7 @@ void ImGui::BulletTextV(const char* fmt, va_list args) const char* text_begin = g.TempBuffer; const char* text_end = text_begin + ImFormatStringV(g.TempBuffer, IM_ARRAYSIZE(g.TempBuffer), fmt, args); - const ImVec2 label_size = CalcTextSize(text_begin, text_end, true); + const ImVec2 label_size = CalcTextSize(text_begin, text_end, false); const float text_base_offset_y = ImMax(0.0f, window->DC.CurrentLineTextBaseOffset); // Latch before ItemSize changes it const float line_height = ImMax(ImMin(window->DC.CurrentLineHeight, g.FontSize + g.Style.FramePadding.y*2), g.FontSize); const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(g.FontSize + (label_size.x > 0.0f ? (label_size.x + style.FramePadding.x*2) : 0.0f), ImMax(line_height, label_size.y))); // Empty text doesn't add padding @@ -6182,7 +6196,7 @@ void ImGui::BulletTextV(const char* fmt, va_list args) // Render RenderBullet(bb.Min + ImVec2(style.FramePadding.x + g.FontSize*0.5f, line_height*0.5f)); - RenderText(bb.Min+ImVec2(g.FontSize + style.FramePadding.x*2, text_base_offset_y), text_begin, text_end); + RenderText(bb.Min+ImVec2(g.FontSize + style.FramePadding.x*2, text_base_offset_y), text_begin, text_end, false); } void ImGui::BulletText(const char* fmt, ...) @@ -9108,6 +9122,12 @@ bool ImGui::IsRectVisible(const ImVec2& size) return window->ClipRect.Overlaps(ImRect(window->DC.CursorPos, window->DC.CursorPos + size)); } +bool ImGui::IsRectVisible(const ImVec2& rect_min, const ImVec2& rect_max) +{ + ImGuiWindow* window = GetCurrentWindowRead(); + return window->ClipRect.Overlaps(ImRect(rect_min, rect_max)); +} + // Lock horizontal starting position + capture group bounding box into one "item" (so you can use IsItemHovered() or layout primitives such as SameLine() on whole group, etc.) void ImGui::BeginGroup() { diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h index 6a1ed055964..24cb7715449 100644 --- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h +++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui.h @@ -409,7 +409,8 @@ namespace ImGui IMGUI_API bool IsRootWindowFocused(); // is current root window focused (root = top-most parent of a child, otherwise self) IMGUI_API bool IsRootWindowOrAnyChildFocused(); // is current root window or any of its child (including current window) focused IMGUI_API bool IsRootWindowOrAnyChildHovered(); // is current root window or any of its child (including current window) hovered and hoverable (not blocked by a popup) - IMGUI_API bool IsRectVisible(const ImVec2& size); // test if rectangle of given size starting from cursor pos is visible (not clipped). to perform coarse clipping on user's side (as an optimization) + IMGUI_API bool IsRectVisible(const ImVec2& size); // test if rectangle (of given size, starting from cursor position) is visible / not clipped. + IMGUI_API bool IsRectVisible(const ImVec2& rect_min, const ImVec2& rect_max); // test if rectangle (in screen space) is visible / not clipped. to perform coarse clipping on user's side. IMGUI_API bool IsPosHoveringAnyWindow(const ImVec2& pos); // is given position hovering any active imgui window IMGUI_API float GetTime(); IMGUI_API int GetFrameCount(); @@ -467,15 +468,9 @@ namespace ImGui static inline bool CollapsingHeader(const char* label, const char* str_id, bool framed = true, bool default_open = false) { (void)str_id; (void)framed; ImGuiTreeNodeFlags default_open_flags = 1<<5; return CollapsingHeader(label, (default_open ? default_open_flags : 0)); } // OBSOLETE 1.49+ static inline ImFont* GetWindowFont() { return GetFont(); } // OBSOLETE 1.48+ static inline float GetWindowFontSize() { return GetFontSize(); } // OBSOLETE 1.48+ - static inline void OpenNextNode(bool open) { ImGui::SetNextTreeNodeOpen(open, 0); } // OBSOLETE 1.34+ - static inline bool GetWindowIsFocused() { return ImGui::IsWindowFocused(); } // OBSOLETE 1.36+ - static inline bool GetWindowCollapsed() { return ImGui::IsWindowCollapsed(); } // OBSOLETE 1.39+ - static inline ImVec2 GetItemBoxMin() { return GetItemRectMin(); } // OBSOLETE 1.36+ - static inline ImVec2 GetItemBoxMax() { return GetItemRectMax(); } // OBSOLETE 1.36+ - static inline bool IsClipped(const ImVec2& size) { return !IsRectVisible(size); } // OBSOLETE 1.38+ - static inline bool IsRectClipped(const ImVec2& size) { return !IsRectVisible(size); } // OBSOLETE 1.39+ - static inline bool IsMouseHoveringBox(const ImVec2& rect_min, const ImVec2& rect_max) { return IsMouseHoveringRect(rect_min, rect_max); } // OBSOLETE 1.36+ static inline void SetScrollPosHere() { SetScrollHere(); } // OBSOLETE 1.42+ + static inline bool GetWindowCollapsed() { return ImGui::IsWindowCollapsed(); } // OBSOLETE 1.39+ + static inline bool IsRectClipped(const ImVec2& size) { return !IsRectVisible(size); } // OBSOLETE 1.39+ #endif } // namespace ImGui diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp index 67846e7ab1b..b6582a88a69 100644 --- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp +++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_demo.cpp @@ -2184,7 +2184,8 @@ struct ExampleAppConsole } else if (Stricmp(command_line, "HISTORY") == 0) { - for (int i = History.Size >= 10 ? History.Size - 10 : 0; i < History.Size; i++) + int first = History.Size - 10; + for (int i = first > 0 ? first : 0; i < History.Size; i++) AddLog("%3d: %s\n", i, History[i]); } else diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_internal.h b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_internal.h index 7b59bb63f66..dc02f719a63 100644 --- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_internal.h +++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_internal.h @@ -703,9 +703,6 @@ namespace ImGui IMGUI_API void OpenPopupEx(const char* str_id, bool reopen_existing); - inline IMGUI_API ImU32 GetColorU32(ImGuiCol idx, float alpha_mul) { ImVec4 c = GImGui->Style.Colors[idx]; c.w *= GImGui->Style.Alpha * alpha_mul; return ImGui::ColorConvertFloat4ToU32(c); } - inline IMGUI_API ImU32 GetColorU32(const ImVec4& col) { ImVec4 c = col; c.w *= GImGui->Style.Alpha; return ImGui::ColorConvertFloat4ToU32(c); } - // NB: All position are in absolute pixels coordinates (not window coordinates) // FIXME: All those functions are a mess and needs to be refactored into something decent. Avoid use outside of imgui.cpp! // We need: a sort of symbol library, preferably baked into font atlas when possible + decent text rendering helpers. diff --git a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_wm.cpp b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_wm.cpp index ac584ce110c..83a7e40d376 100644 --- a/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_wm.cpp +++ b/3rdparty/bgfx/3rdparty/ocornut-imgui/imgui_wm.cpp @@ -575,8 +575,8 @@ namespace ImGuiWM ImColor oSelectedTab(37, 37, 37, 255); // selected ImColor oBorderColor(72, 72, 72, 255); // border - ImVec2 oRectMin = ImGui::GetItemBoxMin(); - ImVec2 oRectMax = ImGui::GetItemBoxMax(); + ImVec2 oRectMin = ImGui::GetItemRectMin(); + ImVec2 oRectMax = ImGui::GetItemRectMax(); const float fOverlap = 10.f; const float fSlopWidth = 30.f; diff --git a/3rdparty/bgfx/examples/common/imgui/imgui.cpp b/3rdparty/bgfx/examples/common/imgui/imgui.cpp index b8bf5b97a39..6a80447a34b 100644 --- a/3rdparty/bgfx/examples/common/imgui/imgui.cpp +++ b/3rdparty/bgfx/examples/common/imgui/imgui.cpp @@ -1488,7 +1488,7 @@ struct Imgui } } - uint8_t tabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint8_t _nTabs, uint8_t _nEnabled, va_list _argList) + uint8_t tabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint32_t _nTabs, uint32_t _nEnabled, va_list _argList) { const char* titles[16]; bool tabEnabled[16]; @@ -3469,7 +3469,7 @@ void imguiInput(const char* _label, char* _str, uint32_t _len, bool _enabled, Im s_imgui.input(_label, _str, _len, _enabled, _align, _r); } -uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint8_t _nTabs, uint8_t _nEnabled, ...) +uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint32_t _nTabs, uint32_t _nEnabled, ...) { va_list argList; va_start(argList, _nEnabled); @@ -3479,7 +3479,7 @@ uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int return result; } -uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint8_t _nTabs, ...) +uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint32_t _nTabs, ...) { va_list argList; va_start(argList, _nTabs); diff --git a/3rdparty/bgfx/examples/common/imgui/imgui.h b/3rdparty/bgfx/examples/common/imgui/imgui.h index 273f2a817e7..3b0fc54f875 100644 --- a/3rdparty/bgfx/examples/common/imgui/imgui.h +++ b/3rdparty/bgfx/examples/common/imgui/imgui.h @@ -190,8 +190,8 @@ void imguiInput(const char* _label, char* _str, uint32_t _len, bool _enabled = t /// _nEnabled - Number of specified 'enabled' flags. All other unspecified tabs are considered enabled by default. /// In the above example, there are 2 enabled flags: 'Tab0' is specified as enabled and 'Tab1' is specified as disabled. /// Tab2 is unspecified and therefore is treated as enabled. -uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint8_t _nTabs, uint8_t _nEnabled, ...); -uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint8_t _nTabs, ...); +uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint32_t _nTabs, uint32_t _nEnabled, ...); +uint8_t imguiTabs(uint8_t _selected, bool _enabled, ImguiAlign::Enum _align, int32_t _height, int32_t _r, uint32_t _nTabs, ...); uint32_t imguiChooseUseMacroInstead(uint32_t _selected, ...); #define imguiChoose(...) imguiChooseUseMacroInstead(__VA_ARGS__, NULL) diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp index 41095d853bb..05973f26284 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.cpp @@ -548,6 +548,7 @@ namespace static void nvgRenderViewport(void* _userPtr, int width, int height, float devicePixelRatio) { struct GLNVGcontext* gl = (struct GLNVGcontext*)_userPtr; + gl->state = 0; gl->view[0] = (float)width; gl->view[1] = (float)height; bgfx::setViewRect(gl->m_viewId, 0, 0, width * devicePixelRatio, height * devicePixelRatio); @@ -714,33 +715,24 @@ namespace int allocated = gl->tvb.size/gl->tvb.stride; - if (allocated < gl->nverts) { + if (allocated < gl->nverts) + { gl->nverts = allocated; BX_WARN(true, "Vertex number truncated due to transient vertex buffer overflow"); } - memcpy(gl->tvb.data, gl->verts, gl->nverts * sizeof(struct NVGvertex) ); - gl->state = 0 + if (0 == gl->state) + { + gl->state = BGFX_STATE_BLEND_FUNC(BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA); + } + + gl->state |= 0 | BGFX_STATE_RGB_WRITE | BGFX_STATE_ALPHA_WRITE ; -// if (alphaBlend == NVG_PREMULTIPLIED_ALPHA) -// { -// gl->state |= BGFX_STATE_BLEND_FUNC_SEPARATE( -// BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA -// , BGFX_STATE_BLEND_ONE, BGFX_STATE_BLEND_INV_SRC_ALPHA -// ); -// } -// else - { - gl->state |= BGFX_STATE_BLEND_FUNC( - BGFX_STATE_BLEND_SRC_ALPHA, BGFX_STATE_BLEND_INV_SRC_ALPHA - ); - } - bgfx::setUniform(gl->u_viewSize, gl->view); for (uint32_t ii = 0, num = gl->ncalls; ii < num; ++ii) @@ -1089,7 +1081,26 @@ error: } NVGcontext* nvgCreate(int edgeaa, unsigned char _viewId) { - return nvgCreate(edgeaa, _viewId, NULL); + return nvgCreate(edgeaa, _viewId, NULL); +} + +void nvgDelete(struct NVGcontext* ctx) +{ + nvgDeleteInternal(ctx); +} + +void nvgState(struct NVGcontext* ctx, uint64_t state) +{ + struct NVGparams* params = nvgInternalParams(ctx); + struct GLNVGcontext* gl = (struct GLNVGcontext*)params->userPtr; + gl->state = state; +} + +uint8_t nvgViewId(struct NVGcontext* ctx) +{ + struct NVGparams* params = nvgInternalParams(ctx); + struct GLNVGcontext* gl = (struct GLNVGcontext*)params->userPtr; + return gl->m_viewId; } void nvgViewId(struct NVGcontext* ctx, unsigned char _viewId) @@ -1099,7 +1110,55 @@ void nvgViewId(struct NVGcontext* ctx, unsigned char _viewId) gl->m_viewId = uint8_t(_viewId); } -void nvgDelete(struct NVGcontext* ctx) +bgfx::TextureHandle nvglImageHandle(NVGcontext* ctx, int image) { - nvgDeleteInternal(ctx); + GLNVGcontext* gl = (GLNVGcontext*)nvgInternalParams(ctx)->userPtr; + GLNVGtexture* tex = glnvg__findTexture(gl, image); + return tex->id; +} + +NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int width, + int height, int imageFlags) { + NVGLUframebuffer* framebuffer = new NVGLUframebuffer; + framebuffer->ctx = ctx; + framebuffer->image = nvgCreateImageRGBA(ctx, width, height, + imageFlags, NULL); + bgfx::TextureHandle texture = nvglImageHandle(ctx, framebuffer->image); + if (!bgfx::isValid(texture)) { + nvgluDeleteFramebuffer(framebuffer); + return NULL; + } + framebuffer->handle = bgfx::createFrameBuffer(1, &texture, false); + if (!bgfx::isValid(framebuffer->handle)) + { + nvgluDeleteFramebuffer(framebuffer); + return NULL; + } + static uint8_t s_ViewId = 1; // may have a better way to assign new view id + framebuffer->viewId = s_ViewId++; + bgfx::setViewFrameBuffer(framebuffer->viewId, framebuffer->handle); + bgfx::setViewSeq(framebuffer->viewId, true); + return framebuffer; +} + +void nvgluBindFramebuffer(NVGLUframebuffer* framebuffer) { + static NVGcontext* s_prevCtx = NULL; + static uint8_t s_prevViewId; + if (framebuffer != NULL) { + s_prevCtx = framebuffer->ctx; + s_prevViewId = nvgViewId(framebuffer->ctx); + nvgViewId(framebuffer->ctx, framebuffer->viewId); + } else if (s_prevCtx != NULL) { + nvgViewId(s_prevCtx, s_prevViewId); + } +} + +void nvgluDeleteFramebuffer(NVGLUframebuffer* framebuffer) { + if (framebuffer == NULL) + return; + if (framebuffer->image >= 0) + nvgDeleteImage(framebuffer->ctx, framebuffer->image); + if (bgfx::isValid(framebuffer->handle)) + bgfx::destroyFrameBuffer(framebuffer->handle); + delete framebuffer; } diff --git a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h index d24ee4fa72f..2268e900f99 100644 --- a/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h +++ b/3rdparty/bgfx/examples/common/nanovg/nanovg_bgfx.h @@ -6,13 +6,47 @@ #ifndef NANOVG_BGFX_H_HEADER_GUARD #define NANOVG_BGFX_H_HEADER_GUARD +#include "bgfx/bgfx.h" + namespace bx { struct AllocatorI; } struct NVGcontext; +struct NVGLUframebuffer { + NVGcontext* ctx; + bgfx::FrameBufferHandle handle; + int image; + uint8_t viewId; +}; +typedef struct NVGLUframebuffer NVGLUframebuffer; + NVGcontext* nvgCreate(int edgeaa, unsigned char _viewId, bx::AllocatorI* _allocator); NVGcontext* nvgCreate(int edgeaa, unsigned char _viewId); -void nvgViewId(struct NVGcontext* ctx, unsigned char _viewId); void nvgDelete(struct NVGcontext* ctx); +void nvgState(struct NVGcontext* ctx, uint64_t state); +uint8_t nvgViewId(struct NVGcontext* ctx); +void nvgViewId(struct NVGcontext* ctx, unsigned char _viewId); + +// Helper functions to create bgfx framebuffer to render to. +// Example: +// float scale = 2; +// NVGLUframebuffer* fb = nvgluCreateFramebuffer(ctx, 100 * scale, 100 * scale, 0); +// nvgluBindFramebuffer(fb); +// nvgBeginFrame(ctx, 100, 100, scale); +// // renders anything offscreen +// nvgEndFrame(ctx); +// nvgluBindFramebuffer(NULL); +// +// // Pastes the framebuffer rendering. +// nvgBeginFrame(ctx, 1024, 768, scale); +// NVGpaint paint = nvgImagePattern(ctx, 0, 0, 100, 100, 0, fb->image, 1); +// nvgBeginPath(ctx); +// nvgRect(ctx, 0, 0, 100, 100); +// nvgFillPaint(ctx, paint); +// nvgFill(ctx); +// nvgEndFrame(ctx); +NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int width, int height, int imageFlags); +void nvgluBindFramebuffer(NVGLUframebuffer* framebuffer); +void nvgluDeleteFramebuffer(NVGLUframebuffer* framebuffer); #endif // NANOVG_BGFX_H_HEADER_GUARD diff --git a/3rdparty/bgfx/src/renderer_mtl.h b/3rdparty/bgfx/src/renderer_mtl.h index 42145e0c036..13f1bf6b7af 100644 --- a/3rdparty/bgfx/src/renderer_mtl.h +++ b/3rdparty/bgfx/src/renderer_mtl.h @@ -87,6 +87,16 @@ namespace bgfx { namespace mtl destinationSlice:_destinationSlice destinationLevel:_destinationLevel destinationOrigin:_destinationOrigin]; } + void synchronizeTexture(id _texture, NSUInteger _slice, NSUInteger _level) + { + [m_obj synchronizeTexture:_texture slice:_slice level:_level]; + } + + void synchronizeResource(id _resource) + { + [m_obj synchronizeResource:_resource]; + } + void endEncoding() { [m_obj endEncoding]; diff --git a/3rdparty/bgfx/src/renderer_mtl.mm b/3rdparty/bgfx/src/renderer_mtl.mm index b2dcdd36900..ce2bf3b8b51 100644 --- a/3rdparty/bgfx/src/renderer_mtl.mm +++ b/3rdparty/bgfx/src/renderer_mtl.mm @@ -3023,16 +3023,23 @@ namespace bgfx { namespace mtl uint32_t width = bx::uint32_min(srcWidth, dstWidth); uint32_t height = bx::uint32_min(srcHeight, dstHeight); uint32_t depth = bx::uint32_min(srcDepth, dstDepth); + bool readBack = !!(dst.m_flags & BGFX_TEXTURE_READ_BACK); if ( MTLTextureType3D == src.m_ptr.textureType()) { m_blitCommandEncoder.copyFromTexture(src.m_ptr, 0, 0, MTLOriginMake(blit.m_srcX, blit.m_srcY, blit.m_srcZ), MTLSizeMake(width, height, bx::uint32_imax(depth, 1)), dst.m_ptr, 0, 0, MTLOriginMake(blit.m_dstX, blit.m_dstY, blit.m_dstZ)); + if (m_macOS11Runtime &&readBack) { + m_blitCommandEncoder.synchronizeResource(dst.m_ptr); + } } else { m_blitCommandEncoder.copyFromTexture(src.m_ptr, blit.m_srcZ, blit.m_srcMip, MTLOriginMake(blit.m_srcX, blit.m_srcY, 0), MTLSizeMake(width, height, 1), dst.m_ptr, blit.m_dstZ, blit.m_dstMip, MTLOriginMake(blit.m_dstX, blit.m_dstY, 0)); + if (m_macOS11Runtime && readBack) { + m_blitCommandEncoder.synchronizeTexture(dst.m_ptr, 0, blit.m_dstMip); + } } } From 9705b0ccb150ce04ada0fce8cd07b02badcef77a Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Tue, 9 Aug 2016 12:23:57 +0300 Subject: [PATCH 093/116] pofo: Fixed LCDC RAM size. (nw) --- src/mame/drivers/pofo.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index cf4fdd2a8d8..367af13c7ab 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -20,11 +20,15 @@ - cursor is missing - where do CDET and NMD1 connect to ?? - - create chargen ROM from tech manual - i/o port 8051 - screen contrast - system tick frequency selection (1 or 128 Hz) - soft power off + - LCD board + - HD61830A00 + - 5816 2Kx8 RAM + - 27C256 32Kx8 EPROM + - PCD3311T DTMF generator @ 3.578640MHz */ @@ -790,6 +794,16 @@ static ADDRESS_MAP_START( portfolio_io, AS_IO, 8, portfolio_state ) ADDRESS_MAP_END +//------------------------------------------------- +// ADDRESS_MAP( portfolio_lcdc ) +//------------------------------------------------- + +static ADDRESS_MAP_START( portfolio_lcdc, AS_0, 8, portfolio_state ) + ADDRESS_MAP_GLOBAL_MASK(0x7ff) + AM_RANGE(0x0000, 0x07ff) AM_RAM +ADDRESS_MAP_END + + //************************************************************************** // INPUT PORTS @@ -922,6 +936,7 @@ PALETTE_INIT_MEMBER(portfolio_state, portfolio) READ8_MEMBER( portfolio_state::hd61830_rd_r ) { + // TODO with real ROM: offs_t address = ((offset & 0xff) << 4) | ((offset >> 12) & 0x0f); UINT16 address = ((offset & 0xff) << 3) | ((offset >> 12) & 0x07); UINT8 data = m_char_rom[address]; @@ -1020,6 +1035,7 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", portfolio) MCFG_DEVICE_ADD(HD61830_TAG, HD61830, XTAL_4_9152MHz/2/2) + MCFG_DEVICE_ADDRESS_MAP(AS_0, portfolio_lcdc) MCFG_HD61830_RD_CALLBACK(READ8(portfolio_state, hd61830_rd_r)) MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) @@ -1069,7 +1085,7 @@ ROM_START( pofo ) ROMX_LOAD( "rom b.u4", 0x00000, 0x20000, BAD_DUMP CRC(c9852766) SHA1(c74430281bc717bd36fd9b5baec1cc0f4489fe82), ROM_BIOS(1) ) // dumped with debug.com ROMX_LOAD( "rom a.u3", 0x20000, 0x20000, BAD_DUMP CRC(b8fb730d) SHA1(1b9d82b824cab830256d34912a643a7d048cd401), ROM_BIOS(1) ) // dumped with debug.com - ROM_REGION( 0x800, HD61830_TAG, 0 ) + ROM_REGION( 0x8000, HD61830_TAG, 0 ) ROM_LOAD( "hd61830 external character generator", 0x000, 0x800, BAD_DUMP CRC(747a1db3) SHA1(a4b29678fdb43791a8ce4c1ec778f3231bb422c5) ) // typed in from manual ROM_END From 1ac265a495b5c12fe987622531fef119a921ddf1 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 9 Aug 2016 19:11:49 +0100 Subject: [PATCH 094/116] more mpu4 sorting --- src/mame/drivers/mpu4sw.hxx | 611 +++++++++++++++++++----------------- 1 file changed, 325 insertions(+), 286 deletions(-) diff --git a/src/mame/drivers/mpu4sw.hxx b/src/mame/drivers/mpu4sw.hxx index 79386c3bee0..74f4b6b802b 100644 --- a/src/mame/drivers/mpu4sw.hxx +++ b/src/mame/drivers/mpu4sw.hxx @@ -2376,18 +2376,20 @@ GAME_CUSTOM( 199?, m4tutfrt__ag, m4tutfrt, "tf4y.p1", 0x0000, 0 // "I.G.T SUCKS" and "F2U 0.1" GAME_CUSTOM( 199?, m4tutfrt__at, m4tutfrt, "tut25.bin", 0x0000, 0x010000, CRC(c98fb5bb) SHA1(1a3bc343a38b5978a919b454e9a2e806dce7a78a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1, hack, set 1)" ) GAME_CUSTOM( 199?, m4tutfrt__au, m4tutfrt, "tut25patched.bin", 0x0000, 0x010000, CRC(b4443cf5) SHA1(e79ec52730146f1591140555b814cbd20b5dfe78), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1, hack, set 2)" ) -// Bwb sets? don't have valid headers, don't show startup text.. could be something else? -GAME_CUSTOM( 199?, m4tutfrt__av, m4tutfrt, "tu_05___.1a3", 0x0000, 0x010000, CRC(97acc82d) SHA1(be53e60cb8a33b91a7f5556715ab4befe7170dd2), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 59)" ) -GAME_CUSTOM( 199?, m4tutfrt__aw, m4tutfrt, "tu_05_d_.1a3", 0x0000, 0x010000, CRC(33bb3018) SHA1(2c2f49c31919682ac03e61a665ce15d835e22467), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 60)" ) -GAME_CUSTOM( 199?, m4tutfrt__ax, m4tutfrt, "tu_10___.1a3", 0x0000, 0x010000, CRC(7878827f) SHA1(ac692ae50e63e632d45e7240c2520df83d2baaf5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 61)" ) -GAME_CUSTOM( 199?, m4tutfrt__ay, m4tutfrt, "tu_20___.1a3", 0x0000, 0x010000, CRC(cada1c42) SHA1(6a4048da89a0bffeebfd21549c2d9812cc275bd5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 62)" ) -GAME_CUSTOM( 199?, m4tutfrt__az, m4tutfrt, "tu_20_b_.1a3", 0x0000, 0x010000, CRC(a8f1bc11) SHA1(03596171540e6490133f374cca69f4fd0359952e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 63)" ) -GAME_CUSTOM( 199?, m4tutfrt__a0, m4tutfrt, "tu_20_d_.1a3", 0x0000, 0x010000, CRC(6ecde477) SHA1(694296eb226c59069800d6936c9dee2623105db0), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 64)" ) -GAME_CUSTOM( 199?, m4tutfrt__a1, m4tutfrt, "tu_20_k_.1a3", 0x0000, 0x010000, CRC(0ce64424) SHA1(7415c9de9982aa7f15f71ef791cbd8ad5a9331d3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 65)" ) -GAME_CUSTOM( 199?, m4tutfrt__a2, m4tutfrt, "tu_20bg_.1a3", 0x0000, 0x010000, CRC(31a6196d) SHA1(1113737dd3b209afda14ec273d923e2057ea7d99), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 66)" ) -GAME_CUSTOM( 199?, m4tutfrt__a3, m4tutfrt, "tuf20__1.0", 0x0000, 0x010000, CRC(ddadbcb6) SHA1(2d2934ec73d979de45d0998f8975361d33358dd3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 67)" ) -GAME_CUSTOM( 199?, m4tutfrt__a4, m4tutfrt, "tuf20ad1.0", 0x0000, 0x010000, CRC(5a74ead3) SHA1(3216c8d0c67aaeb18f791a6e1f3f6e30145d6beb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 68)" ) -GAME_CUSTOM( 199?, m4tutfrt__a5, m4tutfrt, "tui05___.1a3", 0x0000, 0x010000, CRC(42e3d400) SHA1(4cf914141dfc1f88704403b467176da77369da06), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (set 69)" ) + + +// I think these might be for a different game with the same name, maybe MPU4 Video. +GAME_CUSTOM( 199?, m4tutfrt__av, m4tutfrt, "tu_05___.1a3", 0x0000, 0x010000, CRC(97acc82d) SHA1(be53e60cb8a33b91a7f5556715ab4befe7170dd2), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4tutfrt__aw, m4tutfrt, "tu_05_d_.1a3", 0x0000, 0x010000, CRC(33bb3018) SHA1(2c2f49c31919682ac03e61a665ce15d835e22467), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4tutfrt__ax, m4tutfrt, "tu_10___.1a3", 0x0000, 0x010000, CRC(7878827f) SHA1(ac692ae50e63e632d45e7240c2520df83d2baaf5), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4tutfrt__ay, m4tutfrt, "tu_20___.1a3", 0x0000, 0x010000, CRC(cada1c42) SHA1(6a4048da89a0bffeebfd21549c2d9812cc275bd5), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4tutfrt__az, m4tutfrt, "tu_20_b_.1a3", 0x0000, 0x010000, CRC(a8f1bc11) SHA1(03596171540e6490133f374cca69f4fd0359952e), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4tutfrt__a0, m4tutfrt, "tu_20_d_.1a3", 0x0000, 0x010000, CRC(6ecde477) SHA1(694296eb226c59069800d6936c9dee2623105db0), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4tutfrt__a1, m4tutfrt, "tu_20_k_.1a3", 0x0000, 0x010000, CRC(0ce64424) SHA1(7415c9de9982aa7f15f71ef791cbd8ad5a9331d3), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4tutfrt__a2, m4tutfrt, "tu_20bg_.1a3", 0x0000, 0x010000, CRC(31a6196d) SHA1(1113737dd3b209afda14ec273d923e2057ea7d99), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4tutfrt__a3, m4tutfrt, "tuf20__1.0", 0x0000, 0x010000, CRC(ddadbcb6) SHA1(2d2934ec73d979de45d0998f8975361d33358dd3), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4tutfrt__a4, m4tutfrt, "tuf20ad1.0", 0x0000, 0x010000, CRC(5a74ead3) SHA1(3216c8d0c67aaeb18f791a6e1f3f6e30145d6beb), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4tutfrt__a5, m4tutfrt, "tui05___.1a3", 0x0000, 0x010000, CRC(42e3d400) SHA1(4cf914141dfc1f88704403b467176da77369da06), "Bwb","Tutti Fruity (Bwb) (MPU4) (set 11)" ) #define M4CASHAT_EXTRA_ROMS \ @@ -4882,26 +4884,26 @@ GAME_CUSTOM( 199?, m4topdog__z, m4topdog, "td_30btc.1_1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4kingq, 0, "ee_05a_4.2_1", 0x0000, 0x010000, CRC(8dd842b6) SHA1(1c1bcaae355ceee4d7b1572b0fa1a8b23a8afdbf), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4kingq__a, m4kingq, "ee_05a__.2_1", 0x0000, 0x010000, CRC(36aa5fb9) SHA1(b4aaf647713e33e79be7927e5eeef240d3beedf7), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4kingq__b, m4kingq, "ee_20a__.2_1", 0x0000, 0x010000, CRC(2c61341f) SHA1(76d68ae2a44087414be8be12b3824c62311721dd), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4kingq__c, m4kingq, "ee_20a_c.1_1", 0x0000, 0x010000, CRC(948140ac) SHA1(d43f1f2903ecd809dee191087fa075c638728a5b), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4kingq__d, m4kingq, "ee_20b__.2_1", 0x0000, 0x010000, CRC(2fc7c7c2) SHA1(3b8736a582009d7b1455769374342ff72026d2fa), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4kingq__e, m4kingq, "ee_20b_c.1_1", 0x0000, 0x010000, CRC(70d399ab) SHA1(ca2c593151f4f852c7cb66859a12e832e53cd31f), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4kingq__f, m4kingq, "ee_20bd_.2_1", 0x0000, 0x010000, CRC(239de2dd) SHA1(c8021ba5bfdc10f59fec27c364035225093328d8), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4kingq__g, m4kingq, "ee_20bdc.1_1", 0x0000, 0x010000, CRC(cbb8c57b) SHA1(ea165199213f95128aec95ae40799faa8c457dd3), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4kingq__h, m4kingq, "ee_20bg_.2_1", 0x0000, 0x010000, CRC(ddc4d832) SHA1(031f987e9fced1df4acc57eb4b60911d52e1dbf6), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4kingq__i, m4kingq, "ee_20bt_.2_1", 0x0000, 0x010000, CRC(6f278771) SHA1(4459c9490be14bcbc139eebe6542325c80937ff3), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4kingq__j, m4kingq, "ee_20s_c.1_1", 0x0000, 0x010000, CRC(a0c1e313) SHA1(8a088a33e51a31ff0abdb554aa4d8ce61eaf4b7d), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4kingq__k, m4kingq, "ee_20sb_.2_1", 0x0000, 0x010000, CRC(307ad157) SHA1(32b6187e907bfbdb87a9ad2d9ca5870b09de5e4a), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4kingq__l, m4kingq, "ee_25a_c.3_1", 0x0000, 0x010000, CRC(4dc25083) SHA1(b754b4003f73bd74d1670a36a70985ce5e48794d), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4kingq__m, m4kingq, "ee_25b_c.3_1", 0x0000, 0x010000, CRC(a6fe50ff) SHA1(011602d9624f232ba8484e57f5f33ff06091809f), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4kingq__n, m4kingq, "ee_25bdc.3_1", 0x0000, 0x010000, CRC(d0088a97) SHA1(aacc1a86bd4b321d0ee21d14147e1d135b3a5bae), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4kingq__o, m4kingq, "ee_25bgc.3_1", 0x0000, 0x010000, CRC(e4dcd86b) SHA1(b8f8ec317bf9f18e3d0ae9a9fd59349fee24530d), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4kingq__p, m4kingq, "ee_25btc.3_1", 0x0000, 0x010000, CRC(8f44347a) SHA1(09815a6e1d3a91cd2e69578bbcfef3203ddb33d6), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4kingq__r, m4kingq, "ee_25sbc.3_1", 0x0000, 0x010000, CRC(0f4bdd7c) SHA1(5c5cb3a9d6a96afc6e29149d2a8adf19aae0bc41), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4kingq__s, m4kingq, "eei20___.2_1", 0x0000, 0x010000, CRC(15f4b869) SHA1(5be6f660321cb47900dda986ef44eb5c1c324013), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4kingq__t, m4kingq, "knq2pprg.bin", 0x0000, 0x010000, CRC(23b22f79) SHA1(3d8b9cbffb9b427897548981ddacf724215336a4), "Barcrest / Bwb","Kings & Queens (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4kingq, 0, "ee_05a_4.2_1", 0x0000, 0x010000, CRC(8dd842b6) SHA1(1c1bcaae355ceee4d7b1572b0fa1a8b23a8afdbf), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4kingq__a, m4kingq, "ee_05a__.2_1", 0x0000, 0x010000, CRC(36aa5fb9) SHA1(b4aaf647713e33e79be7927e5eeef240d3beedf7), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4kingq__b, m4kingq, "ee_20a__.2_1", 0x0000, 0x010000, CRC(2c61341f) SHA1(76d68ae2a44087414be8be12b3824c62311721dd), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4kingq__c, m4kingq, "ee_20a_c.1_1", 0x0000, 0x010000, CRC(948140ac) SHA1(d43f1f2903ecd809dee191087fa075c638728a5b), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4kingq__d, m4kingq, "ee_20b__.2_1", 0x0000, 0x010000, CRC(2fc7c7c2) SHA1(3b8736a582009d7b1455769374342ff72026d2fa), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4kingq__e, m4kingq, "ee_20b_c.1_1", 0x0000, 0x010000, CRC(70d399ab) SHA1(ca2c593151f4f852c7cb66859a12e832e53cd31f), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4kingq__f, m4kingq, "ee_20bd_.2_1", 0x0000, 0x010000, CRC(239de2dd) SHA1(c8021ba5bfdc10f59fec27c364035225093328d8), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4kingq__g, m4kingq, "ee_20bdc.1_1", 0x0000, 0x010000, CRC(cbb8c57b) SHA1(ea165199213f95128aec95ae40799faa8c457dd3), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4kingq__h, m4kingq, "ee_20bg_.2_1", 0x0000, 0x010000, CRC(ddc4d832) SHA1(031f987e9fced1df4acc57eb4b60911d52e1dbf6), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4kingq__i, m4kingq, "ee_20bt_.2_1", 0x0000, 0x010000, CRC(6f278771) SHA1(4459c9490be14bcbc139eebe6542325c80937ff3), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4kingq__j, m4kingq, "ee_20s_c.1_1", 0x0000, 0x010000, CRC(a0c1e313) SHA1(8a088a33e51a31ff0abdb554aa4d8ce61eaf4b7d), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4kingq__k, m4kingq, "ee_20sb_.2_1", 0x0000, 0x010000, CRC(307ad157) SHA1(32b6187e907bfbdb87a9ad2d9ca5870b09de5e4a), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4kingq__l, m4kingq, "ee_25a_c.3_1", 0x0000, 0x010000, CRC(4dc25083) SHA1(b754b4003f73bd74d1670a36a70985ce5e48794d), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4kingq__m, m4kingq, "ee_25b_c.3_1", 0x0000, 0x010000, CRC(a6fe50ff) SHA1(011602d9624f232ba8484e57f5f33ff06091809f), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4kingq__n, m4kingq, "ee_25bdc.3_1", 0x0000, 0x010000, CRC(d0088a97) SHA1(aacc1a86bd4b321d0ee21d14147e1d135b3a5bae), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4kingq__o, m4kingq, "ee_25bgc.3_1", 0x0000, 0x010000, CRC(e4dcd86b) SHA1(b8f8ec317bf9f18e3d0ae9a9fd59349fee24530d), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4kingq__p, m4kingq, "ee_25btc.3_1", 0x0000, 0x010000, CRC(8f44347a) SHA1(09815a6e1d3a91cd2e69578bbcfef3203ddb33d6), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4kingq__r, m4kingq, "ee_25sbc.3_1", 0x0000, 0x010000, CRC(0f4bdd7c) SHA1(5c5cb3a9d6a96afc6e29149d2a8adf19aae0bc41), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4kingq__s, m4kingq, "eei20___.2_1", 0x0000, 0x010000, CRC(15f4b869) SHA1(5be6f660321cb47900dda986ef44eb5c1c324013), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4kingq__t, m4kingq, "knq2pprg.bin", 0x0000, 0x010000, CRC(23b22f79) SHA1(3d8b9cbffb9b427897548981ddacf724215336a4), "Bwb","Kings & Queens (Barcrest) (MPU4) (set 20)" ) #define M4KINGQC_EXTRA_ROMS \ ROM_REGION( 0x200000, "msm6376", 0 ) \ @@ -4917,37 +4919,37 @@ GAME_CUSTOM( 199?, m4kingq__t, m4kingq, "knq2pprg.bin", 0x0000, 0x010000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4kingqc, 0, "cn_20_b4.6_1", 0x0000, 0x010000, CRC(22d0b20c) SHA1(a7a4f60017cf62247339c9b23420d29845657895), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4kingqc__a, m4kingqc, "cn_20_bc.3_1", 0x0000, 0x010000, CRC(dfb0eb80) SHA1(ad973125681db0aae8ef1cf57b1c280e7f0e5803), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4kingqc__b, m4kingqc, "cn_20_dc.3_1", 0x0000, 0x010000, CRC(56e919ad) SHA1(c3c6f522574b287f7ed4dc4d1d8a32f68369dd5c), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4kingqc__c, m4kingqc, "cn_20a_c.2_1", 0x0000, 0x010000, CRC(0df15fd9) SHA1(e7c5e2277aac1c71d27710ea71d09d1005c5b8f9), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4kingqc__d, m4kingqc, "cn_20a_c.3_1", 0x0000, 0x010000, CRC(68e1dcef) SHA1(a0b15344b900226052633703e935c0ec0f718936), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4kingqc__e, m4kingqc, "cn_20a_c.5_1", 0x0000, 0x010000, CRC(4975d39e) SHA1(243b8af1a12c3538e826bfd5f6feb6927c1467b0), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4kingqc__f, m4kingqc, "cn_20b_c.2_1", 0x0000, 0x010000, CRC(66e074f3) SHA1(1f5381a41dd1402ee344e228635b35521e9377c8), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4kingqc__g, m4kingqc, "cn_20b_c.3_1", 0x0000, 0x010000, CRC(bcae86c9) SHA1(f03b136d82fe7b93350f0ca5dc36e78e98aecfa9), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4kingqc__h, m4kingqc, "cn_20b_c.5_1", 0x0000, 0x010000, CRC(6a19d734) SHA1(e0d5f5020e7997d3927b42336ab18757bd9f1ed0), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4kingqc__i, m4kingqc, "cn_20bg4.6_1", 0x0000, 0x010000, CRC(6d4158fe) SHA1(9c12264a415601d6f28f23c1e1f6a3d97fadddba), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4kingqc__j, m4kingqc, "cn_20bgc.3_1", 0x0000, 0x010000, CRC(3ecc1bf3) SHA1(fb191749f920aa4ac0d9809c6c59b695afdf6594), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4kingqc__k, m4kingqc, "cn_20bgc.5_1", 0x0000, 0x010000, CRC(24743f7e) SHA1(c90d95df2357bc00aba2bb21c0c77082b8c32463), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4kingqc__l, m4kingqc, "cn_20btc.2_1", 0x0000, 0x010000, CRC(b8f0ade0) SHA1(5b5344f799b27833f6456ae852eb5085afb3dbe5), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4kingqc__m, m4kingqc, "cn_20btc.3_1", 0x0000, 0x010000, CRC(b92f3787) SHA1(7efd815cf1a9a738ffae2c3ce19149f47d465c72), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4kingqc__n, m4kingqc, "cn_20btc.5_1", 0x0000, 0x010000, CRC(e2b8baf0) SHA1(23e966a6cc94c26903bfe943160a327529d7e21b), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4kingqc__q, m4kingqc, "cn_20sbc.5_1", 0x0000, 0x010000, CRC(8b49bf8c) SHA1(2c6835e343e7cdcc197c0105e13cc4f6ddd3f0d3), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4kingqc__r, m4kingqc, "cn_25_bc.2_1", 0x0000, 0x010000, CRC(3e2b2d7b) SHA1(9a68cf4902ca210e8fb52a35b4c507708c7f6d2a), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4kingqc__s, m4kingqc, "cn_25_dc.2_1", 0x0000, 0x010000, CRC(eb384ef6) SHA1(489c59d8e1e6296ec2b05fb0aa307c48f3486aa2), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4kingqc__t, m4kingqc, "cn_25_kc.2_1", 0x0000, 0x010000, CRC(bd11e742) SHA1(0c3b290e3010bc3f904f9087ee89efe63072b8c3), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4kingqc__u, m4kingqc, "cn_25a_c.2_1", 0x0000, 0x010000, CRC(1994efd5) SHA1(d7c3d692737138b30244d2d51eb535b88c87e401), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4kingqc__v, m4kingqc, "cn_25b_c.2_1", 0x0000, 0x010000, CRC(24255989) SHA1(017d0dc811b5c82d5b8785022169929c94f3f18a), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4kingqc__w, m4kingqc, "cn_25bdc.2_1", 0x0000, 0x010000, CRC(503ccd3c) SHA1(936b77b33373624e6bd80d168bcd48dc2ebcb2fe), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4kingqc__x, m4kingqc, "cn_25bgc.2a1", 0x0000, 0x010000, CRC(89e2130d) SHA1(22f97030e6f4cb94f62215a0c653d170ba3e0efd), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4kingqc__y, m4kingqc, "cn_25btc.2_1", 0x0000, 0x010000, CRC(876bc126) SHA1(debe36a082493cdeba26a0808f205a19e9e897d5), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4kingqc__z, m4kingqc, "cn_25s_c.1_1", 0x0000, 0x010000, CRC(84d1a32b) SHA1(f6e76a2bf1bd7b31eb360dea8b453d235c365e64), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4kingqc__0, m4kingqc, "cn_25sbc.1_1", 0x0000, 0x010000, CRC(e53b672c) SHA1(2aea2a243817857df31b6f7b767e380bd003fafa), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4kingqc__1, m4kingqc, "cn_30_dc.1_1", 0x0000, 0x010000, CRC(aeb21904) SHA1(32bd505e738b8826c6ab138f30831b7a53b700cf), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4kingqc__2, m4kingqc, "cn_30a_c.1_1", 0x0000, 0x010000, CRC(be7aed91) SHA1(7dac1281bbc9da8924657b13ec4aa86aa6ff9de4), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4kingqc__3, m4kingqc, "cn_30b_c.1_1", 0x0000, 0x010000, CRC(232c87ec) SHA1(2c2bf1c273ab88c0ab27a672d53cd6184a24a8d1), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4kingqc__4, m4kingqc, "cn_30bgc.1_1", 0x0000, 0x010000, CRC(40afaa86) SHA1(edb8f55abf66e3e1cc7e353c520a93fc42073585), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4kingqc__5, m4kingqc, "cn_30btc.1_1", 0x0000, 0x010000, CRC(1920cc67) SHA1(55a3ad78d68d635faff98390e2feeea29dd10664), "Barcrest / Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 31)" ) +GAME_CUSTOM( 199?, m4kingqc, 0, "cn_20_b4.6_1", 0x0000, 0x010000, CRC(22d0b20c) SHA1(a7a4f60017cf62247339c9b23420d29845657895), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4kingqc__a, m4kingqc, "cn_20_bc.3_1", 0x0000, 0x010000, CRC(dfb0eb80) SHA1(ad973125681db0aae8ef1cf57b1c280e7f0e5803), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4kingqc__b, m4kingqc, "cn_20_dc.3_1", 0x0000, 0x010000, CRC(56e919ad) SHA1(c3c6f522574b287f7ed4dc4d1d8a32f68369dd5c), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4kingqc__c, m4kingqc, "cn_20a_c.2_1", 0x0000, 0x010000, CRC(0df15fd9) SHA1(e7c5e2277aac1c71d27710ea71d09d1005c5b8f9), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4kingqc__d, m4kingqc, "cn_20a_c.3_1", 0x0000, 0x010000, CRC(68e1dcef) SHA1(a0b15344b900226052633703e935c0ec0f718936), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4kingqc__e, m4kingqc, "cn_20a_c.5_1", 0x0000, 0x010000, CRC(4975d39e) SHA1(243b8af1a12c3538e826bfd5f6feb6927c1467b0), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4kingqc__f, m4kingqc, "cn_20b_c.2_1", 0x0000, 0x010000, CRC(66e074f3) SHA1(1f5381a41dd1402ee344e228635b35521e9377c8), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4kingqc__g, m4kingqc, "cn_20b_c.3_1", 0x0000, 0x010000, CRC(bcae86c9) SHA1(f03b136d82fe7b93350f0ca5dc36e78e98aecfa9), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4kingqc__h, m4kingqc, "cn_20b_c.5_1", 0x0000, 0x010000, CRC(6a19d734) SHA1(e0d5f5020e7997d3927b42336ab18757bd9f1ed0), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4kingqc__i, m4kingqc, "cn_20bg4.6_1", 0x0000, 0x010000, CRC(6d4158fe) SHA1(9c12264a415601d6f28f23c1e1f6a3d97fadddba), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4kingqc__j, m4kingqc, "cn_20bgc.3_1", 0x0000, 0x010000, CRC(3ecc1bf3) SHA1(fb191749f920aa4ac0d9809c6c59b695afdf6594), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4kingqc__k, m4kingqc, "cn_20bgc.5_1", 0x0000, 0x010000, CRC(24743f7e) SHA1(c90d95df2357bc00aba2bb21c0c77082b8c32463), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4kingqc__l, m4kingqc, "cn_20btc.2_1", 0x0000, 0x010000, CRC(b8f0ade0) SHA1(5b5344f799b27833f6456ae852eb5085afb3dbe5), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4kingqc__m, m4kingqc, "cn_20btc.3_1", 0x0000, 0x010000, CRC(b92f3787) SHA1(7efd815cf1a9a738ffae2c3ce19149f47d465c72), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4kingqc__n, m4kingqc, "cn_20btc.5_1", 0x0000, 0x010000, CRC(e2b8baf0) SHA1(23e966a6cc94c26903bfe943160a327529d7e21b), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4kingqc__q, m4kingqc, "cn_20sbc.5_1", 0x0000, 0x010000, CRC(8b49bf8c) SHA1(2c6835e343e7cdcc197c0105e13cc4f6ddd3f0d3), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4kingqc__r, m4kingqc, "cn_25_bc.2_1", 0x0000, 0x010000, CRC(3e2b2d7b) SHA1(9a68cf4902ca210e8fb52a35b4c507708c7f6d2a), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4kingqc__s, m4kingqc, "cn_25_dc.2_1", 0x0000, 0x010000, CRC(eb384ef6) SHA1(489c59d8e1e6296ec2b05fb0aa307c48f3486aa2), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4kingqc__t, m4kingqc, "cn_25_kc.2_1", 0x0000, 0x010000, CRC(bd11e742) SHA1(0c3b290e3010bc3f904f9087ee89efe63072b8c3), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4kingqc__u, m4kingqc, "cn_25a_c.2_1", 0x0000, 0x010000, CRC(1994efd5) SHA1(d7c3d692737138b30244d2d51eb535b88c87e401), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4kingqc__v, m4kingqc, "cn_25b_c.2_1", 0x0000, 0x010000, CRC(24255989) SHA1(017d0dc811b5c82d5b8785022169929c94f3f18a), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4kingqc__w, m4kingqc, "cn_25bdc.2_1", 0x0000, 0x010000, CRC(503ccd3c) SHA1(936b77b33373624e6bd80d168bcd48dc2ebcb2fe), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4kingqc__x, m4kingqc, "cn_25bgc.2a1", 0x0000, 0x010000, CRC(89e2130d) SHA1(22f97030e6f4cb94f62215a0c653d170ba3e0efd), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4kingqc__y, m4kingqc, "cn_25btc.2_1", 0x0000, 0x010000, CRC(876bc126) SHA1(debe36a082493cdeba26a0808f205a19e9e897d5), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4kingqc__z, m4kingqc, "cn_25s_c.1_1", 0x0000, 0x010000, CRC(84d1a32b) SHA1(f6e76a2bf1bd7b31eb360dea8b453d235c365e64), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4kingqc__0, m4kingqc, "cn_25sbc.1_1", 0x0000, 0x010000, CRC(e53b672c) SHA1(2aea2a243817857df31b6f7b767e380bd003fafa), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4kingqc__1, m4kingqc, "cn_30_dc.1_1", 0x0000, 0x010000, CRC(aeb21904) SHA1(32bd505e738b8826c6ab138f30831b7a53b700cf), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4kingqc__2, m4kingqc, "cn_30a_c.1_1", 0x0000, 0x010000, CRC(be7aed91) SHA1(7dac1281bbc9da8924657b13ec4aa86aa6ff9de4), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4kingqc__3, m4kingqc, "cn_30b_c.1_1", 0x0000, 0x010000, CRC(232c87ec) SHA1(2c2bf1c273ab88c0ab27a672d53cd6184a24a8d1), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 29)" ) +GAME_CUSTOM( 199?, m4kingqc__4, m4kingqc, "cn_30bgc.1_1", 0x0000, 0x010000, CRC(40afaa86) SHA1(edb8f55abf66e3e1cc7e353c520a93fc42073585), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 30)" ) +GAME_CUSTOM( 199?, m4kingqc__5, m4kingqc, "cn_30btc.1_1", 0x0000, 0x010000, CRC(1920cc67) SHA1(55a3ad78d68d635faff98390e2feeea29dd10664), "Bwb","Kings & Queens Classic (Barcrest) (MPU4) (set 31)" ) #define M4TYPCL_EXTRA_ROMS \ ROM_REGION( 0x48, "fakechr", 0 ) \ @@ -5010,32 +5012,32 @@ GAME_CUSTOM( 199?, m4andybt__c, m4andybt, "abt1.5", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4thestr, 0, "thestreakbin", 0x0000, 0x010000, CRC(cb79f9e5) SHA1(6cbdc5327e81b51f1060fd91efa3d061b9748b49), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4thestr__a, m4thestr, "ts_20_b4.3_1", 0x0000, 0x010000, CRC(17726c7c) SHA1(193b572b9f859f1018f1be398b35a5103622faf8), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4thestr__b, m4thestr, "ts_20_bc.3_1", 0x0000, 0x010000, CRC(b03b3f11) SHA1(9116ac608ab5574d5912550b988fc319d0a38444), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4thestr__c, m4thestr, "ts_20_d4.3_1", 0x0000, 0x010000, CRC(7bfae07a) SHA1(9414ad510ca9a183181a30d98858278c375c185d), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4thestr__d, m4thestr, "ts_20_dc.3_1", 0x0000, 0x010000, CRC(7196b317) SHA1(c124ed3d030b77870b7851b3da104f8fc5393a31), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4thestr__e, m4thestr, "ts_20a_4.3_1", 0x0000, 0x010000, CRC(921b8cc3) SHA1(74143888de21aba4374d016cb4c08ae59dfa59ef), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4thestr__f, m4thestr, "ts_20a_c.3_1", 0x0000, 0x010000, CRC(c8eb1dd9) SHA1(7b7520467cd32295e6324d350d1f2bed829555e0), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4thestr__g, m4thestr, "ts_20b_4.3_1", 0x0000, 0x010000, CRC(2221f704) SHA1(8459b658d3ad84bb86250518d0403970f881323d), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4thestr__h, m4thestr, "ts_20b_c.3_1", 0x0000, 0x010000, CRC(ecdf59a9) SHA1(7c2141e336ba3f1865bbf422aaa0b78cb1a27a4c), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4thestr__i, m4thestr, "ts_20bg4.3_1", 0x0000, 0x010000, CRC(b2a419ea) SHA1(bbc565ce8e79d39e1b1a7cd1685fa8c7ce00d7b9), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4thestr__j, m4thestr, "ts_20bgc.3_1", 0x0000, 0x010000, CRC(3b2d7b50) SHA1(a8560b0894783a398aaf0510493583b8cb826947), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4thestr__k, m4thestr, "ts_20bt4.3_1", 0x0000, 0x010000, CRC(d10a6c5a) SHA1(07fdf3797c87e35468ef859bb67753f11c5fbded), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4thestr__l, m4thestr, "ts_20btc.3_1", 0x0000, 0x010000, CRC(58830ee0) SHA1(b2798e0f8e03870c77892a32654263575e9aaafa), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4thestr__m, m4thestr, "ts_25_bc.3_1", 0x0000, 0x010000, CRC(43877de6) SHA1(b006ae97139c9bd66a32884b92fdbdf4f10db58a), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4thestr__n, m4thestr, "ts_25_dc.3_1", 0x0000, 0x010000, CRC(60ab675c) SHA1(763b66d7731489abdec84d2f8e3c186ad95c7349), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4thestr__o, m4thestr, "ts_25_kc.3_1", 0x0000, 0x010000, CRC(418cbb32) SHA1(e19a0c7fd88a82983ec33b99f3819a2a238c68a5), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4thestr__p, m4thestr, "ts_25a_c.3_1", 0x0000, 0x010000, CRC(448a705f) SHA1(35a7cc480c376eaef7439d5c96cec490aec9fc4b), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4thestr__q, m4thestr, "ts_25b_c.3_1", 0x0000, 0x010000, CRC(5b390ec2) SHA1(db7719ab8021e0b75e9419d2a05f3139fbab8e61), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4thestr__r, m4thestr, "ts_25bgc.3_1", 0x0000, 0x010000, CRC(612463fc) SHA1(085d8faf91c8ef6520ca971d249322f336464856), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4thestr__s, m4thestr, "ts_25btc.3_1", 0x0000, 0x010000, CRC(6d658e61) SHA1(619dbacad424e5db82c6ee19d1e3358c18cfe783), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4thestr__t, m4thestr, "ts_30a_c.1_1", 0x0000, 0x010000, CRC(8636e700) SHA1(f11c20da6c3bfe1842ea8f9eac8c831d49f42c32), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4thestr__u, m4thestr, "ts_30b_c.1_1", 0x0000, 0x010000, CRC(2577c8fc) SHA1(6d22bd1a93f423862f5466f99690eeced9090420), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4thestr__v, m4thestr, "ts_30bgc.1_1", 0x0000, 0x010000, CRC(2c582ba6) SHA1(dbcae0ef90105a7f6c720156711f73bb3c237b8a), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4thestr__w, m4thestr, "ts_39_dc.1_1", 0x0000, 0x010000, CRC(84d338b8) SHA1(847e6b7808b6d5d361414a4aaa5d5cf6a5863a70), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4thestr__x, m4thestr, "ts_39a_c.1_1", 0x0000, 0x010000, CRC(9ee56a3a) SHA1(365ec4c90abbe4b352bdd2d6aed5eec4cdaf35ff), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4thestr__y, m4thestr, "ts_39b_c.1_1", 0x0000, 0x010000, CRC(470cd6d1) SHA1(c9c3c9c23c596e79f1b6495d4706b1da6cbd1b2e), "Barcrest / Bwb","The Streak (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4thestr, 0, "thestreakbin", 0x0000, 0x010000, CRC(cb79f9e5) SHA1(6cbdc5327e81b51f1060fd91efa3d061b9748b49), "Bwb","The Streak (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4thestr__a, m4thestr, "ts_20_b4.3_1", 0x0000, 0x010000, CRC(17726c7c) SHA1(193b572b9f859f1018f1be398b35a5103622faf8), "Bwb","The Streak (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4thestr__b, m4thestr, "ts_20_bc.3_1", 0x0000, 0x010000, CRC(b03b3f11) SHA1(9116ac608ab5574d5912550b988fc319d0a38444), "Bwb","The Streak (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4thestr__c, m4thestr, "ts_20_d4.3_1", 0x0000, 0x010000, CRC(7bfae07a) SHA1(9414ad510ca9a183181a30d98858278c375c185d), "Bwb","The Streak (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4thestr__d, m4thestr, "ts_20_dc.3_1", 0x0000, 0x010000, CRC(7196b317) SHA1(c124ed3d030b77870b7851b3da104f8fc5393a31), "Bwb","The Streak (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4thestr__e, m4thestr, "ts_20a_4.3_1", 0x0000, 0x010000, CRC(921b8cc3) SHA1(74143888de21aba4374d016cb4c08ae59dfa59ef), "Bwb","The Streak (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4thestr__f, m4thestr, "ts_20a_c.3_1", 0x0000, 0x010000, CRC(c8eb1dd9) SHA1(7b7520467cd32295e6324d350d1f2bed829555e0), "Bwb","The Streak (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4thestr__g, m4thestr, "ts_20b_4.3_1", 0x0000, 0x010000, CRC(2221f704) SHA1(8459b658d3ad84bb86250518d0403970f881323d), "Bwb","The Streak (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4thestr__h, m4thestr, "ts_20b_c.3_1", 0x0000, 0x010000, CRC(ecdf59a9) SHA1(7c2141e336ba3f1865bbf422aaa0b78cb1a27a4c), "Bwb","The Streak (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4thestr__i, m4thestr, "ts_20bg4.3_1", 0x0000, 0x010000, CRC(b2a419ea) SHA1(bbc565ce8e79d39e1b1a7cd1685fa8c7ce00d7b9), "Bwb","The Streak (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4thestr__j, m4thestr, "ts_20bgc.3_1", 0x0000, 0x010000, CRC(3b2d7b50) SHA1(a8560b0894783a398aaf0510493583b8cb826947), "Bwb","The Streak (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4thestr__k, m4thestr, "ts_20bt4.3_1", 0x0000, 0x010000, CRC(d10a6c5a) SHA1(07fdf3797c87e35468ef859bb67753f11c5fbded), "Bwb","The Streak (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4thestr__l, m4thestr, "ts_20btc.3_1", 0x0000, 0x010000, CRC(58830ee0) SHA1(b2798e0f8e03870c77892a32654263575e9aaafa), "Bwb","The Streak (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4thestr__m, m4thestr, "ts_25_bc.3_1", 0x0000, 0x010000, CRC(43877de6) SHA1(b006ae97139c9bd66a32884b92fdbdf4f10db58a), "Bwb","The Streak (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4thestr__n, m4thestr, "ts_25_dc.3_1", 0x0000, 0x010000, CRC(60ab675c) SHA1(763b66d7731489abdec84d2f8e3c186ad95c7349), "Bwb","The Streak (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4thestr__o, m4thestr, "ts_25_kc.3_1", 0x0000, 0x010000, CRC(418cbb32) SHA1(e19a0c7fd88a82983ec33b99f3819a2a238c68a5), "Bwb","The Streak (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4thestr__p, m4thestr, "ts_25a_c.3_1", 0x0000, 0x010000, CRC(448a705f) SHA1(35a7cc480c376eaef7439d5c96cec490aec9fc4b), "Bwb","The Streak (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4thestr__q, m4thestr, "ts_25b_c.3_1", 0x0000, 0x010000, CRC(5b390ec2) SHA1(db7719ab8021e0b75e9419d2a05f3139fbab8e61), "Bwb","The Streak (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4thestr__r, m4thestr, "ts_25bgc.3_1", 0x0000, 0x010000, CRC(612463fc) SHA1(085d8faf91c8ef6520ca971d249322f336464856), "Bwb","The Streak (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4thestr__s, m4thestr, "ts_25btc.3_1", 0x0000, 0x010000, CRC(6d658e61) SHA1(619dbacad424e5db82c6ee19d1e3358c18cfe783), "Bwb","The Streak (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4thestr__t, m4thestr, "ts_30a_c.1_1", 0x0000, 0x010000, CRC(8636e700) SHA1(f11c20da6c3bfe1842ea8f9eac8c831d49f42c32), "Bwb","The Streak (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4thestr__u, m4thestr, "ts_30b_c.1_1", 0x0000, 0x010000, CRC(2577c8fc) SHA1(6d22bd1a93f423862f5466f99690eeced9090420), "Bwb","The Streak (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4thestr__v, m4thestr, "ts_30bgc.1_1", 0x0000, 0x010000, CRC(2c582ba6) SHA1(dbcae0ef90105a7f6c720156711f73bb3c237b8a), "Bwb","The Streak (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4thestr__w, m4thestr, "ts_39_dc.1_1", 0x0000, 0x010000, CRC(84d338b8) SHA1(847e6b7808b6d5d361414a4aaa5d5cf6a5863a70), "Bwb","The Streak (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4thestr__x, m4thestr, "ts_39a_c.1_1", 0x0000, 0x010000, CRC(9ee56a3a) SHA1(365ec4c90abbe4b352bdd2d6aed5eec4cdaf35ff), "Bwb","The Streak (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4thestr__y, m4thestr, "ts_39b_c.1_1", 0x0000, 0x010000, CRC(470cd6d1) SHA1(c9c3c9c23c596e79f1b6495d4706b1da6cbd1b2e), "Bwb","The Streak (Barcrest) (MPU4) (set 26)" ) #define M4CPYCAT_EXTRA_ROMS \ @@ -5051,42 +5053,42 @@ GAME_CUSTOM( 199?, m4thestr__y, m4thestr, "ts_39b_c.1_1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4cpycat, 0, "co_20_bc.1_1", 0x0000, 0x010000, CRC(c9d3cdc1) SHA1(28265b0f95a8829efc4e346269a7af17a6abe345), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4cpycat__a, m4cpycat, "co_20_dc.1_1", 0x0000, 0x010000, CRC(c6552f9a) SHA1(ae7ad183d2cd89bc9748dcbb3ea26832bed30009), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4cpycat__b, m4cpycat, "co_20_kc.1_1", 0x0000, 0x010000, CRC(b5260e35) SHA1(6cbf4ca426fd47b0db49e188a7a7fe72f6c99aef), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4cpycat__c, m4cpycat, "co_20a_c.1_1", 0x0000, 0x010000, CRC(486d42af) SHA1(327fca9604845ec37c2212413105f48a7b0e2836), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4cpycat__d, m4cpycat, "co_20b_c.1_1", 0x0000, 0x010000, CRC(90e0e19f) SHA1(c7e73faa4c3e853dbaa6b14303ab454a09eb36d7), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4cpycat__e, m4cpycat, "co_20bgc.1_1", 0x0000, 0x010000, CRC(f99d6ae2) SHA1(2106412caa7d3dfc262dc2b1d3e258bb33605912), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4cpycat__f, m4cpycat, "co_20bgp.4_1", 0x0000, 0x010000, CRC(fdc6753a) SHA1(4dd39fa995ee9fa7d153d64dd163d5482aa490d2), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4cpycat__g, m4cpycat, "co_20btc.1_1", 0x0000, 0x010000, CRC(3780d767) SHA1(4fb4354b02eed754ca1caef2b56eccc76524ae1e), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4cpycat__h, m4cpycat, "co_25_bc.1_1", 0x0000, 0x010000, CRC(13c82730) SHA1(992a6d04ed357548bb6cea6505316013048a2e57), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4cpycat__i, m4cpycat, "co_25_bp.2_1", 0x0000, 0x010000, CRC(a5983412) SHA1(7daa3028355fb0e85dce1629477a8efae625f86d), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4cpycat__j, m4cpycat, "co_25_bp.3_1", 0x0000, 0x010000, CRC(4060da30) SHA1(34a93e0550992e7510d1eaf2d5109da3c3fa2f75), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4cpycat__k, m4cpycat, "co_25_dc.1_1", 0x0000, 0x010000, CRC(a3f34f3f) SHA1(4c4842cc668b4c3abd9d2896cc50bbc3d9643b75), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4cpycat__l, m4cpycat, "co_25_dp.2_1", 0x0000, 0x010000, CRC(1f192638) SHA1(16a86242281281ca7b994dee06910d7f107c4743), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4cpycat__m, m4cpycat, "co_25_kc.1_1", 0x0000, 0x010000, CRC(6b2a7f2b) SHA1(5d558431a6b83214cc0dc33d999eeb72f3c53e85), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4cpycat__n, m4cpycat, "co_25_kp.2_1", 0x0000, 0x010000, CRC(73d3aaba) SHA1(5ef9118462bfdf93182ec539d3b80a72c09fa032), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4cpycat__o, m4cpycat, "co_25_kp.3_1", 0x0000, 0x010000, CRC(2e8fa3ee) SHA1(18f4e4eae7d7ac14486ed731bb67cab22d0b287d), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4cpycat__p, m4cpycat, "co_25a_c.1_1", 0x0000, 0x010000, CRC(e753196a) SHA1(79fc9b567dc946f81d40c3b215035cf2adcf94af), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4cpycat__q, m4cpycat, "co_25a_p.2_1", 0x0000, 0x010000, CRC(a058d7f7) SHA1(6e9116ce757503ef5b1822473a310513dd2973e3), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4cpycat__r, m4cpycat, "co_25a_p.3_1", 0x0000, 0x010000, CRC(ba172858) SHA1(d0a025c339f886802b7491448b6b2a4e1f5a3451), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4cpycat__s, m4cpycat, "co_25b_c.1_1", 0x0000, 0x010000, CRC(d82a9080) SHA1(9b9091f867f0b5d75f2bd5f9d62a4419073da357), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4cpycat__t, m4cpycat, "co_25b_p.2_1", 0x0000, 0x010000, CRC(48c8f7e6) SHA1(ff651e4c88b81bb816ab92e7f1d1fbd2c2920db1), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4cpycat__u, m4cpycat, "co_25bgc.1_1", 0x0000, 0x010000, CRC(947a5465) SHA1(c99c0e8ca515fbad8801e07e5936256cca8e7af1), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4cpycat__v, m4cpycat, "co_25bgp.2_1", 0x0000, 0x010000, CRC(84ab9c9d) SHA1(4c1043fb7ff6cd4e681f18e2dd0ddd29d5ce6d09), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4cpycat__w, m4cpycat, "co_25bgp.3_1", 0x0000, 0x010000, CRC(7fa4089e) SHA1(f73aff58c7a627f993e65527bb551c23640b22ed), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4cpycat__x, m4cpycat, "co_25btc.1_1", 0x0000, 0x010000, CRC(dbbae1b6) SHA1(2ee1d53872774d4b80f8c1a4e8a6ceb9e79ed6f5), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4cpycat__y, m4cpycat, "co_25btp.2_1", 0x0000, 0x010000, CRC(cea10ed8) SHA1(2b10193824afb50d561b2307a3189d14e2f5d47a), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4cpycat__z, m4cpycat, "co_30_bc.2_1", 0x0000, 0x010000, CRC(2d39f5fa) SHA1(20075621085765150a57233eccd61f16dbbae9b1), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4cpycat__0, m4cpycat, "co_30_bp.4_1", 0x0000, 0x010000, CRC(0826ffa7) SHA1(05a12d68acf69d8a582fc7fee91a282280380420), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 28)" ) -GAME_CUSTOM( 199?, m4cpycat__1, m4cpycat, "co_30_dc.2_1", 0x0000, 0x010000, CRC(b028d639) SHA1(9393b82d41e7f8a7e2dba33545477ae13a8d6804), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 29)" ) -GAME_CUSTOM( 199?, m4cpycat__2, m4cpycat, "co_30_dp.4_1", 0x0000, 0x010000, CRC(f40f09ca) SHA1(11f7af5bf78768759c3eba50ab1a906e81ce1100), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 30)" ) -GAME_CUSTOM( 199?, m4cpycat__3, m4cpycat, "co_30_kp.4_1", 0x0000, 0x010000, CRC(97ab5c33) SHA1(dc6b9705de4731a5cbc35557ca26c80b20cc6518), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 31)" ) -GAME_CUSTOM( 199?, m4cpycat__4, m4cpycat, "co_30a_c.2_1", 0x0000, 0x010000, CRC(eea1522d) SHA1(fdfe797b8cf2fa10f24e89c3047290ac63acebc7), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 32)" ) -GAME_CUSTOM( 199?, m4cpycat__5, m4cpycat, "co_30b_c.2_1", 0x0000, 0x010000, CRC(61e873b0) SHA1(00037fde263fe9e9cb227ef2945e8b90feee0d6e), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 33)" ) -GAME_CUSTOM( 199?, m4cpycat__6, m4cpycat, "co_30bdc.2_1", 0x0000, 0x010000, CRC(6f261bdc) SHA1(df7ab51c984b20665fdb327d17ca6ec32109ec2d), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 34)" ) -GAME_CUSTOM( 199?, m4cpycat__7, m4cpycat, "co_30bgc.2_1", 0x0000, 0x010000, CRC(85cd1c27) SHA1(e0c250bf2848b6991cf33c07b43c2704ae906e47), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 35)" ) -GAME_CUSTOM( 199?, m4cpycat__8, m4cpycat, "co_30btc.2_1", 0x0000, 0x010000, CRC(3a940326) SHA1(f1a0eca5ceccbf979ac7a2c51bfdc1de6f0aa40e), "Barcrest / Bwb","Copy Cat (Barcrest) (MPU4) (set 36)" ) +GAME_CUSTOM( 199?, m4cpycat, 0, "co_20_bc.1_1", 0x0000, 0x010000, CRC(c9d3cdc1) SHA1(28265b0f95a8829efc4e346269a7af17a6abe345), "Bwb","Copy Cat (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4cpycat__a, m4cpycat, "co_20_dc.1_1", 0x0000, 0x010000, CRC(c6552f9a) SHA1(ae7ad183d2cd89bc9748dcbb3ea26832bed30009), "Bwb","Copy Cat (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4cpycat__b, m4cpycat, "co_20_kc.1_1", 0x0000, 0x010000, CRC(b5260e35) SHA1(6cbf4ca426fd47b0db49e188a7a7fe72f6c99aef), "Bwb","Copy Cat (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4cpycat__c, m4cpycat, "co_20a_c.1_1", 0x0000, 0x010000, CRC(486d42af) SHA1(327fca9604845ec37c2212413105f48a7b0e2836), "Bwb","Copy Cat (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4cpycat__d, m4cpycat, "co_20b_c.1_1", 0x0000, 0x010000, CRC(90e0e19f) SHA1(c7e73faa4c3e853dbaa6b14303ab454a09eb36d7), "Bwb","Copy Cat (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4cpycat__e, m4cpycat, "co_20bgc.1_1", 0x0000, 0x010000, CRC(f99d6ae2) SHA1(2106412caa7d3dfc262dc2b1d3e258bb33605912), "Bwb","Copy Cat (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4cpycat__f, m4cpycat, "co_20bgp.4_1", 0x0000, 0x010000, CRC(fdc6753a) SHA1(4dd39fa995ee9fa7d153d64dd163d5482aa490d2), "Bwb","Copy Cat (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4cpycat__g, m4cpycat, "co_20btc.1_1", 0x0000, 0x010000, CRC(3780d767) SHA1(4fb4354b02eed754ca1caef2b56eccc76524ae1e), "Bwb","Copy Cat (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4cpycat__h, m4cpycat, "co_25_bc.1_1", 0x0000, 0x010000, CRC(13c82730) SHA1(992a6d04ed357548bb6cea6505316013048a2e57), "Bwb","Copy Cat (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4cpycat__i, m4cpycat, "co_25_bp.2_1", 0x0000, 0x010000, CRC(a5983412) SHA1(7daa3028355fb0e85dce1629477a8efae625f86d), "Bwb","Copy Cat (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4cpycat__j, m4cpycat, "co_25_bp.3_1", 0x0000, 0x010000, CRC(4060da30) SHA1(34a93e0550992e7510d1eaf2d5109da3c3fa2f75), "Bwb","Copy Cat (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4cpycat__k, m4cpycat, "co_25_dc.1_1", 0x0000, 0x010000, CRC(a3f34f3f) SHA1(4c4842cc668b4c3abd9d2896cc50bbc3d9643b75), "Bwb","Copy Cat (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4cpycat__l, m4cpycat, "co_25_dp.2_1", 0x0000, 0x010000, CRC(1f192638) SHA1(16a86242281281ca7b994dee06910d7f107c4743), "Bwb","Copy Cat (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4cpycat__m, m4cpycat, "co_25_kc.1_1", 0x0000, 0x010000, CRC(6b2a7f2b) SHA1(5d558431a6b83214cc0dc33d999eeb72f3c53e85), "Bwb","Copy Cat (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4cpycat__n, m4cpycat, "co_25_kp.2_1", 0x0000, 0x010000, CRC(73d3aaba) SHA1(5ef9118462bfdf93182ec539d3b80a72c09fa032), "Bwb","Copy Cat (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4cpycat__o, m4cpycat, "co_25_kp.3_1", 0x0000, 0x010000, CRC(2e8fa3ee) SHA1(18f4e4eae7d7ac14486ed731bb67cab22d0b287d), "Bwb","Copy Cat (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4cpycat__p, m4cpycat, "co_25a_c.1_1", 0x0000, 0x010000, CRC(e753196a) SHA1(79fc9b567dc946f81d40c3b215035cf2adcf94af), "Bwb","Copy Cat (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4cpycat__q, m4cpycat, "co_25a_p.2_1", 0x0000, 0x010000, CRC(a058d7f7) SHA1(6e9116ce757503ef5b1822473a310513dd2973e3), "Bwb","Copy Cat (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4cpycat__r, m4cpycat, "co_25a_p.3_1", 0x0000, 0x010000, CRC(ba172858) SHA1(d0a025c339f886802b7491448b6b2a4e1f5a3451), "Bwb","Copy Cat (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4cpycat__s, m4cpycat, "co_25b_c.1_1", 0x0000, 0x010000, CRC(d82a9080) SHA1(9b9091f867f0b5d75f2bd5f9d62a4419073da357), "Bwb","Copy Cat (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4cpycat__t, m4cpycat, "co_25b_p.2_1", 0x0000, 0x010000, CRC(48c8f7e6) SHA1(ff651e4c88b81bb816ab92e7f1d1fbd2c2920db1), "Bwb","Copy Cat (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4cpycat__u, m4cpycat, "co_25bgc.1_1", 0x0000, 0x010000, CRC(947a5465) SHA1(c99c0e8ca515fbad8801e07e5936256cca8e7af1), "Bwb","Copy Cat (Barcrest) (MPU4) (set 22)" ) +GAME_CUSTOM( 199?, m4cpycat__v, m4cpycat, "co_25bgp.2_1", 0x0000, 0x010000, CRC(84ab9c9d) SHA1(4c1043fb7ff6cd4e681f18e2dd0ddd29d5ce6d09), "Bwb","Copy Cat (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4cpycat__w, m4cpycat, "co_25bgp.3_1", 0x0000, 0x010000, CRC(7fa4089e) SHA1(f73aff58c7a627f993e65527bb551c23640b22ed), "Bwb","Copy Cat (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4cpycat__x, m4cpycat, "co_25btc.1_1", 0x0000, 0x010000, CRC(dbbae1b6) SHA1(2ee1d53872774d4b80f8c1a4e8a6ceb9e79ed6f5), "Bwb","Copy Cat (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4cpycat__y, m4cpycat, "co_25btp.2_1", 0x0000, 0x010000, CRC(cea10ed8) SHA1(2b10193824afb50d561b2307a3189d14e2f5d47a), "Bwb","Copy Cat (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4cpycat__z, m4cpycat, "co_30_bc.2_1", 0x0000, 0x010000, CRC(2d39f5fa) SHA1(20075621085765150a57233eccd61f16dbbae9b1), "Bwb","Copy Cat (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4cpycat__0, m4cpycat, "co_30_bp.4_1", 0x0000, 0x010000, CRC(0826ffa7) SHA1(05a12d68acf69d8a582fc7fee91a282280380420), "Bwb","Copy Cat (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4cpycat__1, m4cpycat, "co_30_dc.2_1", 0x0000, 0x010000, CRC(b028d639) SHA1(9393b82d41e7f8a7e2dba33545477ae13a8d6804), "Bwb","Copy Cat (Barcrest) (MPU4) (set 29)" ) +GAME_CUSTOM( 199?, m4cpycat__2, m4cpycat, "co_30_dp.4_1", 0x0000, 0x010000, CRC(f40f09ca) SHA1(11f7af5bf78768759c3eba50ab1a906e81ce1100), "Bwb","Copy Cat (Barcrest) (MPU4) (set 30)" ) +GAME_CUSTOM( 199?, m4cpycat__3, m4cpycat, "co_30_kp.4_1", 0x0000, 0x010000, CRC(97ab5c33) SHA1(dc6b9705de4731a5cbc35557ca26c80b20cc6518), "Bwb","Copy Cat (Barcrest) (MPU4) (set 31)" ) +GAME_CUSTOM( 199?, m4cpycat__4, m4cpycat, "co_30a_c.2_1", 0x0000, 0x010000, CRC(eea1522d) SHA1(fdfe797b8cf2fa10f24e89c3047290ac63acebc7), "Bwb","Copy Cat (Barcrest) (MPU4) (set 32)" ) +GAME_CUSTOM( 199?, m4cpycat__5, m4cpycat, "co_30b_c.2_1", 0x0000, 0x010000, CRC(61e873b0) SHA1(00037fde263fe9e9cb227ef2945e8b90feee0d6e), "Bwb","Copy Cat (Barcrest) (MPU4) (set 33)" ) +GAME_CUSTOM( 199?, m4cpycat__6, m4cpycat, "co_30bdc.2_1", 0x0000, 0x010000, CRC(6f261bdc) SHA1(df7ab51c984b20665fdb327d17ca6ec32109ec2d), "Bwb","Copy Cat (Barcrest) (MPU4) (set 34)" ) +GAME_CUSTOM( 199?, m4cpycat__7, m4cpycat, "co_30bgc.2_1", 0x0000, 0x010000, CRC(85cd1c27) SHA1(e0c250bf2848b6991cf33c07b43c2704ae906e47), "Bwb","Copy Cat (Barcrest) (MPU4) (set 35)" ) +GAME_CUSTOM( 199?, m4cpycat__8, m4cpycat, "co_30btc.2_1", 0x0000, 0x010000, CRC(3a940326) SHA1(f1a0eca5ceccbf979ac7a2c51bfdc1de6f0aa40e), "Bwb","Copy Cat (Barcrest) (MPU4) (set 36)" ) #undef GAME_CUSTOM #define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \ @@ -5137,25 +5139,27 @@ GAME_CUSTOM( 199?, m4bnkrol__b, m4bnkrol, "br301f.p1", 0x0000, 0x020000, CR M4TIC_EXTRA_ROMS \ ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4tic, 0, "tt_20a__.2_1", 0x0000, 0x010000, CRC(b923ac0d) SHA1(1237962af43c2c3f4ed0ad5bed21f24decfeae02), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4tic__a, m4tic, "tt_20a_c.1_1", 0x0000, 0x010000, CRC(18a68ea0) SHA1(37783121ff5540e264d89069101d991acb66b982), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4tic__b, m4tic, "tt_20b__.2_1", 0x0000, 0x010000, CRC(b5eb86ab) SHA1(99ddb80941c67bd271e22af17405457d32676484), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4tic__c, m4tic, "tt_20b_c.1_1", 0x0000, 0x010000, CRC(d35079ab) SHA1(d109af8ef6f4d26b505f63df10d5850ddc0c0b65), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4tic__d, m4tic, "tt_20bd_.2_1", 0x0000, 0x010000, CRC(0889a699) SHA1(c96d135b9248e9bab78af438b97e6cb854b2c771), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4tic__e, m4tic, "tt_20bdc.1_1", 0x0000, 0x010000, CRC(2a43efd4) SHA1(9f6e568ca95a5f4e1a4e82eda2d15dfa225e65ea), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4tic__f, m4tic, "tt_20bg_.2_1", 0x0000, 0x010000, CRC(128896c1) SHA1(af37645b88116cde57fcc42ed58d69bf9c11ff8a), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4tic__g, m4tic, "tt_20bt_.2_1", 0x0000, 0x010000, CRC(362046f9) SHA1(6cb5a986517158d63e7403891bb749eaccb63acb), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4tic__h, m4tic, "tt_20s__.2_1", 0x0000, 0x010000, CRC(53dfefe9) SHA1(0f9fc1d65ebd7e370de6001f594616b79b2aa57e), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4tic__i, m4tic, "tt_20s_c.1_1", 0x0000, 0x010000, CRC(65a38960) SHA1(48ffdda1c5c98742124418429c510de9f5b90270), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4tic__j, m4tic, "tt_20sb_.2_1", 0x0000, 0x010000, CRC(c9174384) SHA1(f694a6a7f78b8a062fd26371fa6758ec4252352a), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4tic__k, m4tic, "tt_20sk_.2_1", 0x0000, 0x010000, CRC(dca42636) SHA1(c6e9aaf402c2fc7eec6e9b07aa4c33312bc0af0e), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4tic__l, m4tic, "tt_25a_c.3_1", 0x0000, 0x010000, CRC(2e44c6db) SHA1(ffc96dafbcfae719c3971882e066971540fafe78), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4tic__m, m4tic, "tt_25b_c.3_1", 0x0000, 0x010000, CRC(d393edf0) SHA1(66f17a88018fee71f3e0c7996371c9b6832ef23a), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4tic__n, m4tic, "tt_25bdc.3_1", 0x0000, 0x010000, CRC(2ce71772) SHA1(a2f36d0d11826a7be7f8cc04f21a77facb4ce188), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4tic__o, m4tic, "tt_25bgc.3_1", 0x0000, 0x010000, CRC(2dbeb9c3) SHA1(8288a9d17932582c7536563e34e2150a85c7a822), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4tic__p, m4tic, "tt_25btc.3_1", 0x0000, 0x010000, CRC(d5702abf) SHA1(6115f39d70dfdf1a00bcfc5f0fe257dd1e0ff968), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4tic__r, m4tic, "tt_25sbc.3_1", 0x0000, 0x010000, CRC(11c0152f) SHA1(d46b0a6774da35cf9d3a352b9fe7cb574880b210), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4tic__s, m4tic, "tti20___.2_1", 0x0000, 0x010000, CRC(91054bf6) SHA1(68cc6c9b47849149a574e3af97bd0e8255fc5c43), "Barcrest / Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 19)" ) + + +GAME_CUSTOM( 199?, m4tic, 0, "tt_20a__.2_1", 0x0000, 0x010000, CRC(b923ac0d) SHA1(1237962af43c2c3f4ed0ad5bed21f24decfeae02), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 1)" ) +GAME_CUSTOM( 199?, m4tic__a, m4tic, "tt_20a_c.1_1", 0x0000, 0x010000, CRC(18a68ea0) SHA1(37783121ff5540e264d89069101d991acb66b982), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4tic__b, m4tic, "tt_20b__.2_1", 0x0000, 0x010000, CRC(b5eb86ab) SHA1(99ddb80941c67bd271e22af17405457d32676484), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4tic__c, m4tic, "tt_20b_c.1_1", 0x0000, 0x010000, CRC(d35079ab) SHA1(d109af8ef6f4d26b505f63df10d5850ddc0c0b65), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4tic__d, m4tic, "tt_20bd_.2_1", 0x0000, 0x010000, CRC(0889a699) SHA1(c96d135b9248e9bab78af438b97e6cb854b2c771), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4tic__e, m4tic, "tt_20bdc.1_1", 0x0000, 0x010000, CRC(2a43efd4) SHA1(9f6e568ca95a5f4e1a4e82eda2d15dfa225e65ea), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4tic__f, m4tic, "tt_20bg_.2_1", 0x0000, 0x010000, CRC(128896c1) SHA1(af37645b88116cde57fcc42ed58d69bf9c11ff8a), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4tic__g, m4tic, "tt_20bt_.2_1", 0x0000, 0x010000, CRC(362046f9) SHA1(6cb5a986517158d63e7403891bb749eaccb63acb), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4tic__h, m4tic, "tt_20s__.2_1", 0x0000, 0x010000, CRC(53dfefe9) SHA1(0f9fc1d65ebd7e370de6001f594616b79b2aa57e), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4tic__i, m4tic, "tt_20s_c.1_1", 0x0000, 0x010000, CRC(65a38960) SHA1(48ffdda1c5c98742124418429c510de9f5b90270), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4tic__j, m4tic, "tt_20sb_.2_1", 0x0000, 0x010000, CRC(c9174384) SHA1(f694a6a7f78b8a062fd26371fa6758ec4252352a), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4tic__k, m4tic, "tt_20sk_.2_1", 0x0000, 0x010000, CRC(dca42636) SHA1(c6e9aaf402c2fc7eec6e9b07aa4c33312bc0af0e), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4tic__l, m4tic, "tt_25a_c.3_1", 0x0000, 0x010000, CRC(2e44c6db) SHA1(ffc96dafbcfae719c3971882e066971540fafe78), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4tic__m, m4tic, "tt_25b_c.3_1", 0x0000, 0x010000, CRC(d393edf0) SHA1(66f17a88018fee71f3e0c7996371c9b6832ef23a), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4tic__n, m4tic, "tt_25bdc.3_1", 0x0000, 0x010000, CRC(2ce71772) SHA1(a2f36d0d11826a7be7f8cc04f21a77facb4ce188), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4tic__o, m4tic, "tt_25bgc.3_1", 0x0000, 0x010000, CRC(2dbeb9c3) SHA1(8288a9d17932582c7536563e34e2150a85c7a822), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4tic__p, m4tic, "tt_25btc.3_1", 0x0000, 0x010000, CRC(d5702abf) SHA1(6115f39d70dfdf1a00bcfc5f0fe257dd1e0ff968), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4tic__r, m4tic, "tt_25sbc.3_1", 0x0000, 0x010000, CRC(11c0152f) SHA1(d46b0a6774da35cf9d3a352b9fe7cb574880b210), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4tic__s, m4tic, "tti20___.2_1", 0x0000, 0x010000, CRC(91054bf6) SHA1(68cc6c9b47849149a574e3af97bd0e8255fc5c43), "Bwb","Tic Tac Toe (Barcrest) (MPU4) (set 19)" ) #define M4RHRCL_EXTRA_ROMS \ ROM_REGION( 0x48, "fakechr", 0 ) \ @@ -5234,32 +5238,38 @@ GAME_CUSTOM( 199?, m4gb006__c, m4gb006, "bond20_11", 0x0000, 0x010000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) +// some of these ROMs (the non-D ones?) contain a 'Barcrest Video' string, and the game seems to do nothing, could require other (undumped?) parts as there really aren't many strings in here - -GAME_CUSTOM( 199?, m4gbust, 0, "gb_02___.2n3", 0x0000, 0x010000, CRC(973b3538) SHA1(31df04d9f35cbde4d5e395256927f146d1613178), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4gbust__a, m4gbust, "gb_02___.3a3", 0x0000, 0x010000, CRC(2b9d94b6) SHA1(ca433240f9e926cdf5240209589951e6018a496a), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4gbust__b, m4gbust, "gb_02___.3n3", 0x0000, 0x010000, CRC(99514ddd) SHA1(432d484525867c6ad68cd93a4bfded4dba36cf56), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4gbust__c, m4gbust, "gb_02___.3s3", 0x0000, 0x010000, CRC(2634aa5f) SHA1(58ab973940138bdfd2690867e2ac3eb52bffb633), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4gbust__d, m4gbust, "gb_05___.4a3", 0x0000, 0x010000, CRC(8be6949e) SHA1(9731a1cb0d17c3cec2bec263cd6348f05662d917), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4gbust__e, m4gbust, "gb_05___.4n3", 0x0000, 0x010000, CRC(621b25f0) SHA1(bf699068284def8bad9143c5841f667f2cb6f20f), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4gbust__f, m4gbust, "gb_05___.4s3", 0x0000, 0x010000, CRC(e2227701) SHA1(271682c7bf6e0f6f49f6d6b138aa19b6ef6bc626), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4gbust__g, m4gbust, "gb_05_d_.4a3", 0x0000, 0x010000, CRC(a1b2b32f) SHA1(c1504b3768920f90dbd441b9d50db9676528ca97), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4gbust__h, m4gbust, "gb_10___.2a3", 0x0000, 0x010000, CRC(a5c692f3) SHA1(8305c88ab8b80b407f4723df25135c25a4c0794f), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4gbust__i, m4gbust, "gb_10___.2n3", 0x0000, 0x010000, CRC(de18c441) SHA1(5a7055fcd755c1ac58e1b94af243801f169f29f5), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4gbust__j, m4gbust, "gb_10___.3s3", 0x0000, 0x010000, CRC(427e043b) SHA1(2f64c11a04306692ac5eb9919892f7226156dce0), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4gbust__k, m4gbust, "gb_10_b_.3s3", 0x0000, 0x010000, CRC(091afb66) SHA1(ac32d7be1e1f4f1453e37017966990a481506024), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4gbust__l, m4gbust, "gb_10_d_.2a3", 0x0000, 0x010000, CRC(f1446bf5) SHA1(4011d60e13045476741c5a02c64dabbe6a1ae2d6), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4gbust__m, m4gbust, "gb_10_d_.2n3", 0x0000, 0x010000, CRC(cac5057d) SHA1(afcc21dbd07515ed134675b7dbfb53c048a465b0), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4gbust__n, m4gbust, "gb_10_d_.3s3", 0x0000, 0x010000, CRC(776736de) SHA1(4f80d9ffdf4468801cf830e9774b6028f7684864), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4gbust__o, m4gbust, "gb_20___.2n3", 0x0000, 0x010000, CRC(27fc2ee1) SHA1(2e6a042f7117b4594b2601ae166ee0db72c70ed5), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4gbust__p, m4gbust, "gb_20___.3s3", 0x0000, 0x010000, CRC(4a86d879) SHA1(72e92b6482fdeb4dca36d9426a712ac24d60f7f7), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4gbust__q, m4gbust, "gb_20_b_.2a3", 0x0000, 0x010000, CRC(4dd7d38f) SHA1(8a71c27189ec3089c016a8292db68f7cdc91b083), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4gbust__r, m4gbust, "gb_20_b_.2n3", 0x0000, 0x010000, CRC(28cbb217) SHA1(a74978ff5e1511a33f543006b3f8ad30a77ea462), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4gbust__s, m4gbust, "gb_20_b_.3s3", 0x0000, 0x010000, CRC(1a7cc3cf) SHA1(0d5764d35489bde284965c197b217a06f26a3e3b), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4gbust__t, m4gbust, "gb_20_d_.2a3", 0x0000, 0x010000, CRC(70f40688) SHA1(ed14f8f460825ffa087394ef5984ae064e02f7b6), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4gbust__u, m4gbust, "gb_20_d_.2n3", 0x0000, 0x010000, CRC(431c2965) SHA1(eb24e560d5c4bf419465fc760621a4fa853fff95), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4gbust__v, m4gbust, "gb_20_d_.3s3", 0x0000, 0x010000, CRC(4fc69155) SHA1(09a0f2122893d9fd90204a74c8862e01386503a4), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4gbust__w, m4gbust, "ghostbusters 2p.bin", 0x0000, 0x010000, CRC(abb288c4) SHA1(2012e027711996a552ab59674ae3bce1bf14f44b), "Bwb / Barcrest","Ghost Buster (Barcrest) (MPU4) (set 24)" ) +// "(C)1994 B.W.B." and "GB 5.0" +GAME_CUSTOM( 199?, m4gbust, 0, "gb_05___.4s3", 0x0000, 0x010000, CRC(e2227701) SHA1(271682c7bf6e0f6f49f6d6b138aa19b6ef6bc626), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 5.0)" ) +// "(C)1994 B.W.B." and "GB 4.0" +GAME_CUSTOM( 199?, m4gbust__d, m4gbust, "gb_05___.4a3", 0x0000, 0x010000, CRC(8be6949e) SHA1(9731a1cb0d17c3cec2bec263cd6348f05662d917), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 4.0, set 1)" ) +GAME_CUSTOM( 199?, m4gbust__e, m4gbust, "gb_05___.4n3", 0x0000, 0x010000, CRC(621b25f0) SHA1(bf699068284def8bad9143c5841f667f2cb6f20f), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 4.0, set 2)" ) +GAME_CUSTOM( 199?, m4gbust__g, m4gbust, "gb_05_d_.4a3", 0x0000, 0x010000, CRC(a1b2b32f) SHA1(c1504b3768920f90dbd441b9d50db9676528ca97), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 4.0D)" ) +// "(C)1994 B.W.B." and "GB 3.0" +GAME_CUSTOM( 199?, m4gbust__b, m4gbust, "gb_02___.3n3", 0x0000, 0x010000, CRC(99514ddd) SHA1(432d484525867c6ad68cd93a4bfded4dba36cf56), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 3.0, 1994, set 1)" ) +GAME_CUSTOM( 199?, m4gbust__a, m4gbust, "gb_02___.3a3", 0x0000, 0x010000, CRC(2b9d94b6) SHA1(ca433240f9e926cdf5240209589951e6018a496a), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 3.0, 1994, set 2)" ) +// "(C)1994 B.W.B." and "GB 2.0" +GAME_CUSTOM( 199?, m4gbust__c, m4gbust, "gb_02___.3s3", 0x0000, 0x010000, CRC(2634aa5f) SHA1(58ab973940138bdfd2690867e2ac3eb52bffb633), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0, 1994)" ) +// "(C)1993 B.W.B." and "GB 3.0" +GAME_CUSTOM( 199?, m4gbust__j, m4gbust, "gb_10___.3s3", 0x0000, 0x010000, CRC(427e043b) SHA1(2f64c11a04306692ac5eb9919892f7226156dce0), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 3.0, set 1)" ) +GAME_CUSTOM( 199?, m4gbust__p, m4gbust, "gb_20___.3s3", 0x0000, 0x010000, CRC(4a86d879) SHA1(72e92b6482fdeb4dca36d9426a712ac24d60f7f7), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 3.0, set 2)" ) +GAME_CUSTOM( 199?, m4gbust__n, m4gbust, "gb_10_d_.3s3", 0x0000, 0x010000, CRC(776736de) SHA1(4f80d9ffdf4468801cf830e9774b6028f7684864), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 3.0D, set 1)" ) +GAME_CUSTOM( 199?, m4gbust__v, m4gbust, "gb_20_d_.3s3", 0x0000, 0x010000, CRC(4fc69155) SHA1(09a0f2122893d9fd90204a74c8862e01386503a4), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 3.0D, set 2)" ) +GAME_CUSTOM( 199?, m4gbust__k, m4gbust, "gb_10_b_.3s3", 0x0000, 0x010000, CRC(091afb66) SHA1(ac32d7be1e1f4f1453e37017966990a481506024), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 3.0YD, set 1)" ) +GAME_CUSTOM( 199?, m4gbust__s, m4gbust, "gb_20_b_.3s3", 0x0000, 0x010000, CRC(1a7cc3cf) SHA1(0d5764d35489bde284965c197b217a06f26a3e3b), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 3.0YD, set 2)" ) +// "(C)1993 B.W.B." and "GB 2.0" +GAME_CUSTOM( 199?, m4gbust__f, m4gbust, "gb_02___.2n3", 0x0000, 0x010000, CRC(973b3538) SHA1(31df04d9f35cbde4d5e395256927f146d1613178), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 1)" ) +GAME_CUSTOM( 199?, m4gbust__i, m4gbust, "gb_10___.2n3", 0x0000, 0x010000, CRC(de18c441) SHA1(5a7055fcd755c1ac58e1b94af243801f169f29f5), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 2)" ) +GAME_CUSTOM( 199?, m4gbust__o, m4gbust, "gb_20___.2n3", 0x0000, 0x010000, CRC(27fc2ee1) SHA1(2e6a042f7117b4594b2601ae166ee0db72c70ed5), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 3)" ) +GAME_CUSTOM( 199?, m4gbust__h, m4gbust, "gb_10___.2a3", 0x0000, 0x010000, CRC(a5c692f3) SHA1(8305c88ab8b80b407f4723df25135c25a4c0794f), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 4)" ) +GAME_CUSTOM( 199?, m4gbust__w, m4gbust, "ghostbusters 2p.bin", 0x0000, 0x010000, CRC(abb288c4) SHA1(2012e027711996a552ab59674ae3bce1bf14f44b), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 5)" ) +GAME_CUSTOM( 199?, m4gbust__m, m4gbust, "gb_10_d_.2n3", 0x0000, 0x010000, CRC(cac5057d) SHA1(afcc21dbd07515ed134675b7dbfb53c048a465b0), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0D, set 1)" ) +GAME_CUSTOM( 199?, m4gbust__u, m4gbust, "gb_20_d_.2n3", 0x0000, 0x010000, CRC(431c2965) SHA1(eb24e560d5c4bf419465fc760621a4fa853fff95), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0D, set 2)" ) +GAME_CUSTOM( 199?, m4gbust__l, m4gbust, "gb_10_d_.2a3", 0x0000, 0x010000, CRC(f1446bf5) SHA1(4011d60e13045476741c5a02c64dabbe6a1ae2d6), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0D, set 3)" ) +GAME_CUSTOM( 199?, m4gbust__t, m4gbust, "gb_20_d_.2a3", 0x0000, 0x010000, CRC(70f40688) SHA1(ed14f8f460825ffa087394ef5984ae064e02f7b6), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0D, set 4)" ) +GAME_CUSTOM( 199?, m4gbust__r, m4gbust, "gb_20_b_.2n3", 0x0000, 0x010000, CRC(28cbb217) SHA1(a74978ff5e1511a33f543006b3f8ad30a77ea462), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0YD, set 1)" ) +GAME_CUSTOM( 199?, m4gbust__q, m4gbust, "gb_20_b_.2a3", 0x0000, 0x010000, CRC(4dd7d38f) SHA1(8a71c27189ec3089c016a8292db68f7cdc91b083), "Bwb","Ghost Buster (Barcrest) (MPU4) (GB 2.0YD, set 2)" ) @@ -5276,11 +5286,12 @@ GAME_CUSTOM( 199?, m4gbust__w, m4gbust, "ghostbusters 2p.bin", 0x0000, 0x01 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4cshenc, 0, "ca_sj__c.5_1", 0x0000, 0x020000, CRC(d9131b39) SHA1(4af89a7bc10de1406f401bede41e1bc452dbb159), "Bwb / Barcrest","Cash Encounters (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4cshenc__a, m4cshenc, "ca_sj_bc.5_1", 0x0000, 0x020000, CRC(30d1fb6d) SHA1(f845bef4ad7f2f48077eed74840916e87abb24b2), "Bwb / Barcrest","Cash Encounters (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4cshenc__b, m4cshenc, "ca_sj_dc.5_1", 0x0000, 0x020000, CRC(ac3ec716) SHA1(4ff8c26c46ec6e1321249b4d6d0c5194ed917f33), "Bwb / Barcrest","Cash Encounters (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4cshenc__c, m4cshenc, "ca_sja_c.5_1", 0x0000, 0x020000, CRC(c56a9d0b) SHA1(b0298c2e03097ab8ba5f99892e732ff1ab784c9b), "Bwb / Barcrest","Cash Encounters (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4cshenc__d, m4cshenc, "ca_sjb_c.5_1", 0x0000, 0x020000, CRC(8fad355d) SHA1(2ac16ad85ab8239a3e961abb06f9f71d17e5832a), "Bwb / Barcrest","Cash Encounters (Barcrest) (MPU4) (set 5)" ) +// "(C)1997 BWB" and "CA_ 5.0" +GAME_CUSTOM( 199?, m4cshenc, 0, "ca_sj__c.5_1", 0x0000, 0x020000, CRC(d9131b39) SHA1(4af89a7bc10de1406f401bede41e1bc452dbb159), "Bwb","Cash Encounters (Barcrest) (MPU4) (CA_ 5.0)" ) +GAME_CUSTOM( 199?, m4cshenc__a, m4cshenc, "ca_sj_bc.5_1", 0x0000, 0x020000, CRC(30d1fb6d) SHA1(f845bef4ad7f2f48077eed74840916e87abb24b2), "Bwb","Cash Encounters (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4cshenc__b, m4cshenc, "ca_sj_dc.5_1", 0x0000, 0x020000, CRC(ac3ec716) SHA1(4ff8c26c46ec6e1321249b4d6d0c5194ed917f33), "Bwb","Cash Encounters (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4cshenc__c, m4cshenc, "ca_sja_c.5_1", 0x0000, 0x020000, CRC(c56a9d0b) SHA1(b0298c2e03097ab8ba5f99892e732ff1ab784c9b), "Bwb","Cash Encounters (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4cshenc__d, m4cshenc, "ca_sjb_c.5_1", 0x0000, 0x020000, CRC(8fad355d) SHA1(2ac16ad85ab8239a3e961abb06f9f71d17e5832a), "Bwb","Cash Encounters (Barcrest) (MPU4) (set 5)" ) @@ -5297,14 +5308,15 @@ GAME_CUSTOM( 199?, m4cshenc__d, m4cshenc, "ca_sjb_c.5_1", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4lvlcl, 0, "ll__x__x.1_1", 0x0000, 0x010000, CRC(1ef1c5b4) SHA1(455c147f158f8a36a9add9b984abc22af78258cf), "Bwb / Barcrest","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4lvlcl__a, m4lvlcl, "ll__x__x.3_1", 0x0000, 0x010000, CRC(42b85ebc) SHA1(a352d8389674fcfd90dc4e8155e6f4a78c9ec70d), "Bwb / Barcrest","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4lvlcl__b, m4lvlcl, "ll__x_dx.3_1", 0x0000, 0x010000, CRC(7753c8f0) SHA1(9600fee08529f29716697c4630730f15ef8a457b), "Bwb / Barcrest","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4lvlcl__c, m4lvlcl, "ll__xa_x.3_1", 0x0000, 0x010000, CRC(79468e93) SHA1(4beaa6fe2ad095b4674473ab99a7216513923077), "Bwb / Barcrest","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4lvlcl__d, m4lvlcl, "ll__xb_x.3_1", 0x0000, 0x010000, CRC(73b2fb34) SHA1(c127bc0954f8d01e9d8365a4506dde6f17da33fd), "Bwb / Barcrest","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4lvlcl__e, m4lvlcl, "ll__xgdx.1_1", 0x0000, 0x010000, CRC(65824c4f) SHA1(a514e48ac0f9d4a8d7506bf6932aeee88ca17104), "Bwb / Barcrest","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4lvlcl__f, m4lvlcl, "ll__xgdx.3_1", 0x0000, 0x010000, CRC(ba5b951a) SHA1(9ee36d3d42ce68f5797208633be87ddbbe605cf1), "Bwb / Barcrest","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 7)" ) +// "(C)1998 BWB" and "LLU 0.1" +GAME_CUSTOM( 199?, m4lvlcl, 0, "ll__x__x.1_1", 0x0000, 0x010000, CRC(1ef1c5b4) SHA1(455c147f158f8a36a9add9b984abc22af78258cf), "Bwb","Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 0.1)" ) +GAME_CUSTOM( 199?, m4lvlcl__e, m4lvlcl, "ll__xgdx.1_1", 0x0000, 0x010000, CRC(65824c4f) SHA1(a514e48ac0f9d4a8d7506bf6932aeee88ca17104), "Bwb","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 6)" ) +// "(C)1998 BWB" and "LLU 3.0" +GAME_CUSTOM( 199?, m4lvlcl__a, m4lvlcl, "ll__x__x.3_1", 0x0000, 0x010000, CRC(42b85ebc) SHA1(a352d8389674fcfd90dc4e8155e6f4a78c9ec70d), "Bwb","Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 3.0)" ) +GAME_CUSTOM( 199?, m4lvlcl__b, m4lvlcl, "ll__x_dx.3_1", 0x0000, 0x010000, CRC(7753c8f0) SHA1(9600fee08529f29716697c4630730f15ef8a457b), "Bwb","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4lvlcl__c, m4lvlcl, "ll__xa_x.3_1", 0x0000, 0x010000, CRC(79468e93) SHA1(4beaa6fe2ad095b4674473ab99a7216513923077), "Bwb","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4lvlcl__d, m4lvlcl, "ll__xb_x.3_1", 0x0000, 0x010000, CRC(73b2fb34) SHA1(c127bc0954f8d01e9d8365a4506dde6f17da33fd), "Bwb","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4lvlcl__f, m4lvlcl, "ll__xgdx.3_1", 0x0000, 0x010000, CRC(ba5b951a) SHA1(9ee36d3d42ce68f5797208633be87ddbbe605cf1), "Bwb","Lucky Las Vegas Classic (Barcrest) (MPU4) (set 7)" ) #define M4RHS_EXTRA_ROMS \ @@ -5325,20 +5337,23 @@ GAME_CUSTOM( 199?, m4lvlcl__f, m4lvlcl, "ll__xgdx.3_1", 0x0000, 0x010000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4rhs, 0, "rh_sj___.4s1", 0x0000, 0x020000, CRC(be6179cd) SHA1(8aefffdffb25bc4dd7d083c7027be746181c2ff9), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4rhs__a, m4rhs, "rh_sj__c.6_1", 0x0000, 0x020000, CRC(476f3cf2) SHA1(18ce990e28ca8565ade5eec9a62f0b243121af73), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4rhs__b, m4rhs, "rh_sj_b_.4s1", 0x0000, 0x020000, CRC(58a4480e) SHA1(f4ecfa1debbfa9dba75263bce2c9f66741c3466f), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4rhs__c, m4rhs, "rh_sj_bc.6_1", 0x0000, 0x020000, CRC(2e37a58c) SHA1(a48c96384aa81f98bfa980c93e93523ecef3d43c), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4rhs__d, m4rhs, "rh_sj_d_.4s1", 0x0000, 0x020000, CRC(8f1176db) SHA1(283ef0b9515eac342a02489118bd30016ba85399), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4rhs__e, m4rhs, "rh_sj_k_.4s1", 0x0000, 0x020000, CRC(3f2ef505) SHA1(28c3806bc48af21a2b7ea27d42ea9f6b4346f3b8), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4rhs__f, m4rhs, "rh_sja__.4s1", 0x0000, 0x020000, CRC(b8cdd5fb) SHA1(4e336dd3d61f4fdba731951c56e440766ea8efeb), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4rhs__g, m4rhs, "rh_sja_c.6_1", 0x0000, 0x020000, CRC(b7b790e5) SHA1(e2b34dc2f6ede4f4c22b11123dfaed46f2c5c45e), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4rhs__h, m4rhs, "rh_sjab_.4s1", 0x0000, 0x020000, CRC(c8468d4c) SHA1(6a9f8fe10949712ecacca3bfcd7d5ab4860682e2), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4rhs__i, m4rhs, "rh_sjad_.4s1", 0x0000, 0x020000, CRC(df4768f0) SHA1(74894b232b27e65058d59acf174172da86def95a), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4rhs__j, m4rhs, "rh_sjak_.4s1", 0x0000, 0x020000, CRC(6f78eb2e) SHA1(a9fec7a7ad9334c3d8760e1982ac00651858cee8), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4rhs__k, m4rhs, "rocky15g", 0x0000, 0x020000, CRC(05f4f333) SHA1(a1b917f6c91d751fb2433e46c4c60840b47eed9e), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4rhs__l, m4rhs, "rocky15t", 0x0000, 0x020000, CRC(3fbad6de) SHA1(e8d76b3878794c769187d92d2834018a84e764ac), "Bwb / Barcrest","Rocky Horror Show (Barcrest) (MPU4) (set 13)" ) +// "(C)1998 B.W.B." and "RH__4.0" +GAME_CUSTOM( 199?, m4rhs, 0, "rh_sj___.4s1", 0x0000, 0x020000, CRC(be6179cd) SHA1(8aefffdffb25bc4dd7d083c7027be746181c2ff9), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (RH__4.0)" ) +GAME_CUSTOM( 199?, m4rhs__b, m4rhs, "rh_sj_b_.4s1", 0x0000, 0x020000, CRC(58a4480e) SHA1(f4ecfa1debbfa9dba75263bce2c9f66741c3466f), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4rhs__d, m4rhs, "rh_sj_d_.4s1", 0x0000, 0x020000, CRC(8f1176db) SHA1(283ef0b9515eac342a02489118bd30016ba85399), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4rhs__e, m4rhs, "rh_sj_k_.4s1", 0x0000, 0x020000, CRC(3f2ef505) SHA1(28c3806bc48af21a2b7ea27d42ea9f6b4346f3b8), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4rhs__f, m4rhs, "rh_sja__.4s1", 0x0000, 0x020000, CRC(b8cdd5fb) SHA1(4e336dd3d61f4fdba731951c56e440766ea8efeb), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4rhs__h, m4rhs, "rh_sjab_.4s1", 0x0000, 0x020000, CRC(c8468d4c) SHA1(6a9f8fe10949712ecacca3bfcd7d5ab4860682e2), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 9)" ) +GAME_CUSTOM( 199?, m4rhs__i, m4rhs, "rh_sjad_.4s1", 0x0000, 0x020000, CRC(df4768f0) SHA1(74894b232b27e65058d59acf174172da86def95a), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 10)" ) +GAME_CUSTOM( 199?, m4rhs__j, m4rhs, "rh_sjak_.4s1", 0x0000, 0x020000, CRC(6f78eb2e) SHA1(a9fec7a7ad9334c3d8760e1982ac00651858cee8), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 11)" ) +// "(C)1998 B.W.B." and "RH__6.0" +GAME_CUSTOM( 199?, m4rhs__a, m4rhs, "rh_sj__c.6_1", 0x0000, 0x020000, CRC(476f3cf2) SHA1(18ce990e28ca8565ade5eec9a62f0b243121af73), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (RH__6.0)" ) +GAME_CUSTOM( 199?, m4rhs__c, m4rhs, "rh_sj_bc.6_1", 0x0000, 0x020000, CRC(2e37a58c) SHA1(a48c96384aa81f98bfa980c93e93523ecef3d43c), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4rhs__g, m4rhs, "rh_sja_c.6_1", 0x0000, 0x020000, CRC(b7b790e5) SHA1(e2b34dc2f6ede4f4c22b11123dfaed46f2c5c45e), "Bwb","Rocky Horror Show (Barcrest) (MPU4) (set 8)" ) +// no copyright string and "RH__2.0" +GAME_CUSTOM( 199?, m4rhs__k, m4rhs, "rocky15g", 0x0000, 0x020000, CRC(05f4f333) SHA1(a1b917f6c91d751fb2433e46c4c60840b47eed9e), "hack","Rocky Horror Show (Barcrest) (MPU4) (RH__2.0, hack)" ) +// no copyright string and "RH__3.0" +GAME_CUSTOM( 199?, m4rhs__l, m4rhs, "rocky15t", 0x0000, 0x020000, CRC(3fbad6de) SHA1(e8d76b3878794c769187d92d2834018a84e764ac), "hack","Rocky Horror Show (Barcrest) (MPU4) (RH__3.0, hack)" ) #define M4OADRAC_EXTRA_ROMS \ @@ -5356,16 +5371,17 @@ GAME_CUSTOM( 199?, m4rhs__l, m4rhs, "rocky15t", 0x0000, 0x020000, CRC(3fba ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4oadrac, 0, "dr__x__x.2_0", 0x0000, 0x020000, CRC(4ca65bd9) SHA1(deb0a7d3596647210061b69a10fc6cdfc066538e), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4oadrac__a, m4oadrac, "dr__x__x.2_1", 0x0000, 0x020000, CRC(d91773af) SHA1(3d8dda0f409f55bce9c4d4e2a8377e43fe2f1f7d), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4oadrac__b, m4oadrac, "dr__x_dx.2_0", 0x0000, 0x020000, CRC(47f3ac5a) SHA1(e0413c55b897e96e32c3332dac041bc94da6dea3), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4oadrac__c, m4oadrac, "dr__x_dx.2_1", 0x0000, 0x020000, CRC(f8c36b67) SHA1(c765d7a5eb4d7cd74295da26a7c6f5341a1ca257), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4oadrac__d, m4oadrac, "dr__xa_x.2_0", 0x0000, 0x020000, CRC(702f0f7a) SHA1(8529c3eaa33cb972cc38067d176c7c8af0674147), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4oadrac__e, m4oadrac, "dr__xa_x.2_1", 0x0000, 0x020000, CRC(cf1fc847) SHA1(6b09c0de15a380da1783a387569d83328f5b29a0), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4oadrac__f, m4oadrac, "dr__xb_x.2_0", 0x0000, 0x020000, CRC(3ae8a72c) SHA1(a27faba69430b1d16abf62e0ef37182ab302bbbd), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4oadrac__g, m4oadrac, "dr__xb_x.2_1", 0x0000, 0x020000, CRC(85d86011) SHA1(81f8624908299aa37e75fc5d12059b3600212d35), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4oadrac__h, m4oadrac, "dri_xa_x.2_0", 0x0000, 0x020000, CRC(849d2a80) SHA1(c9ff0a5a543b62ca5b885f93a35b5f40e88db8c3), "Bwb / Barcrest","Ooh Aah Dracula (Barcrest) (MPU4) (set 9)" ) +// "(C)1999 BWB" and "DR_ 2.0" +GAME_CUSTOM( 199?, m4oadrac, 0, "dr__x__x.2_0", 0x0000, 0x020000, CRC(4ca65bd9) SHA1(deb0a7d3596647210061b69a10fc6cdfc066538e), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.0)" ) +GAME_CUSTOM( 199?, m4oadrac__b, m4oadrac, "dr__x_dx.2_0", 0x0000, 0x020000, CRC(47f3ac5a) SHA1(e0413c55b897e96e32c3332dac041bc94da6dea3), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4oadrac__d, m4oadrac, "dr__xa_x.2_0", 0x0000, 0x020000, CRC(702f0f7a) SHA1(8529c3eaa33cb972cc38067d176c7c8af0674147), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4oadrac__f, m4oadrac, "dr__xb_x.2_0", 0x0000, 0x020000, CRC(3ae8a72c) SHA1(a27faba69430b1d16abf62e0ef37182ab302bbbd), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4oadrac__h, m4oadrac, "dri_xa_x.2_0", 0x0000, 0x020000, CRC(849d2a80) SHA1(c9ff0a5a543b62ca5b885f93a35b5f40e88db8c3), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (set 9)" ) +// "(C)1999 BWB" and "DR_ 2.1" +GAME_CUSTOM( 199?, m4oadrac__a, m4oadrac, "dr__x__x.2_1", 0x0000, 0x020000, CRC(d91773af) SHA1(3d8dda0f409f55bce9c4d4e2a8377e43fe2f1f7d), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.1)" ) +GAME_CUSTOM( 199?, m4oadrac__c, m4oadrac, "dr__x_dx.2_1", 0x0000, 0x020000, CRC(f8c36b67) SHA1(c765d7a5eb4d7cd74295da26a7c6f5341a1ca257), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4oadrac__e, m4oadrac, "dr__xa_x.2_1", 0x0000, 0x020000, CRC(cf1fc847) SHA1(6b09c0de15a380da1783a387569d83328f5b29a0), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4oadrac__g, m4oadrac, "dr__xb_x.2_1", 0x0000, 0x020000, CRC(85d86011) SHA1(81f8624908299aa37e75fc5d12059b3600212d35), "Bwb","Ooh Aah Dracula (Barcrest) (MPU4) (set 8)" ) @@ -5382,35 +5398,42 @@ GAME_CUSTOM( 199?, m4oadrac__h, m4oadrac, "dri_xa_x.2_0", 0x0000, 0x020000, GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) +// "(C)1996 B.W.B." and "CT4 7.0" +GAME_CUSTOM( 199?, m4ticcla, 0, "ct_20_b4.7_1", 0x0000, 0x010000, CRC(48b9a162) SHA1(2d19a5d6379dc93a56c920b3cd61a0d1a8c6b303), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4ticcla, 0, "ct_20_b4.7_1", 0x0000, 0x010000, CRC(48b9a162) SHA1(2d19a5d6379dc93a56c920b3cd61a0d1a8c6b303), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4ticcla__a, m4ticcla, "ct_20_bc.4_1", 0x0000, 0x010000, CRC(fb40b5ff) SHA1(723a07a2b6b08483aa75ecdd4fd9720a66201fc3), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4ticcla__b, m4ticcla, "ct_20_d4.7_1", 0x0000, 0x010000, CRC(3c7c862c) SHA1(a3577f29950e845a14ca68750d2ab6c56a395dba), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4ticcla__c, m4ticcla, "ct_20_dc.4_1", 0x0000, 0x010000, CRC(0f20a790) SHA1(02876178f0af64154d490cc048a7bc1c9a6f521b), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4ticcla__d, m4ticcla, "ct_20a_4.7_1", 0x0000, 0x010000, CRC(35318095) SHA1(888105a674c9ea8ccad33e24c05ef42936f5f4cf), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4ticcla__e, m4ticcla, "ct_20a_c.4_1", 0x0000, 0x010000, CRC(e409f49f) SHA1(8774015ec20ed9fe54e812013dfc12d408276c31), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4ticcla__f, m4ticcla, "ct_20b_c.4_1", 0x0000, 0x010000, CRC(864a59cf) SHA1(abd9b7a47c791ce4f91abbd3bf97bdcd9d8296ee), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4ticcla__g, m4ticcla, "ct_20bg4.7_1", 0x0000, 0x010000, CRC(7f200f42) SHA1(0ea6aa0de88982737d818c9dac9f2605cea7bc11), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4ticcla__h, m4ticcla, "ct_20bgc.4_1", 0x0000, 0x010000, CRC(215b8965) SHA1(883735066a1425b502e89d1234575294ac83746c), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4ticcla__i, m4ticcla, "ct_20bt4.7_1", 0x0000, 0x010000, CRC(7c7280a4) SHA1(3dbdc53a3474f4147427ed4fa8a161a3b364d43b), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4ticcla__j, m4ticcla, "ct_25_bc.3_1", 0x0000, 0x010000, CRC(9d6fb3b0) SHA1(a6278579d217b5544d9f0b942a7a344596153950), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4ticcla__k, m4ticcla, "ct_25_dc.2_1", 0x0000, 0x010000, CRC(b49af435) SHA1(e5f92f114931e554eb8eb5fe89f50298783d541c), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4ticcla__l, m4ticcla, "ct_25_dc.3_1", 0x0000, 0x010000, CRC(eb359c82) SHA1(c137768461b859d5277b08c8783b0c8625f9b1be), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4ticcla__m, m4ticcla, "ct_25_kc.2_1", 0x0000, 0x010000, CRC(43309e7b) SHA1(d8f6ecbea618da7f54309f2a6e93210c51b68b81), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4ticcla__n, m4ticcla, "ct_25a_c.2_1", 0x0000, 0x010000, CRC(717396ed) SHA1(6cdb0f99b40096178f6e85a0966182e704d1b99a), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4ticcla__o, m4ticcla, "ct_25a_c.3_1", 0x0000, 0x010000, CRC(28e0a15b) SHA1(b3678ba3d1f392665cc6ec9c24c2c506a41cd4fa), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4ticcla__p, m4ticcla, "ct_25b_c.2_1", 0x0000, 0x010000, CRC(b3d7e79c) SHA1(86c0b419c3ca054f8a2ed785cffeb03e6c5b69f2), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4ticcla__q, m4ticcla, "ct_25b_c.3_1", 0x0000, 0x010000, CRC(e0ba763d) SHA1(453d8a0dbe616c5a8c4313b918fcfe21fed473e0), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4ticcla__r, m4ticcla, "ct_25bgc.2_1", 0x0000, 0x010000, CRC(0869d04c) SHA1(0f0fd3982ac376c66d139655a50639f48bf740b4), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4ticcla__s, m4ticcla, "ct_25bgc.3_1", 0x0000, 0x010000, CRC(1e0ca1d1) SHA1(0b1023cdd5cd3db657cea53c85e31ed83c2e5524), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4ticcla__t, m4ticcla, "ct_25btc.2_1", 0x0000, 0x010000, CRC(032ec96d) SHA1(c5cef956bc0e3eb45cf128c8d0b4e1d6e5b01afe), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4ticcla__u, m4ticcla, "ct_25btc.3_1", 0x0000, 0x010000, CRC(f656897a) SHA1(92ad5c6ce2a696298bbfc8c1750825db4e3bc80b), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4ticcla__v, m4ticcla, "ct_30_dc.2_1", 0x0000, 0x010000, CRC(57fabdfb) SHA1(ad86621e4bc8141508c691e148a66e74fc070a88), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 23)" ) -GAME_CUSTOM( 199?, m4ticcla__w, m4ticcla, "ct_30a_c.2_1", 0x0000, 0x010000, CRC(800c94c3) SHA1(c78497899ea9cf27e66f6e8526b95d51215053b2), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 24)" ) -GAME_CUSTOM( 199?, m4ticcla__x, m4ticcla, "ct_30b_c.2_1", 0x0000, 0x010000, CRC(3036ef04) SHA1(de514a85d45d11a880ed147aebe211ffb5bee146), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 25)" ) -GAME_CUSTOM( 199?, m4ticcla__y, m4ticcla, "ct_30bdc.2_1", 0x0000, 0x010000, CRC(9852c9d4) SHA1(37bb20d63fa70ea99e18a16a8f11c461a377a07a), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 26)" ) -GAME_CUSTOM( 199?, m4ticcla__z, m4ticcla, "ct_30bgc.2_1", 0x0000, 0x010000, CRC(a1bc89b4) SHA1(4c82ce8fe78768443823e868f7cc49a06e7cc441), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 27)" ) -GAME_CUSTOM( 199?, m4ticcla__0, m4ticcla, "ct_30btc.2_1", 0x0000, 0x010000, CRC(cde0d12e) SHA1(5427ad700311c30cc86eccc7f1ff36cf0da3b980), "Bwb / Barcrest","Tic Tac Toe Classic (Barcrest) (MPU4) (set 28)" ) +GAME_CUSTOM( 199?, m4ticcla__b, m4ticcla, "ct_20_d4.7_1", 0x0000, 0x010000, CRC(3c7c862c) SHA1(a3577f29950e845a14ca68750d2ab6c56a395dba), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4ticcla__d, m4ticcla, "ct_20a_4.7_1", 0x0000, 0x010000, CRC(35318095) SHA1(888105a674c9ea8ccad33e24c05ef42936f5f4cf), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4ticcla__g, m4ticcla, "ct_20bg4.7_1", 0x0000, 0x010000, CRC(7f200f42) SHA1(0ea6aa0de88982737d818c9dac9f2605cea7bc11), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 8)" ) +GAME_CUSTOM( 199?, m4ticcla__i, m4ticcla, "ct_20bt4.7_1", 0x0000, 0x010000, CRC(7c7280a4) SHA1(3dbdc53a3474f4147427ed4fa8a161a3b364d43b), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 10)" ) + +// "(C)1996 B.W.B." and "CT 4.0" +GAME_CUSTOM( 199?, m4ticcla__a, m4ticcla, "ct_20_bc.4_1", 0x0000, 0x010000, CRC(fb40b5ff) SHA1(723a07a2b6b08483aa75ecdd4fd9720a66201fc3), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4ticcla__c, m4ticcla, "ct_20_dc.4_1", 0x0000, 0x010000, CRC(0f20a790) SHA1(02876178f0af64154d490cc048a7bc1c9a6f521b), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4ticcla__e, m4ticcla, "ct_20a_c.4_1", 0x0000, 0x010000, CRC(e409f49f) SHA1(8774015ec20ed9fe54e812013dfc12d408276c31), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 6)" ) +GAME_CUSTOM( 199?, m4ticcla__f, m4ticcla, "ct_20b_c.4_1", 0x0000, 0x010000, CRC(864a59cf) SHA1(abd9b7a47c791ce4f91abbd3bf97bdcd9d8296ee), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4ticcla__h, m4ticcla, "ct_20bgc.4_1", 0x0000, 0x010000, CRC(215b8965) SHA1(883735066a1425b502e89d1234575294ac83746c), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 9)" ) + +// "(C)1996 B.W.B." and "CT4 3.0" (CTT on startup) +GAME_CUSTOM( 199?, m4ticcla__j, m4ticcla, "ct_25_bc.3_1", 0x0000, 0x010000, CRC(9d6fb3b0) SHA1(a6278579d217b5544d9f0b942a7a344596153950), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 11)" ) +GAME_CUSTOM( 199?, m4ticcla__l, m4ticcla, "ct_25_dc.3_1", 0x0000, 0x010000, CRC(eb359c82) SHA1(c137768461b859d5277b08c8783b0c8625f9b1be), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 13)" ) +GAME_CUSTOM( 199?, m4ticcla__o, m4ticcla, "ct_25a_c.3_1", 0x0000, 0x010000, CRC(28e0a15b) SHA1(b3678ba3d1f392665cc6ec9c24c2c506a41cd4fa), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 16)" ) +GAME_CUSTOM( 199?, m4ticcla__q, m4ticcla, "ct_25b_c.3_1", 0x0000, 0x010000, CRC(e0ba763d) SHA1(453d8a0dbe616c5a8c4313b918fcfe21fed473e0), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 18)" ) +GAME_CUSTOM( 199?, m4ticcla__s, m4ticcla, "ct_25bgc.3_1", 0x0000, 0x010000, CRC(1e0ca1d1) SHA1(0b1023cdd5cd3db657cea53c85e31ed83c2e5524), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 20)" ) +GAME_CUSTOM( 199?, m4ticcla__u, m4ticcla, "ct_25btc.3_1", 0x0000, 0x010000, CRC(f656897a) SHA1(92ad5c6ce2a696298bbfc8c1750825db4e3bc80b), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 22)" ) + +// "(C)1998 B.W.B." and "CT 2.3" +GAME_CUSTOM( 199?, m4ticcla__k, m4ticcla, "ct_25_dc.2_1", 0x0000, 0x010000, CRC(b49af435) SHA1(e5f92f114931e554eb8eb5fe89f50298783d541c), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 12)" ) +GAME_CUSTOM( 199?, m4ticcla__m, m4ticcla, "ct_25_kc.2_1", 0x0000, 0x010000, CRC(43309e7b) SHA1(d8f6ecbea618da7f54309f2a6e93210c51b68b81), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 14)" ) +GAME_CUSTOM( 199?, m4ticcla__n, m4ticcla, "ct_25a_c.2_1", 0x0000, 0x010000, CRC(717396ed) SHA1(6cdb0f99b40096178f6e85a0966182e704d1b99a), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 15)" ) +GAME_CUSTOM( 199?, m4ticcla__p, m4ticcla, "ct_25b_c.2_1", 0x0000, 0x010000, CRC(b3d7e79c) SHA1(86c0b419c3ca054f8a2ed785cffeb03e6c5b69f2), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 17)" ) +GAME_CUSTOM( 199?, m4ticcla__r, m4ticcla, "ct_25bgc.2_1", 0x0000, 0x010000, CRC(0869d04c) SHA1(0f0fd3982ac376c66d139655a50639f48bf740b4), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 19)" ) +GAME_CUSTOM( 199?, m4ticcla__t, m4ticcla, "ct_25btc.2_1", 0x0000, 0x010000, CRC(032ec96d) SHA1(c5cef956bc0e3eb45cf128c8d0b4e1d6e5b01afe), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 21)" ) +GAME_CUSTOM( 199?, m4ticcla__v, m4ticcla, "ct_30_dc.2_1", 0x0000, 0x010000, CRC(57fabdfb) SHA1(ad86621e4bc8141508c691e148a66e74fc070a88), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 23)" ) +GAME_CUSTOM( 199?, m4ticcla__w, m4ticcla, "ct_30a_c.2_1", 0x0000, 0x010000, CRC(800c94c3) SHA1(c78497899ea9cf27e66f6e8526b95d51215053b2), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 24)" ) +GAME_CUSTOM( 199?, m4ticcla__x, m4ticcla, "ct_30b_c.2_1", 0x0000, 0x010000, CRC(3036ef04) SHA1(de514a85d45d11a880ed147aebe211ffb5bee146), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 25)" ) +GAME_CUSTOM( 199?, m4ticcla__y, m4ticcla, "ct_30bdc.2_1", 0x0000, 0x010000, CRC(9852c9d4) SHA1(37bb20d63fa70ea99e18a16a8f11c461a377a07a), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 26)" ) +GAME_CUSTOM( 199?, m4ticcla__z, m4ticcla, "ct_30bgc.2_1", 0x0000, 0x010000, CRC(a1bc89b4) SHA1(4c82ce8fe78768443823e868f7cc49a06e7cc441), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 27)" ) +GAME_CUSTOM( 199?, m4ticcla__0, m4ticcla, "ct_30btc.2_1", 0x0000, 0x010000, CRC(cde0d12e) SHA1(5427ad700311c30cc86eccc7f1ff36cf0da3b980), "Bwb","Tic Tac Toe Classic (Barcrest) (MPU4) (set 28)" ) #define M4TICGLC_EXTRA_ROMS \ ROM_REGION( 0x200000, "msm6376", 0 ) \ @@ -5424,11 +5447,13 @@ GAME_CUSTOM( 199?, m4ticcla__0, m4ticcla, "ct_30btc.2_1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4ticglc, 0, "tg_25a_c.3_1", 0x0000, 0x010000, CRC(44b2b6b0) SHA1(c2caadd68659bd474df534101e3bc13b15a43694), "Bwb / Barcrest","Tic Tac Toe Gold (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4ticglc__a, m4ticglc, "tg_30_dc.4_1", 0x0000, 0x010000, CRC(19c0fb1e) SHA1(955da095df56f28ace6839c9b6df5669f576730c), "Bwb / Barcrest","Tic Tac Toe Gold (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4ticglc__b, m4ticglc, "tg_30a_c.4_1", 0x0000, 0x010000, CRC(3e4dcc70) SHA1(c4ad3a8633e19015d4d2b08a653119e9e4c5dcbb), "Bwb / Barcrest","Tic Tac Toe Gold (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4ticglc__c, m4ticglc, "tg_30b_c.4_1", 0x0000, 0x010000, CRC(83d1517a) SHA1(38a9269dac53ca701e4b621d5e77696142f429cd), "Bwb / Barcrest","Tic Tac Toe Gold (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4ticglc__d, m4ticglc, "tg_30bgc.4_1", 0x0000, 0x010000, CRC(a366c32d) SHA1(8d86778411ef07e06d99c12147a211d7620af9bf), "Bwb / Barcrest","Tic Tac Toe Gold (Barcrest) (MPU4) (set 5)" ) +// "(C)1998 B.W.B." and "TG 3.3" +GAME_CUSTOM( 199?, m4ticglc, 0, "tg_25a_c.3_1", 0x0000, 0x010000, CRC(44b2b6b0) SHA1(c2caadd68659bd474df534101e3bc13b15a43694), "Bwb","Tic Tac Toe Gold (Barcrest) (MPU4) (TG 3.3)" ) +// "(C)1998 B.W.B." and "TG 4.4" +GAME_CUSTOM( 199?, m4ticglc__a, m4ticglc, "tg_30_dc.4_1", 0x0000, 0x010000, CRC(19c0fb1e) SHA1(955da095df56f28ace6839c9b6df5669f576730c), "Bwb","Tic Tac Toe Gold (Barcrest) (MPU4) (TG 4.4)" ) +GAME_CUSTOM( 199?, m4ticglc__b, m4ticglc, "tg_30a_c.4_1", 0x0000, 0x010000, CRC(3e4dcc70) SHA1(c4ad3a8633e19015d4d2b08a653119e9e4c5dcbb), "Bwb","Tic Tac Toe Gold (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4ticglc__c, m4ticglc, "tg_30b_c.4_1", 0x0000, 0x010000, CRC(83d1517a) SHA1(38a9269dac53ca701e4b621d5e77696142f429cd), "Bwb","Tic Tac Toe Gold (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4ticglc__d, m4ticglc, "tg_30bgc.4_1", 0x0000, 0x010000, CRC(a366c32d) SHA1(8d86778411ef07e06d99c12147a211d7620af9bf), "Bwb","Tic Tac Toe Gold (Barcrest) (MPU4) (set 5)" ) #define M4SSCLAS_EXTRA_ROMS \ ROM_REGION( 0x48, "fakechr", 0 ) \ @@ -5444,13 +5469,15 @@ GAME_CUSTOM( 199?, m4ticglc__d, m4ticglc, "tg_30bgc.4_1", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring ,ROT0,company,title,GAME_FLAGS ) - -GAME_CUSTOM( 199?, m4ssclas, 0, "cs__x__x.6_0", 0x0000, 0x010000, CRC(3230284d) SHA1(bca3b4c43859ed424956c4119fa6a91a2e7d6eec), "Bwb / Barcrest","Super Streak Classic (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4ssclas__a, m4ssclas, "cs__x_dx.2_0", 0x0000, 0x010000, CRC(ea004a13) SHA1(db9a187b0672c69a6a149ec6d1025bd6da9beccd), "Bwb / Barcrest","Super Streak Classic (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4ssclas__b, m4ssclas, "cs__x_dx.6_0", 0x0000, 0x010000, CRC(6dd2d11f) SHA1(8c7e60d3e5a0d4fccb024b5c0aa21fd2b9a5ada9), "Bwb / Barcrest","Super Streak Classic (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4ssclas__c, m4ssclas, "cs__xa_x.6_0", 0x0000, 0x010000, CRC(6657e810) SHA1(0860076cf01c732f419483876991fb42a838622a), "Bwb / Barcrest","Super Streak Classic (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4ssclas__d, m4ssclas, "cs__xb_x.5_0", 0x0000, 0x010000, CRC(a5f46ff5) SHA1(a068029f774bc6ed2e76acc2eb509bc6e2490945), "Bwb / Barcrest","Super Streak Classic (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4ssclas__e, m4ssclas, "cs__xb_x.6_0", 0x0000, 0x010000, CRC(801d543c) SHA1(f0905947312fb2a526765d17cde01af5095ef923), "Bwb / Barcrest","Super Streak Classic (Barcrest) (MPU4) (set 6)" ) +// "(C)2000 BWB" and "CSS 6.0" +GAME_CUSTOM( 199?, m4ssclas, 0, "cs__x__x.6_0", 0x0000, 0x010000, CRC(3230284d) SHA1(bca3b4c43859ed424956c4119fa6a91a2e7d6eec), "Bwb","Super Streak Classic (Barcrest) (MPU4) (CSS 6.0)" ) +GAME_CUSTOM( 199?, m4ssclas__b, m4ssclas, "cs__x_dx.6_0", 0x0000, 0x010000, CRC(6dd2d11f) SHA1(8c7e60d3e5a0d4fccb024b5c0aa21fd2b9a5ada9), "Bwb","Super Streak Classic (Barcrest) (MPU4) (set 3)" ) +GAME_CUSTOM( 199?, m4ssclas__c, m4ssclas, "cs__xa_x.6_0", 0x0000, 0x010000, CRC(6657e810) SHA1(0860076cf01c732f419483876991fb42a838622a), "Bwb","Super Streak Classic (Barcrest) (MPU4) (set 4)" ) +GAME_CUSTOM( 199?, m4ssclas__e, m4ssclas, "cs__xb_x.6_0", 0x0000, 0x010000, CRC(801d543c) SHA1(f0905947312fb2a526765d17cde01af5095ef923), "Bwb","Super Streak Classic (Barcrest) (MPU4) (set 6)" ) +// "(C)1998 BWB" and "CSS 5.0" +GAME_CUSTOM( 199?, m4ssclas__d, m4ssclas, "cs__xb_x.5_0", 0x0000, 0x010000, CRC(a5f46ff5) SHA1(a068029f774bc6ed2e76acc2eb509bc6e2490945), "Bwb","Super Streak Classic (Barcrest) (MPU4) (CSS 5.0)" ) +// "(C)1998 BWB" and "CSS 2.0" +GAME_CUSTOM( 199?, m4ssclas__a, m4ssclas, "cs__x_dx.2_0", 0x0000, 0x010000, CRC(ea004a13) SHA1(db9a187b0672c69a6a149ec6d1025bd6da9beccd), "Bwb","Super Streak Classic (Barcrest) (MPU4) (CSS 2.0)" ) // was in SC2 Super Star set, but seems to fit here, ident hacked to "BILL BIXBY" and "V1 0.1" GAME_CUSTOM( 199?, m4ssclas__f, m4ssclas, "supst20.15", 0x0000, 0x010000, CRC(c3446ec4) SHA1(3c1ad27385547a33993a839b53873d8b92214ade), "hack","Super Streak Classic (Barcrest) (MPU4) (hack)" ) @@ -5471,10 +5498,11 @@ GAME_CUSTOM( 199?, m4ssclas__f, m4ssclas, "supst20.15", 0x0000, 0x010000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4squid, 0, "squidsin.bin", 0x0000, 0x020000, CRC(be369b43) SHA1(e5c7b7a858b264db2f8f726396ddeb42004d7cb9), "Bwb / Barcrest","Squids In (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4squid__a, m4squid, "sq__x_dx.2_0", 0x0000, 0x020000, CRC(2eb6c814) SHA1(070ad5cb36220daf98043f175cf67d4d584c3d01), "Bwb / Barcrest","Squids In (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4squid__b, m4squid, "sq__xa_x.2_0", 0x0000, 0x020000, CRC(196a6b34) SHA1(a044ba73b4cf04657ddfcf787dedcb151507ef15), "Bwb / Barcrest","Squids In (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4squid__c, m4squid, "sq__xb_x.2_0", 0x0000, 0x020000, CRC(53adc362) SHA1(3920f08299bf284ee9f102ce1505d9e9cdc1d1f0), "Bwb / Barcrest","Squids In (Barcrest) (MPU4) (set 4)" ) +// "(C)1999 BWB" and "SQ_ 2.0" +GAME_CUSTOM( 199?, m4squid, 0, "squidsin.bin", 0x0000, 0x020000, CRC(be369b43) SHA1(e5c7b7a858b264db2f8f726396ddeb42004d7cb9), "Bwb","Squids In (Barcrest) (MPU4) (SQ_ 2.0, set 1)" ) +GAME_CUSTOM( 199?, m4squid__a, m4squid, "sq__x_dx.2_0", 0x0000, 0x020000, CRC(2eb6c814) SHA1(070ad5cb36220daf98043f175cf67d4d584c3d01), "Bwb","Squids In (Barcrest) (MPU4) (SQ_ 2.0, set 2)" ) +GAME_CUSTOM( 199?, m4squid__b, m4squid, "sq__xa_x.2_0", 0x0000, 0x020000, CRC(196a6b34) SHA1(a044ba73b4cf04657ddfcf787dedcb151507ef15), "Bwb","Squids In (Barcrest) (MPU4) (SQ_ 2.0, set 3)" ) +GAME_CUSTOM( 199?, m4squid__c, m4squid, "sq__xb_x.2_0", 0x0000, 0x020000, CRC(53adc362) SHA1(3920f08299bf284ee9f102ce1505d9e9cdc1d1f0), "Bwb","Squids In (Barcrest) (MPU4) (SQ_ 2.0, set 4)" ) #define M4CALAMA_EXTRA_ROMS \ ROM_REGION( 0x48, "fakechr", 0 ) \ @@ -5491,17 +5519,22 @@ GAME_CUSTOM( 199?, m4squid__c, m4squid, "sq__xb_x.2_0", 0x0000, 0x020000, CR ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4calama, 0, "cac03s.p1", 0x0000, 0x020000, CRC(edc97795) SHA1(58fb91809c7f475fbceacfc1c3bda41b86dff54b), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4calama__a, m4calama, "ca301d.p1", 0x0000, 0x020000, CRC(9a220126) SHA1(d5b12955bb336f8233ed3f892e23a14ba755a511), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4calama__b, m4calama, "ca301f.p1", 0x0000, 0x020000, CRC(e7af1462) SHA1(72659ef85c3b7916e10b4dbc09ad62638e7ab7e1), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4calama__c, m4calama, "ca301s.p1", 0x0000, 0x020000, CRC(95beecf1) SHA1(70f72abc0d4280618033b61f9dbe5b90b455c2b1), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4calama__d, m4calama, "cac03d.p1", 0x0000, 0x020000, CRC(14436ec7) SHA1(eb654ef5cef94e24296512acb6134440a5f8d17e), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4calama__e, m4calama, "cac03f.p1", 0x0000, 0x020000, CRC(69ce7b83) SHA1(c1f2dea6fe7983f5cefbf58ad63bce5ae8d7f7a5), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4calama__f, m4calama, "bc302f.p1", 0x0000, 0x020000, CRC(4b356aca) SHA1(81ce1585f529f1717ec56ace0a4902ae901593ae), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4calama__g, m4calama, "bc302s.p1", 0x0000, 0x020000, CRC(b349bd2d) SHA1(9b026bece40584c4f53c30f3dacc91942c871a9f), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4calama__h, m4calama, "calamari.cl", 0x0000, 0x020000, CRC(bb5e81ac) SHA1(b27f71321978712d2950d58715d18fd5523d6b06), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4calama__i, m4calama, "bc302d.p1", 0x0000, 0x020000, CRC(36b87f8e) SHA1(6e3cbfa52d9ec52fe009d3331dda3781f7f7783a), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4calama__j, m4calama, "bca04.p1", 0x0000, 0x020000, CRC(3f97fe65) SHA1(6bc2c7e60658f39701974426ab652e8dd96b1913), "Bwb / Barcrest","Calamari Club (Barcrest) (MPU4) (set 11)" ) +// "(C)1996 BARCREST" and "CAC 0.3" +GAME_CUSTOM( 199?, m4calama, 0, "cac03s.p1", 0x0000, 0x020000, CRC(edc97795) SHA1(58fb91809c7f475fbceacfc1c3bda41b86dff54b), "Barcrest","Calamari Club (Barcrest) (MPU4) (CAC 0.3)" ) +GAME_CUSTOM( 199?, m4calama__d, m4calama, "cac03d.p1", 0x0000, 0x020000, CRC(14436ec7) SHA1(eb654ef5cef94e24296512acb6134440a5f8d17e), "Barcrest","Calamari Club (Barcrest) (MPU4) (set 5)" ) +GAME_CUSTOM( 199?, m4calama__e, m4calama, "cac03f.p1", 0x0000, 0x020000, CRC(69ce7b83) SHA1(c1f2dea6fe7983f5cefbf58ad63bce5ae8d7f7a5), "Barcrest","Calamari Club (Barcrest) (MPU4) (set 6)" ) +// "(C)1996 BARCREST" and "CA3 0.1" +GAME_CUSTOM( 199?, m4calama__c, m4calama, "ca301s.p1", 0x0000, 0x020000, CRC(95beecf1) SHA1(70f72abc0d4280618033b61f9dbe5b90b455c2b1), "Barcrest","Calamari Club (Barcrest) (MPU4) (CA3 0.1)" ) +GAME_CUSTOM( 199?, m4calama__a, m4calama, "ca301d.p1", 0x0000, 0x020000, CRC(9a220126) SHA1(d5b12955bb336f8233ed3f892e23a14ba755a511), "Barcrest","Calamari Club (Barcrest) (MPU4) (set 2)" ) +GAME_CUSTOM( 199?, m4calama__b, m4calama, "ca301f.p1", 0x0000, 0x020000, CRC(e7af1462) SHA1(72659ef85c3b7916e10b4dbc09ad62638e7ab7e1), "Barcrest","Calamari Club (Barcrest) (MPU4) (set 3)" ) +// "(C)1996 BARCREST" and "BC3 0.2" +GAME_CUSTOM( 199?, m4calama__g, m4calama, "bc302s.p1", 0x0000, 0x020000, CRC(b349bd2d) SHA1(9b026bece40584c4f53c30f3dacc91942c871a9f), "Barcrest","Calamari Club (Barcrest) (MPU4) (BC3 0.2)" ) +GAME_CUSTOM( 199?, m4calama__f, m4calama, "bc302f.p1", 0x0000, 0x020000, CRC(4b356aca) SHA1(81ce1585f529f1717ec56ace0a4902ae901593ae), "Barcrest","Calamari Club (Barcrest) (MPU4) (set 7)" ) +GAME_CUSTOM( 199?, m4calama__i, m4calama, "bc302d.p1", 0x0000, 0x020000, CRC(36b87f8e) SHA1(6e3cbfa52d9ec52fe009d3331dda3781f7f7783a), "Barcrest","Calamari Club (Barcrest) (MPU4) (set 10)" ) +// "(C)1996 BARCREST" and "BCA 0.4" +GAME_CUSTOM( 199?, m4calama__j, m4calama, "bca04.p1", 0x0000, 0x020000, CRC(3f97fe65) SHA1(6bc2c7e60658f39701974426ab652e8dd96b1913), "Barcrest","Calamari Club (Barcrest) (MPU4) (BCA 0.4)" ) +// "(C)1996 BARCREST" and "BCA 0.2" +GAME_CUSTOM( 199?, m4calama__h, m4calama, "calamari.cl", 0x0000, 0x020000, CRC(bb5e81ac) SHA1(b27f71321978712d2950d58715d18fd5523d6b06), "Barcrest","Calamari Club (Barcrest) (MPU4) (BCA 0.2)" ) #define M4COSCAS_EXTRA_ROMS \ @@ -5517,29 +5550,33 @@ GAME_CUSTOM( 199?, m4calama__j, m4calama, "bca04.p1", 0x0000, 0x020000, ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4coscas, 0, "cc_sj__c.3r1", 0x0000, 0x020000, CRC(44b940a6) SHA1(7e621873fcf6460f654e35cc74552e86b6253ddb), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 1)" ) -GAME_CUSTOM( 199?, m4coscas__a, m4coscas, "cosm15g", 0x0000, 0x020000, CRC(edd01d55) SHA1(49246fa1e12ceb3297f35616cdc1cf62472a379f), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 2)" ) -GAME_CUSTOM( 199?, m4coscas__b, m4coscas, "cosmiccasinos15.bin", 0x0000, 0x020000, CRC(ddba1241) SHA1(7ca2928ae2ab4e323b60bb661b60681f89cc5663), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4coscas__c, m4coscas, "cc30s.p1", 0x0000, 0x020000, CRC(e308100a) SHA1(14cb07895d17237768877dd62ba7c3fc8e5b2630), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 4)" ) -GAME_CUSTOM( 199?, m4coscas__d, m4coscas, "cc_sj___.3s1", 0x0000, 0x020000, CRC(52c312b0) SHA1(bd5381d58b1acb7adf6857c142eae4a253081fbd), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 5)" ) -GAME_CUSTOM( 199?, m4coscas__e, m4coscas, "cc_sj__c.7_1", 0x0000, 0x020000, CRC(ee9e6126) SHA1(fab6fd04004acebf291544720ba06cea79d5a054), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 6)" ) -GAME_CUSTOM( 199?, m4coscas__f, m4coscas, "cc_sj_b_.3s1", 0x0000, 0x020000, CRC(019f0a71) SHA1(7a97f4e89c16e25f8e7502bba37f49c8496fbb47), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 7)" ) -GAME_CUSTOM( 199?, m4coscas__g, m4coscas, "cc_sj_bc.3r1", 0x0000, 0x020000, CRC(de9bb8e1) SHA1(7974b03974531eb4b5ed865b8eeb9649c1346df4), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 8)" ) -GAME_CUSTOM( 199?, m4coscas__h, m4coscas, "cc_sj_bc.7_1", 0x0000, 0x020000, CRC(afe1aac6) SHA1(fc9c69e45db6a85c45ef8d32d048e5726d7da655), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 9)" ) -GAME_CUSTOM( 199?, m4coscas__i, m4coscas, "cc_sj_d_.3s1", 0x0000, 0x020000, CRC(215e12f3) SHA1(68ed9923c6fd51e9305afac9d271c7b3ce38b12f), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 10)" ) -GAME_CUSTOM( 199?, m4coscas__j, m4coscas, "cc_sj_dc.3r1", 0x0000, 0x020000, CRC(00e357c3) SHA1(02bf7427899d2e536442b87d41c140ebd787a580), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 11)" ) -GAME_CUSTOM( 199?, m4coscas__k, m4coscas, "cc_sj_dc.7_1", 0x0000, 0x020000, CRC(330d68a2) SHA1(12410af5f37b26f29f5cd23606ab0e128675095a), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 12)" ) -GAME_CUSTOM( 199?, m4coscas__l, m4coscas, "cc_sj_k_.3s1", 0x0000, 0x020000, CRC(9161912d) SHA1(d11109f4bdc1c60f4cf477e1f26556800a83abdb), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 13)" ) -GAME_CUSTOM( 199?, m4coscas__m, m4coscas, "cc_sj_kc.3r1", 0x0000, 0x020000, CRC(b0dcd41d) SHA1(6b50a5e401bf854186331673dcc0c3fc5de2991b), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 14)" ) -GAME_CUSTOM( 199?, m4coscas__n, m4coscas, "cc_sja__.3s1", 0x0000, 0x020000, CRC(1682b1d3) SHA1(24baaf789eca150f0f6fd9c510e245aa7b88cc4c), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 15)" ) -GAME_CUSTOM( 199?, m4coscas__o, m4coscas, "cc_sja_c.3r1", 0x0000, 0x020000, CRC(373ff4e3) SHA1(55b7ab247863eb3c025e84782c8cab7734343077), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 16)" ) -GAME_CUSTOM( 199?, m4coscas__p, m4coscas, "cc_sja_c.7_1", 0x0000, 0x020000, CRC(e956898e) SHA1(f51682651520551d481360bf86eba510cd758441), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 17)" ) -GAME_CUSTOM( 199?, m4coscas__q, m4coscas, "cc_sjb__.3s1", 0x0000, 0x020000, CRC(5c451985) SHA1(517f634d31f7190ca6685c1037fb66a8b87effba), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 18)" ) -GAME_CUSTOM( 199?, m4coscas__r, m4coscas, "cc_sjb_c.7_1", 0x0000, 0x020000, CRC(109e9ae9) SHA1(00f381beb33cae58fc3429d3501efa4a9d9f0035), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 19)" ) -GAME_CUSTOM( 199?, m4coscas__s, m4coscas, "cc_sjbgc.3r1", 0x0000, 0x020000, CRC(2de82f88) SHA1(5c8029d43282a014e82b4f975616ed2bbc0e5641), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 20)" ) -GAME_CUSTOM( 199?, m4coscas__t, m4coscas, "cc_sjbtc.3r1", 0x0000, 0x020000, CRC(976c2858) SHA1(a70a8fe51d1b9d903d099e89a40481ea6af13683), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 21)" ) -GAME_CUSTOM( 199?, m4coscas__u, m4coscas, "cc_sjwb_.3s1", 0x0000, 0x020000, CRC(e2df8167) SHA1(c312b30402dd93c6d4a32932677430c9c996fd36), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 22)" ) -GAME_CUSTOM( 199?, m4coscas__v, m4coscas, "cc_sjwbc.3r1", 0x0000, 0x020000, CRC(a33a59a6) SHA1(a74ffd647e8390d89df475cc3f5205462c9d93d7), "Bwb / Barcrest","Cosmic Casino (Barcrest) (MPU4) (set 23)" ) +// "(C)1998 B.W.B." and "CC__3.0" +GAME_CUSTOM( 199?, m4coscas, 0, "cc_sj___.3s1", 0x0000, 0x020000, CRC(52c312b0) SHA1(bd5381d58b1acb7adf6857c142eae4a253081fbd), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0)" ) +GAME_CUSTOM( 199?, m4coscas__d, m4coscas, "cc_sj__c.3r1", 0x0000, 0x020000, CRC(44b940a6) SHA1(7e621873fcf6460f654e35cc74552e86b6253ddb), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 C)" ) +GAME_CUSTOM( 199?, m4coscas__f, m4coscas, "cc_sj_b_.3s1", 0x0000, 0x020000, CRC(019f0a71) SHA1(7a97f4e89c16e25f8e7502bba37f49c8496fbb47), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 YD)" ) +GAME_CUSTOM( 199?, m4coscas__g, m4coscas, "cc_sj_bc.3r1", 0x0000, 0x020000, CRC(de9bb8e1) SHA1(7974b03974531eb4b5ed865b8eeb9649c1346df4), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 YCD)" ) +GAME_CUSTOM( 199?, m4coscas__i, m4coscas, "cc_sj_d_.3s1", 0x0000, 0x020000, CRC(215e12f3) SHA1(68ed9923c6fd51e9305afac9d271c7b3ce38b12f), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 D)" ) +GAME_CUSTOM( 199?, m4coscas__j, m4coscas, "cc_sj_dc.3r1", 0x0000, 0x020000, CRC(00e357c3) SHA1(02bf7427899d2e536442b87d41c140ebd787a580), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 CD)" ) +GAME_CUSTOM( 199?, m4coscas__l, m4coscas, "cc_sj_k_.3s1", 0x0000, 0x020000, CRC(9161912d) SHA1(d11109f4bdc1c60f4cf477e1f26556800a83abdb), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 Y)" ) +GAME_CUSTOM( 199?, m4coscas__m, m4coscas, "cc_sj_kc.3r1", 0x0000, 0x020000, CRC(b0dcd41d) SHA1(6b50a5e401bf854186331673dcc0c3fc5de2991b), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 YC)" ) +GAME_CUSTOM( 199?, m4coscas__n, m4coscas, "cc_sja__.3s1", 0x0000, 0x020000, CRC(1682b1d3) SHA1(24baaf789eca150f0f6fd9c510e245aa7b88cc4c), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 K)" ) +GAME_CUSTOM( 199?, m4coscas__o, m4coscas, "cc_sja_c.3r1", 0x0000, 0x020000, CRC(373ff4e3) SHA1(55b7ab247863eb3c025e84782c8cab7734343077), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 CK)" ) +GAME_CUSTOM( 199?, m4coscas__q, m4coscas, "cc_sjb__.3s1", 0x0000, 0x020000, CRC(5c451985) SHA1(517f634d31f7190ca6685c1037fb66a8b87effba), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 B)" ) +GAME_CUSTOM( 199?, m4coscas__s, m4coscas, "cc_sjbgc.3r1", 0x0000, 0x020000, CRC(2de82f88) SHA1(5c8029d43282a014e82b4f975616ed2bbc0e5641), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 BCAD)" ) +GAME_CUSTOM( 199?, m4coscas__t, m4coscas, "cc_sjbtc.3r1", 0x0000, 0x020000, CRC(976c2858) SHA1(a70a8fe51d1b9d903d099e89a40481ea6af13683), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 BCR)" ) +GAME_CUSTOM( 199?, m4coscas__u, m4coscas, "cc_sjwb_.3s1", 0x0000, 0x020000, CRC(e2df8167) SHA1(c312b30402dd93c6d4a32932677430c9c996fd36), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 YDH)" ) +GAME_CUSTOM( 199?, m4coscas__v, m4coscas, "cc_sjwbc.3r1", 0x0000, 0x020000, CRC(a33a59a6) SHA1(a74ffd647e8390d89df475cc3f5205462c9d93d7), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__3.0 YCDH)" ) +// "(C)1998 B.W.B." and "CC__7.0" +GAME_CUSTOM( 199?, m4coscas__e, m4coscas, "cc_sj__c.7_1", 0x0000, 0x020000, CRC(ee9e6126) SHA1(fab6fd04004acebf291544720ba06cea79d5a054), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__7.0)" ) +GAME_CUSTOM( 199?, m4coscas__h, m4coscas, "cc_sj_bc.7_1", 0x0000, 0x020000, CRC(afe1aac6) SHA1(fc9c69e45db6a85c45ef8d32d048e5726d7da655), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__7.0 YD)" ) +GAME_CUSTOM( 199?, m4coscas__k, m4coscas, "cc_sj_dc.7_1", 0x0000, 0x020000, CRC(330d68a2) SHA1(12410af5f37b26f29f5cd23606ab0e128675095a), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__7.0 D)" ) +GAME_CUSTOM( 199?, m4coscas__p, m4coscas, "cc_sja_c.7_1", 0x0000, 0x020000, CRC(e956898e) SHA1(f51682651520551d481360bf86eba510cd758441), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__7.0 K)" ) +GAME_CUSTOM( 199?, m4coscas__r, m4coscas, "cc_sjb_c.7_1", 0x0000, 0x020000, CRC(109e9ae9) SHA1(00f381beb33cae58fc3429d3501efa4a9d9f0035), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__7.0 B)" ) +GAME_CUSTOM( 199?, m4coscas__b, m4coscas, "cosmiccasinos15.bin", 0x0000, 0x020000, CRC(ddba1241) SHA1(7ca2928ae2ab4e323b60bb661b60681f89cc5663), "Bwb","Cosmic Casino (Barcrest) (MPU4) (CC__7.0 Y)" ) +// no copyright string and "CC__3.0" +GAME_CUSTOM( 199?, m4coscas__c, m4coscas, "cc30s.p1", 0x0000, 0x020000, CRC(e308100a) SHA1(14cb07895d17237768877dd62ba7c3fc8e5b2630), "hack","Cosmic Casino (Barcrest) (MPU4) (CC__3.0, hack)" ) +// no copyright string and "CC__6.0" +GAME_CUSTOM( 199?, m4coscas__a, m4coscas, "cosm15g", 0x0000, 0x020000, CRC(edd01d55) SHA1(49246fa1e12ceb3297f35616cdc1cf62472a379f), "hack","Cosmic Casino (Barcrest) (MPU4) (CC__6.0, hack)" ) #define M4DBLDM_EXTRA_ROMS \ @@ -5555,7 +5592,9 @@ GAME_CUSTOM( 199?, m4coscas__v, m4coscas, "cc_sjwbc.3r1", 0x0000, 0 ROM_END \ GAME(year, setname, parent ,mod4oki ,mpu4 , mpu4_state,m4_showstring_big ,ROT0,company,title,GAME_FLAGS ) -GAME_CUSTOM( 199?, m4dbldm, 0, "cdd05s.p1", 0x0000, 0x020000, CRC(fc14771f) SHA1(f418af9fed331560195a694f20ef2fea27ed04b0), "Barcrest","Double Diamond Club (Barcrest) (MPU4) (set 1)" ) +// "(C)1996 BARCREST" and "CDD 0.5" +GAME_CUSTOM( 199?, m4dbldm, 0, "cdd05s.p1", 0x0000, 0x020000, CRC(fc14771f) SHA1(f418af9fed331560195a694f20ef2fea27ed04b0), "Barcrest","Double Diamond Club (Barcrest) (MPU4) (CDD 0.5)" ) GAME_CUSTOM( 199?, m4dbldm__a, m4dbldm, "cdd05d.p1", 0x0000, 0x020000, CRC(fc1c5e90) SHA1(c756d2ac725168af5396c8ef7550db9087a50937), "Barcrest","Double Diamond Club (Barcrest) (MPU4) (set 2)" ) GAME_CUSTOM( 199?, m4dbldm__b, m4dbldm, "cdd05f.p1", 0x0000, 0x020000, CRC(81914bd4) SHA1(cf286810ad6732ca1d706e70f4c2958d28cc979c), "Barcrest","Double Diamond Club (Barcrest) (MPU4) (set 3)" ) -GAME_CUSTOM( 199?, m4dbldm__c, m4dbldm, "cdd01.p1", 0x0000, 0x020000, CRC(e35dffde) SHA1(0bfc977f25f25785f20b510c44d2d3d79e23af8b), "Barcrest","Double Diamond Club (Barcrest) (MPU4) (set 4)" ) +// "(C)1996 BARCREST" and "CDD 0.1" +GAME_CUSTOM( 199?, m4dbldm__c, m4dbldm, "cdd01.p1", 0x0000, 0x020000, CRC(e35dffde) SHA1(0bfc977f25f25785f20b510c44d2d3d79e23af8b), "Barcrest","Double Diamond Club (Barcrest) (MPU4) (CDD 0.1)" ) From d89b635eb541d6ad4fb2ace0d49d206fb1479b19 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 9 Aug 2016 14:27:20 -0400 Subject: [PATCH 095/116] kurukuru, ppj: Input/output improvements - Ticket dispenser now works for real, dispensing on command rather than like crazy - Correct "Payout Mode" DIP settings - Correct DSW1 settings in Pyon Pyon Jump - Rename coin inputs and coin-related DIP switches and reorder them by increasing denomination - Remove bogus "Unknown" inputs that aren't actually used - Full character names only for Kuru Kuru Pyon Pyon (except in bookkeeping mode) - Reset button now mapped as "Memory Reset" (though it also resets the program) - Random notes based on program code --- src/mame/drivers/kurukuru.cpp | 103 +++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 46 deletions(-) diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp index 2e003469c0c..bc9b968bf7e 100644 --- a/src/mame/drivers/kurukuru.cpp +++ b/src/mame/drivers/kurukuru.cpp @@ -124,12 +124,17 @@ 3) Pyon Pyon Jump (a contents where the same characters try to cross the river jumping on pads). 4) Sui Sui Pyon Pyon (a swimming competition where the same characters swim with different styles, even walking). - Coin 1 (key 5) could be set either as Coin 1 or as Payout button, through - a DIP switch. + The 100 Yen coin input (key 7) can be set as "Exchange" through a DIP switch, in + which case its value is not accepted as credits but immediately paid out in + "medals." If you get a 'medal jam' error, and the game is not responding anymore, press - RESET (key 9), and the game will reset to default values (even all counters - will be cleared). + RESET (key F1), and the game will reset to default values (even all counters + will be cleared; the program does this by zeroing the magic byte preceding the + game ID string copied with it into NVRAM and then jumping to the boot routine). + + The tables for the I/O routines have room for 7 coin inputs (address + mask) and + 3 output latches, but only 3 coin inputs and 1 output latch are defined and used. ************************************************************************************ @@ -145,9 +150,9 @@ How to play... Insert tokens (medals). - You can bet to any (or all) of the following 5 characters: Bote, Oume, Pyoko, - Kunio, and Pyon Pyon. Press start, and the reels start to roll. You'll win if - you can get 3 of the chosen character(s) in a row, column or diagonal. + You can bet to any (or all) of the following 5 characters: Botechin, Oume, + Pyokorin, Kunio, and Pyon-Pyon. Press start, and the reels start to roll. You'll + win if you can get 3 of the chosen character(s) in a row, column or diagonal. The black tadpoles behave just like jokers... If you have 2 chosen characters in a row and the remaining one is a black tadpole, it will transform into another @@ -254,6 +259,9 @@ #include "machine/nvram.h" #include "machine/gen_latch.h" +#define UNICODE_10YEN "\xC2\xA5" "10" +#define UNICODE_100YEN "\xC2\xA5" "100" + class kurukuru_state : public driver_device { public: @@ -361,7 +369,7 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_out_latch_w) machine().bookkeeping().coin_counter_w(0, data & 0x01); /* Coin Counter 1 */ machine().bookkeeping().coin_counter_w(1, data & 0x20); /* Coin Counter 2 */ machine().bookkeeping().coin_lockout_global_w(data & 0x40); /* Coin Lock */ - m_hopper->write(space, 0, (data & 0x40)); /* Hopper Motor */ + m_hopper->write(space, 0, (data & 0x40) ? 0x80 : 0); /* Hopper Motor */ if (data & 0x9e) logerror("kurukuru_out_latch_w %02X @ %04X\n", data, space.device().safe_pc()); @@ -540,13 +548,13 @@ static INPUT_PORTS_START( kurukuru ) /* bits d0-d3 are JAMMA top side pins 20,21,22,23, bits d4-d7 are JAMMA bottom side pins 20,21,22,23 so that's player 1 left/right/button1/button2 then player 2 left/right/button1/button2 */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("1st (Bote/Botechin)") // edge connector pin 20 top + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("1st (Botechin)") // edge connector pin 20 top PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("2nd (Oume)") // edge connector pin 21 top - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("3rd (Pyoko/Pyokorin)") // edge connector pin 22 top + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("3rd (Pyokorin)") // edge connector pin 22 top PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("4th (Kunio)") // edge connector pin 23 top PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("5th (Pyon-Pyon)") // edge connector pin 20 bottom - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) PORT_NAME("Unknown A0h - bit5") // edge connector pin 21 bottom - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) PORT_NAME("Unknown A0h - bit6") // edge connector pin 22 bottom + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) // edge connector pin 21 bottom + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // edge connector pin 22 bottom PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) // edge connector pin 23 bottom PORT_START("IN1") @@ -554,16 +562,16 @@ static INPUT_PORTS_START( kurukuru ) so that's test, tilt/slam, coin 1, coin 2, p1 start, p2 start, p1 button 3, p2 button 3 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // edge connector pin 15 top - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Medal In") // edge connector pin 15 bottom - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Reset Button") // edge connector pin 16 top - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) // edge connector pin 16 bottom - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("Unknown B0h - bit4") // edge connector pin 17 top (active) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE (2) // edge connector pin 17 bottom + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Medal In") // edge connector pin 15 bottom + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // edge connector pin 16 top + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME(UNICODE_10YEN " In") // edge connector pin 16 bottom + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // edge connector pin 17 top (active) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME(UNICODE_100YEN " In") PORT_IMPULSE(2) // edge connector pin 17 bottom PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper feedback, edge connector pin 24 top PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // edge connector pin 24 bottom PORT_START("DSW1") // found in the PCB: 11111111 - PORT_DIPNAME( 0x07, 0x00, "Coinage A (100 Y)" ) PORT_DIPLOCATION("DSW1:1,2,3") + PORT_DIPNAME( 0x07, 0x00, "Coinage A (" UNICODE_100YEN ")" ) PORT_DIPLOCATION("DSW1:1,2,3") PORT_DIPSETTING( 0x02, "1 Coin / 3 Medal" ) PORT_DIPSETTING( 0x06, "1 Coin / 4 Medal" ) PORT_DIPSETTING( 0x01, "1 Coin / 5 Medal" ) @@ -572,17 +580,17 @@ static INPUT_PORTS_START( kurukuru ) PORT_DIPSETTING( 0x07, "1 Coin / 11 Medal" ) PORT_DIPSETTING( 0x04, "1 Coin / 20 Medal" ) PORT_DIPSETTING( 0x00, "1 Coin / 50 Medal" ) - PORT_DIPNAME( 0x18, 0x00, "Coinage B (10 Y)" ) PORT_DIPLOCATION("DSW1:4,5") + PORT_DIPNAME( 0x18, 0x00, "Coinage B (" UNICODE_10YEN ")" ) PORT_DIPLOCATION("DSW1:4,5") PORT_DIPSETTING( 0x00, "3 Coin / 1 Medal" ) PORT_DIPSETTING( 0x10, "2 Coin / 1 Medal" ) PORT_DIPSETTING( 0x18, "1 Coin / 1 Medal" ) PORT_DIPSETTING( 0x08, "1 Coin / 2 Medal" ) PORT_DIPNAME( 0x20, 0x00, "Coinage Config" ) PORT_DIPLOCATION("DSW1:6") - PORT_DIPSETTING( 0x00, "Coin 1 = Normal; Medal In = 2 Credits by Medal" ) - PORT_DIPSETTING( 0x20, "Coin 1 = Payout; Medal In = 1 Credit by Medal" ) + PORT_DIPSETTING( 0x00, UNICODE_100YEN " = Credits; Medal In = 2 Credits by Medal" ) + PORT_DIPSETTING( 0x20, UNICODE_100YEN " = Exchange; Medal In = 1 Credit by Medal" ) PORT_DIPNAME( 0x40, 0x00, "Payout Mode" ) PORT_DIPLOCATION("DSW1:7") - PORT_DIPSETTING( 0x40, "Manual" ) - PORT_DIPSETTING( 0x00, "Automatic" ) + PORT_DIPSETTING( 0x40, "Automatic" ) + PORT_DIPSETTING( 0x00, "Manual" ) PORT_DIPNAME( 0x80, 0x00, "Repeat Last Bet") PORT_DIPLOCATION("DSW1:8") PORT_DIPSETTING( 0x80, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) @@ -625,8 +633,8 @@ static INPUT_PORTS_START( ppj ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("3rd (Pyon-Pyon)") // edge connector pin 22 top PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("4th (Pyokorin)") // edge connector pin 23 top PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("5th (Botechin)") // edge connector pin 20 bottom - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) PORT_NAME("Unknown 70h - bit5") // edge connector pin 21 bottom (active) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) PORT_NAME("Unknown 70h - bit6") // edge connector pin 22 bottom (active) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) // edge connector pin 21 bottom (active) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // edge connector pin 22 bottom (active) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) // edge connector pin 23 bottom PORT_START("IN1") @@ -634,16 +642,16 @@ static INPUT_PORTS_START( ppj ) so that's test, tilt/slam, coin 1, coin 2, p1 start, p2 start, p1 button 3, p2 button 3 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // edge connector pin 15 top - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Medal In") // edge connector pin 15 bottom - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Reset Button") // edge connector pin 16 top - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) // edge connector pin 16 bottom - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("Unknown 60h - bit4") // edge connector pin 17 top (active) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE (2) // edge connector pin 17 bottom + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Medal In") // edge connector pin 15 bottom + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // edge connector pin 16 top + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME(UNICODE_10YEN " In") // edge connector pin 16 bottom + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // edge connector pin 17 top (active) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME(UNICODE_100YEN " In") PORT_IMPULSE(2) // edge connector pin 17 bottom PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper feedback, edge connector pin 24 top PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // edge connector pin 24 bottom PORT_START("DSW1") // found in the PCB: 00000000 (arranged for sale since they are uncommon settings) - PORT_DIPNAME( 0x07, 0x03, "Coinage A (100 Y)" ) PORT_DIPLOCATION("DSW1:1,2,3") + PORT_DIPNAME( 0x07, 0x03, "Coinage A (" UNICODE_100YEN ")" ) PORT_DIPLOCATION("DSW1:1,2,3") PORT_DIPSETTING( 0x00, "1 Coin / 1 Medal" ) PORT_DIPSETTING( 0x04, "1 Coin / 2 Medal" ) PORT_DIPSETTING( 0x02, "1 Coin / 3 Medal" ) @@ -652,21 +660,22 @@ static INPUT_PORTS_START( ppj ) PORT_DIPSETTING( 0x05, "1 Coin / 6 Medal" ) PORT_DIPSETTING( 0x03, "1 Coin / 10 Medal" ) PORT_DIPSETTING( 0x07, "1 Coin / 11 Medal" ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + // Coinage B is always 1 Coin / 1 Medal + PORT_DIPNAME( 0x08, 0x00, "Coinage Config" ) PORT_DIPLOCATION("DSW1:4") + PORT_DIPSETTING( 0x00, UNICODE_100YEN " = Credits" ) + PORT_DIPSETTING( 0x08, UNICODE_100YEN " = Exchange" ) + PORT_DIPNAME( 0x10, 0x00, "Payout Mode" ) PORT_DIPLOCATION("DSW1:5") + PORT_DIPSETTING( 0x10, "Automatic" ) + PORT_DIPSETTING( 0x00, "Manual" ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:6") + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, "Unknown (related to coin1/payout)") PORT_DIPLOCATION("DSW1:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:7") + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "Coinage Config" ) PORT_DIPLOCATION("DSW1:6") - PORT_DIPSETTING( 0x00, "Coin 1 = Normal" ) - PORT_DIPSETTING( 0x20, "Coin 1 = Payout" ) - PORT_DIPNAME( 0x40, 0x00, "Payout Mode" ) PORT_DIPLOCATION("DSW1:7") - PORT_DIPSETTING( 0x40, "Manual" ) - PORT_DIPSETTING( 0x00, "Automatic" ) - PORT_DIPNAME( 0x80, 0x00, "Repeat Last Bet") PORT_DIPLOCATION("DSW1:8") - PORT_DIPSETTING( 0x80, DEF_STR( No ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_START("DSW2") // found in the PCB: 00000000 (arranged for sale since they are uncommon settings) PORT_DIPNAME( 0x07, 0x01, "Percentage" ) PORT_DIPLOCATION("DSW2:1,2,3") @@ -732,7 +741,7 @@ static MACHINE_CONFIG_START( kurukuru, kurukuru_state ) MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK) - MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) + MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -770,7 +779,7 @@ static MACHINE_CONFIG_START( ppj, kurukuru_state ) MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK) - MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) + MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -800,6 +809,7 @@ MACHINE_CONFIG_END ROM_START( kurukuru ) ROM_REGION( 0x08000, "maincpu", 0 ) ROM_LOAD( "kp_17l.ic17", 0x00000, 0x08000, CRC(9b552ebc) SHA1(07d0e62b7fdad381963a345376b72ad31eb7b96d) ) // program code + // Game ID string: "carp carp carp hiroshima ---" ROM_REGION( 0x40000, "user1", 0 ) // maincpu banked roms ROM_FILL( 0x00000, 0x10000, 0xff ) // ic23: unpopulated @@ -824,6 +834,7 @@ ROM_END ROM_START( ppj ) ROM_REGION( 0x08000, "maincpu", 0 ) ROM_LOAD( "ppj17.ic17", 0x00000, 0x08000, CRC(5d9c9ceb) SHA1(0f52c8a0aaaf978afeb07e56493399133b4ce781) ) // program code + // Game ID string: "PYON PYON JUMP V1.40" ROM_REGION( 0x40000, "user1", 0 ) // maincpu banked roms ROM_FILL( 0x00000, 0x10000, 0xff ) // ic23: unpopulated From f9939f28a8b590c3d444e0ae8fc0ef7a38b7d1f6 Mon Sep 17 00:00:00 2001 From: AJR Date: Mon, 8 Aug 2016 19:26:27 -0400 Subject: [PATCH 096/116] UI-related cleanup (nw) - Create class ui::machine_info for holding calculated machine info and generating descriptive strings for the UI. This absorbs a number of unimportant core functions that existed only for the UI's convenience. --- src/emu/image.cpp | 17 -- src/emu/image.h | 1 - src/emu/ioport.cpp | 27 --- src/emu/ioport.h | 12 -- src/frontend/mame/luaengine.cpp | 4 - src/frontend/mame/ui/info.cpp | 323 +++++++++++++++++++++++++++++- src/frontend/mame/ui/info.h | 30 +++ src/frontend/mame/ui/mainmenu.cpp | 8 +- src/frontend/mame/ui/ui.cpp | 291 ++------------------------- src/frontend/mame/ui/ui.h | 12 +- 10 files changed, 379 insertions(+), 346 deletions(-) diff --git a/src/emu/image.cpp b/src/emu/image.cpp index a08acad47cf..5fbc5844b9d 100644 --- a/src/emu/image.cpp +++ b/src/emu/image.cpp @@ -208,23 +208,6 @@ void image_manager::options_extract() } -/*------------------------------------------------- - image_mandatory_scan - search for devices which - need an image to be loaded - -------------------------------------------------*/ - -std::string &image_manager::mandatory_scan(std::string &mandatory) -{ - mandatory.clear(); - // make sure that any required image has a mounted file - for (device_image_interface &image : image_interface_iterator(machine().root_device())) - { - if (image.filename() == nullptr && image.must_be_loaded()) - mandatory.append("\"").append(image.instance_name()).append("\", "); - } - return mandatory; -} - /*------------------------------------------------- postdevice_init - initialize devices for a specific running_machine diff --git a/src/emu/image.h b/src/emu/image.h index 32b8035d14d..4a9e55e4c80 100644 --- a/src/emu/image.h +++ b/src/emu/image.h @@ -23,7 +23,6 @@ public: void unload_all(); void postdevice_init(); - std::string &mandatory_scan(std::string &mandatory); // getters running_machine &machine() const { return m_machine; } diff --git a/src/emu/ioport.cpp b/src/emu/ioport.cpp index 4bec462ceed..44e758b5752 100644 --- a/src/emu/ioport.cpp +++ b/src/emu/ioport.cpp @@ -2450,10 +2450,6 @@ ioport_manager::ioport_manager(running_machine &machine) m_timecode_file(machine.options().input_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS), m_timecode_count(0), m_timecode_last_time(attotime::zero), - m_has_configs(false), - m_has_analog(false), - m_has_dips(false), - m_has_bioses(false), m_autofire_toggle(false), m_autofire_delay(3) // 1 seems too fast for a bunch of games { @@ -2534,29 +2530,6 @@ time_t ioport_manager::initialize() // register callbacks for when we load configurations machine().configuration().config_register("input", config_saveload_delegate(FUNC(ioport_manager::load_config), this), config_saveload_delegate(FUNC(ioport_manager::save_config), this)); - // calculate "has..." values - { - m_has_configs = false; - m_has_analog = false; - m_has_dips = false; - m_has_bioses = false; - - // scan the input port array to see what options we need to enable - for (auto &port : m_portlist) - for (ioport_field &field : port.second->fields()) - { - if (field.type() == IPT_DIPSWITCH) - m_has_dips = true; - if (field.type() == IPT_CONFIG) - m_has_configs = true; - if (field.is_analog()) - m_has_analog = true; - } - for (device_t &device : device_iterator(machine().root_device())) - for (const rom_entry &rom : device.rom_region_vector()) - if (ROMENTRY_ISSYSTEM_BIOS(&rom)) { m_has_bioses= true; break; } - } - // open playback and record files if specified time_t basetime = playback_init(); record_init(); diff --git a/src/emu/ioport.h b/src/emu/ioport.h index 71368f37507..419b603b239 100644 --- a/src/emu/ioport.h +++ b/src/emu/ioport.h @@ -1474,12 +1474,6 @@ public: bool safe_to_read() const { return m_safe_to_read; } natural_keyboard &natkeyboard() { return m_natkeyboard; } - // has... getters - bool has_configs() const { return m_has_configs; } - bool has_analog() const { return m_has_analog; } - bool has_dips() const { return m_has_dips; } - bool has_bioses() const { return m_has_bioses; } - // type helpers const simple_list &types() const { return m_typelist; } bool type_pressed(ioport_type type, int player = 0); @@ -1570,12 +1564,6 @@ private: int m_timecode_count; attotime m_timecode_last_time; - // has... - bool m_has_configs; - bool m_has_analog; - bool m_has_dips; - bool m_has_bioses; - // autofire bool m_autofire_toggle; // autofire toggle int m_autofire_delay; // autofire delay diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index 83a077cec86..0ccda19620e 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -2395,10 +2395,6 @@ void lua_engine::initialize() .addFunction ("select_next_state", &cheat_entry::select_next_state) .endClass() .beginClass ("ioport") - .addFunction ("has_configs", &ioport_manager::has_configs) - .addFunction ("has_analog", &ioport_manager::has_analog) - .addFunction ("has_dips", &ioport_manager::has_dips) - .addFunction ("has_bioses", &ioport_manager::has_bioses) .addFunction ("has_keyboard", &ioport_manager::has_keyboard) .addFunction ("count_players", &ioport_manager::count_players) .addProperty ("ports", &lua_engine::l_ioport_get_ports) diff --git a/src/frontend/mame/ui/info.cpp b/src/frontend/mame/ui/info.cpp index 9461f566d71..1048ac426ce 100644 --- a/src/frontend/mame/ui/info.cpp +++ b/src/frontend/mame/ui/info.cpp @@ -13,9 +13,328 @@ #include "ui/info.h" #include "ui/ui.h" +#include "drivenum.h" #include "softlist.h" namespace ui { + + +//------------------------------------------------- +// machine_info - constructor +//------------------------------------------------- + +machine_info::machine_info(running_machine &machine) + : m_machine(machine) +{ + // calculate "has..." values + m_has_configs = false; + m_has_analog = false; + m_has_dips = false; + m_has_bioses = false; + + // scan the input port array to see what options we need to enable + for (auto &port : machine.ioport().ports()) + for (ioport_field &field : port.second->fields()) + { + if (field.type() == IPT_DIPSWITCH) + m_has_dips = true; + if (field.type() == IPT_CONFIG) + m_has_configs = true; + if (field.is_analog()) + m_has_analog = true; + } + + for (device_t &device : device_iterator(machine.root_device())) + for (const rom_entry &rom : device.rom_region_vector()) + if (ROMENTRY_ISSYSTEM_BIOS(&rom)) { m_has_bioses = true; break; } +} + + +/*************************************************************************** + TEXT GENERATORS +***************************************************************************/ + +//------------------------------------------------- +// warnings_string - print the warning flags +// text to the given buffer +//------------------------------------------------- + +std::string machine_info::warnings_string() +{ + constexpr UINT32 warning_flags = ( MACHINE_NOT_WORKING | + MACHINE_UNEMULATED_PROTECTION | + MACHINE_MECHANICAL | + MACHINE_WRONG_COLORS | + MACHINE_IMPERFECT_COLORS | + MACHINE_REQUIRES_ARTWORK | + MACHINE_NO_SOUND | + MACHINE_IMPERFECT_SOUND | + MACHINE_IMPERFECT_GRAPHICS | + MACHINE_IMPERFECT_KEYBOARD | + MACHINE_NO_COCKTAIL | + MACHINE_IS_INCOMPLETE | + MACHINE_NO_SOUND_HW ); + + // if no warnings, nothing to return + if (m_machine.rom_load().warnings() == 0 && m_machine.rom_load().knownbad() == 0 && !(m_machine.system().flags & warning_flags) && m_machine.rom_load().software_load_warnings_message().length() == 0) + return std::string(); + + std::ostringstream buf; + + // add a warning if any ROMs were loaded with warnings + if (m_machine.rom_load().warnings() > 0) + { + buf << _("One or more ROMs/CHDs for this machine are incorrect. The machine may not run correctly.\n"); + if (m_machine.system().flags & warning_flags) + buf << "\n"; + } + + if (m_machine.rom_load().software_load_warnings_message().length()>0) { + buf << m_machine.rom_load().software_load_warnings_message(); + if (m_machine.system().flags & warning_flags) + buf << "\n"; + } + // if we have at least one warning flag, print the general header + if ((m_machine.system().flags & warning_flags) || m_machine.rom_load().knownbad() > 0) + { + buf << _("There are known problems with this machine\n\n"); + + // add a warning if any ROMs are flagged BAD_DUMP/NO_DUMP + if (m_machine.rom_load().knownbad() > 0) { + buf << _("One or more ROMs/CHDs for this machine have not been correctly dumped.\n"); + } + // add one line per warning flag + if (m_machine.system().flags & MACHINE_IMPERFECT_KEYBOARD) + buf << _("The keyboard emulation may not be 100% accurate.\n"); + if (m_machine.system().flags & MACHINE_IMPERFECT_COLORS) + buf << _("The colors aren't 100% accurate.\n"); + if (m_machine.system().flags & MACHINE_WRONG_COLORS) + buf << _("The colors are completely wrong.\n"); + if (m_machine.system().flags & MACHINE_IMPERFECT_GRAPHICS) + buf << _("The video emulation isn't 100% accurate.\n"); + if (m_machine.system().flags & MACHINE_IMPERFECT_SOUND) + buf << _("The sound emulation isn't 100% accurate.\n"); + if (m_machine.system().flags & MACHINE_NO_SOUND) { + buf << _("The machine lacks sound.\n"); + } + if (m_machine.system().flags & MACHINE_NO_COCKTAIL) + buf << _("Screen flipping in cocktail mode is not supported.\n"); + + // check if external artwork is present before displaying this warning? + if (m_machine.system().flags & MACHINE_REQUIRES_ARTWORK) { + buf << _("The machine requires external artwork files\n"); + } + + if (m_machine.system().flags & MACHINE_IS_INCOMPLETE ) + { + buf << _("This machine was never completed. It may exhibit strange behavior or missing elements that are not bugs in the emulation.\n"); + } + + if (m_machine.system().flags & MACHINE_NO_SOUND_HW ) + { + buf << _("This machine has no sound hardware, MAME will produce no sounds, this is expected behaviour.\n"); + } + + // if there's a NOT WORKING, UNEMULATED PROTECTION or GAME MECHANICAL warning, make it stronger + if (m_machine.system().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL)) + { + // add the strings for these warnings + if (m_machine.system().flags & MACHINE_UNEMULATED_PROTECTION) { + buf << _("The machine has protection which isn't fully emulated.\n"); + } + if (m_machine.system().flags & MACHINE_NOT_WORKING) { + buf << _("\nTHIS MACHINE DOESN'T WORK. The emulation for this machine is not yet complete. " + "There is nothing you can do to fix this problem except wait for the developers to improve the emulation.\n"); + } + if (m_machine.system().flags & MACHINE_MECHANICAL) { + buf << _("\nCertain elements of this machine cannot be emulated as it requires actual physical interaction or consists of mechanical devices. " + "It is not possible to fully play this machine.\n"); + } + + // find the parent of this driver + driver_enumerator drivlist(m_machine.options()); + int maindrv = drivlist.find(m_machine.system()); + int clone_of = drivlist.non_bios_clone(maindrv); + if (clone_of != -1) + maindrv = clone_of; + + // scan the driver list for any working clones and add them + bool foundworking = false; + while (drivlist.next()) + if (drivlist.current() == maindrv || drivlist.clone() == maindrv) + if ((drivlist.driver().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL)) == 0) + { + // this one works, add a header and display the name of the clone + if (!foundworking) { + buf << _("\n\nThere are working clones of this machine: "); + } + else + buf << ", "; + buf << drivlist.driver().name; + foundworking = true; + } + + if (foundworking) + buf << "\n"; + } + } + + // add the 'press OK' string + buf << _("\n\nPress any key to continue"); + return buf.str(); +} + + +//------------------------------------------------- +// game_info_string - return the game info text +//------------------------------------------------- + +std::string machine_info::game_info_string() +{ + std::ostringstream buf; + + // print description, manufacturer, and CPU: + util::stream_format(buf, _("%1$s\n%2$s %3$s\nDriver: %4$s\n\nCPU:\n"), + m_machine.system().description, + m_machine.system().year, + m_machine.system().manufacturer, + core_filename_extract_base(m_machine.system().source_file)); + + // loop over all CPUs + execute_interface_iterator execiter(m_machine.root_device()); + std::unordered_set exectags; + for (device_execute_interface &exec : execiter) + { + if (!exectags.insert(exec.device().tag()).second) + continue; + // get cpu specific clock that takes internal multiplier/dividers into account + int clock = exec.device().clock(); + + // count how many identical CPUs we have + int count = 1; + const char *name = exec.device().name(); + for (device_execute_interface &scan : execiter) + { + if (exec.device().type() == scan.device().type() && strcmp(name, scan.device().name()) == 0 && exec.device().clock() == scan.device().clock()) + if (exectags.insert(scan.device().tag()).second) + count++; + } + + // if more than one, prepend a #x in front of the CPU name + // display clock in kHz or MHz + util::stream_format(buf, + (count > 1) ? "%1$d" UTF8_MULTIPLY "%2$s %3$d.%4$0*5$d%6$s\n" : "%2$s %3$d.%4$0*5$d%6$s\n", + count, + name, + (clock >= 1000000) ? (clock / 1000000) : (clock / 1000), + (clock >= 1000000) ? (clock % 1000000) : (clock % 1000), + (clock >= 1000000) ? 6 : 3, + (clock >= 1000000) ? _("MHz") : _("kHz")); + } + + // loop over all sound chips + sound_interface_iterator snditer(m_machine.root_device()); + std::unordered_set soundtags; + bool found_sound = false; + for (device_sound_interface &sound : snditer) + { + if (!soundtags.insert(sound.device().tag()).second) + continue; + + // append the Sound: string + if (!found_sound) + buf << _("\nSound:\n"); + found_sound = true; + + // count how many identical sound chips we have + int count = 1; + for (device_sound_interface &scan : snditer) + { + if (sound.device().type() == scan.device().type() && sound.device().clock() == scan.device().clock()) + if (soundtags.insert(scan.device().tag()).second) + count++; + } + + // if more than one, prepend a #x in front of the CPU name + // display clock in kHz or MHz + int clock = sound.device().clock(); + util::stream_format(buf, + (count > 1) + ? ((clock != 0) ? "%1$d" UTF8_MULTIPLY "%2$s %3$d.%4$0*5$d%6$s\n" : "%1$d" UTF8_MULTIPLY "%2$s\n") + : ((clock != 0) ? "%2$s %3$d.%4$0*5$d%6$s\n" : "%2$s\n"), + count, + sound.device().name(), + (clock >= 1000000) ? (clock / 1000000) : (clock / 1000), + (clock >= 1000000) ? (clock % 1000000) : (clock % 1000), + (clock >= 1000000) ? 6 : 3, + (clock >= 1000000) ? _("MHz") : _("kHz")); + } + + // display screen information + buf << _("\nVideo:\n"); + screen_device_iterator scriter(m_machine.root_device()); + int scrcount = scriter.count(); + if (scrcount == 0) + buf << _("None\n"); + else + { + for (screen_device &screen : scriter) + { + std::string detail; + if (screen.screen_type() == SCREEN_TYPE_VECTOR) + detail = _("Vector"); + else + { + const rectangle &visarea = screen.visible_area(); + detail = string_format("%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz", + visarea.width(), visarea.height(), + (m_machine.system().flags & ORIENTATION_SWAP_XY) ? "V" : "H", + ATTOSECONDS_TO_HZ(screen.frame_period().attoseconds())); + } + + util::stream_format(buf, + (scrcount > 1) ? _("%1$s: %2$s\n") : _("%2$s\n"), + get_screen_desc(screen), detail); + } + } + + return buf.str(); +} + + +//------------------------------------------------- +// mandatory_images - search for devices which +// need an image to be loaded +//------------------------------------------------- + +std::string machine_info::mandatory_images() +{ + std::ostringstream buf; + + // make sure that any required image has a mounted file + for (device_image_interface &image : image_interface_iterator(m_machine.root_device())) + { + if (image.filename() == nullptr && image.must_be_loaded()) + buf << "\"" << image.instance_name() << "\", "; + } + return buf.str(); +} + + +//------------------------------------------------- +// get_screen_desc - returns the description for +// a given screen +//------------------------------------------------- + +std::string machine_info::get_screen_desc(screen_device &screen) +{ + if (screen_device_iterator(m_machine.root_device()).count() > 1) + return string_format(_("Screen '%1$s'"), screen.tag()); + else + return _("Screen"); +} + + /*------------------------------------------------- menu_game_info - handle the game information menu @@ -31,8 +350,8 @@ menu_game_info::~menu_game_info() void menu_game_info::populate() { - std::string tempstring; - item_append(ui().game_info_astring(tempstring), "", FLAG_MULTILINE, nullptr); + std::string tempstring = ui().machine_info().game_info_string(); + item_append(std::move(tempstring), "", FLAG_MULTILINE, nullptr); } void menu_game_info::handle() diff --git a/src/frontend/mame/ui/info.h b/src/frontend/mame/ui/info.h index 2fbd9de3683..8a1d339dc73 100644 --- a/src/frontend/mame/ui/info.h +++ b/src/frontend/mame/ui/info.h @@ -16,6 +16,36 @@ #include "ui/menu.h" namespace ui { + +class machine_info +{ +public: + // construction + machine_info(running_machine &machine); + + // has... getters + bool has_configs() const { return m_has_configs; } + bool has_analog() const { return m_has_analog; } + bool has_dips() const { return m_has_dips; } + bool has_bioses() const { return m_has_bioses; } + + // text generators + std::string warnings_string(); + std::string game_info_string(); + std::string mandatory_images(); + std::string get_screen_desc(screen_device &screen); + +private: + // reference to machine + running_machine & m_machine; + + // has... + bool m_has_configs; + bool m_has_analog; + bool m_has_dips; + bool m_has_bioses; +}; + class menu_game_info : public menu { public: diff --git a/src/frontend/mame/ui/mainmenu.cpp b/src/frontend/mame/ui/mainmenu.cpp index 3bf5e5cb7b6..92d7db18d4c 100644 --- a/src/frontend/mame/ui/mainmenu.cpp +++ b/src/frontend/mame/ui/mainmenu.cpp @@ -56,11 +56,11 @@ void menu_main::populate() item_append(_("Input (this Machine)"), "", 0, (void *)INPUT_SPECIFIC); /* add optional input-related menus */ - if (machine().ioport().has_analog()) + if (ui().machine_info().has_analog()) item_append(_("Analog Controls"), "", 0, (void *)ANALOG); - if (machine().ioport().has_dips()) + if (ui().machine_info().has_dips()) item_append(_("Dip Switches"), "", 0, (void *)SETTINGS_DIP_SWITCHES); - if (machine().ioport().has_configs()) + if (ui().machine_info().has_configs()) { item_append(_("Machine Configuration"), "", 0, (void *)SETTINGS_DRIVER_CONFIG); } @@ -92,7 +92,7 @@ void menu_main::populate() if (pty_interface_iterator(machine().root_device()).first() != nullptr) item_append(_("Pseudo terminals"), "", 0, (void *)PTY_INFO); - if (machine().ioport().has_bioses()) + if (ui().machine_info().has_bioses()) item_append(_("Bios Selection"), "", 0, (void *)BIOS_SELECTION); /* add slot info menu */ diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp index 7394f03be2f..5c7f4a54a39 100644 --- a/src/frontend/mame/ui/ui.cpp +++ b/src/frontend/mame/ui/ui.cpp @@ -21,13 +21,13 @@ #include "rendfont.h" #include "uiinput.h" #include "ui/ui.h" +#include "ui/info.h" #include "ui/menu.h" #include "ui/mainmenu.h" #include "ui/filemngr.h" #include "ui/sliders.h" #include "ui/viewgfx.h" #include "imagedev/cassette.h" -#include "image.h" /*************************************************************************** @@ -186,6 +186,10 @@ mame_ui_manager::mame_ui_manager(running_machine &machine) { } +mame_ui_manager::~mame_ui_manager() +{ +} + void mame_ui_manager::init() { load_ui_options(); @@ -240,6 +244,8 @@ void mame_ui_manager::exit() void mame_ui_manager::initialize(running_machine &machine) { + m_machine_info = std::make_unique(machine); + // initialize the on-screen display system slider_list = slider_init(machine); if (slider_list.size() > 0) @@ -295,12 +301,15 @@ void mame_ui_manager::display_startup_screens(bool first_time) { // default to standard colors messagebox_backcolor = UI_BACKGROUND_COLOR; + messagebox_text.clear(); // pick the next state switch (state) { case 0: - if (show_warnings && warnings_string(messagebox_text).length() > 0) + if (show_warnings) + messagebox_text = machine_info().warnings_string(); + if (!messagebox_text.empty()) { set_handler(ui_callback_type::MODAL, std::bind(&mame_ui_manager::handler_messagebox_anykey, this, _1)); if (machine().system().flags & (MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS | MACHINE_REQUIRES_ARTWORK | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_KEYBOARD | MACHINE_NO_SOUND)) @@ -311,12 +320,16 @@ void mame_ui_manager::display_startup_screens(bool first_time) break; case 1: - if (show_gameinfo && game_info_astring(messagebox_text).length() > 0) + if (show_gameinfo) + messagebox_text = machine_info().game_info_string(); + if (!messagebox_text.empty()) set_handler(ui_callback_type::MODAL, std::bind(&mame_ui_manager::handler_messagebox_anykey, this, _1)); break; case 2: - if (show_mandatory_fileman && machine().image().mandatory_scan(messagebox_text).length() > 0) + if (show_mandatory_fileman) + messagebox_text = machine_info().mandatory_images(); + if (!messagebox_text.empty()) { std::string warning; warning.assign(_("This driver requires images to be loaded in the following device(s): ")).append(messagebox_text.substr(0, messagebox_text.length() - 2)); @@ -745,259 +758,6 @@ bool mame_ui_manager::is_menu_active(void) } -/*************************************************************************** - TEXT GENERATORS -***************************************************************************/ - -//------------------------------------------------- -// warnings_string - print the warning flags -// text to the given buffer -//------------------------------------------------- - -std::string &mame_ui_manager::warnings_string(std::string &str) -{ -#define WARNING_FLAGS ( MACHINE_NOT_WORKING | \ - MACHINE_UNEMULATED_PROTECTION | \ - MACHINE_MECHANICAL | \ - MACHINE_WRONG_COLORS | \ - MACHINE_IMPERFECT_COLORS | \ - MACHINE_REQUIRES_ARTWORK | \ - MACHINE_NO_SOUND | \ - MACHINE_IMPERFECT_SOUND | \ - MACHINE_IMPERFECT_GRAPHICS | \ - MACHINE_IMPERFECT_KEYBOARD | \ - MACHINE_NO_COCKTAIL| \ - MACHINE_IS_INCOMPLETE| \ - MACHINE_NO_SOUND_HW ) - - str.clear(); - - // if no warnings, nothing to return - if (machine().rom_load().warnings() == 0 && machine().rom_load().knownbad() == 0 && !(machine().system().flags & WARNING_FLAGS) && machine().rom_load().software_load_warnings_message().length() == 0) - return str; - - // add a warning if any ROMs were loaded with warnings - if (machine().rom_load().warnings() > 0) - { - str.append(_("One or more ROMs/CHDs for this machine are incorrect. The machine may not run correctly.\n")); - if (machine().system().flags & WARNING_FLAGS) - str.append("\n"); - } - - if (machine().rom_load().software_load_warnings_message().length()>0) { - str.append(machine().rom_load().software_load_warnings_message()); - if (machine().system().flags & WARNING_FLAGS) - str.append("\n"); - } - // if we have at least one warning flag, print the general header - if ((machine().system().flags & WARNING_FLAGS) || machine().rom_load().knownbad() > 0) - { - str.append(_("There are known problems with this machine\n\n")); - - // add a warning if any ROMs are flagged BAD_DUMP/NO_DUMP - if (machine().rom_load().knownbad() > 0) { - str.append(_("One or more ROMs/CHDs for this machine have not been correctly dumped.\n")); - } - // add one line per warning flag - if (machine().system().flags & MACHINE_IMPERFECT_KEYBOARD) - str.append(_("The keyboard emulation may not be 100% accurate.\n")); - if (machine().system().flags & MACHINE_IMPERFECT_COLORS) - str.append(_("The colors aren't 100% accurate.\n")); - if (machine().system().flags & MACHINE_WRONG_COLORS) - str.append(_("The colors are completely wrong.\n")); - if (machine().system().flags & MACHINE_IMPERFECT_GRAPHICS) - str.append(_("The video emulation isn't 100% accurate.\n")); - if (machine().system().flags & MACHINE_IMPERFECT_SOUND) - str.append(_("The sound emulation isn't 100% accurate.\n")); - if (machine().system().flags & MACHINE_NO_SOUND) { - str.append(_("The machine lacks sound.\n")); - } - if (machine().system().flags & MACHINE_NO_COCKTAIL) - str.append(_("Screen flipping in cocktail mode is not supported.\n")); - - // check if external artwork is present before displaying this warning? - if (machine().system().flags & MACHINE_REQUIRES_ARTWORK) { - str.append(_("The machine requires external artwork files\n")); - } - - if (machine().system().flags & MACHINE_IS_INCOMPLETE ) - { - str.append(_("This machine was never completed. It may exhibit strange behavior or missing elements that are not bugs in the emulation.\n")); - } - - if (machine().system().flags & MACHINE_NO_SOUND_HW ) - { - str.append(_("This machine has no sound hardware, MAME will produce no sounds, this is expected behaviour.\n")); - } - - // if there's a NOT WORKING, UNEMULATED PROTECTION or GAME MECHANICAL warning, make it stronger - if (machine().system().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL)) - { - // add the strings for these warnings - if (machine().system().flags & MACHINE_UNEMULATED_PROTECTION) { - str.append(_("The machine has protection which isn't fully emulated.\n")); - } - if (machine().system().flags & MACHINE_NOT_WORKING) { - str.append(_("\nTHIS MACHINE DOESN'T WORK. The emulation for this machine is not yet complete. " - "There is nothing you can do to fix this problem except wait for the developers to improve the emulation.\n")); - } - if (machine().system().flags & MACHINE_MECHANICAL) { - str.append(_("\nCertain elements of this machine cannot be emulated as it requires actual physical interaction or consists of mechanical devices. " - "It is not possible to fully play this machine.\n")); - } - - // find the parent of this driver - driver_enumerator drivlist(machine().options()); - int maindrv = drivlist.find(machine().system()); - int clone_of = drivlist.non_bios_clone(maindrv); - if (clone_of != -1) - maindrv = clone_of; - - // scan the driver list for any working clones and add them - bool foundworking = false; - while (drivlist.next()) - if (drivlist.current() == maindrv || drivlist.clone() == maindrv) - if ((drivlist.driver().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL)) == 0) - { - // this one works, add a header and display the name of the clone - if (!foundworking) { - str.append(_("\n\nThere are working clones of this machine: ")); - } - else - str.append(", "); - str.append(drivlist.driver().name); - foundworking = true; - } - - if (foundworking) - str.append("\n"); - } - } - - // add the 'press OK' string - str.append(_("\n\nPress any key to continue")); - return str; -} - - -//------------------------------------------------- -// game_info_std::string - populate an allocated -// string with the game info text -//------------------------------------------------- - -std::string &mame_ui_manager::game_info_astring(std::string &str) -{ - std::ostringstream buf; - - // print description, manufacturer, and CPU: - util::stream_format(buf, _("%1$s\n%2$s %3$s\nDriver: %4$s\n\nCPU:\n"), - machine().system().description, - machine().system().year, - machine().system().manufacturer, - core_filename_extract_base(machine().system().source_file)); - - // loop over all CPUs - execute_interface_iterator execiter(machine().root_device()); - std::unordered_set exectags; - for (device_execute_interface &exec : execiter) - { - if (!exectags.insert(exec.device().tag()).second) - continue; - // get cpu specific clock that takes internal multiplier/dividers into account - int clock = exec.device().clock(); - - // count how many identical CPUs we have - int count = 1; - const char *name = exec.device().name(); - for (device_execute_interface &scan : execiter) - { - if (exec.device().type() == scan.device().type() && strcmp(name, scan.device().name()) == 0 && exec.device().clock() == scan.device().clock()) - if (exectags.insert(scan.device().tag()).second) - count++; - } - - // if more than one, prepend a #x in front of the CPU name - // display clock in kHz or MHz - util::stream_format(buf, - (count > 1) ? "%1$d" UTF8_MULTIPLY "%2$s %3$d.%4$0*5$d%6$s\n" : "%2$s %3$d.%4$0*5$d%6$s\n", - count, - name, - (clock >= 1000000) ? (clock / 1000000) : (clock / 1000), - (clock >= 1000000) ? (clock % 1000000) : (clock % 1000), - (clock >= 1000000) ? 6 : 3, - (clock >= 1000000) ? _("MHz") : _("kHz")); - } - - // loop over all sound chips - sound_interface_iterator snditer(machine().root_device()); - std::unordered_set soundtags; - bool found_sound = false; - for (device_sound_interface &sound : snditer) - { - if (!soundtags.insert(sound.device().tag()).second) - continue; - - // append the Sound: string - if (!found_sound) - buf << _("\nSound:\n"); - found_sound = true; - - // count how many identical sound chips we have - int count = 1; - for (device_sound_interface &scan : snditer) - { - if (sound.device().type() == scan.device().type() && sound.device().clock() == scan.device().clock()) - if (soundtags.insert(scan.device().tag()).second) - count++; - } - - // if more than one, prepend a #x in front of the CPU name - // display clock in kHz or MHz - int clock = sound.device().clock(); - util::stream_format(buf, - (count > 1) - ? ((clock != 0) ? "%1$d" UTF8_MULTIPLY "%2$s %3$d.%4$0*5$d%6$s\n" : "%1$d" UTF8_MULTIPLY "%2$s\n") - : ((clock != 0) ? "%2$s %3$d.%4$0*5$d%6$s\n" : "%2$s\n"), - count, - sound.device().name(), - (clock >= 1000000) ? (clock / 1000000) : (clock / 1000), - (clock >= 1000000) ? (clock % 1000000) : (clock % 1000), - (clock >= 1000000) ? 6 : 3, - (clock >= 1000000) ? _("MHz") : _("kHz")); - } - - // display screen information - buf << _("\nVideo:\n"); - screen_device_iterator scriter(machine().root_device()); - int scrcount = scriter.count(); - if (scrcount == 0) - buf << _("None\n"); - else - { - for (screen_device &screen : scriter) - { - std::string detail; - if (screen.screen_type() == SCREEN_TYPE_VECTOR) - detail = _("Vector"); - else - { - const rectangle &visarea = screen.visible_area(); - detail = string_format("%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz", - visarea.width(), visarea.height(), - (machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H", - ATTOSECONDS_TO_HZ(screen.frame_period().attoseconds())); - } - - util::stream_format(buf, - (scrcount > 1) ? _("%1$s: %2$s\n") : _("%2$s\n"), - slider_get_screen_desc(screen), detail); - } - } - - return str = buf.str(); -} - - /*************************************************************************** UI HANDLERS @@ -1043,7 +803,7 @@ UINT32 mame_ui_manager::handler_messagebox_anykey(render_container &container) } -//-------------------------------------------------3 +//------------------------------------------------- // process_natural_keyboard - processes any // natural keyboard input //------------------------------------------------- @@ -1758,7 +1518,7 @@ std::vector mame_ui_manager::slider_init(running_machine &machine int defxoffset = floor(screen.xoffset() * 1000.0f + 0.5f); int defyoffset = floor(screen.yoffset() * 1000.0f + 0.5f); void *param = (void *)&screen; - std::string screen_desc = slider_get_screen_desc(screen); + std::string screen_desc = machine_info().get_screen_desc(screen); // add refresh rate tweaker if (machine.options().cheat()) @@ -2317,19 +2077,6 @@ INT32 mame_ui_manager::slider_beam_intensity_weight(running_machine &machine, vo } -//------------------------------------------------- -// slider_get_screen_desc - returns the -// description for a given screen -//------------------------------------------------- - -std::string mame_ui_manager::slider_get_screen_desc(screen_device &screen) -{ - if (screen_device_iterator(screen.machine().root_device()).count() > 1) - return string_format(_("Screen '%1$s'"), screen.tag()); - else - return _("Screen"); -} - //------------------------------------------------- // slider_crossscale - crosshair scale slider // callback diff --git a/src/frontend/mame/ui/ui.h b/src/frontend/mame/ui/ui.h index 0c45dd08405..3baa5db61c2 100644 --- a/src/frontend/mame/ui/ui.h +++ b/src/frontend/mame/ui/ui.h @@ -26,7 +26,7 @@ namespace ui { class menu_item; - +class machine_info; } // namespace ui /*************************************************************************** @@ -152,6 +152,7 @@ public: // construction/destruction mame_ui_manager(running_machine &machine); + ~mame_ui_manager(); void init(); @@ -159,6 +160,7 @@ public: running_machine &machine() const { return m_machine; } bool single_step() const { return m_single_step; } ui_options &options() { return m_ui_options; } + ui::machine_info &machine_info() const { assert(m_machine_info != nullptr); return *m_machine_info; } // setters void set_single_step(bool single_step) { m_single_step = single_step; } @@ -213,9 +215,6 @@ public: void start_save_state(); void start_load_state(); - // print the game info string into a buffer - std::string &game_info_astring(std::string &str); - // slider controls std::vector& get_slider_list(void); @@ -249,6 +248,8 @@ private: bool m_load_save_hold; ui_options m_ui_options; + std::unique_ptr m_machine_info; + // static variables static std::string messagebox_text; static std::string messagebox_poptext; @@ -257,9 +258,6 @@ private: static std::vector slider_list; static slider_state *slider_current; - // text generators - std::string &warnings_string(std::string &buffer); - // UI handlers UINT32 handler_messagebox(render_container &container); UINT32 handler_messagebox_anykey(render_container &container); From 7835458e5159d6b92bb7b75b1f59e676db5b3224 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 9 Aug 2016 21:51:35 -0400 Subject: [PATCH 097/116] Remap "P1 Mahjong Score" to / key for OS X --- src/osd/modules/input/input_sdlcommon.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/osd/modules/input/input_sdlcommon.cpp b/src/osd/modules/input/input_sdlcommon.cpp index 479e5975666..4abcbd0251c 100644 --- a/src/osd/modules/input/input_sdlcommon.cpp +++ b/src/osd/modules/input/input_sdlcommon.cpp @@ -255,6 +255,14 @@ void sdl_osd_interface::customize_input_type_list(simple_list entry.defseq(SEQ_TYPE_STANDARD).set(KEYCODE_TAB, input_seq::not_code, KEYCODE_LALT, input_seq::not_code, KEYCODE_RALT); break; +#if defined(__APPLE__) && defined(__MACH__) + // 78-key Apple MacBook & Bluetooth keyboards have no right control key + case IPT_MAHJONG_SCORE: + if (entry.player() == 0) + entry.defseq(SEQ_TYPE_STANDARD).set(KEYCODE_SLASH); + break; +#endif + // leave everything else alone default: break; From 1cda375d5ed60dfadb66196e37778e9f35823566 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Tue, 9 Aug 2016 22:27:24 -0400 Subject: [PATCH 098/116] Eliminated device_image_interface::make_readonly() Take note that I eliminated make_readonly(); here is why I think the calls were unnecessary: 1. All image loads through softlists are done through common_process_file(), and thus going to be readonly anyways 2. The cassette.cpp call to make_readonly() seems to be a residual hack, if a failure occurs the image will be unloaded anyways --- src/devices/imagedev/cassette.cpp | 4 ---- src/emu/diimage.cpp | 4 +--- src/emu/diimage.h | 1 - 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/devices/imagedev/cassette.cpp b/src/devices/imagedev/cassette.cpp index 57b7068d49a..adf59ca95eb 100644 --- a/src/devices/imagedev/cassette.cpp +++ b/src/devices/imagedev/cassette.cpp @@ -285,10 +285,6 @@ image_init_result cassette_image_device::internal_load(bool is_create) cassette_flags = is_writable ? (CASSETTE_FLAG_READWRITE|CASSETTE_FLAG_SAVEONEXIT) : CASSETTE_FLAG_READONLY; std::string fname; err = cassette_open_choices((void *)image, &image_ioprocs, filetype().c_str(), m_formats, cassette_flags, &m_cassette); - - /* this is kind of a hack */ - if (err && is_writable) - make_readonly(); } while(err && is_writable); diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 9120191c3ae..935d1df52b9 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -510,7 +510,7 @@ void device_image_interface::image_checkhash() // only calculate CRC if it hasn't been calculated, and the open_mode is read only UINT32 crcval; - if (!m_hash.crc(crcval) && m_readonly && !m_created) + if (!m_hash.crc(crcval) && is_readonly() && !m_created) { // do not cause a linear read of 600 megs please // TODO: use SHA1 in the CHD header as the hash @@ -1060,8 +1060,6 @@ image_init_result device_image_interface::load_software(const std::string &softl const char *read_only = get_feature("read_only"); if (read_only && !strcmp(read_only, "true")) { - make_readonly(); - // Copy some image information when we have been loaded through a software list if (m_software_info_ptr) { diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 8156050884b..d2ea51c47e7 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -180,7 +180,6 @@ public: util::core_file &image_core_file() const { return *m_file; } UINT64 length() { check_for_file(); return m_file->size(); } bool is_readonly() const { return m_readonly; } - void make_readonly() { m_readonly = true; } UINT32 fread(void *buffer, UINT32 length) { check_for_file(); return m_file->read(buffer, length); } UINT32 fread(optional_shared_ptr &ptr, UINT32 length) { ptr.allocate(length); return fread(ptr.target(), length); } UINT32 fread(optional_shared_ptr &ptr, UINT32 length, offs_t offset) { ptr.allocate(length); return fread(ptr + offset, length - offset); } From 8bf6e9ebb59cc01b7db3c573977120c43c6dbd5e Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Wed, 10 Aug 2016 13:05:14 +0300 Subject: [PATCH 099/116] pofo: Added skeleton for PCD3311T sound chip. (nw) --- scripts/src/sound.lua | 13 +++++++ scripts/target/mame/mess.lua | 2 ++ src/devices/sound/pcd3311.cpp | 56 +++++++++++++++++++++++++++++ src/devices/sound/pcd3311.h | 67 +++++++++++++++++++++++++++++++++++ src/emu/drivers/xtal.h | 1 + src/mame/drivers/pofo.cpp | 44 ++++++++++++----------- 6 files changed, 163 insertions(+), 20 deletions(-) create mode 100644 src/devices/sound/pcd3311.cpp create mode 100644 src/devices/sound/pcd3311.h diff --git a/scripts/src/sound.lua b/scripts/src/sound.lua index bf1e87ebc7e..30d049c72e1 100644 --- a/scripts/src/sound.lua +++ b/scripts/src/sound.lua @@ -1352,6 +1352,7 @@ if (SOUNDS["UPD1771"]~=null) then MAME_DIR .. "src/devices/sound/upd1771.h", } end + --------------------------------------------------- -- GB_SOUND --@src/devices/sound/gb.h,SOUNDS["GB_SOUND"] = true @@ -1363,3 +1364,15 @@ if (SOUNDS["GB_SOUND"]~=null) then MAME_DIR .. "src/devices/sound/gb.h", } end + +--------------------------------------------------- +-- PCD3311 +--@src/devices/sound/gb.h,SOUNDS["PCD3311"] = true +--------------------------------------------------- + +if (SOUNDS["PCD3311"]~=null) then + files { + MAME_DIR .. "src/devices/sound/pcd3311.cpp", + MAME_DIR .. "src/devices/sound/pcd3311.h", + } +end diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index e78baadfdc6..3554b86e213 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -260,6 +260,8 @@ SOUNDS["ESQPUMP"] = true SOUNDS["VRC6"] = true SOUNDS["UPD1771"] = true SOUNDS["GB_SOUND"] = true +SOUNDS["PCD3311"] = true + -------------------------------------------------- -- specify available video cores -------------------------------------------------- diff --git a/src/devices/sound/pcd3311.cpp b/src/devices/sound/pcd3311.cpp new file mode 100644 index 00000000000..840cdb7ee2f --- /dev/null +++ b/src/devices/sound/pcd3311.cpp @@ -0,0 +1,56 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + PCD3311 DTMF/modem/musical tone generator emulation + +**********************************************************************/ + +#include "pcd3311.h" + + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type PCD3311 = &device_creator; + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// pcd3311_t - constructor +//------------------------------------------------- + +pcd3311_t::pcd3311_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, PCD3311, "PCD3311", tag, owner, clock, "pcd3311", __FILE__), + device_sound_interface(mconfig, *this) +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void pcd3311_t::device_start() +{ + save_item(NAME(m_a0)); + save_item(NAME(m_mode)); + save_item(NAME(m_strobe)); + save_item(NAME(m_data)); +} + + +//------------------------------------------------- +// sound_stream_update - handle update requests for +// our sound stream +//------------------------------------------------- + +void pcd3311_t::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) +{ +} diff --git a/src/devices/sound/pcd3311.h b/src/devices/sound/pcd3311.h new file mode 100644 index 00000000000..2c50a0a987a --- /dev/null +++ b/src/devices/sound/pcd3311.h @@ -0,0 +1,67 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + PCD3311 DTMF/modem/musical tone generator emulation + +********************************************************************** + _____ _____ + OSCI 1 |* \_/ | 16 Vdd + OSCO 2 | | 15 Vss + MODE 3 | | 14 D4 + D5 4 | PCD3311T | 13 N/C + N/C 5 | | 12 D3 + STROBE 6 | | 11 D2 + TONE 7 | | 10 D1/SDA + A0 8 |_____________| 9 D0/SCL + +**********************************************************************/ + +#pragma once + +#ifndef __PCD3311__ +#define __PCD3311__ + +#include "emu.h" + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> pcd3311_t + +class pcd3311_t : public device_t, + public device_sound_interface +{ +public: + // construction/destruction + pcd3311_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + DECLARE_WRITE8_MEMBER( write ) { m_data = data; } + DECLARE_WRITE_LINE_MEMBER( strobe_w ) { m_strobe = state; } + DECLARE_WRITE_LINE_MEMBER( mode_w ) { m_mode = state; } + DECLARE_WRITE_LINE_MEMBER( a0_w ) { m_a0 = state; } + +protected: + // device-level overrides + virtual void device_start() override; + + // internal callbacks + virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + +private: + int m_a0; + int m_mode; + int m_strobe; + UINT8 m_data; +}; + + +// device type definition +extern const device_type PCD3311; + + + +#endif diff --git a/src/emu/drivers/xtal.h b/src/emu/drivers/xtal.h index 5cb8b901db8..c74c9ec24b8 100644 --- a/src/emu/drivers/xtal.h +++ b/src/emu/drivers/xtal.h @@ -60,6 +60,7 @@ enum XTAL_3_12MHz = 3120000, /* SP0250 clock on Gottlieb games */ XTAL_3_5MHz = 3500000, /* Reported by Commodore 65 document, true xtal unchecked on PCB */ XTAL_3_52128MHz = 3521280, /* RCA COSMAC VIP */ + XTAL_3_57864MHz = 3578640, /* Atari Portfolio PCD3311T */ XTAL_3_579545MHz = 3579545, /* NTSC color subcarrier, extremely common, used on 100's of PCBs (Keytronic custom part #48-300-010 is equivalent) */ XTAL_3_6864MHz = 3686400, /* CPS3 */ XTAL_4MHz = 4000000, diff --git a/src/mame/drivers/pofo.cpp b/src/mame/drivers/pofo.cpp index 367af13c7ab..57cd2d30ad9 100644 --- a/src/mame/drivers/pofo.cpp +++ b/src/mame/drivers/pofo.cpp @@ -40,7 +40,7 @@ #include "bus/pofo/exp.h" #include "machine/nvram.h" #include "machine/ram.h" -#include "sound/speaker.h" +#include "sound/pcd3311.h" #include "video/hd61830.h" @@ -53,6 +53,7 @@ #define M80C88A_TAG "u1" #define HD61830_TAG "hd61830" +#define PCD3311T_TAG "pcd3311t" #define TIMER_TICK_TAG "tick" #define SCREEN_TAG "screen" @@ -71,7 +72,7 @@ public: driver_device(mconfig, type, tag), m_maincpu(*this, M80C88A_TAG), m_lcdc(*this, HD61830_TAG), - m_speaker(*this, "speaker"), + m_dtmf(*this, PCD3311T_TAG), m_ccm(*this, PORTFOLIO_MEMORY_CARD_SLOT_A_TAG), m_exp(*this, PORTFOLIO_EXPANSION_SLOT_TAG), m_timer_tick(*this, TIMER_TICK_TAG), @@ -93,7 +94,7 @@ public: required_device m_maincpu; required_device m_lcdc; - required_device m_speaker; + required_device m_dtmf; required_device m_ccm; required_device m_exp; required_device m_timer_tick; @@ -146,7 +147,7 @@ public: DECLARE_READ8_MEMBER( counter_r ); DECLARE_WRITE8_MEMBER( irq_mask_w ); - DECLARE_WRITE8_MEMBER( speaker_w ); + DECLARE_WRITE8_MEMBER( dtmf_w ); DECLARE_WRITE8_MEMBER( power_w ); DECLARE_WRITE8_MEMBER( select_w ); DECLARE_WRITE8_MEMBER( counter_w ); @@ -356,33 +357,36 @@ READ8_MEMBER( portfolio_state::keyboard_r ) //************************************************************************** -// INTERNAL SPEAKER +// SOUND //************************************************************************** //------------------------------------------------- -// speaker_w - internal speaker output +// dtmf_w - //------------------------------------------------- -WRITE8_MEMBER( portfolio_state::speaker_w ) +WRITE8_MEMBER( portfolio_state::dtmf_w ) { /* bit description - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 speaker level + 0 PCD3311T D0 + 1 PCD3311T D1 + 2 PCD3311T D2 + 3 PCD3311T D3 + 4 PCD3311T D4 + 5 PCD3311T D5 + 6 PCD3311T STROBE + 7 PCD3311T VDD,MODE,A0 */ - if (LOG) logerror("%s %s SPEAKER %02x\n", machine().time().as_string(), machine().describe_context(), data); + if (LOG) logerror("%s %s DTMF %02x\n", machine().time().as_string(), machine().describe_context(), data); - m_speaker->level_w(!BIT(data, 7)); + m_dtmf->mode_w(!BIT(data, 7)); + m_dtmf->a0_w(!BIT(data, 7)); + m_dtmf->write(space, 0, data & 0x3f); + m_dtmf->strobe_w(BIT(data, 6)); } @@ -735,7 +739,7 @@ WRITE8_MEMBER( portfolio_state::io_w ) break; case 2: - speaker_w(space, 0, data); + dtmf_w(space, 0, data); break; case 3: @@ -1041,7 +1045,7 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ADD(PCD3311T_TAG, PCD3311, XTAL_3_57864MHz) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices @@ -1096,4 +1100,4 @@ ROM_END //************************************************************************** // YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS -COMP( 1989, pofo, 0, 0, portfolio, portfolio, driver_device, 0, "Atari", "Portfolio", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +COMP( 1989, pofo, 0, 0, portfolio, portfolio, driver_device, 0, "Atari", "Portfolio", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) From b37bdb6c32807a463b5147c4f5eaaa0c88eb1d77 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Wed, 10 Aug 2016 21:49:44 +1000 Subject: [PATCH 100/116] UAPCE: fixed invalid dipswitch (nw) --- src/mame/drivers/uapce.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/uapce.cpp b/src/mame/drivers/uapce.cpp index 1868e615c02..14358a66aa1 100644 --- a/src/mame/drivers/uapce.cpp +++ b/src/mame/drivers/uapce.cpp @@ -276,7 +276,7 @@ static INPUT_PORTS_START( uapce ) PORT_DIPSETTING( 0x30, "12 minute Timed Play" ) PORT_DIPSETTING( 0x38, "20 minute Timed Play" ) PORT_DIPNAME( 0x40, 0x40, "Buy-In Feature" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) From 68c2d88d513b8495ecee14e9d6eb910cb5fd61ff Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Wed, 10 Aug 2016 08:08:10 -0400 Subject: [PATCH 101/116] Converted more softlist code to use std::string --- src/emu/diimage.cpp | 8 ++++---- src/emu/softlist.cpp | 26 ++++++++++---------------- src/emu/softlist.h | 6 ++---- src/emu/softlist_dev.cpp | 12 ++++++------ src/emu/softlist_dev.h | 2 +- 5 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 935d1df52b9..97c9559e9a9 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -1321,10 +1321,10 @@ const software_part *device_image_interface::find_software_item(const std::strin { if (swlist_name.compare(swlistdev.list_name())==0 || !(swlist_name.length() > 0)) { - const software_info *info = swlistdev.find(swinfo_name.c_str()); + const software_info *info = swlistdev.find(swinfo_name); if (info != nullptr) { - const software_part *part = info->find_part(swpart_name.c_str(), interface); + const software_part *part = info->find_part(swpart_name, interface); if (part != nullptr) { if (dev != nullptr) @@ -1340,10 +1340,10 @@ const software_part *device_image_interface::find_software_item(const std::strin // gameboy:sml) which is not handled properly by software_name_split // since the function cannot distinguish between this and the case // path = swinfo_name:swpart_name - const software_info *info = swlistdev.find(swpart_name.c_str()); + const software_info *info = swlistdev.find(swpart_name); if (info != nullptr) { - const software_part *part = info->find_part(nullptr, interface); + const software_part *part = info->find_part("", interface); if (part != nullptr) { if (dev != nullptr) diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp index 67178a1b4bb..8f6b12fe914 100644 --- a/src/emu/softlist.cpp +++ b/src/emu/softlist.cpp @@ -101,20 +101,16 @@ bool software_part::matches_interface(const char *interface_list) const // software_info - constructor //------------------------------------------------- -software_info::software_info(std::string &&name, std::string &&parent, const char *supported) - : m_next(nullptr), - m_supported(SOFTWARE_SUPPORTED_YES), +software_info::software_info(std::string &&name, std::string &&parent, const std::string &supported) + : m_supported(SOFTWARE_SUPPORTED_YES), m_shortname(std::move(name)), m_parentname(std::move(parent)) { // handle the supported flag if provided - if (supported != nullptr) - { - if (strcmp(supported, "partial") == 0) - m_supported = SOFTWARE_SUPPORTED_PARTIAL; - else if (strcmp(supported, "no") == 0) - m_supported = SOFTWARE_SUPPORTED_NO; - } + if (supported == "partial") + m_supported = SOFTWARE_SUPPORTED_PARTIAL; + else if (supported == "no") + m_supported = SOFTWARE_SUPPORTED_NO; } @@ -123,22 +119,20 @@ software_info::software_info(std::string &&name, std::string &&parent, const cha // optional interface match //------------------------------------------------- -const software_part *software_info::find_part(const char *partname, const char *interface) const +const software_part *software_info::find_part(const std::string &partname, const char *interface) const { // if neither partname nor interface supplied, then we just return the first entry - if (partname != nullptr && strlen(partname)==0) partname = nullptr; - - if (partname == nullptr && interface == nullptr) + if (partname.empty() && interface == nullptr) return &m_partdata.front(); // look for the part by name and match against the interface if provided for (const software_part &part : m_partdata) - if (partname != nullptr && (partname == part.name())) + if (!partname.empty() && (partname == part.name())) { if (interface == nullptr || part.matches_interface(interface)) return ∂ } - else if (partname == nullptr && part.matches_interface(interface)) + else if (partname.empty() && part.matches_interface(interface)) return ∂ return nullptr; } diff --git a/src/emu/softlist.h b/src/emu/softlist.h index 19ebc73e973..cd50824b50f 100644 --- a/src/emu/softlist.h +++ b/src/emu/softlist.h @@ -106,14 +106,13 @@ class software_info public: // construction/destruction - software_info(std::string &&name, std::string &&parent, const char *supported); + software_info(std::string &&name, std::string &&parent, const std::string &supported); software_info(software_info const &) = delete; software_info(software_info &&) = delete; software_info& operator=(software_info const &) = delete; software_info& operator=(software_info &&) = delete; // getters - software_info *next() const { return m_next; } const std::string &shortname() const { return m_shortname; } const std::string &longname() const { return m_longname; } const std::string &parentname() const { return m_parentname; } @@ -125,12 +124,11 @@ public: const std::list &parts() const { return m_partdata; } // additional operations - const software_part *find_part(const char *partname, const char *interface = nullptr) const; + const software_part *find_part(const std::string &partname, const char *interface = nullptr) const; bool has_multiple_parts(const char *interface) const; private: // internal state - software_info * m_next; UINT32 m_supported; std::string m_shortname; std::string m_longname; diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index a7ad66fb3a2..dc2e400edb8 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -252,13 +252,13 @@ void software_list_device::display_matches(const machine_config &config, const c // from an intermediate point //------------------------------------------------- -const software_info *software_list_device::find(const char *look_for) +const software_info *software_list_device::find(const std::string &look_for) { - // nullptr search returns nothing - if (look_for == nullptr) + // empty search returns nothing + if (look_for.empty()) return nullptr; - bool iswild = strchr(look_for, '*') != nullptr || strchr(look_for, '?'); + bool iswild = look_for.find_first_of("*?") != std::string::npos; // find a match (will cause a parse if needed when calling get_info) const auto &info_list = get_info(); @@ -268,8 +268,8 @@ const software_info *software_list_device::find(const char *look_for) [&](const software_info &info) { const char *shortname = info.shortname().c_str(); - return (iswild && core_strwildcmp(look_for, shortname) == 0) - || core_stricmp(look_for, shortname) == 0; + return (iswild && core_strwildcmp(look_for.c_str(), shortname) == 0) + || core_stricmp(look_for.c_str(), shortname) == 0; }); return iter != info_list.end() diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h index dd3b92940ae..bc72960105d 100644 --- a/src/emu/softlist_dev.h +++ b/src/emu/softlist_dev.h @@ -151,7 +151,7 @@ public: const std::list &get_info() { if (!m_parsed) parse(); return m_infolist; } // operations - const software_info *find(const char *look_for); + const software_info *find(const std::string &look_for); void find_approx_matches(const std::string &name, int matches, const software_info **list, const char *interface); void release(); software_compatibility is_compatible(const software_part &part) const; From 1f7c2b6a4a8c71751666b10461165f18d8b70cbc Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Wed, 10 Aug 2016 08:36:19 -0400 Subject: [PATCH 102/116] Changing 'bool iswild' to 'const bool iswild' --- src/emu/softlist_dev.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index dc2e400edb8..013f90c779c 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -258,7 +258,7 @@ const software_info *software_list_device::find(const std::string &look_for) if (look_for.empty()) return nullptr; - bool iswild = look_for.find_first_of("*?") != std::string::npos; + const bool iswild = look_for.find_first_of("*?") != std::string::npos; // find a match (will cause a parse if needed when calling get_info) const auto &info_list = get_info(); From 840b9e7362b408a233eb0aefc5c46decb248a4d8 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Wed, 10 Aug 2016 20:50:47 +0300 Subject: [PATCH 103/116] abc1600: WIP. (nw) --- src/devices/machine/nmc9306.cpp | 2 +- src/mame/drivers/abc1600.cpp | 11 +++++++- src/mame/machine/abc1600mac.cpp | 49 +++++++++++++++++---------------- src/mame/video/abc1600.cpp | 48 ++++++++++++++++++-------------- src/mame/video/abc1600.h | 4 ++- 5 files changed, 67 insertions(+), 47 deletions(-) diff --git a/src/devices/machine/nmc9306.cpp b/src/devices/machine/nmc9306.cpp index 0b23eda21d7..85580a6a621 100644 --- a/src/devices/machine/nmc9306.cpp +++ b/src/devices/machine/nmc9306.cpp @@ -15,7 +15,7 @@ // MACROS / CONSTANTS //************************************************************************** -#define LOG 1 +#define LOG 0 #define RAM_SIZE 32 diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp index f7db95b7640..8a8077d58d4 100644 --- a/src/mame/drivers/abc1600.cpp +++ b/src/mame/drivers/abc1600.cpp @@ -34,6 +34,11 @@ TODO: + - abcenix boot stuck in a loop @ 37cfa + - segment/page RAM addresses are not correctly decoded, "sas/format/format" can't find the SASI interface because of this + forcetask0 1 t0 0 t1 0 t2 0 t3 0 + sega19 0 task 0 + sega 000 segd 00 pga 008 pgd 4058 virtual 02c730 (should be 004730) - short/long reset (RSTBUT) - CIO - optimize timers! @@ -482,7 +487,9 @@ static ADDRESS_MAP_START( mac_mem, AS_PROGRAM, 8, abc1600_state ) AM_RANGE(0x1ff500, 0x1ff500) AM_MIRROR(0xff) AM_DEVREADWRITE(Z8410AB1_2_TAG, z80dma_device, read, write) AM_RANGE(0x1ff600, 0x1ff607) AM_MIRROR(0xf8) AM_READWRITE(scc_r, scc_w) AM_RANGE(0x1ff700, 0x1ff707) AM_MIRROR(0xf8) AM_READWRITE(cio_r, cio_w) - AM_RANGE(0x1ff800, 0x1ffaff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, io_map) + AM_RANGE(0x1ff800, 0x1ff8ff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr0_map) + AM_RANGE(0x1ff900, 0x1ff9ff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr1_map) + AM_RANGE(0x1ffa00, 0x1ffaff) AM_DEVICE(ABC1600_MOVER_TAG, abc1600_mover_device, iowr2_map) AM_RANGE(0x1ffb00, 0x1ffb00) AM_MIRROR(0x7e) AM_WRITE(fw0_w) AM_RANGE(0x1ffb01, 0x1ffb01) AM_MIRROR(0x7e) AM_WRITE(fw1_w) AM_RANGE(0x1ffd00, 0x1ffd07) AM_MIRROR(0xf8) AM_DEVWRITE(ABC1600_MAC_TAG, abc1600_mac_device, dmamap_w) @@ -892,7 +899,9 @@ static MACHINE_CONFIG_START( abc1600, abc1600_state ) MCFG_Z8536_PC_OUT_CALLBACK(WRITE8(abc1600_state, cio_pc_w)) MCFG_NMC9306_ADD(NMC9306_TAG) + MCFG_E0516_ADD(E050_C16PC_TAG, XTAL_32_768kHz) + MCFG_FD1797_ADD(SAB1797_02P_TAG, XTAL_64MHz/64) MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE(Z8536B1_TAG, z8536_device, pb7_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(abc1600_state, fdc_drq_w)) diff --git a/src/mame/machine/abc1600mac.cpp b/src/mame/machine/abc1600mac.cpp index 10e64e179c5..7b1dafec391 100644 --- a/src/mame/machine/abc1600mac.cpp +++ b/src/mame/machine/abc1600mac.cpp @@ -6,16 +6,6 @@ **********************************************************************/ -/* - - TODO: - - - segment/page RAM addresses are not correctly decoded, "sas/format/format" can't find the SASI interface because of this - forcetask0 1 t0 0 t1 0 t2 0 t3 0 - sega19 0 task 0 - sega 000 segd 00 pga 008 pgd 4058 virtual 02c730 (should be 004730) -*/ - #include "abc1600mac.h" @@ -25,6 +15,8 @@ //************************************************************************** #define LOG 0 +#define LOG_MAC 0 +#define LOG_DMA 0 #define A0 BIT(offset, 0) @@ -116,15 +108,15 @@ const tiny_rom_entry *abc1600_mac_device::device_rom_region() const // abc1600_mac_device - constructor //------------------------------------------------- -abc1600_mac_device::abc1600_mac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, ABC1600_MAC, "ABC 1600 MAC", tag, owner, clock, "abc1600mac", __FILE__), - device_memory_interface(mconfig, *this), - m_space_config("program", ENDIANNESS_LITTLE, 8, 22, 0, *ADDRESS_MAP_NAME(program_map)), - m_rom(*this, "boot"), - m_segment_ram(*this, "segment_ram"), - m_page_ram(*this, "page_ram"), - m_watchdog(*this, "watchdog"), - m_task(0) +abc1600_mac_device::abc1600_mac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, ABC1600_MAC, "ABC 1600 MAC", tag, owner, clock, "abc1600mac", __FILE__), + device_memory_interface(mconfig, *this), + m_space_config("program", ENDIANNESS_LITTLE, 8, 22, 0, *ADDRESS_MAP_NAME(program_map)), + m_rom(*this, "boot"), + m_segment_ram(*this, "segment_ram"), + m_page_ram(*this, "page_ram"), + m_watchdog(*this, "watchdog"), + m_task(0) { } @@ -145,6 +137,7 @@ void abc1600_mac_device::device_start() // HACK fill segment RAM or abcenix won't boot memset(m_segment_ram, 0xcd, 0x400); + memset(m_page_ram, 0xcd, 0x400); // state saving save_item(NAME(m_ifc2)); @@ -241,6 +234,8 @@ offs_t abc1600_mac_device::translate_address(offs_t offset, int *nonx, int *wp) *nonx = PAGE_NONX; *wp = PAGE_WP; + if (LOG_MAC) logerror("%s MAC %05x:%06x (SEGA %03x SEGD %02x PGA %03x PGD %04x NONX %u WP %u)\n", machine().describe_context(), offset, virtual_offset, sega, segd, pga, m_page_ram[pga], *nonx, *wp); + return virtual_offset; } @@ -441,7 +436,7 @@ WRITE8_MEMBER( abc1600_mac_device::task_w ) m_task = data ^ 0xff; - if (LOG) logerror("%s: %06x Task %u BOOTE %u MAGIC %u\n", machine().describe_context(), offset, get_current_task(offset), BOOTE, MAGIC); + if (LOG) logerror("%s TASK %05x:%02x (TASK %u BOOTE %u MAGIC %u)\n", machine().describe_context(), offset, data, get_current_task(offset), BOOTE, MAGIC); } @@ -498,7 +493,7 @@ WRITE8_MEMBER( abc1600_mac_device::segment_w ) m_segment_ram[sega] = data & 0x7f; - if (LOG) logerror("%s: %06x Task %u Segment %03x : %02x\n", machine().describe_context(), offset, get_current_task(offset), sega, data); + if (LOG) logerror("%s SEGMENT %05x:%02x (SEGA %03x SEGD %02x)\n", machine().describe_context(), offset, data, sega, m_segment_ram[sega]); } @@ -603,7 +598,7 @@ WRITE8_MEMBER( abc1600_mac_device::page_w ) m_page_ram[pga] = ((data & 0xc3) << 8) | (m_page_ram[pga] & 0xff); } - if (LOG) logerror("%s: %06x Task %u Segment %03x Page %03x : %02x -> %04x\n", machine().describe_context(), offset, get_current_task(offset), sega, pga, data, m_page_ram[pga]); + if (LOG) logerror("%s PAGE %05x:%02x (SEGA %03x SEGD %02x PGA %03x PGD %04x)\n", machine().describe_context(), offset, data, sega, segd, pga, m_page_ram[pga]); } @@ -631,6 +626,8 @@ UINT8 abc1600_mac_device::dma_mreq_r(int index, UINT16 offset) { offs_t virtual_offset = get_dma_address(index, offset); + if (LOG_DMA)logerror("%s DMA R %04x:%06x\n", machine().describe_context(), offset, virtual_offset); + return space().read_byte(virtual_offset); } @@ -643,6 +640,8 @@ void abc1600_mac_device::dma_mreq_w(int index, UINT16 offset, UINT8 data) { offs_t virtual_offset = get_dma_address(index, offset); + if (LOG_DMA)logerror("%s DMA W %04x:%06x\n", machine().describe_context(), offset, virtual_offset); + space().write_byte(virtual_offset, data); } @@ -655,6 +654,8 @@ UINT8 abc1600_mac_device::dma_iorq_r(int index, UINT16 offset) { offs_t virtual_offset = 0x1fe000 | get_dma_address(index, offset); + if (LOG_DMA)logerror("%s DMA R %04x:%06x\n", machine().describe_context(), offset, virtual_offset); + return space().read_byte(virtual_offset); } @@ -667,6 +668,8 @@ void abc1600_mac_device::dma_iorq_w(int index, UINT16 offset, UINT8 data) { offs_t virtual_offset = 0x1fe000 | get_dma_address(index, offset); + if (LOG_DMA)logerror("%s DMA W %04x:%06x\n", machine().describe_context(), offset, virtual_offset); + space().write_byte(virtual_offset, data); } @@ -692,7 +695,7 @@ WRITE8_MEMBER( abc1600_mac_device::dmamap_w ) */ - if (LOG) logerror("DMAMAP %u %02x\n", offset & 7, data); + if (LOG_DMA) logerror("%s DMAMAP %u:%02x\n", machine().describe_context(), offset & 7, data); m_dmamap[offset & 7] = data; } diff --git a/src/mame/video/abc1600.cpp b/src/mame/video/abc1600.cpp index e7d6e8356f3..8450c153fd7 100644 --- a/src/mame/video/abc1600.cpp +++ b/src/mame/video/abc1600.cpp @@ -55,27 +55,33 @@ DEVICE_ADDRESS_MAP_START( crtc_map, 8, abc1600_mover_device ) AM_RANGE(0x01, 0x01) AM_MIRROR(0xfe) AM_DEVREADWRITE(SY6845E_TAG, mc6845_device, register_r, register_w) ADDRESS_MAP_END -DEVICE_ADDRESS_MAP_START( io_map, 8, abc1600_mover_device ) - AM_RANGE(0x000, 0x000) AM_MIRROR(0xff) AM_READ(iord0_r) - AM_RANGE(0x000, 0x000) AM_MIRROR(0xf8) AM_WRITE(ldsx_hb_w) - AM_RANGE(0x001, 0x001) AM_MIRROR(0xf8) AM_WRITE(ldsx_lb_w) - AM_RANGE(0x002, 0x002) AM_MIRROR(0xf8) AM_WRITE(ldsy_hb_w) - AM_RANGE(0x003, 0x003) AM_MIRROR(0xf8) AM_WRITE(ldsy_lb_w) - AM_RANGE(0x004, 0x004) AM_MIRROR(0xf8) AM_WRITE(ldtx_hb_w) - AM_RANGE(0x005, 0x005) AM_MIRROR(0xf8) AM_WRITE(ldtx_lb_w) - AM_RANGE(0x006, 0x006) AM_MIRROR(0xf8) AM_WRITE(ldty_hb_w) - AM_RANGE(0x007, 0x007) AM_MIRROR(0xf8) AM_WRITE(ldty_lb_w) - AM_RANGE(0x100, 0x100) AM_MIRROR(0xf8) AM_WRITE(ldfx_hb_w) - AM_RANGE(0x101, 0x101) AM_MIRROR(0xf8) AM_WRITE(ldfx_lb_w) - AM_RANGE(0x102, 0x102) AM_MIRROR(0xf8) AM_WRITE(ldfy_hb_w) - AM_RANGE(0x103, 0x103) AM_MIRROR(0xf8) AM_WRITE(ldfy_lb_w) - AM_RANGE(0x105, 0x105) AM_MIRROR(0xf8) AM_WRITE(wrml_w) - AM_RANGE(0x107, 0x107) AM_MIRROR(0xf8) AM_WRITE(wrdl_w) - AM_RANGE(0x200, 0x200) AM_MIRROR(0xf8) AM_WRITE(wrmask_strobe_hb_w) - AM_RANGE(0x201, 0x201) AM_MIRROR(0xf8) AM_WRITE(wrmask_strobe_lb_w) - AM_RANGE(0x202, 0x202) AM_MIRROR(0xf8) AM_WRITE(enable_clocks_w) - AM_RANGE(0x203, 0x203) AM_MIRROR(0xf8) AM_WRITE(flag_strobe_w) - AM_RANGE(0x204, 0x204) AM_MIRROR(0xf8) AM_WRITE(endisp_w) +DEVICE_ADDRESS_MAP_START( iowr0_map, 8, abc1600_mover_device ) + AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READ(iord0_r) + AM_RANGE(0x00, 0x00) AM_MIRROR(0xf8) AM_WRITE(ldsx_hb_w) + AM_RANGE(0x01, 0x01) AM_MIRROR(0xf8) AM_WRITE(ldsx_lb_w) + AM_RANGE(0x02, 0x02) AM_MIRROR(0xf8) AM_WRITE(ldsy_hb_w) + AM_RANGE(0x03, 0x03) AM_MIRROR(0xf8) AM_WRITE(ldsy_lb_w) + AM_RANGE(0x04, 0x04) AM_MIRROR(0xf8) AM_WRITE(ldtx_hb_w) + AM_RANGE(0x05, 0x05) AM_MIRROR(0xf8) AM_WRITE(ldtx_lb_w) + AM_RANGE(0x06, 0x06) AM_MIRROR(0xf8) AM_WRITE(ldty_hb_w) + AM_RANGE(0x07, 0x07) AM_MIRROR(0xf8) AM_WRITE(ldty_lb_w) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START( iowr1_map, 8, abc1600_mover_device ) + AM_RANGE(0x00, 0x00) AM_MIRROR(0xf8) AM_WRITE(ldfx_hb_w) + AM_RANGE(0x01, 0x01) AM_MIRROR(0xf8) AM_WRITE(ldfx_lb_w) + AM_RANGE(0x02, 0x02) AM_MIRROR(0xf8) AM_WRITE(ldfy_hb_w) + AM_RANGE(0x03, 0x03) AM_MIRROR(0xf8) AM_WRITE(ldfy_lb_w) + AM_RANGE(0x05, 0x05) AM_MIRROR(0xf8) AM_WRITE(wrml_w) + AM_RANGE(0x07, 0x07) AM_MIRROR(0xf8) AM_WRITE(wrdl_w) +ADDRESS_MAP_END + +DEVICE_ADDRESS_MAP_START( iowr2_map, 8, abc1600_mover_device ) + AM_RANGE(0x00, 0x00) AM_MIRROR(0xf8) AM_WRITE(wrmask_strobe_hb_w) + AM_RANGE(0x01, 0x01) AM_MIRROR(0xf8) AM_WRITE(wrmask_strobe_lb_w) + AM_RANGE(0x02, 0x02) AM_MIRROR(0xf8) AM_WRITE(enable_clocks_w) + AM_RANGE(0x03, 0x03) AM_MIRROR(0xf8) AM_WRITE(flag_strobe_w) + AM_RANGE(0x04, 0x04) AM_MIRROR(0xf8) AM_WRITE(endisp_w) ADDRESS_MAP_END diff --git a/src/mame/video/abc1600.h b/src/mame/video/abc1600.h index 253f2733f5b..497ec12c890 100644 --- a/src/mame/video/abc1600.h +++ b/src/mame/video/abc1600.h @@ -47,7 +47,9 @@ public: virtual DECLARE_ADDRESS_MAP(vram_map, 8); virtual DECLARE_ADDRESS_MAP(crtc_map, 8); - virtual DECLARE_ADDRESS_MAP(io_map, 8); + virtual DECLARE_ADDRESS_MAP(iowr0_map, 8); + virtual DECLARE_ADDRESS_MAP(iowr1_map, 8); + virtual DECLARE_ADDRESS_MAP(iowr2_map, 8); UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); From 65d5cf75929d58a4c100e87cd9bd746fd898ec1a Mon Sep 17 00:00:00 2001 From: Stiletto Date: Wed, 10 Aug 2016 17:06:27 -0400 Subject: [PATCH 104/116] more notes (nw) more notes (nw) --- src/mame/drivers/dkong.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp index 546ef915830..93537dd6e80 100644 --- a/src/mame/drivers/dkong.cpp +++ b/src/mame/drivers/dkong.cpp @@ -355,6 +355,28 @@ Donkey Kong Notes Not only did the eprom fix the ladder bug, but it also changed the copyright screen to read "(C)1981 Nintendo of America". + + -------------------------------------------------------------- + + Nintendo Service Department Bulletin # TKG-06 10-04-82 + GAME: Donkey Kong + SUBJECT: Speed-up Kit #2 + + In an attempt to increase revenue of Donkey Kong we are making + available and updated speed-up kit, part number TKG-23-70. + + The speed-up kit consists of two (2) EPROM's that are mounted + on the CPU P.C. Board. The replacement locations vary depend- + ing on the P.C. Board style. + + P.C Board Style Eprom Location + --------------- -------------- + TKG2 and TKG3 5F, 5K + TKG4 5A, 5E + + These kits are available through all Nintendo distributors. If + your distributor is out, they can get immediate shipment from + our factory. D2K Jumpman returns Notes @@ -378,6 +400,9 @@ Donkey Kong Notes Hopefully confirmation and information will come along later which confirms this is a legitimate Nintendo Kit. + + This is probably "Speed-up Kit #2" mentioned above, but this still needs to be + confirmed. ***************************************************************************/ From d0970c215f9e3dfa4a44a7627dcde675a48e006e Mon Sep 17 00:00:00 2001 From: couriersud Date: Wed, 10 Aug 2016 23:08:20 +0200 Subject: [PATCH 105/116] Add a preliminary parser for RINF netlist format. (nw) --- src/lib/netlist/plib/pparser.cpp | 8 +- src/lib/netlist/prg/nltool.cpp | 10 +- src/lib/netlist/tools/nl_convert.cpp | 251 ++++++++++++++++++++++++++- src/lib/netlist/tools/nl_convert.h | 69 ++++++++ 4 files changed, 332 insertions(+), 6 deletions(-) diff --git a/src/lib/netlist/plib/pparser.cpp b/src/lib/netlist/plib/pparser.cpp index 4f41c73d6f8..0a19685316d 100644 --- a/src/lib/netlist/plib/pparser.cpp +++ b/src/lib/netlist/plib/pparser.cpp @@ -106,7 +106,7 @@ pstring ptokenizer::get_identifier_or_number() token_t tok = get_token(); if (!(tok.is_type(IDENTIFIER) || tok.is_type(NUMBER))) { - error(pfmt("Expected an identifier, got <{1}>")(tok.str()) ); + error(pfmt("Expected an identifier or number, got <{1}>")(tok.str()) ); } return tok.str(); } @@ -203,7 +203,8 @@ ptokenizer::token_t ptokenizer::get_token_internal() { /* read identifier till non identifier char */ pstring tokstr = ""; - while (m_identifier_chars.find(c) != m_identifier_chars.end()) { + while (m_identifier_chars.find(c) != m_identifier_chars.end()) + { tokstr += c; c = getc(); } @@ -229,7 +230,8 @@ ptokenizer::token_t ptokenizer::get_token_internal() { /* read identifier till first identifier char or ws */ pstring tokstr = ""; - while ((m_identifier_chars.find(c)) == m_identifier_chars.end() && (m_whitespace.find(c) == m_whitespace.end())) { + while ((m_identifier_chars.find(c) == m_identifier_chars.end()) && (m_whitespace.find(c) == m_whitespace.end())) + { tokstr += c; /* expensive, check for single char tokens */ if (tokstr.len() == 1) diff --git a/src/lib/netlist/prg/nltool.cpp b/src/lib/netlist/prg/nltool.cpp index 92057688954..b095a081f81 100644 --- a/src/lib/netlist/prg/nltool.cpp +++ b/src/lib/netlist/prg/nltool.cpp @@ -41,7 +41,7 @@ public: opt_logs(*this, "l", "log" , "define terminal to log. This option may be specified repeatedly."), opt_inp(*this, "i", "input", "", "input file to process (default is none)"), opt_grp4(*this, "Options for convert command", "These options are only used by the convert command."), - opt_type(*this, "y", "type", "spice", "spice:eagle", "type of file to be converted: spice,eagle"), + opt_type(*this, "y", "type", "spice", "spice:eagle:rinf", "type of file to be converted: spice,eagle,rinf"), opt_ex1(*this, "nltool -c run -t 3.5 -f nl_examples/cdelay.c -n cap_delay", "Run netlist \"cap_delay\" from file nl_examples/cdelay.c for 3.5 seconds"), @@ -465,12 +465,18 @@ int main(int argc, char *argv[]) c.convert(contents); result = c.result(); } - else + else if (opts.opt_type().equals("eagle")) { nl_convert_eagle_t c; c.convert(contents); result = c.result(); } + else if (opts.opt_type().equals("rinf")) + { + nl_convert_rinf_t c; + c.convert(contents); + result = c.result(); + } /* present result */ pout_strm.write(result.cstr()); } diff --git a/src/lib/netlist/tools/nl_convert.cpp b/src/lib/netlist/tools/nl_convert.cpp index b0ca5fe3c0d..978be90caaf 100644 --- a/src/lib/netlist/tools/nl_convert.cpp +++ b/src/lib/netlist/tools/nl_convert.cpp @@ -8,9 +8,51 @@ #include #include #include +#include #include "nl_convert.h" #include "plib/palloc.h" +#include "plib/putil.h" +/* FIXME: temporarily defined here - should be in a file */ +/* FIXME: family logic in netlist is convoluted, create + * define a model param on core device + */ +/* Format: external name,netlist device,model */ +static const char *s_lib_map = +"SN74LS00D, TTL_7400_DIP, 74LSXX\n" +"SN74LS04D, TTL_7404_DIP, 74LSXX\n" +"SN74ALS08D, TTL_7408_DIP, 74ALSXX\n" +"SN74ALS10AD, TTL_7410_DIP, 74ALSXX\n" +"SN74LS30N, TTL_7430_DIP, 74LSXX\n" +"SN74ALS74AD, TTL_7474_DIP, 74ALSXX\n" +"SN74LS74AD, TTL_7474_DIP, 74LSXX\n" +"SN74LS86AD, TTL_7486_DIP, 74LSXX\n" +"SN74F153D, TTL_74153_DIP, 74FXX\n" +"SN74LS161AD, TTL_74161_DIP, 74LSXX\n" +"SN74LS164D, TTL_74164_DIP, 74LSXX\n" +"DM74LS366AN, TTL_74366_DIP, 74LSXX\n" +; + +struct lib_map_entry +{ + pstring dev; + pstring model; +}; + +using lib_map_t = std::unordered_map; + +static lib_map_t read_lib_map(const pstring lm) +{ + plib::pistringstream istrm(lm); + lib_map_t m; + pstring line; + while (istrm.readline(line)) + { + plib::pstring_vector_t split(line, ","); + m[split[0].trim()] = { split[1].trim(), split[2].trim() }; + } + return m; +} /*------------------------------------------------- convert - convert a spice netlist @@ -173,8 +215,9 @@ nl_convert_base_t::unit_t nl_convert_base_t::m_units[] = { {"M", "CAP_M({1})", 1.0e-3 }, {"u", "CAP_U({1})", 1.0e-6 }, /* eagle */ {"U", "CAP_U({1})", 1.0e-6 }, - {"??", "CAP_U({1})", 1.0e-6 }, + {"??", "CAP_U({1})", 1.0e-6 }, /* FIXME */ {"N", "CAP_N({1})", 1.0e-9 }, + {"pF", "CAP_P({1})", 1.0e-12}, {"P", "CAP_P({1})", 1.0e-12}, {"F", "{1}e-15", 1.0e-15}, @@ -448,3 +491,209 @@ void nl_convert_eagle_t::convert(const pstring &contents) } } + +/* token_id_t m_tok_HFA; + token_id_t m_tok_APP; + token_id_t m_tok_TIM; + token_id_t m_tok_TYP; + token_id_t m_tok_ADDC; + token_id_t m_tok_ATTC; + token_id_t m_tok_NET; + token_id_t m_tok_TER; + * + */ +void nl_convert_rinf_t::convert(const pstring &contents) +{ + plib::pistringstream istrm(contents); + tokenizer tok(*this, istrm); + auto lm = read_lib_map(s_lib_map); + + out("NETLIST_START(dummy)\n"); + add_term("GND", "GND"); + add_term("VCC", "VCC"); + tokenizer::token_t token = tok.get_token(); + while (true) + { + if (token.is_type(tokenizer::ENDOFFILE) || token.is(tok.m_tok_END)) + { + dump_nl(); + // FIXME: Parameter + out("NETLIST_END()\n"); + return; + } + else if (token.is(tok.m_tok_HEA)) + { + /* seems to be start token - ignore */ + token = tok.get_token(); + } + else if (token.is(tok.m_tok_APP)) + { + /* version string */ + pstring app = tok.get_string(); + out("// APP: {}\n", app); + token = tok.get_token(); + } + else if (token.is(tok.m_tok_TIM)) + { + /* time */ + out("// TIM:"); + for (int i=0; i<6; i++) + { + long x = tok.get_number_long(); + out(" {}", x); + } + out("\n"); + token = tok.get_token(); + } + else if (token.is(tok.m_tok_TYP)) + { + pstring id(tok.get_identifier()); + out("// TYP: {}\n", id); + token = tok.get_token(); + } + else if (token.is(tok.m_tok_ADDC)) + { + std::unordered_map attr; + pstring id = tok.get_identifier(); + pstring s1 = tok.get_string(); + pstring s2 = tok.get_string(); + + token = tok.get_token(); + while (token.is(tok.m_tok_ATTC)) + { + pstring tid = tok.get_identifier(); + if (tid != id) + { + out("Error: found {} expected {} in {}\n", tid, id, token.str()); + return; + } + pstring at = tok.get_string(); + pstring val = tok.get_string(); + attr[at] = val; + token = tok.get_token(); + } + pstring sim = attr["Simulation"]; + pstring val = attr["Value"]; + pstring com = attr["Comment"]; + if (val == "") + val = com; + + if (sim == "CAP") + { + add_device("CAP", id, get_sp_val(val)); + } + else if (sim == "RESISTOR") + { + add_device("RES", id, get_sp_val(val)); + } + else + { + pstring lib = attr["Library Reference"]; + auto f = lm.find(lib); + if (f != lm.end()) + add_device(f->second.dev, id); + else + add_device(lib, id); + } + } + else if (token.is(tok.m_tok_NET)) + { + pstring dev = tok.get_identifier(); + pstring pin = tok.get_identifier_or_number(); + pstring net = tok.get_string(); + add_term(net, dev + "." + pin); + token = tok.get_token(); + if (token.is(tok.m_tok_TER)) + { + token = tok.get_token(); + while (token.is_type(plib::ptokenizer::IDENTIFIER)) + { + pin = tok.get_identifier_or_number(); + add_term(net, token.str() + "." + pin); + token = tok.get_token(); + } + } + } +#if 0 + token = tok.get_token(); + /* skip to semicolon */ + do + { + token = tok.get_token(); + } while (!token.is(tok.m_tok_SEMICOLON)); + token = tok.get_token(); + pstring sval = ""; + if (token.is(tok.m_tok_VALUE)) + { + pstring vname = tok.get_string(); + sval = tok.get_string(); + tok.require_token(tok.m_tok_SEMICOLON); + token = tok.get_token(); + } + switch (name.code_at(0)) + { + case 'Q': + { + add_device("QBJT", name, sval); + } + break; + case 'R': + { + double val = get_sp_val(sval); + add_device("RES", name, val); + } + break; + case 'C': + { + double val = get_sp_val(sval); + add_device("CAP", name, val); + } + break; + case 'P': + if (sval.ucase() == "HIGH") + add_device("TTL_INPUT", name, 1); + else if (sval.ucase() == "LOW") + add_device("TTL_INPUT", name, 0); + else + add_device("ANALOG_INPUT", name, sval.as_double()); + add_pin_alias(name, "1", "Q"); + break; + case 'D': + /* Pin 1 = Anode, Pin 2 = Cathode */ + add_device("DIODE", name, sval); + add_pin_alias(name, "1", "A"); + add_pin_alias(name, "2", "K"); + break; + case 'U': + case 'X': + { + pstring tname = "TTL_" + sval + "_DIP"; + add_device(tname, name); + break; + } + default: + tok.error("// IGNORED " + name); + } + + } + else if (token.is(tok.m_tok_SIGNAL)) + { + pstring netname = tok.get_string(); + token = tok.get_token(); + while (!token.is(tok.m_tok_SEMICOLON)) + { + /* fixme: should check for string */ + pstring devname = token.str(); + pstring pin = tok.get_string(); + add_term(netname, devname + "." + pin); + token = tok.get_token(); } + } +#endif + else + { + out("Unexpected {}\n", token.str()); + return; + } + } + +} diff --git a/src/lib/netlist/tools/nl_convert.h b/src/lib/netlist/tools/nl_convert.h index 209057a06d5..fa496a092d7 100644 --- a/src/lib/netlist/tools/nl_convert.h +++ b/src/lib/netlist/tools/nl_convert.h @@ -217,6 +217,75 @@ public: protected: +private: + +}; + +class nl_convert_rinf_t : public nl_convert_base_t +{ +public: + + nl_convert_rinf_t() : nl_convert_base_t() {} + ~nl_convert_rinf_t() + { + } + + class tokenizer : public plib::ptokenizer + { + public: + tokenizer(nl_convert_rinf_t &convert, plib::pistream &strm) + : plib::ptokenizer(strm), m_convert(convert) + { + set_identifier_chars(".abcdefghijklmnopqrstuvwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_-"); + set_number_chars("0123456789", "0123456789eE-."); //FIXME: processing of numbers + char ws[5]; + ws[0] = ' '; + ws[1] = 9; + ws[2] = 10; + ws[3] = 13; + ws[4] = 0; + set_whitespace(ws); + /* FIXME: gnetlist doesn't print comments */ + set_comment("","","//"); // FIXME:needs to be confirmed + set_string_char('"'); + m_tok_HEA = register_token(".HEA"); + m_tok_APP = register_token(".APP"); + m_tok_TIM = register_token(".TIM"); + m_tok_TYP = register_token(".TYP"); + m_tok_ADDC = register_token(".ADD_COM"); + m_tok_ATTC = register_token(".ATT_COM"); + m_tok_NET = register_token(".ADD_TER"); + m_tok_TER = register_token(".TER"); + m_tok_END = register_token(".END"); + } + + token_id_t m_tok_HEA; + token_id_t m_tok_APP; + token_id_t m_tok_TIM; + token_id_t m_tok_TYP; + token_id_t m_tok_ADDC; + token_id_t m_tok_ATTC; + token_id_t m_tok_NET; + token_id_t m_tok_TER; + token_id_t m_tok_END; + + protected: + + void verror(const pstring &msg, int line_num, const pstring &line) override + { + m_convert.out("{} (line {}): {}\n", msg.cstr(), line_num, line.cstr()); + } + + + private: + nl_convert_rinf_t &m_convert; + }; + + void convert(const pstring &contents) override; + +protected: + + private: }; From d99df1e5d1a23fcaecb84bf6a6570fbfcaaeca84 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 10 Aug 2016 17:19:53 -0400 Subject: [PATCH 106/116] pwrkick, othldrby: Various improvements - Add NVRAM to Power Kick and Othello Derby; document the reset mechanism for the latter - Add ticket dispenser to Power Kick (seems to work for the most part) - Remove numerous bogus DIP switches - Thoroughly reconfigure coin inputs in Power Kick, adding counters and lockouts for all three (including the "Key In" input that really isn't) - More meaningful settings for the "Payout" DIP switch in Power Kick (based on program code) --- src/mame/drivers/toaplan2.cpp | 193 +++++++++++++++------------------- src/mame/includes/toaplan2.h | 8 +- 2 files changed, 91 insertions(+), 110 deletions(-) diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp index afcee286591..d8d04c146d3 100644 --- a/src/mame/drivers/toaplan2.cpp +++ b/src/mame/drivers/toaplan2.cpp @@ -347,7 +347,15 @@ To Do / Unknowns: - Need to sort out the video status register. - Find out how exactly how sound CPU communication really works in bgaregga/batrider/bbakraid current emulation seems to work (plays all sounds), but there are still some unknown reads/writes - - Write a RTC core for uPD4992, needed by Othello Derby and Power Kick + +Notes on Power Kick coin inputs: +- The 10 yen input is "Key In" according to the bookkeeping screen, but is + an otherwise normal coin input with a counter and a lockout (sharing the + latter with the "medal" coin). +- The 100 yen input never adds any credits except in "Coin Function Check," + instead dispensing its value into the hopper immediately. + +To reset the NVRAM in Othello Derby, hold P1 Button 1 down while booting. *****************************************************************************/ @@ -356,12 +364,16 @@ To Do / Unknowns: #include "cpu/nec/v25.h" #include "cpu/z80/z80.h" #include "cpu/z180/z180.h" +#include "machine/nvram.h" #include "sound/ym2151.h" #include "sound/3812intf.h" #include "sound/ymz280b.h" #include "includes/toaplan2.h" #include "includes/toaplipt.h" +#define UNICODE_YEN "\xC2\xA5" +#define PWRKICK_HOPPER_PULSE 50 // time between hopper pulses in milliseconds (probably wrong) + /*************************************************************************** Initialisation handlers @@ -556,9 +568,17 @@ WRITE8_MEMBER(toaplan2_state::toaplan2_coin_w) WRITE8_MEMBER(toaplan2_state::pwrkick_coin_w) { - machine().bookkeeping().coin_counter_w(0, (data & 2) >> 1 ); - machine().bookkeeping().coin_counter_w(1, (data & 8) >> 3 ); - m_pwrkick_hopper = (data & 0x80) >> 7; + machine().bookkeeping().coin_counter_w(0, (data & 2) >> 1 ); // medal + machine().bookkeeping().coin_counter_w(1, (data & 8) >> 3 ); // 10 yen + machine().bookkeeping().coin_counter_w(2, (data & 1) ); // 100 yen + m_hopper->write(space, 0, data & 0x80); +} + +WRITE8_MEMBER(toaplan2_state::pwrkick_coin_lockout_w) +{ + machine().bookkeeping().coin_lockout_w(0, (data & 4) ? 0 : 1); + machine().bookkeeping().coin_lockout_w(1, (data & 4) ? 0 : 1); + machine().bookkeeping().coin_lockout_w(2, (data & 2) ? 0 : 1); } @@ -1182,7 +1202,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pwrkick_68k_mem, AS_PROGRAM, 16, toaplan2_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM + AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram") // Only 10022C-10037B is actually saved as NVRAM + AM_RANGE(0x104000, 0x10ffff) AM_RAM AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff ) AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) @@ -1197,13 +1218,14 @@ static ADDRESS_MAP_START( pwrkick_68k_mem, AS_PROGRAM, 16, toaplan2_state ) AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSWC") AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("SYS") AM_RANGE(0x700030, 0x700031) AM_WRITE(oki_bankswitch_w) - AM_RANGE(0x700034, 0x700035) AM_WRITE8(pwrkick_coin_w,0x00ff) - AM_RANGE(0x700038, 0x700039) AM_WRITENOP // lamps? + AM_RANGE(0x700034, 0x700035) AM_WRITE8(pwrkick_coin_w, 0x00ff) + AM_RANGE(0x700038, 0x700039) AM_WRITE8(pwrkick_coin_lockout_w, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( othldrby_68k_mem, AS_PROGRAM, 16, toaplan2_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM + AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram") // Only 10331E-103401 is actually saved as NVRAM + AM_RANGE(0x104000, 0x10ffff) AM_RAM AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff ) AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) @@ -2304,139 +2326,90 @@ static INPUT_PORTS_START( batsugun ) INPUT_PORTS_END -CUSTOM_INPUT_MEMBER(toaplan2_state::pwrkick_hopper_status_r) -{ - /* TODO: hopper mechanism */ - return machine().rand() & 1; - //return m_pwrkick_hopper & (machine().rand() & 1); -} - static INPUT_PORTS_START( pwrkick ) PORT_START("DSWA") - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:!1,!2") PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x01, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x03, DEF_STR( Very_Hard ) ) - PORT_DIPNAME( 0x1c, 0x00, "Payout" ) - PORT_DIPSETTING( 0x00, "1" ) - PORT_DIPSETTING( 0x04, "2" ) - PORT_DIPSETTING( 0x08, "3" ) - PORT_DIPSETTING( 0x0c, "4" ) - PORT_DIPSETTING( 0x10, "5" ) - PORT_DIPSETTING( 0x14, "6" ) - PORT_DIPSETTING( 0x18, "7" ) - PORT_DIPSETTING( 0x1c, "8" ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x5c, 0x00, "Payout" ) PORT_DIPLOCATION("SW1:!3,!4,!5,!7") + PORT_DIPSETTING( 0x00, "110" ) // Service mode displays values as 1-8, ignoring SW1:7 + PORT_DIPSETTING( 0x04, "105" ) + PORT_DIPSETTING( 0x08, "100" ) + PORT_DIPSETTING( 0x0c, "95" ) + PORT_DIPSETTING( 0x10, "90" ) + PORT_DIPSETTING( 0x14, "85" ) + PORT_DIPSETTING( 0x18, "80" ) + PORT_DIPSETTING( 0x1c, "75" ) + PORT_DIPSETTING( 0x40, "70" ) + PORT_DIPSETTING( 0x44, "65" ) + PORT_DIPSETTING( 0x48, "60" ) + PORT_DIPSETTING( 0x4c, "55" ) + PORT_DIPSETTING( 0x50, "50" ) + PORT_DIPSETTING( 0x54, "45" ) + PORT_DIPSETTING( 0x58, "40" ) + PORT_DIPSETTING( 0x5c, "35" ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:!6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, "Diagnostic" ) + PORT_DIPNAME( 0x80, 0x00, "Diagnostic" ) PORT_DIPLOCATION("SW1:!8") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSWB") - PORT_DIPNAME( 0x03, 0x00, "Play Credit" ) - PORT_DIPSETTING( 0x00, "10 \xC2\xA5" ) - PORT_DIPSETTING( 0x01, "20 \xC2\xA5" ) - PORT_DIPSETTING( 0x02, "30 \xC2\xA5" ) - PORT_DIPSETTING( 0x03, "40 \xC2\xA5" ) - PORT_DIPNAME( 0x0c, 0x00, "Coin Exchange" ) + PORT_DIPNAME( 0x03, 0x00, "Play Credit" ) PORT_DIPLOCATION("SW2:!1,!2") + PORT_DIPSETTING( 0x00, UNICODE_YEN "10" ) + PORT_DIPSETTING( 0x01, UNICODE_YEN "20" ) + PORT_DIPSETTING( 0x02, UNICODE_YEN "30" ) + PORT_DIPSETTING( 0x03, UNICODE_YEN "40" ) + PORT_DIPNAME( 0x0c, 0x00, "Coin Exchange" ) PORT_DIPLOCATION("SW2:!3,!4") PORT_DIPSETTING( 0x00, "12" ) PORT_DIPSETTING( 0x04, "10" ) PORT_DIPSETTING( 0x08, "6" ) PORT_DIPSETTING( 0x0c, "5" ) - PORT_DIPNAME( 0x30, 0x00, "Game Mode" ) + PORT_DIPNAME( 0x30, 0x00, "Game Mode" ) PORT_DIPLOCATION("SW2:!5,!6") PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x10, "Shot" ) PORT_DIPSETTING( 0x20, "Auto" ) PORT_DIPSETTING( 0x30, "S-Manual" ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW2:!7" ) + PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW2:!8" ) PORT_START("DSWC") - PORT_DIPNAME( 0x01, 0x00, "DSWC" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x08, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW3:!1" ) + PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "SW3:!2" ) + PORT_DIPUNUSED_DIPLOC( 0x04, 0x00, "SW3:!3" ) + PORT_DIPUNUSED_DIPLOC( 0x08, 0x00, "SW3:!4" ) + PORT_DIPUNUSED_DIPLOC( 0x10, 0x00, "SW3:!5" ) + PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "SW3:!6" ) + PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW3:!7" ) + PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW3:!8" ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Left Button") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Center Button") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Right Button") - PORT_DIPNAME( 0x10, 0x00, "IN1" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYIN ) // 10 Yen - PORT_SERVICE( 0x02, IP_ACTIVE_HIGH ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("Coin 2 (" UNICODE_YEN "10)") + PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_HIGH ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Down Button") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, toaplan2_state, pwrkick_hopper_status_r, nullptr) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MEMORY_RESET ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("SYS") - PORT_DIPNAME( 0x01, 0x00, "SYS" ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) // 100 Yen - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_NAME("Bookkeeping") - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x20, DEF_STR( On ) ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE4 ) PORT_NAME("Attendant Key") - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_NAME("Coin Exchange (" UNICODE_YEN "100)") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) + PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_GAMBLE_SERVICE ) PORT_NAME("Attendant Key") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("Coin 1 (Medal)") + + // The specific "Payout" button shown on the test screen and diagnostic menu does not exist. INPUT_PORTS_END static INPUT_PORTS_START( othldrby ) @@ -3658,6 +3631,10 @@ static MACHINE_CONFIG_START( pwrkick, toaplan2_state ) MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_UPD4992_ADD("rtc") + MCFG_NVRAM_ADD_0FILL("nvram") + + MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(PWRKICK_HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) @@ -3690,6 +3667,8 @@ static MACHINE_CONFIG_START( othldrby, toaplan2_state ) MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_UPD4992_ADD("rtc") + MCFG_NVRAM_ADD_0FILL("nvram") + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) diff --git a/src/mame/includes/toaplan2.h b/src/mame/includes/toaplan2.h index 1a7eb44e195..a4fbde58e80 100644 --- a/src/mame/includes/toaplan2.h +++ b/src/mame/includes/toaplan2.h @@ -12,6 +12,7 @@ #include "machine/eepromser.h" #include "machine/gen_latch.h" #include "machine/nmk112.h" +#include "machine/ticket.h" #include "machine/upd4992.h" #include "video/gp9001.h" #include "sound/okim6295.h" @@ -47,7 +48,8 @@ public: m_screen(*this, "screen"), m_palette(*this, "palette"), m_soundlatch(*this, "soundlatch"), - m_soundlatch2(*this, "soundlatch2") { } + m_soundlatch2(*this, "soundlatch2"), + m_hopper(*this, "hopper") { } optional_shared_ptr m_shared_ram; // 8 bit RAM shared between 68K and sound CPU optional_shared_ptr m_shared_ram16; // Really 8 bit RAM connected to Z180 @@ -72,6 +74,7 @@ public: required_device m_palette; optional_device m_soundlatch; // batrider and bgaregga and batsugun optional_device m_soundlatch2; + optional_device m_hopper; UINT16 m_mcu_data; INT8 m_old_p1_paddle_h; /* For Ghox */ @@ -158,9 +161,8 @@ public: void create_tx_tilemap(int dx = 0, int dx_flipped = 0); void toaplan2_vblank_irq(int irq_line); - UINT8 m_pwrkick_hopper; - DECLARE_CUSTOM_INPUT_MEMBER(pwrkick_hopper_status_r); DECLARE_WRITE8_MEMBER(pwrkick_coin_w); + DECLARE_WRITE8_MEMBER(pwrkick_coin_lockout_w); DECLARE_WRITE_LINE_MEMBER(toaplan2_reset); protected: From eda3bb105fa183548759e9ca56e8ca3b9c37ef4c Mon Sep 17 00:00:00 2001 From: MetalliC <0vetal0@gmail.com> Date: Wed, 10 Aug 2016 23:39:38 +0300 Subject: [PATCH 107/116] new machines added as NOT_WORKING --------------------------------- The Key Of Avalon 2.5 - War of the Key (server) (Rev B) [ShouTime, rtw] The Key Of Avalon 2.5 - War of the Key (client) (Rev B) [ShouTime, rtw] --- src/mame/drivers/triforce.cpp | 126 ++++++++++++++++++++-------------- src/mame/mame.lst | 4 +- 2 files changed, 76 insertions(+), 54 deletions(-) diff --git a/src/mame/drivers/triforce.cpp b/src/mame/drivers/triforce.cpp index 07fb15011b8..3cf4d22941f 100644 --- a/src/mame/drivers/triforce.cpp +++ b/src/mame/drivers/triforce.cpp @@ -30,35 +30,35 @@ Games on this system include.... |*| 2003 | F-Zero AX (Rev C) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004C | 317-0362-COM | 253-5508-0362 | |*| 2003 | F-Zero AX (Rev D) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004D | 317-0362-COM | 253-5508-0362 | |*| 2003 | F-Zero AX (Rev E) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004E | 317-0362-COM | 253-5508-0362 | -| | 2003 | The Key Of Avalon: The Wizard Master (server) | Sega / Hitmaker | GDROM | GDT-0005 | | | -| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0005A | | | -| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0005B | | | -|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev C) | Sega / Hitmaker | GDROM | GDT-0005C | | | -| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev D) | Sega / Hitmaker | GDROM | GDT-0005D | | | -|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev E) | Sega / Hitmaker | GDROM | GDT-0005E | | | -|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev F) | Sega / Hitmaker | GDROM | GDT-0005F | | | -|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev G) | Sega / Hitmaker | GDROM | GDT-0005G | | | -| | 2003 | The Key Of Avalon: The Wizard Master (client) | Sega / Hitmaker | GDROM | GDT-0006 | | | -| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0006A | | | -| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0006B | | | -| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev C) | Sega / Hitmaker | GDROM | GDT-0006C | | | -| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev D) | Sega / Hitmaker | GDROM | GDT-0006D | | | -|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev E) | Sega / Hitmaker | GDROM | GDT-0006E | | | -|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev F) | Sega / Hitmaker | GDROM | GDT-0006F | | | -|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev G) | Sega / Hitmaker | GDROM | GDT-0006G | | | +| | 2003 | The Key Of Avalon: The Wizard Master (server) | Sega / Hitmaker | GDROM | GDT-0005 | 317-0355-JPN | 253-5508-0355J| +| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0005A | 317-0355-JPN | 253-5508-0355J| +| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0005B | 317-0355-JPN | 253-5508-0355J| +|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev C) | Sega / Hitmaker | GDROM | GDT-0005C | 317-0355-JPN | 253-5508-0355J| +| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev D) | Sega / Hitmaker | GDROM | GDT-0005D | 317-0355-JPN | 253-5508-0355J| +|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev E) | Sega / Hitmaker | GDROM | GDT-0005E | 317-0355-JPN | 253-5508-0355J| +|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev F) | Sega / Hitmaker | GDROM | GDT-0005F | 317-0355-JPN | 253-5508-0355J| +|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev G) | Sega / Hitmaker | GDROM | GDT-0005G | 317-0355-JPN | 253-5508-0355J| +| | 2003 | The Key Of Avalon: The Wizard Master (client) | Sega / Hitmaker | GDROM | GDT-0006 | 317-0355-JPN | 253-5508-0355J| +| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0006A | 317-0355-JPN | 253-5508-0355J| +| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0006B | 317-0355-JPN | 253-5508-0355J| +| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev C) | Sega / Hitmaker | GDROM | GDT-0006C | 317-0355-JPN | 253-5508-0355J| +| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev D) | Sega / Hitmaker | GDROM | GDT-0006D | 317-0355-JPN | 253-5508-0355J| +|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev E) | Sega / Hitmaker | GDROM | GDT-0006E | 317-0355-JPN | 253-5508-0355J| +|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev F) | Sega / Hitmaker | GDROM | GDT-0006F | 317-0355-JPN | 253-5508-0355J| +|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev G) | Sega / Hitmaker | GDROM | GDT-0006G | 317-0355-JPN | 253-5508-0355J| | | 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars | Sega / Wow Entertainment | GDROM | GDT-0008 | 317-0371-JPN | | | | 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev A) | Sega / Wow Entertainment | GDROM | GDT-0008A | 317-0371-JPN | | |*| 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev B) | Sega / Wow Entertainment | GDROM | GDT-0008B | 317-0371-JPN | | |*| 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev C) | Sega / Wow Entertainment | GDROM | GDT-0008C | 317-0371-JPN | | -| | 2003 | The Key Of Avalon 1.10 | Sega / Hitmaker | GDROM | | | | -| | 2004 | The Key Of Avalon 1.??: ??? (server) | Sega / Hitmaker | GDROM | GDT-0009 | | | -|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0009A | | | -| | 2004 | The Key Of Avalon 1.??: ??? (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0009B | | | -|*| 2004 | The Key Of Avalon 1.30: Chaotic Sabbat (server) (Rev C) | Sega / Hitmaker | GDROM | GDT-0009C | | | -| | 2004 | The Key Of Avalon 1.??: ??? (client) | Sega / Hitmaker | GDROM | GDT-0010 | | | -|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0010A | | | -| | 2004 | The Key Of Avalon 1.??: ??? (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0010B | | | -|*| 2004 | The Key Of Avalon 1.30: Chaotic Sabbat (client) (Rev C) | Sega / Hitmaker | GDROM | GDT-0010C | | | +| | 2003 | The Key Of Avalon 1.10 | Sega / Hitmaker | GDROM | | 317-0355-JPN | 253-5508-0355J| +| | 2004 | The Key Of Avalon 1.??: ??? (server) | Sega / Hitmaker | GDROM | GDT-0009 | 317-0355-JPN | 253-5508-0355J| +|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0009A | 317-0355-JPN | 253-5508-0355J| +| | 2004 | The Key Of Avalon 1.??: ??? (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0009B | 317-0355-JPN | 253-5508-0355J| +|*| 2004 | The Key Of Avalon 1.30: Chaotic Sabbat (server) (Rev C) | Sega / Hitmaker | GDROM | GDT-0009C | 317-0355-JPN | 253-5508-0355J| +| | 2004 | The Key Of Avalon 1.??: ??? (client) | Sega / Hitmaker | GDROM | GDT-0010 | 317-0355-JPN | 253-5508-0355J| +|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0010A | 317-0355-JPN | 253-5508-0355J| +| | 2004 | The Key Of Avalon 1.??: ??? (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0010B | 317-0355-JPN | 253-5508-0355J| +|*| 2004 | The Key Of Avalon 1.30: Chaotic Sabbat (client) (Rev C) | Sega / Hitmaker | GDROM | GDT-0010C | 317-0355-JPN | 253-5508-0355J| |*| 2004 | Firmware Update | Sega | GDROM | GDT-0011 | 317-0371-JPN | | | | 2004 | Virtua Striker 2002 (Export) | Sega | GDROM | GDT-0012 | | | | | 2004 | Virtua Striker 4 (Japan) | Sega | GDROM | GDT-0013 | 317-0391-JPN | | @@ -75,13 +75,13 @@ Games on this system include.... |*| 2004 | The Key Of Avalon 2: Eutaxy Commandment (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0017B | | | | | 2004 | F-Zero AX - Monster Ride Cycraft Edition | Sega / Amusement Vision / Nintendo | GDROM | | | | | | 2005 | Donkey Kong Jungle Fever | Namco / Nintendo | Cart | | | | -|*| 2005 | Mario Kart Arcade GP (Japan, MKA1 Ver.A1) | Namco / Nintendo | Cart | 837-14343-4T1 | 317-5109-COM | 253-5509-5109 | -| | 2005 | The Key Of Avalon 2.5: War of the Key (client) | Sega / Hitmaker | GDROM | GDT-0018 | | | -| | 2005 | The Key Of Avalon 2.5: War of the Key (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0018A | | | -| | 2005 | The Key Of Avalon 2.5: War of the Key (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0018B | | | -| | 2005 | The Key Of Avalon 2.5: War of the Key (server) | Sega / Hitmaker | GDROM | GDT-0019 | | | -| | 2005 | The Key Of Avalon 2.5: War of the Key (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0019A | | | -| | 2005 | The Key Of Avalon 2.5: War of the Key (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0019B | | | +|*| 2005 | Mario Kart Arcade GP (Japan, MKA1 Ver.A1) | Namco / Nintendo | Cart | 837-14343-4T1 |!317-5109-COM | 253-5509-5109 | +| | 2005 | The Key Of Avalon 2.5: War of the Key (server) | Sega / Hitmaker | GDROM | GDT-0018 | | | +| | 2005 | The Key Of Avalon 2.5: War of the Key (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0018A | | | +|*| 2005 | The Key Of Avalon 2.5: War of the Key (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0018B | | | +| | 2005 | The Key Of Avalon 2.5: War of the Key (client) | Sega / Hitmaker | GDROM | GDT-0019 | | | +| | 2005 | The Key Of Avalon 2.5: War of the Key (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0019A | | | +|*| 2005 | The Key Of Avalon 2.5: War of the Key (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0019B | | | | | 2006 | Virtua Striker 4 Ver.2006 (Japan) | Sega | GDROM | GDT-0020 | | | | | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev A) | Sega | GDROM | GDT-0020A | | | | | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev B) | Sega | GDROM | GDT-0020B | | | @@ -91,11 +91,11 @@ Games on this system include.... | | 2006 | Triforce Firmware Update for Compact Flash Box | Sega | GDROM | GDT-0022 | 317-0567-COM | | |*| 2006 | Triforce Firmware Update for Compact Flash Box (Rev A) | Sega | GDROM | GDT-0022A | 317-0567-COM | | | | 2006 | Donkey Kong : Banana Kingdom | Namco / Nintendo | Cart? | | | | -|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A) | Namco / Nintendo | Cart | 837-14343-R4S0 | 317-5128-??? | 253-5509-5128 | -|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump) | Namco / Nintendo | Cart | 837-14343-R4S0 | 317-5128-??? | 253-5509-5128 | +|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A) | Namco / Nintendo | Cart | 837-14343-R4S0 |!317-5128-??? | 253-5509-5128 | +|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump) | Namco / Nintendo | Cart | 837-14343-R4S0 |!317-5128-??? | 253-5509-5128 | +-+------+-----------------------------------------------------------------+-------------------------------------+-------|----------------+--------------+---------------| * denotes these games are archived. - +! security PIC is not dumped PCB Layouts =========== @@ -685,7 +685,7 @@ ROM_START( avalonsc ) DISK_IMAGE_READONLY( "gdt-0005c", 0, SHA1(37b848ed131e8357ba57474f7c2aa6ab51b01781) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( avalonse ) @@ -695,7 +695,7 @@ ROM_START( avalonse ) DISK_IMAGE_READONLY( "gdt-0005e", 0, SHA1(a888a045c323f374b53295404262a3bb80a533c0) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( avalonsf ) @@ -705,7 +705,7 @@ ROM_START( avalonsf ) DISK_IMAGE_READONLY( "gdt-0005f", 0, SHA1(3752e406a5542a912f8b1ef48096ed30e7d28279) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( avalons ) @@ -715,7 +715,7 @@ ROM_START( avalons ) DISK_IMAGE_READONLY( "gdt-0005g", 0, SHA1(f2dca7ecd6c07ff098ac91e353ffc3fd843054e3) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( avalonce ) @@ -725,7 +725,7 @@ ROM_START( avalonce ) DISK_IMAGE_READONLY( "gdt-0006e", 0, SHA1(59aeb7d767d390b3ee7f079d3d1a31df3e92773b) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( avaloncf ) @@ -735,7 +735,7 @@ ROM_START( avaloncf ) DISK_IMAGE_READONLY( "gdt-0006f", 0, SHA1(35c98e41095273326ac0c6fe633c3f6e8b328f63) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( avalonc ) @@ -745,7 +745,7 @@ ROM_START( avalonc ) DISK_IMAGE_READONLY( "gdt-0006g", 0, SHA1(96e1db3f395152a62d0b344c350f38306ab1e0ae) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( gekpuryb ) @@ -775,7 +775,7 @@ ROM_START( avalns12 ) DISK_IMAGE_READONLY( "gdt-0009a", 0, SHA1(abeb242cb7f55d003eb7ca6d42dccdb5d8080bf1) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( avalns13 ) @@ -785,7 +785,7 @@ ROM_START( avalns13 ) DISK_IMAGE_READONLY( "gdt-0009c", 0, SHA1(b960815d85e255521fc26bd4a9e4b7e5c4469487) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( avalnc12 ) @@ -795,7 +795,7 @@ ROM_START( avalnc12 ) DISK_IMAGE_READONLY( "gdt-0010a", 0, SHA1(a82f803a2097890c29e44ef30d97ad1fcf550435) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END /* @@ -822,7 +822,7 @@ ROM_START( avalnc13 ) DISK_IMAGE_READONLY( "gdt-0010c", 0, SHA1(c7a3fdb467ccd03b5b9b9e8e290faabcbbc77546) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) ) + ROM_LOAD("317-0355-jpn.data", 0x00, 0x50, CRC(9b9db9d8) SHA1(60aab36fcfd7a2850b2947effea70e44a06d1f78) ) ROM_END ROM_START( tfupdate ) @@ -913,7 +913,27 @@ ROM_START( avalon20 ) DISK_IMAGE_READONLY( "gdt-0017b", 0, BAD_DUMP SHA1(e2dd32c322ffcaf38b82275d2721b71bb3dfc1f2) ) ROM_REGION( 0x50, "pic", ROMREGION_ERASE) - ROM_LOAD("gdt-0017b.data", 0x00, 0x50, CRC(32cb46d4) SHA1(a58b9e03d57b317133d9b6c29e42852af8e77559) ) + ROM_LOAD("avalon2x.data", 0x00, 0x50, CRC(c5071ada) SHA1(70018180b917beec1b2c272f9125fa43fd1a7b00) ) +ROM_END + +ROM_START( avalns25 ) + TRIFORCE_BIOS + + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "gdt-0018b", 0, SHA1(4cd10813e66b72021ca344886638025f979d40c0) ) + + ROM_REGION( 0x50, "pic", ROMREGION_ERASE) + ROM_LOAD("avalon2x.data", 0x00, 0x50, CRC(c5071ada) SHA1(70018180b917beec1b2c272f9125fa43fd1a7b00) ) +ROM_END + +ROM_START( avalnc25 ) + TRIFORCE_BIOS + + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "gdt-0019b", 0, SHA1(7f978ec998a86ed9c36a495bfa72073c6d2bbe31) ) + + ROM_REGION( 0x50, "pic", ROMREGION_ERASE) + ROM_LOAD("avalon2x.data", 0x00, 0x50, CRC(c5071ada) SHA1(70018180b917beec1b2c272f9125fa43fd1a7b00) ) ROM_END ROM_START( vs42006 ) @@ -1079,12 +1099,12 @@ ROM_END // 0017 GAME( 2004, avalc20o, avalon20, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (GDT-0017)", MACHINE_IS_SKELETON ) // 0017A GAME( 2004, avalc20a, avalon20, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev A) (GDT-0017A)", MACHINE_IS_SKELETON ) /* 0017B */ GAME( 2004, avalon20, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev B) (GDT-0017B)", MACHINE_IS_SKELETON ) -// 0018 GAME( 2005, aval25co, aval25c, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (GDT-0018)", MACHINE_IS_SKELETON ) -// 0018A GAME( 2005, aval25ca, aval25c, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev A) (GDT-0018A)", MACHINE_IS_SKELETON ) -// 0018B GAME( 2005, aval25c, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev B) (GDT-0018B)", MACHINE_IS_SKELETON ) -// 0019 GAME( 2005, aval25so, aval25s, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (GDT-0019)", MACHINE_IS_SKELETON ) -// 0019A GAME( 2005, aval25sa, aval25s, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev A) (GDT-0019A)", MACHINE_IS_SKELETON ) -// 0019B GAME( 2005, aval25s, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev B) (GDT-0019B)", MACHINE_IS_SKELETON ) +// 0018 GAME( 2005, aval25co, aval25c, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (GDT-0018)", MACHINE_IS_SKELETON ) +// 0018A GAME( 2005, aval25ca, aval25c, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev A) (GDT-0018A)", MACHINE_IS_SKELETON ) +/* 0018B */ GAME( 2005, avalns25, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (server) (Rev B) (GDT-0018B)", MACHINE_IS_SKELETON ) +// 0019 GAME( 2005, aval25so, aval25s, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (GDT-0019)", MACHINE_IS_SKELETON ) +// 0019A GAME( 2005, aval25sa, aval25s, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev A) (GDT-0019A)", MACHINE_IS_SKELETON ) +/* 0019B */ GAME( 2005, avalnc25, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.5 - War of the Key (client) (Rev B) (GDT-0019B)", MACHINE_IS_SKELETON ) // 0020 GAME( 2006, vs42k6o, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (GDT-0020)", MACHINE_IS_SKELETON ) // 0020A GAME( 2006, vs42k6a, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev A) (GDT-0020A)", MACHINE_IS_SKELETON ) // 0020B GAME( 2006, vs42k6b, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev B) (GDT-0020B)", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index cd75e4baa0d..7c84a768aed 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -35576,7 +35576,7 @@ avalnc12 // 2004.03 The Key Of Avalon 1.20 - Summon The N avalnc13 // 2004.06.08 The Key Of Avalon 1.30 - Chaotic Sabbat (client) (Rev C) avalns12 // 2004.03 The Key Of Avalon 1.20 - Summon The New Monsters (server) (Rev A) avalns13 // 2004.06.08 The Key Of Avalon 1.30 - Chaotic Sabbat (server) (Rev C) -avalon20 // 2004.11.02 The Key Of Avalon 2 - Eutaxy Commandment (client) (Rev B) +avalon20 // 2004.11.02 The Key Of Avalon 2.0 - Eutaxy Commandment (client) (Rev B) avalonc // 2003.11 The Key Of Avalon: The Wizard Master (client) (Rev G) avalonce // 2003.08 The Key Of Avalon: The Wizard Master (client) (Rev E) avaloncf // 2003.09 The Key Of Avalon: The Wizard Master (client) (Rev F) @@ -35584,6 +35584,8 @@ avalons // 2003.11 The Key Of Avalon: The Wizard Master avalonsc // 2003.07 The Key Of Avalon: The Wizard Master (server) (Rev C) avalonse // 2003.08 The Key Of Avalon: The Wizard Master (server) (Rev E) avalonsf // 2003.09 The Key Of Avalon: The Wizard Master (server) (Rev F) +avalns25 // 2005.08 The Key Of Avalon 2.5 - War of the Key (server) (Rev B) +avalnc25 // 2005.08 The Key Of Avalon 2.5 - War of the Key (client) (Rev B) fzeroax // 2003.12 F-Zero AX (Rev E) fzeroaxc // 2003.06.11 F-Zero AX (Rev C) gekpurya // 2003.10 Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C) From 2976243da1636864763041b017276b34ff381b85 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Thu, 11 Aug 2016 01:16:17 +0200 Subject: [PATCH 108/116] Added PC-AT mode (still untested), some preparations for 9224 emulation --- src/devices/machine/hdc92x4.cpp | 334 +++++++++++++++++++++++++------- src/devices/machine/hdc92x4.h | 21 +- 2 files changed, 284 insertions(+), 71 deletions(-) diff --git a/src/devices/machine/hdc92x4.cpp b/src/devices/machine/hdc92x4.cpp index 9579f33bf7c..4701f8c7711 100644 --- a/src/devices/machine/hdc92x4.cpp +++ b/src/devices/machine/hdc92x4.cpp @@ -16,6 +16,56 @@ Michael Zapf, August 2015 + ================================== + Specifics of both controller types + + ** 9224 ** + - Defines a special "ST506" type for hard disks with a fixed 512 byte sector length + - No specific IDENT; uses HEAD field for cylinder MSBs (both ST and user-defined types); + - Different buffered step rate for SEEK and RESTORE + - POLL_DRIVES + - must be preceded by DESELECT + - DRIVE_SELECT + - 00 = ST506 + - READ_SECTORS_LOGICAL + - Bit 1 = Bad sector bypass/terminate + - Multi-sector read requires ECC correction disable + - WRITE_SECTOR_* + - Bit 6 = Bad sector bypass/terminate + - FORMAT_TRACK + - 3-byte header for ST506, 4-byte otherwise + - No IDENT byte in the format parameters; the IDENT field (after the IDAM) is locked to FE + + ** 9234 ** + - Defines a special "PC-AT" type for hard disks with a selectable sector length (128, 256, 512, 1024) + - IDENT field in the sector header encodes cylinder MSBs (HD and MFM floppy) + - Defines R6 as CURRENT IDENT byte register + - Uses HEAD field for cylinder MSBs (only user-defined type) + - Faster step rates, no different rates for SEEK/RESTORE + - PC-AT mode: + - R/W reg A contains specs for sector length and zone + - HEAD register contains sector size code provided by system (W4) + or read from disk (R4) + - POLL_DRIVES + - must be preceded by SEEK or DESELECT + - DRIVE_SELECT + - 00 = PC-AT + - READ_SECTORS_PHYSICAL + - PC-AT: Requires W10 to be set appropriately + - READ_SECTORS_LOGICAL + - Bit 1 = Implied seek enabled/disabled + - PC-AT: Requires W10 to be set appropriately + - WRITE_SECTOR_* + - Bit 6 = Implied seek enable/disable + - PC-AT: Requires W10 to be set appropriately + - WRITE LONG mode for extended ECC code + - MODE register (8) allows for setting WRITE LONG mode + - FORMAT_TRACK + - 4-byte header for PC-AT, 5-byte otherwise + - IDENT byte must be set for MFM floppy and MFM/PC-AT HD + - No Bad Sector Flag for PC-AT + - HEAD field contains sector size for PC-AT + ***************************************************************************/ #include "emu.h" @@ -67,7 +117,6 @@ ECC Write long (see MODE register; only useful with ECC) Tape operations - AT mode (HD) FM-encoded HD === Implemented but untested === @@ -75,6 +124,7 @@ Poll drives Seek/Read ID Read track + AT mode (HD) === TODO === Create a common state machine for HD and floppy @@ -232,7 +282,8 @@ enum TYPE_AT = 0x00, TYPE_HD = 0x01, TYPE_FLOPPY8 = 0x02, - TYPE_FLOPPY5 = 0x03 + TYPE_FLOPPY5 = 0x03, + TYPE_ST = 0x04 }; /* @@ -241,8 +292,7 @@ enum enum { GEN_TIMER = 1, - COM_TIMER /*, - LIVE_TIMER */ + COM_TIMER }; /* @@ -256,14 +306,6 @@ enum { MO_STEPRATE = 0x07 // Step rates }; -/* - Step rates in microseconds for MFM. This is set in the mode register, - bits 0-2. FM mode doubles all values. -*/ -static const int step_hd[] = { 22, 50, 100, 200, 400, 800, 1600, 3200 }; -static const int step_flop8[] = { 218, 500, 1000, 2000, 4000, 8000, 16000, 32000 }; -static const int step_flop5[] = { 436, 1000, 2000, 4000, 8000, 16000, 32000, 64000 }; - /* Head load timer increments in usec. Delay value is calculated from this value multiplied by the factor in the DATA/DELAY register. For FM mode all @@ -271,11 +313,6 @@ static const int step_flop5[] = { 436, 1000, 2000, 4000, 8000, 16000, 32000, 6 */ static const int head_load_timer_increment[] = { 200, 200, 2000, 4000 }; -/* - ID fields association to registers -*/ -static const int id_field[] = { CURRENT_CYLINDER, CURRENT_HEAD, CURRENT_SECTOR, CURRENT_SIZE, CURRENT_CRC1, CURRENT_CRC2 }; - /* Pulse widths for stepping in usec */ @@ -518,19 +555,32 @@ bool hdc92x4_device::reading_track() */ /* - In SMC mode, the cylinder number is stored in bit positions 4,5,6 of the - head register and in the 8 bits of the cylinder register. - This is true for the desired cyl/head, current cyl/head, and the header - fields on the track. + The desired head is specified by the last 4 bits of the desired head + register in all modes. */ int hdc92x4_device::desired_head() { return m_register_w[DESIRED_HEAD] & 0x0f; } +/* + PC-AT mode: Cylinder number is specified by the least significant two + bits of the R/W register A (DATA) and the 8 bits of the desired cylinder + register. + + SMC mode: Cylinder number is stored in bit positions 4,5,6 of the + head register and in the 8 bits of the desired cylinder register. +*/ int hdc92x4_device::desired_cylinder() { - return (m_register_w[DESIRED_CYLINDER] & 0xff) | ((m_register_w[DESIRED_HEAD] & 0x70) << 4); + if (m_selected_drive_type == TYPE_AT) + { + return (m_register_w[DESIRED_CYLINDER] & 0xff) | ((m_register_w[DATA] & 0x03) << 8); + } + else + { + return (m_register_w[DESIRED_CYLINDER] & 0xff) | ((m_register_w[DESIRED_HEAD] & 0x70) << 4); + } } int hdc92x4_device::desired_sector() @@ -538,14 +588,34 @@ int hdc92x4_device::desired_sector() return m_register_w[DESIRED_SECTOR] & 0xff; } +/* + The current head is specified by the last 4 bits of the current head + register in all modes. +*/ int hdc92x4_device::current_head() { return m_register_r[CURRENT_HEAD] & 0x0f; } +/* + PC-AT mode: The current cylinder number is specified by the IDENT field + as read from the sector header and the 8 bits of the desired cylinder + register. + IDENT: FE->0, FF->1, FC->2, FD->3 + + SMC mode: The current cylinder number is stored in bit positions 4,5,6 of + the head register and in the 8 bits of the desired cylinder register. +*/ int hdc92x4_device::current_cylinder() { - return (m_register_r[CURRENT_CYLINDER] & 0xff) | ((m_register_r[CURRENT_HEAD] & 0x70) << 4); + if (m_selected_drive_type == TYPE_AT) + { + return (m_register_r[CURRENT_CYLINDER] & 0xff) | (((m_register_r[CURRENT_IDENT] + 2) & 0x03) << 8); + } + else + { + return (m_register_r[CURRENT_CYLINDER] & 0xff) | ((m_register_r[CURRENT_HEAD] & 0x70) << 4); + } } int hdc92x4_device::current_sector() @@ -563,12 +633,77 @@ bool hdc92x4_device::using_floppy() return (m_selected_drive_type == TYPE_FLOPPY5 || m_selected_drive_type == TYPE_FLOPPY8); } +int hdc92x4_device::header_length() +{ + return (m_selected_drive_type == TYPE_AT)? 4 : 5; +} + /* - Delivers the step time (in microseconds) minus the pulse width + Returns the index of the register where the sector header field shall be stored */ -int hdc92x4_device::step_time() +int hdc92x4_device::register_number(int slot) +{ + // The id_field is an array of indexes into the chip registers. + // Thus we get the values properly assigned to the registers. + // The PC-AT mode does not use a size field. + const int id_field[] = { CURRENT_CYLINDER, CURRENT_HEAD, CURRENT_SECTOR, CURRENT_SIZE, CURRENT_CRC1, CURRENT_CRC2 }; + int index = slot; + + // Skip size for PC-AT + if (m_selected_drive_type == TYPE_AT && slot > 2) index++; + if (index > 5) + { + logerror("BUG: Invalid index for header field: %d", index); + index = 5; + } + return id_field[index]; +} + +/* + Delivers the step time (in microseconds) minus the pulse width (9224). + The first two values in the list apply for index==0 (buffered step), + but the first one is used for the RESTORE command, the second one is used + for SEEK. [2] +*/ +int hdc9224_device::step_time() { int time; + // Step rates in microseconds for MFM. This is set in the mode register, + // bits 0-2. FM mode doubles all values. + const int step_hd[] = { 22, 18, 200, 400, 800, 1600, 3200, 6400, 12800 }; + const int step_flop8[] = { 218, 176, 2000, 4000, 8000, 16000, 32000, 64000, 128000 }; + const int step_flop5[] = { 436, 352, 4000, 8000, 16000, 32000, 64000, 128000, 256000 }; + + int index = m_register_w[MODE] & MO_STEPRATE; + // First value is used only for RESTORE (02, 03) + if ((index > 0) || ((current_command() & 0xfe)!=0x02)) index++; + + // Get seek time. + if (m_selected_drive_type == TYPE_FLOPPY8) + time = step_flop8[index] - pulse_flop8; + + else if (m_selected_drive_type == TYPE_FLOPPY5) + time = step_flop5[index] - pulse_flop5; + else + time = step_hd[index] - pulse_hd; + + if (fm_mode()) time = time * 2; + return time; +} + +/* + Delivers the step time (in microseconds) minus the pulse width (9234). + The 9234 does not use different values for buffered steps. +*/ +int hdc9234_device::step_time() +{ + int time; + // Step rates in microseconds for MFM. This is set in the mode register, + // bits 0-2. FM mode doubles all values. + const int step_hd[] = { 22, 50, 100, 200, 400, 800, 1600, 3200 }; + const int step_flop8[] = { 218, 500, 1000, 2000, 4000, 8000, 16000, 32000 }; + const int step_flop5[] = { 436, 1000, 2000, 4000, 8000, 16000, 32000, 64000 }; + int index = m_register_w[MODE] & MO_STEPRATE; // Get seek time. if (m_selected_drive_type == TYPE_FLOPPY8) @@ -603,11 +738,24 @@ int hdc92x4_device::pulse_width() } /* - Delivers the sector size + Delivers the sector size. The register has been either loaded from the + sector header (floppy / generic HD) or from register A (PC-AT mode). For + the 9224, 512 bytes is returned when TYPE_ST was selected. */ -int hdc92x4_device::calc_sector_size() +int hdc92x4_device::sector_size() { - return 128 << (m_register_r[CURRENT_SIZE] & 3); + // TYPE_AT: + // CURRENT_HEAD + // x S S x x x x x, where SS =0 (256), =1 (512), =2(1024), =3 (128) + if (m_selected_drive_type==TYPE_AT) + return 128 << (((m_register_r[CURRENT_HEAD] >> 5) + 1) & 0x03); + else + { + if (m_selected_drive_type==TYPE_ST) + return 512; + else + return 128 << (m_register_r[CURRENT_SIZE] & 7); + } } // =========================================================================== @@ -1006,7 +1154,7 @@ void hdc92x4_device::data_transfer(int& cont) (m_register_w[DMA15_8] & 0xff) << 8 | (m_register_w[DMA7_0] & 0xff); - dma_address = (dma_address + calc_sector_size()) & 0xffffff; + dma_address = (dma_address + sector_size()) & 0xffffff; m_register_w[DMA23_16] = m_register_r[DMA23_16] = (dma_address & 0xff0000) >> 16; m_register_w[DMA15_8] = m_register_r[DMA15_8] = (dma_address & 0x00ff00) >> 8; @@ -1049,7 +1197,7 @@ void hdc92x4_device::data_transfer(int& cont) (m_register_w[DMA15_8] & 0xff) << 8 | (m_register_w[DMA7_0] & 0xff); - dma_address = (dma_address + calc_sector_size()) & 0xffffff; + dma_address = (dma_address + sector_size()) & 0xffffff; m_register_w[DMA23_16] = m_register_r[DMA23_16] = (dma_address & 0xff0000) >> 16; m_register_w[DMA15_8] = m_register_r[DMA15_8] = (dma_address & 0x00ff00) >> 8; @@ -1087,6 +1235,56 @@ void hdc92x4_device::data_transfer(int& cont) } } +/* + Presets the CRC register, depending on the flag in the Interrupt/Command + Termination Register. + If this flag is set to 0, the CRC calculation is preset with 0, which + means that only media with the same setting will be readable (all others + will yield CRC errors). + This method simply provides preset values for some particular situations. + When value=0, the CRC is preset to 0 or FFFF. Other defined values are: + a1 = data value of MFM IDAM + a1a1a1 = all three a1s + fe = data value of FM IDAM + f56a = cell pattern of f8 (DAM, FM) + f56b = cell pattern of f9 (DAM, FM) + f56e = cell pattern of fa (DAM, FM) + f56f = cell pattern of fb (DAM, FM) +*/ +void hdc92x4_device::preset_crc(live_info& live, int value) +{ + if ((m_register_w[INT_COMM_TERM] & 0x80)!=0) + { + // Preset -1 + switch (value) + { + case 0xa1: live.crc = 0x443b; break; + case 0xfe: live.crc = 0xef21; break; + case 0xf56a: live.crc = 0x8fe7; break; // F8 + case 0xf56b: live.crc = 0x9fc6; break; // F9 + case 0xf56e: live.crc = 0xafa5; break; // FA + case 0xf56f: live.crc = 0xbf84; break; // FB + case 0xa1a1a1: live.crc = 0xcdb4; break; // A1A1A1 + default: live.crc = 0xffff; break; + } + } + else + { + // Preset 0 + switch (value) + { + case 0xa1: live.crc = 0xc1a9; break; + case 0xfe: live.crc = 0x736d; break; + case 0xf56a: live.crc = 0x6e17; break; // F8 + case 0xf56b: live.crc = 0x7e36; break; // F9 + case 0xf56e: live.crc = 0x4e55; break; // FA + case 0xf56f: live.crc = 0x5e74; break; // FB + case 0xa1a1a1: live.crc = 0x0128; break; // A1A1A1 + default: live.crc = 0x0000; break; + } + } +}; + // =========================================================================== // Commands // =========================================================================== @@ -1954,7 +2152,7 @@ void hdc92x4_device::live_start(int state) m_live_state.next_state = -1; m_live_state.shift_reg = 0; - m_live_state.crc = 0xffff; + preset_crc(m_live_state, 0); m_live_state.bit_counter = 0; m_live_state.byte_counter = 0; m_live_state.data_separator_phase = false; @@ -2063,7 +2261,7 @@ void hdc92x4_device::live_run_until(attotime limit) if (m_live_state.shift_reg == 0x4489) { if (TRACE_LIVE) logerror("%s: [%s live] Found an A1 mark\n", tag(),tts(m_live_state.time).c_str()); - m_live_state.crc = 0x443b; + preset_crc(m_live_state, 0xa1); m_live_state.data_separator_phase = false; m_live_state.bit_counter = 0; // Next task: find the next two A1 marks @@ -2076,7 +2274,7 @@ void hdc92x4_device::live_run_until(attotime limit) if (m_live_state.shift_reg == 0xf57e) { if (TRACE_LIVE) logerror("%s: SEARCH_IDAM: IDAM found\n", tag()); - m_live_state.crc = 0xef21; + preset_crc(m_live_state, 0xfe); m_live_state.data_separator_phase = false; m_live_state.bit_counter = 0; m_live_state.state = READ_ID_FIELDS_INTO_REGS; @@ -2174,11 +2372,9 @@ void hdc92x4_device::live_run_until(attotime limit) if (TRACE_LIVE) logerror("%s: slot %d = %02x, crc=%04x\n", tag(), slot, m_live_state.data_reg, m_live_state.crc); - // The id_field is an array of indexes into the chip registers. - // Thus we get the values properly assigned to the registers. - m_register_r[id_field[slot]] = m_live_state.data_reg; + m_register_r[register_number(slot)] = m_live_state.data_reg; - if(slot > 4) + if (slot > 4) // this includes both CRC bytes. There are no different lengths for the floppy headers (excluding the ident byte) { // We successfully read the ID fields; let's wait for the machine time to catch up. if (reading_track()) @@ -2222,7 +2418,7 @@ void hdc92x4_device::live_run_until(attotime limit) if (m_live_state.bit_counter >= 28*16 && m_live_state.shift_reg == 0x4489) { if (TRACE_LIVE) logerror("%s: [%s live] Found an A1 mark\n", tag(),tts(m_live_state.time).c_str()); - m_live_state.crc = 0x443b; + preset_crc(m_live_state, 0xa1); m_live_state.data_separator_phase = false; m_live_state.bit_counter = 0; m_live_state.state = READ_TWO_MORE_A1_DAM; @@ -2240,11 +2436,7 @@ void hdc92x4_device::live_run_until(attotime limit) if (m_live_state.bit_counter >= 11*16 && (m_live_state.shift_reg == 0xf56a || m_live_state.shift_reg == 0xf56b || m_live_state.shift_reg == 0xf56e || m_live_state.shift_reg == 0xf56f)) { if (TRACE_LIVE) logerror("%s: SEARCH_DAM: found DAM = %04x\n", tag(), m_live_state.shift_reg); - m_live_state.crc = - m_live_state.shift_reg == 0xf56a ? 0x8fe7 : - m_live_state.shift_reg == 0xf56b ? 0x9fc6 : - m_live_state.shift_reg == 0xf56e ? 0xafa5 : - 0xbf84; + preset_crc(m_live_state, m_live_state.shift_reg); m_live_state.data_separator_phase = false; m_live_state.bit_counter = 0; m_live_state.state = READ_SECTOR_DATA; @@ -2342,16 +2534,16 @@ void hdc92x4_device::live_run_until(attotime limit) if (TRACE_LIVE) logerror("%s: [%s live] Found data value %02X, CRC=%04x\n", tag(),tts(m_live_state.time).c_str(), m_live_state.data_reg, m_live_state.crc); int slot = (m_live_state.bit_counter >> 4)-1; - if (slot < calc_sector_size()) + if (slot < sector_size()) { // Sector data wait_for_realtime(READ_SECTOR_DATA_CONT); return; } - else if (slot < calc_sector_size()+2) + else if (slot < sector_size()+2) { // CRC - if (slot == calc_sector_size()+1) + if (slot == sector_size()+1) { if (reading_track()) { @@ -2395,7 +2587,7 @@ void hdc92x4_device::live_run_until(attotime limit) m_out_dma(0, m_register_r[DATA], 0xff); // And again, for floppies, clear line after writing each byte, for hard disk, only after the last byte - if (using_floppy() || (m_live_state.bit_counter >> 4)==calc_sector_size()-1) + if (using_floppy() || (m_live_state.bit_counter >> 4)==sector_size()-1) { m_out_dip(CLEAR_LINE); m_out_dmarq(CLEAR_LINE); @@ -2441,7 +2633,7 @@ void hdc92x4_device::live_run_until(attotime limit) if (fm_mode()) { // Init the CRC for the DAM and sector - m_live_state.crc = 0xffff; + preset_crc(m_live_state, 0); // 1111 0101 0110 1010 = F8 deleted // 1111 0101 0110 1111 = FB normal @@ -2450,10 +2642,10 @@ void hdc92x4_device::live_run_until(attotime limit) else { // Init the CRC for the ident byte and sector - m_live_state.crc = 0xcdb4; // value for 3*A1 + preset_crc(m_live_state, 0xa1a1a1); write_on_track(encode(m_deleted? 0xf8 : 0xfb), 1, WRITE_SECDATA); } - m_live_state.byte_counter = calc_sector_size(); + m_live_state.byte_counter = sector_size(); // Set the over/underrun flag and hope that it will be cleared before we start writing // (only for sector writing) @@ -2476,7 +2668,7 @@ void hdc92x4_device::live_run_until(attotime limit) else { // For floppies, set this for each byte; for hard disk, set it only at the beginning - if (using_floppy() || m_live_state.byte_counter == calc_sector_size()) + if (using_floppy() || m_live_state.byte_counter == sector_size()) m_out_dip(ASSERT_LINE); m_register_r[DATA] = m_register_w[DATA] = m_in_dma(0, 0xff); @@ -2624,7 +2816,7 @@ void hdc92x4_device::live_run_until(attotime limit) write_on_track(0x4489, 3, WRITE_HEADER); m_live_state.byte_counter = 5; } - m_live_state.crc = 0xffff; + preset_crc(m_live_state, 0); break; case WRITE_HEADER: @@ -2721,8 +2913,8 @@ void hdc92x4_device::live_run_until(attotime limit) m_out_dip(ASSERT_LINE); // Write the header via DMA - for (auto & elem : id_field) - m_out_dma(0, m_register_r[elem], 0xff); + for (int i=0; i < header_length(); i++) + m_out_dma(0, m_register_r[register_number(i)], 0xff); m_out_dip(CLEAR_LINE); m_out_dmarq(CLEAR_LINE); @@ -2877,7 +3069,7 @@ void hdc92x4_device::live_run_hd_until(attotime limit) if (found_mark(SEARCH_IDAM)) { if (TRACE_LIVE) logerror("%s: [%s live] Found an A1 mark\n", tag(), tts(m_live_state.time).c_str()); - m_live_state.crc = 0x443b; + preset_crc(m_live_state, 0xa1); m_live_state.data_separator_phase = false; m_live_state.bit_counter = 0; @@ -2934,7 +3126,7 @@ void hdc92x4_device::live_run_hd_until(attotime limit) if (m_live_state.bit_counter & 15) break; if (TRACE_LIVE) logerror("%s: slot %d = %02x, crc=%04x\n", tag(), slot, m_live_state.data_reg, m_live_state.crc); - m_register_r[id_field[slot++]] = m_live_state.data_reg; + m_register_r[register_number(slot++)] = m_live_state.data_reg; if(slot > 5) { @@ -2972,7 +3164,7 @@ void hdc92x4_device::live_run_hd_until(attotime limit) if (found_mark(SEARCH_DAM)) { if (TRACE_LIVE) logerror("%s: [%s live] Found an A1 mark\n", tag(),tts(m_live_state.time).c_str()); - m_live_state.crc = 0x443b; + preset_crc(m_live_state, 0xa1); m_live_state.data_separator_phase = false; m_live_state.bit_counter = 0; m_live_state.state = READ_DATADEL_FLAG; @@ -3030,9 +3222,9 @@ void hdc92x4_device::live_run_hd_until(attotime limit) if (m_live_state.bit_counter & 15) break; slot = (m_live_state.bit_counter >> 4)-1; - if (TRACE_LIVE) logerror("%s: [%s live] Found data value [%d/%d] = %02X, CRC=%04x\n", tag(),tts(m_live_state.time).c_str(), slot, calc_sector_size(), m_live_state.data_reg, m_live_state.crc); + if (TRACE_LIVE) logerror("%s: [%s live] Found data value [%d/%d] = %02X, CRC=%04x\n", tag(),tts(m_live_state.time).c_str(), slot, sector_size(), m_live_state.data_reg, m_live_state.crc); - if (slot < calc_sector_size()) + if (slot < sector_size()) { // For the first byte, allow for the DMA acknowledge to be set. if (slot == 0) @@ -3042,10 +3234,10 @@ void hdc92x4_device::live_run_hd_until(attotime limit) } else m_live_state.state = READ_SECTOR_DATA_CONT; } - else if (slot < calc_sector_size()+2) + else if (slot < sector_size()+2) { // CRC - if (slot == calc_sector_size()+1) + if (slot == sector_size()+1) { m_out_dip(CLEAR_LINE); m_out_dmarq(CLEAR_LINE); @@ -3176,11 +3368,11 @@ void hdc92x4_device::live_run_hd_until(attotime limit) if (TRACE_WRITE && TRACE_DETAIL) logerror("%s: Write data mark\n", tag()); // Init the CRC for the ident byte and sector - m_live_state.crc = 0x443b; // value for 1*A1 + preset_crc(m_live_state, 0xa1); // only one A1 write_on_track(encode_hd(m_deleted? 0xf8 : 0xfb), 1, WRITE_SECDATA); - m_live_state.byte_counter = calc_sector_size(); + m_live_state.byte_counter = sector_size(); // Set the over/underrun flag and hope that it will be cleared before we start writing // (only for sector writing) @@ -3204,8 +3396,8 @@ void hdc92x4_device::live_run_hd_until(attotime limit) { if (TRACE_WRITE && TRACE_DETAIL) logerror("%s: Write sector byte, %d to go\n", tag(), m_live_state.byte_counter); - // For floppies, set this for each byte; for hard disk, set it only at the beginning - if (m_live_state.byte_counter == calc_sector_size()) + // This is hard disk, so set DIP only at the beginning + if (m_live_state.byte_counter == sector_size()) m_out_dip(ASSERT_LINE); m_register_r[DATA] = m_register_w[DATA] = m_in_dma(0, 0xff); @@ -3296,8 +3488,8 @@ void hdc92x4_device::live_run_hd_until(attotime limit) m_out_dip(ASSERT_LINE); // Write the header via DMA - for (auto & elem : id_field) - m_out_dma(0, m_register_r[elem], 0xff); + for (int i=0; i < header_length(); i++) + m_out_dma(0, m_register_r[register_number(i)], 0xff); // Continue with reading the sector data m_live_state.state = SEARCH_DAM; @@ -3341,7 +3533,7 @@ void hdc92x4_device::live_run_hd_until(attotime limit) if (TRACE_HEADER) logerror("%s: Writing IDAM and header: ", tag()); write_on_track(encode_a1_hd(), 1, WRITE_HEADER); m_live_state.byte_counter = 5; // TODO: Check this for AT mode - m_live_state.crc = 0xffff; + preset_crc(m_live_state, 0); break; case WRITE_HEADER: @@ -3997,6 +4189,12 @@ void hdc92x4_device::process_command() // write are identical, so in that case we copy the contents if (m_register_pointer < DESIRED_HEAD) m_register_r[m_register_pointer] = m_regvalue; + // Note for the PC-AT mode: The DATA register contains two bits (5,4) + // that are defined as "Actual sector size" ([1] p. 7). The + // specification does not say anything about the meaning of these + // bits. The desired sector size is already specified by bits 6 and 5 + // of the DESIRED_HEAD register, so we ignore these bits for now. + // Autoincrement until DATA is reached. if (m_register_pointer < DATA) m_register_pointer++; } diff --git a/src/devices/machine/hdc92x4.h b/src/devices/machine/hdc92x4.h index fccf23666d7..899c3b955a0 100644 --- a/src/devices/machine/hdc92x4.h +++ b/src/devices/machine/hdc92x4.h @@ -232,6 +232,9 @@ protected: live_info m_live_state, m_checkpoint_state; int m_last_live_state; + // Presets CRC. + void preset_crc(live_info& live, int value); + // Starts the live run void live_start(int state); @@ -433,13 +436,19 @@ protected: UINT8 current_command(); // Step time (minus pulse width) - int step_time(); + virtual int step_time() =0; // Step pulse width int pulse_width(); - // Sector size as read from the track - int calc_sector_size(); + // Sector size as read from the track or given by register A (PC-AT mode) + int sector_size(); + + // Returns the sector header length + int header_length(); + + // Returns the index of the register for the header field + int register_number(int slot); // Is the currently selected drive a floppy drive? bool using_floppy(); @@ -476,12 +485,18 @@ class hdc9224_device : public hdc92x4_device { public: hdc9224_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + +protected: + int step_time(); }; class hdc9234_device : public hdc92x4_device { public: hdc9234_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + +protected: + int step_time(); }; #endif From 5f912b42f6c4d79e2b0ea42b3f98667afd6e9f99 Mon Sep 17 00:00:00 2001 From: Giuseppe Gorgoglione Date: Thu, 11 Aug 2016 02:15:50 +0200 Subject: [PATCH 109/116] Use emumem.h defines whenever possible --- src/mame/audio/hng64.cpp | 6 +- src/mame/drivers/astrafr.cpp | 16 +- src/mame/drivers/bfm_sc4.cpp | 12 +- src/mame/drivers/bfm_sc5.cpp | 2 +- src/mame/drivers/cb2001.cpp | 4 +- src/mame/drivers/cobra.cpp | 2 +- src/mame/drivers/crystal.cpp | 6 +- src/mame/drivers/deco32.cpp | 4 +- src/mame/drivers/deco_mlc.cpp | 8 +- src/mame/drivers/divebomb.cpp | 0 src/mame/drivers/dreambal.cpp | 2 +- src/mame/drivers/gambl186.cpp | 4 +- src/mame/drivers/gba.cpp | 428 ++++++++++++++++----------------- src/mame/drivers/glass.cpp | 2 +- src/mame/drivers/juicebox.cpp | 16 +- src/mame/drivers/mpu5.cpp | 16 +- src/mame/drivers/namcos22.cpp | 2 +- src/mame/drivers/ngen.cpp | 78 +++--- src/mame/drivers/plygonet.cpp | 4 +- src/mame/drivers/segapico.cpp | 4 +- src/mame/drivers/segasp.cpp | 10 +- src/mame/drivers/supracan.cpp | 8 +- src/mame/drivers/tek440x.cpp | 0 src/mame/drivers/vegas.cpp | 16 +- src/mame/machine/apollo.cpp | 2 +- src/mame/machine/bebox.cpp | 32 +-- src/mame/machine/dc.cpp | 2 +- src/mame/machine/m3comm.cpp | 4 +- src/mame/machine/n64.cpp | 8 +- src/mame/machine/segas32.cpp | 2 +- src/mame/machine/stvprot.cpp | 4 +- src/mame/video/jaguar.cpp | 2 +- src/mame/video/kaneko_tmap.cpp | 4 +- 33 files changed, 355 insertions(+), 355 deletions(-) mode change 100755 => 100644 src/mame/drivers/divebomb.cpp mode change 100755 => 100644 src/mame/drivers/tek440x.cpp diff --git a/src/mame/audio/hng64.cpp b/src/mame/audio/hng64.cpp index be6857113cb..d6395327b29 100644 --- a/src/mame/audio/hng64.cpp +++ b/src/mame/audio/hng64.cpp @@ -110,7 +110,7 @@ READ32_MEMBER(hng64_state::hng64_soundram_r) WRITE32_MEMBER( hng64_state::hng64_soundcpu_enable_w ) { - if (mem_mask&0xffff0000) + if (ACCESSING_BITS_16_31) { int cmd = data >> 16; // I guess it's only one of the bits, the commands are inverse of each other @@ -132,9 +132,9 @@ WRITE32_MEMBER( hng64_state::hng64_soundcpu_enable_w ) } } - if (mem_mask&0x0000ffff) + if (ACCESSING_BITS_0_15) { - logerror("unknown hng64_soundcpu_enable_w %08x %08x\n", data, mem_mask); + logerror("unknown hng64_soundcpu_enable_w %08x %08x\n", data, mem_mask); } } diff --git a/src/mame/drivers/astrafr.cpp b/src/mame/drivers/astrafr.cpp index 303b0448626..37d0f4c4997 100644 --- a/src/mame/drivers/astrafr.cpp +++ b/src/mame/drivers/astrafr.cpp @@ -170,10 +170,10 @@ WRITE32_MEMBER(astrafr_state::astrafr_mem_w) case 3: address &= 0xfffff; - if (mem_mask&0xff000000) astra_fgpa_w(space, address+0, data >> 24); - if (mem_mask&0x00ff0000) astra_fgpa_w(space, address+1, data >> 16); - if (mem_mask&0x0000ff00) astra_fgpa_w(space, address+2, data >> 8); - if (mem_mask&0x000000ff) astra_fgpa_w(space, address+3, data >> 0); + if (ACCESSING_BITS_24_31) astra_fgpa_w(space, address+0, data >> 24); + if (ACCESSING_BITS_16_23) astra_fgpa_w(space, address+1, data >> 16); + if (ACCESSING_BITS_8_15) astra_fgpa_w(space, address+2, data >> 8); + if (ACCESSING_BITS_0_7) astra_fgpa_w(space, address+3, data >> 0); break; case 2: @@ -225,10 +225,10 @@ WRITE32_MEMBER(astrafr_state::astrafr_slave_mem_w) case 3: address &= 0xfffff; - if (mem_mask&0xff000000) astra_fgpa_slave_w(space, address+0, data >> 24); - if (mem_mask&0x00ff0000) astra_fgpa_slave_w(space, address+1, data >> 16); - if (mem_mask&0x0000ff00) astra_fgpa_slave_w(space, address+2, data >> 8); - if (mem_mask&0x000000ff) astra_fgpa_slave_w(space, address+3, data >> 0); + if (ACCESSING_BITS_24_31) astra_fgpa_slave_w(space, address+0, data >> 24); + if (ACCESSING_BITS_16_23) astra_fgpa_slave_w(space, address+1, data >> 16); + if (ACCESSING_BITS_8_15) astra_fgpa_slave_w(space, address+2, data >> 8); + if (ACCESSING_BITS_0_7) astra_fgpa_slave_w(space, address+3, data >> 0); break; case 2: diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp index 0ae8c347bc2..bfd99c93683 100644 --- a/src/mame/drivers/bfm_sc4.cpp +++ b/src/mame/drivers/bfm_sc4.cpp @@ -205,12 +205,12 @@ READ16_MEMBER(sc4_state::sc4_mem_r) if (addr < 0x0080) { UINT16 retvalue = 0x0000; - if (mem_mask&0xff00) + if (ACCESSING_BITS_8_15) { logerror("mem_mask&0xff00 unhandled\n"); } - if (mem_mask&0x00ff) + if (ACCESSING_BITS_0_7) { retvalue = read_input_matrix((addr & 0x00f0)>>4); } @@ -381,12 +381,12 @@ WRITE16_MEMBER(sc4_state::sc4_mem_w) if (addr < 0x0200) { - if (mem_mask&0xff00) + if (ACCESSING_BITS_8_15) { logerror("lamp write mem_mask&0xff00 unhandled\n"); } - if (mem_mask&0x00ff) + if (ACCESSING_BITS_0_7) { // lamps mux_output_w(space, (addr & 0x01f0)>>4, data); } @@ -394,12 +394,12 @@ WRITE16_MEMBER(sc4_state::sc4_mem_w) } else if ((addr >= 0x1000) && (addr < 0x1200)) { - if (mem_mask&0xff00) + if (ACCESSING_BITS_8_15) { logerror("lamp write mem_mask&0xff00 unhandled\n"); } - if (mem_mask&0x00ff) + if (ACCESSING_BITS_0_7) { // lamps mux_output2_w(space, (addr & 0x01f0)>>4, data); } diff --git a/src/mame/drivers/bfm_sc5.cpp b/src/mame/drivers/bfm_sc5.cpp index a899ee2260e..bd9b4d2f2a4 100644 --- a/src/mame/drivers/bfm_sc5.cpp +++ b/src/mame/drivers/bfm_sc5.cpp @@ -28,7 +28,7 @@ WRITE16_MEMBER( bfm_sc5_state::sc5_duart_w ) // clearly a duart of some kind, write patterns are the same as SC4 games // printf("%s: duart_w %1x %04x %04x\n", machine().describe_context(), offset, data, mem_mask); - if (mem_mask &0xff00) + if (ACCESSING_BITS_8_15) { m_duart->write(space,offset,(data>>8)&0x00ff); } diff --git a/src/mame/drivers/cb2001.cpp b/src/mame/drivers/cb2001.cpp index 10fc8bb527a..c969490595e 100644 --- a/src/mame/drivers/cb2001.cpp +++ b/src/mame/drivers/cb2001.cpp @@ -447,7 +447,7 @@ UINT32 cb2001_state::screen_update_cb2001(screen_device &screen, bitmap_rgb32 &b is being executed incorrectly */ WRITE16_MEMBER(cb2001_state::cb2001_vidctrl_w) { - if (mem_mask&0xff00) // video control? + if (ACCESSING_BITS_8_15) // video control? { printf("cb2001_vidctrl_w %04x %04x\n", data, mem_mask); m_videobank = (data & 0x0800)>>11; @@ -458,7 +458,7 @@ WRITE16_MEMBER(cb2001_state::cb2001_vidctrl_w) WRITE16_MEMBER(cb2001_state::cb2001_vidctrl2_w) { - if (mem_mask&0xff00) // video control? + if (ACCESSING_BITS_8_15) // video control? { printf("cb2001_vidctrl2_w %04x %04x\n", data, mem_mask); // i think this switches to 'reels' mode m_videomode = (data>>8) & 0x03; // which bit?? diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp index 4c3a98e1f87..8b440c98659 100644 --- a/src/mame/drivers/cobra.cpp +++ b/src/mame/drivers/cobra.cpp @@ -1730,7 +1730,7 @@ READ32_MEMBER(cobra_state::sub_unk1_r) WRITE32_MEMBER(cobra_state::sub_unk1_w) { /* - if (!(mem_mask & 0xff000000)) + if (!ACCESSING_BITS_24_31) { printf("%02X", data >> 24); ucount++; diff --git a/src/mame/drivers/crystal.cpp b/src/mame/drivers/crystal.cpp index ebe604fbe48..ec80ebaa415 100644 --- a/src/mame/drivers/crystal.cpp +++ b/src/mame/drivers/crystal.cpp @@ -318,7 +318,7 @@ READ32_MEMBER(crystal_state::FlipCount_r) WRITE32_MEMBER(crystal_state::FlipCount_w) { - if (mem_mask & 0x00ff0000) + if (ACCESSING_BITS_16_23) { int fc = (data >> 16) & 0xff; if (fc == 1) @@ -351,14 +351,14 @@ WRITE32_MEMBER(crystal_state::IntAck_w) { UINT32 IntPend = space.read_dword(0x01800c0c); - if (mem_mask & 0xff) + if (ACCESSING_BITS_0_7) { IntPend &= ~(1 << (data & 0x1f)); space.write_dword(0x01800c0c, IntPend); if (!IntPend) m_maincpu->set_input_line(SE3208_INT, CLEAR_LINE); } - if (mem_mask & 0xff00) + if (ACCESSING_BITS_8_15) m_IntHigh = (data >> 8) & 7; } diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp index afb6c0a5033..131606916d5 100644 --- a/src/mame/drivers/deco32.cpp +++ b/src/mame/drivers/deco32.cpp @@ -808,7 +808,7 @@ READ32_MEMBER( deco32_state::fghthist_protection_region_0_146_r ) { UINT32 retdata = 0x0000ffff; - if (mem_mask & 0xffff0000) + if (ACCESSING_BITS_16_31) { mem_mask >>=16; @@ -826,7 +826,7 @@ READ32_MEMBER( deco32_state::fghthist_protection_region_0_146_r ) WRITE32_MEMBER( deco32_state::fghthist_protection_region_0_146_w ) { - if (mem_mask & 0xffff0000) + if (ACCESSING_BITS_16_31) { data >>=16; mem_mask >>=16; diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp index 61a6ab054b2..0365d844625 100644 --- a/src/mame/drivers/deco_mlc.cpp +++ b/src/mame/drivers/deco_mlc.cpp @@ -241,12 +241,12 @@ READ32_MEMBER( deco_mlc_state::mlc_spriteram_r ) { UINT32 retdata = 0; - if (mem_mask & 0xffff0000) + if (ACCESSING_BITS_16_31) { retdata |= 0xffff0000; } - if (mem_mask & 0x0000ffff) + if (ACCESSING_BITS_0_15) { retdata |= m_mlc_spriteram[offset]; } @@ -257,11 +257,11 @@ READ32_MEMBER( deco_mlc_state::mlc_spriteram_r ) WRITE32_MEMBER( deco_mlc_state::mlc_spriteram_w ) { - if (mem_mask & 0xffff0000) + if (ACCESSING_BITS_16_31) { } - if (mem_mask & 0x0000ffff) + if (ACCESSING_BITS_0_15) { data &=0x0000ffff; COMBINE_DATA(&m_mlc_spriteram[offset]); diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp old mode 100755 new mode 100644 diff --git a/src/mame/drivers/dreambal.cpp b/src/mame/drivers/dreambal.cpp index 55d360aaf68..60e9653a1d5 100644 --- a/src/mame/drivers/dreambal.cpp +++ b/src/mame/drivers/dreambal.cpp @@ -64,7 +64,7 @@ public: logerror("dreambal_eeprom_w unhandled data %04x %04x\n",data&0x0fff8, mem_mask); } - if (mem_mask&0x00ff) + if (ACCESSING_BITS_0_7) { m_eeprom->clk_write(data &0x2 ? ASSERT_LINE : CLEAR_LINE); m_eeprom->di_write(data &0x1); diff --git a/src/mame/drivers/gambl186.cpp b/src/mame/drivers/gambl186.cpp index 89e009743c5..37360a09512 100644 --- a/src/mame/drivers/gambl186.cpp +++ b/src/mame/drivers/gambl186.cpp @@ -347,8 +347,8 @@ WRITE16_MEMBER(gambl186_state::upd_w) // m_upd7759->reset_w(0); // m_upd7759->reset_w(1); -// if (mem_mask&0x00ff) m_upd7759->port_w(space, 0, data & 0xff); -// if (mem_mask&0xff00) m_upd7759->port_w(space, 0, (data >> 8) & 0xff); +// if (ACCESSING_BITS_0_7) m_upd7759->port_w(space, 0, data & 0xff); +// if (ACCESSING_BITS_8_15) m_upd7759->port_w(space, 0, (data >> 8) & 0xff); data = (data >> 8); popmessage("sample index: %02x", data); diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp index b58253c03b2..d1f46afc67d 100644 --- a/src/mame/drivers/gba.cpp +++ b/src/mame/drivers/gba.cpp @@ -475,12 +475,12 @@ READ32_MEMBER(gba_state::gba_io_r) switch( offset ) { case 0x0000/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: DISPCNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_DISPCNT ); retval |= m_DISPCNT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: Green Swap (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_GRNSWAP ); retval |= m_GRNSWAP << 16; @@ -490,229 +490,229 @@ READ32_MEMBER(gba_state::gba_io_r) retval = (m_DISPSTAT & 0xffff) | (machine().first_screen()->vpos()<<16); break; case 0x0008/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG0CNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_BG0CNT ); retval |= m_BG0CNT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG1CNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_BG1CNT ); retval |= m_BG1CNT << 16; } break; case 0x000c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG2CNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_BG2CNT ); retval |= m_BG2CNT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG3CNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_BG3CNT ); retval |= m_BG3CNT << 16; } break; case 0x0010/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG0HOFS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG0VOFS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0014/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG1HOFS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG1VOFS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0018/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG2HOFS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG2VOFS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x001c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG3HOFS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG3VOFS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0020/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG2PA (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG2PB (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0024/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG2PC (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG2PD (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0028/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG2X_LSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG2X_MSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x002c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG2Y_LSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG2Y_MSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0030/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG3PA (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG3PB (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0034/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG3PC (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG3PD (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0038/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG3X_LSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG3X_MSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x003c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BG3Y_LSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BG3Y_MSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0040/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: WIN0H (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: WIN1H (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0044/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: WIN0V (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: WIN1V (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0048/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: WININ (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_WININ ); retval |= m_WININ; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: WINOUT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_WINOUT ); retval |= m_WINOUT << 16; } break; case 0x004c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: MOSAIC (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0050/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BLDCNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_BLDCNT ); retval |= m_BLDCNT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: BLDALPHA (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_BLDALPHA ); retval |= m_BLDALPHA << 16; } break; case 0x0054/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: BLDY (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0058/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x005c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), 0 ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } @@ -743,7 +743,7 @@ READ32_MEMBER(gba_state::gba_io_r) break; case 0x0080/4: retval = m_gbsound->sound_r(space, 0x14) | m_gbsound->sound_r(space, 0x15)<<8; - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: SOUNDCNT_H (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_SOUNDCNT_H ); retval |= m_SOUNDCNT_H << 16; @@ -753,12 +753,12 @@ READ32_MEMBER(gba_state::gba_io_r) retval = m_gbsound->sound_r(space, 0x16); break; case 0x0088/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: SOUNDBIAS (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_SOUNDBIAS ); retval |= m_SOUNDBIAS; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } @@ -850,115 +850,115 @@ READ32_MEMBER(gba_state::gba_io_r) } break; case 0x0120/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: SIOMULTI0 (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_SIOMULTI0 ); retval |= m_SIOMULTI0; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: SIOMULTI1 (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_SIOMULTI1 ); retval |= m_SIOMULTI1 << 16; } break; case 0x0124/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: SIOMULTI2 (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_SIOMULTI2 ); retval |= m_SIOMULTI2; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: SIOMULTI3 (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_SIOMULTI3 ); retval |= m_SIOMULTI3 << 16; } break; case 0x0128/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: SIOCNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_SIOCNT ); retval |= m_SIOCNT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: SIODATA8 (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_SIODATA8 ); retval |= m_SIODATA8 << 16; } break; case 0x0130/4: - if( (mem_mask) & 0x0000ffff ) // KEYINPUT + if( ACCESSING_BITS_0_15 ) // KEYINPUT { retval = m_io_inputs->read(); } - else if( (mem_mask) & 0xffff0000 ) + else if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: KEYCNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_KEYCNT ); retval |= m_KEYCNT << 16; } break; case 0x0134/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: RCNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_RCNT ); retval |= m_RCNT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: IR (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0140/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: JOYCNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_JOYCNT ); retval |= m_JOYCNT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0150/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: JOY_RECV_LSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_JOY_RECV & 0x0000ffff ); retval |= m_JOY_RECV & 0x0000ffff; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: JOY_RECV_MSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, ( m_JOY_RECV & 0xffff0000 ) >> 16 ); retval |= m_JOY_RECV & 0xffff0000; } break; case 0x0154/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: JOY_TRANS_LSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_JOY_TRANS & 0x0000ffff ); retval |= m_JOY_TRANS & 0x0000ffff; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: JOY_TRANS_MSW (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, ( m_JOY_TRANS & 0xffff0000 ) >> 16 ); retval |= m_JOY_TRANS & 0xffff0000; } break; case 0x0158/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: JOYSTAT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_JOYSTAT ); retval |= m_JOYSTAT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0200/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { // printf("Read: IE (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_IE ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: IF (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, m_IF ); } @@ -966,23 +966,23 @@ READ32_MEMBER(gba_state::gba_io_r) retval = m_IE | (m_IF<<16); break; case 0x0204/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: WAITCNT (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_WAITCNT ); retval |= m_WAITCNT; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } break; case 0x0208/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Read: IME (%08x) = %04x\n", 0x04000000 + ( offset << 2 ), m_IME ); retval |= m_IME; } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Read: UNKNOWN (%08x) = %04x\n", 0x04000000 + ( offset << 2 ) + 2, 0 ); } @@ -1002,10 +1002,10 @@ WRITE32_MEMBER(gba_state::gba_io_w) switch( offset ) { case 0x0000/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: DISPCNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_DISPCNT = ( m_DISPCNT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_DISPCNT); if(m_DISPCNT & (DISPCNT_WIN0_EN | DISPCNT_WIN1_EN)) { m_windowOn = 1; @@ -1015,7 +1015,7 @@ WRITE32_MEMBER(gba_state::gba_io_w) m_windowOn = 0; } } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: Green Swap (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_GRNSWAP = ( m_GRNSWAP & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); @@ -1025,107 +1025,107 @@ WRITE32_MEMBER(gba_state::gba_io_w) COMBINE_DATA(&m_DISPSTAT); break; case 0x0008/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG0CNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG0CNT = ( m_BG0CNT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG0CNT); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG1CNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG1CNT = ( m_BG1CNT & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x000c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG2CNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG2CNT = ( m_BG2CNT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG2CNT); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG3CNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG3CNT = ( m_BG3CNT & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0010/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG0HOFS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG0HOFS = ( m_BG0HOFS & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG0HOFS); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG0VOFS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG0VOFS = ( m_BG0VOFS & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0014/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG1HOFS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG1HOFS = ( m_BG1HOFS & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG1HOFS); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG1VOFS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG1VOFS = ( m_BG1VOFS & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0018/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG2HOFS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG2HOFS = ( m_BG2HOFS & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG2HOFS); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG2VOFS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG2VOFS = ( m_BG2VOFS & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x001c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG3HOFS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG3HOFS = ( m_BG3HOFS & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG3HOFS); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG3VOFS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG3VOFS = ( m_BG3VOFS & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0020/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG2PA (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG2PA = ( m_BG2PA & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG2PA); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG2PB (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG2PB = ( m_BG2PB & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0024/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG2PC (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG2PC = ( m_BG2PC & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG2PC); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG2PD (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG2PD = ( m_BG2PD & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0028/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG2X_LSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG2X_MSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } @@ -1133,11 +1133,11 @@ WRITE32_MEMBER(gba_state::gba_io_w) m_gfxBG2Changed |= 1; break; case 0x002c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG2Y_LSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG2Y_MSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } @@ -1145,35 +1145,35 @@ WRITE32_MEMBER(gba_state::gba_io_w) m_gfxBG2Changed |= 2; break; case 0x0030/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG3PA (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG3PA = ( m_BG3PA & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG3PA); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG3PB (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG3PB = ( m_BG3PB & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0034/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG3PC (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BG3PC = ( m_BG3PC & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BG3PC); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG3PD (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BG3PD = ( m_BG3PD & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0038/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG3X_LSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG3X_MSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } @@ -1181,11 +1181,11 @@ WRITE32_MEMBER(gba_state::gba_io_w) m_gfxBG3Changed |= 1; break; case 0x003c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BG3Y_LSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BG3Y_MSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } @@ -1193,57 +1193,57 @@ WRITE32_MEMBER(gba_state::gba_io_w) m_gfxBG3Changed |= 2; break; case 0x0040/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: WIN0H (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_WIN0H = ( m_WIN0H & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_WIN0H); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: WIN1H (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_WIN1H = ( m_WIN1H & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0044/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: WIN0V (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_WIN0V = ( m_WIN0V & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_WIN0V); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: WIN1V (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_WIN1V = ( m_WIN1V & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0048/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: WININ (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_WININ = ( m_WININ & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_WININ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: WINOUT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_WINOUT = ( m_WINOUT & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x004c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: MOSAIC (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_MOSAIC = ( m_MOSAIC & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_MOSAIC); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } break; case 0x0050/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BLDCNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BLDCNT = ( m_BLDCNT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BLDCNT); if(m_BLDCNT & BLDCNT_SFX) { m_fxOn = 1; @@ -1253,142 +1253,142 @@ WRITE32_MEMBER(gba_state::gba_io_w) m_fxOn = 0; } } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: BLDALPHA (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); m_BLDALPHA = ( m_BLDALPHA & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0054/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: BLDY (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_BLDY = ( m_BLDY & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_BLDY); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } break; case 0x0058/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } break; case 0x005c/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } break; case 0x0060/4: - if( (mem_mask) & 0x000000ff ) // SOUNDCNTL + if( ACCESSING_BITS_0_7 ) // SOUNDCNTL { m_gbsound->sound_w(space, 0, data); } - if( (mem_mask) & 0x00ff0000 ) + if( ACCESSING_BITS_16_23 ) { m_gbsound->sound_w(space, 1, data>>16); // SOUND1CNT_H } - if( (mem_mask) & 0xff000000 ) + if( ACCESSING_BITS_24_31 ) { m_gbsound->sound_w(space, 2, data>>24); } break; case 0x0064/4: - if( (mem_mask) & 0x000000ff ) // SOUNDCNTL + if( ACCESSING_BITS_0_7 ) // SOUNDCNTL { m_gbsound->sound_w(space, 3, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->sound_w(space, 4, data>>8); // SOUND1CNT_H } break; case 0x0068/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->sound_w(space, 6, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->sound_w(space, 7, data>>8); } break; case 0x006c/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->sound_w(space, 8, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->sound_w(space, 9, data>>8); } break; case 0x0070/4: //SND3CNTL and H - if( (mem_mask) & 0x000000ff ) // SOUNDCNTL + if( ACCESSING_BITS_0_7 ) // SOUNDCNTL { m_gbsound->sound_w(space, 0xa, data); } - if( (mem_mask) & 0x00ff0000 ) + if( ACCESSING_BITS_16_23 ) { m_gbsound->sound_w(space, 0xb, data>>16); // SOUND1CNT_H } - if( (mem_mask) & 0xff000000 ) + if( ACCESSING_BITS_24_31 ) { m_gbsound->sound_w(space, 0xc, data>>24); } break; case 0x0074/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->sound_w(space, 0xd, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->sound_w(space, 0xe, data>>8); } break; case 0x0078/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->sound_w(space, 0x10, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->sound_w(space, 0x11, data>>8); } break; case 0x007c/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->sound_w(space, 0x12, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->sound_w(space, 0x13, data>>8); } break; case 0x0080/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->sound_w(space, 0x14, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->sound_w(space, 0x15, data>>8); } - if ((mem_mask) & 0xffff0000) + if (ACCESSING_BITS_16_31) { data >>= 16; m_SOUNDCNT_H = data; @@ -1413,7 +1413,7 @@ WRITE32_MEMBER(gba_state::gba_io_w) } break; case 0x0084/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->sound_w(space, 0x16, data); if ((data & 0x80) && !(m_SOUNDCNT_X & 0x80)) @@ -1429,84 +1429,84 @@ WRITE32_MEMBER(gba_state::gba_io_w) } break; case 0x0088/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: SOUNDBIAS (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x0000ffff, ~mem_mask ); - m_SOUNDBIAS = ( m_SOUNDBIAS & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_SOUNDBIAS); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } break; case 0x0090/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->wave_w(space, 0, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->wave_w(space, 1, data>>8); } - if( (mem_mask) & 0x00ff0000 ) + if( ACCESSING_BITS_16_23 ) { m_gbsound->wave_w(space, 2, data>>16); } - if( (mem_mask) & 0xff000000 ) + if( ACCESSING_BITS_24_31 ) { m_gbsound->wave_w(space, 3, data>>24); } break; case 0x0094/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->wave_w(space, 4, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->wave_w(space, 5, data>>8); } - if( (mem_mask) & 0x00ff0000 ) + if( ACCESSING_BITS_16_23 ) { m_gbsound->wave_w(space, 6, data>>16); } - if( (mem_mask) & 0xff000000 ) + if( ACCESSING_BITS_24_31 ) { m_gbsound->wave_w(space, 7, data>>24); } break; case 0x0098/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->wave_w(space, 8, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->wave_w(space, 9, data>>8); } - if( (mem_mask) & 0x00ff0000 ) + if( ACCESSING_BITS_16_23 ) { m_gbsound->wave_w(space, 0xa, data>>16); } - if( (mem_mask) & 0xff000000 ) + if( ACCESSING_BITS_24_31 ) { m_gbsound->wave_w(space, 0xb, data>>24); } break; case 0x009c/4: - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { m_gbsound->wave_w(space, 0xc, data); } - if( (mem_mask) & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { m_gbsound->wave_w(space, 0xd, data>>8); } - if( (mem_mask) & 0x00ff0000 ) + if( ACCESSING_BITS_16_23 ) { m_gbsound->wave_w(space, 0xe, data>>16); } - if( (mem_mask) & 0xff000000 ) + if( ACCESSING_BITS_24_31 ) { m_gbsound->wave_w(space, 0xf, data>>24); } @@ -1642,31 +1642,31 @@ WRITE32_MEMBER(gba_state::gba_io_w) } break; case 0x0120/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: SIOMULTI0 (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_SIOMULTI0 = ( m_SIOMULTI0 & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_SIOMULTI0); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: SIOMULTI1 (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); m_SIOMULTI1 = ( m_SIOMULTI1 & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0124/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: SIOMULTI2 (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_SIOMULTI2 = ( m_SIOMULTI2 & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_SIOMULTI2); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: SIOMULTI3 (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); m_SIOMULTI3 = ( m_SIOMULTI3 & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0128/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: SIOCNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); // normal mode ? @@ -1683,16 +1683,16 @@ WRITE32_MEMBER(gba_state::gba_io_w) } } } - m_SIOCNT = ( m_SIOCNT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_SIOCNT); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: SIODATA8 (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); m_SIODATA8 = ( m_SIODATA8 & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0130/4: - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { // printf("KEYCNT = %04x\n", data>>16); verboselog(*this, 2, "GBA IO Register Write: KEYCNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); @@ -1700,68 +1700,68 @@ WRITE32_MEMBER(gba_state::gba_io_w) } break; case 0x0134/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: RCNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_RCNT = ( m_RCNT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_RCNT); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: IR (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); m_IR = ( m_IR & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0140/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: JOYCNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_JOYCNT = ( m_JOYCNT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_JOYCNT); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); } break; case 0x0150/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: JOY_RECV_LSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_JOY_RECV = ( m_JOY_RECV & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_JOY_RECV); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: JOY_RECV_MSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); m_JOY_RECV = ( m_JOY_RECV & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0154/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: JOY_TRANS_LSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_JOY_TRANS = ( m_JOY_TRANS & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_JOY_TRANS); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: JOY_TRANS_MSW (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); m_JOY_TRANS = ( m_JOY_TRANS & ( ~mem_mask >> 16 ) ) | ( ( data & mem_mask ) >> 16 ); } break; case 0x0158/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: JOYSTAT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_JOYSTAT = ( m_JOYSTAT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_JOYSTAT); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); } break; case 0x0200/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { // printf("IE (%08x) = %04x raw %x (%08x) (scan %d PC %x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, data, ~mem_mask, machine.first_screen()->vpos(), space.device().safe_pc()); - m_IE = ( m_IE & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_IE); #if 0 if (m_IE & m_IF) { @@ -1769,7 +1769,7 @@ WRITE32_MEMBER(gba_state::gba_io_w) } #endif } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: IF (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ) + 2, ( data & mem_mask ) >> 16, ~mem_mask ); m_IF &= ~( ( data & mem_mask ) >> 16 ); @@ -1782,35 +1782,35 @@ WRITE32_MEMBER(gba_state::gba_io_w) } break; case 0x0204/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 2, "GBA IO Register Write: WAITCNT (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_WAITCNT = ( m_WAITCNT & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_WAITCNT); } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); } break; case 0x0208/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { verboselog(*this, 3, "GBA IO Register Write: IME (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), data & mem_mask, ~mem_mask ); - m_IME = ( m_IME & ~mem_mask ) | ( data & mem_mask ); + COMBINE_DATA(&m_IME); if (m_IF) { m_irq_timer->adjust(attotime::zero); } } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 3, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & mem_mask ) >> 16, ~mem_mask ); } break; case 0x0300/4: - if( (mem_mask) & 0x0000ffff ) + if( ACCESSING_BITS_0_15 ) { - if( (mem_mask) & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { verboselog(*this, 2, "GBA IO Register Write: POSTFLG (%08x) = %02x (%08x)\n", 0x04000000 + ( offset << 2 ), data & 0x000000ff, ~mem_mask ); m_POSTFLG = data & 0x000000ff; @@ -1823,7 +1823,7 @@ WRITE32_MEMBER(gba_state::gba_io_w) m_maincpu->spin_until_interrupt(); } } - if( (mem_mask) & 0xffff0000 ) + if( ACCESSING_BITS_16_31 ) { verboselog(*this, 2, "GBA IO Register Write: UNKNOWN (%08x) = %04x (%08x)\n", 0x04000000 + ( offset << 2 ), ( data & 0xffff0000 ) >> 16, ~mem_mask ); } diff --git a/src/mame/drivers/glass.cpp b/src/mame/drivers/glass.cpp index 5711341018f..285970b54e7 100644 --- a/src/mame/drivers/glass.cpp +++ b/src/mame/drivers/glass.cpp @@ -388,7 +388,7 @@ WRITE16_MEMBER( glass_state::mainram_w ) { // printf("%06x write %06x - %04x %04x\n", pc, (offset*2 + 0xfec000), data, mem_mask); // several checks write here then expect it to appear mirrored, might be some kind of command + command ack - if (mem_mask & 0xff00) // sometimes mask 0xff00, but not in cases which poll for change + if (ACCESSING_BITS_8_15) // sometimes mask 0xff00, but not in cases which poll for change { mem_mask = 0x00ff; data >>=8; diff --git a/src/mame/drivers/juicebox.cpp b/src/mame/drivers/juicebox.cpp index f0e58b3138c..a024b893759 100644 --- a/src/mame/drivers/juicebox.cpp +++ b/src/mame/drivers/juicebox.cpp @@ -223,10 +223,10 @@ WRITE32_MEMBER(juicebox_state::s3c44b0_gpio_port_w) READ32_MEMBER(juicebox_state::juicebox_nand_r) { UINT32 data = 0; - if (mem_mask & 0x000000FF) data = data | (smc_read() << 0); - if (mem_mask & 0x0000FF00) data = data | (smc_read() << 8); - if (mem_mask & 0x00FF0000) data = data | (smc_read() << 16); - if (mem_mask & 0xFF000000) data = data | (smc_read() << 24); + if (ACCESSING_BITS_0_7) data = data | (smc_read() << 0); + if (ACCESSING_BITS_8_15) data = data | (smc_read() << 8); + if (ACCESSING_BITS_16_23) data = data | (smc_read() << 16); + if (ACCESSING_BITS_24_31) data = data | (smc_read() << 24); verboselog( 5, "juicebox_nand_r %08X %08X %08X\n", offset, mem_mask, data); return data; } @@ -234,10 +234,10 @@ READ32_MEMBER(juicebox_state::juicebox_nand_r) WRITE32_MEMBER(juicebox_state::juicebox_nand_w) { verboselog( 5, "juicebox_nand_w %08X %08X %08X\n", offset, mem_mask, data); - if (mem_mask & 0x000000FF) smc_write((data >> 0) & 0xFF); - if (mem_mask & 0x0000FF00) smc_write((data >> 8) & 0xFF); - if (mem_mask & 0x00FF0000) smc_write((data >> 16) & 0xFF); - if (mem_mask & 0xFF000000) smc_write((data >> 24) & 0xFF); + if (ACCESSING_BITS_0_7) smc_write((data >> 0) & 0xFF); + if (ACCESSING_BITS_8_15) smc_write((data >> 8) & 0xFF); + if (ACCESSING_BITS_16_23) smc_write((data >> 16) & 0xFF); + if (ACCESSING_BITS_24_31) smc_write((data >> 24) & 0xFF); } // I2S diff --git a/src/mame/drivers/mpu5.cpp b/src/mame/drivers/mpu5.cpp index 068b54fe23d..c2a5dce88cc 100644 --- a/src/mame/drivers/mpu5.cpp +++ b/src/mame/drivers/mpu5.cpp @@ -121,10 +121,10 @@ READ8_MEMBER(mpu5_state::asic_r8) READ32_MEMBER(mpu5_state::asic_r32) { UINT32 retdata = 0; - if (mem_mask&0xff000000) retdata |= asic_r8(space,(offset*4)+0) <<24; - if (mem_mask&0x00ff0000) retdata |= asic_r8(space,(offset*4)+1) <<16; - if (mem_mask&0x0000ff00) retdata |= asic_r8(space,(offset*4)+2) <<8; - if (mem_mask&0x000000ff) retdata |= asic_r8(space,(offset*4)+3) <<0; + if (ACCESSING_BITS_24_31) retdata |= asic_r8(space,(offset*4)+0) <<24; + if (ACCESSING_BITS_16_23) retdata |= asic_r8(space,(offset*4)+1) <<16; + if (ACCESSING_BITS_8_15) retdata |= asic_r8(space,(offset*4)+2) <<8; + if (ACCESSING_BITS_0_7) retdata |= asic_r8(space,(offset*4)+3) <<0; return retdata; } @@ -255,10 +255,10 @@ WRITE8_MEMBER(mpu5_state::asic_w8) WRITE32_MEMBER(mpu5_state::asic_w32) { - if (mem_mask&0xff000000) asic_w8(space,(offset*4)+0, (data>>24)&0xff); - if (mem_mask&0x00ff0000) asic_w8(space,(offset*4)+1, (data>>16)&0xff); - if (mem_mask&0x0000ff00) asic_w8(space,(offset*4)+2, (data>>8) &0xff); - if (mem_mask&0x000000ff) asic_w8(space,(offset*4)+3, (data>>0) &0xff); + if (ACCESSING_BITS_24_31) asic_w8(space,(offset*4)+0, (data>>24)&0xff); + if (ACCESSING_BITS_16_23) asic_w8(space,(offset*4)+1, (data>>16)&0xff); + if (ACCESSING_BITS_8_15) asic_w8(space,(offset*4)+2, (data>>8) &0xff); + if (ACCESSING_BITS_0_7) asic_w8(space,(offset*4)+3, (data>>0) &0xff); } diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp index fd360c13f00..33e43c44051 100644 --- a/src/mame/drivers/namcos22.cpp +++ b/src/mame/drivers/namcos22.cpp @@ -1582,7 +1582,7 @@ READ32_MEMBER(namcos22_state::namcos22_dspram_r) WRITE32_MEMBER(namcos22_state::namcos22_dspram_w) { - if (mem_mask & 0x00ff0000) + if (ACCESSING_BITS_16_23) { // only d0-23 are connected mem_mask |= 0xff000000; diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp index 63778115301..0d2dbac5add 100644 --- a/src/mame/drivers/ngen.cpp +++ b/src/mame/drivers/ngen.cpp @@ -283,32 +283,32 @@ WRITE16_MEMBER(ngen_state::peripheral_w) case 0x0d: case 0x0e: case 0x0f: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_dmac->write(space,offset,data & 0xff); break; case 0x80: // DMA page offset? case 0x81: case 0x82: case 0x83: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_dma_offset[offset-0x80] = data & 0xff; break; case 0xc0: // X-Bus modules reset m_xbus_current = 0; break; case 0x10c: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_pic->write(space,0,data & 0xff); break; case 0x10d: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_pic->write(space,1,data & 0xff); break; case 0x110: case 0x111: case 0x112: case 0x113: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_pit->write(space,offset-0x110,data & 0xff); break; case 0x141: @@ -316,19 +316,19 @@ WRITE16_MEMBER(ngen_state::peripheral_w) COMBINE_DATA(&m_periph141); break; case 0x144: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_crtc->address_w(space,0,data & 0xff); break; case 0x145: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_crtc->register_w(space,0,data & 0xff); break; case 0x146: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_viduart->data_w(space,0,data & 0xff); break; case 0x147: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_viduart->control_w(space,0,data & 0xff); break; case 0x1a0: // serial? @@ -360,7 +360,7 @@ READ16_MEMBER(ngen_state::peripheral_r) case 0x0d: case 0x0e: case 0x0f: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_dmac->read(space,offset); logerror("DMA read offset %04x mask %04x returning %04x\n",offset,mem_mask,ret); break; @@ -368,42 +368,42 @@ READ16_MEMBER(ngen_state::peripheral_r) case 0x81: case 0x82: case 0x83: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_dma_offset[offset-0x80] & 0xff; break; case 0x10c: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_pic->read(space,0); break; case 0x10d: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_pic->read(space,1); break; case 0x110: case 0x111: case 0x112: case 0x113: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_pit->read(space,offset-0x110); break; case 0x141: ret = m_periph141; break; case 0x144: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_crtc->status_r(space,0); break; case 0x145: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_crtc->register_r(space,0); break; case 0x146: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_viduart->data_r(space,0); break; case 0x147: // keyboard UART // expects bit 0 to be set (UART transmit ready) - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_viduart->status_r(space,0); break; case 0x1a0: // I/O control register? @@ -478,11 +478,11 @@ WRITE16_MEMBER(ngen_state::hfd_w) case 0x00: case 0x01: case 0x02: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_fdc->write(space,offset,data & 0xff); break; case 0x03: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) { m_fdc->write(space,offset,data & 0xff); m_fdc_timer->write_clk0(1); @@ -490,22 +490,22 @@ WRITE16_MEMBER(ngen_state::hfd_w) } break; case 0x04: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) fdc_control_w(space,0,data & 0xff); break; case 0x05: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) hdc_control_w(space,0,data & 0xff); break; case 0x07: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) disk_addr_ext(space,0,data & 0xff); break; case 0x08: case 0x09: case 0x0a: case 0x0b: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_fdc_timer->write(space,offset-0x08,data & 0xff); break; case 0x10: @@ -516,7 +516,7 @@ WRITE16_MEMBER(ngen_state::hfd_w) case 0x15: case 0x16: case 0x17: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_hdc->write(space,offset-0x10,data & 0xff); logerror("WD1010 register %i write %02x mask %04x\n",offset-0x10,data & 0xff,mem_mask); break; @@ -524,7 +524,7 @@ WRITE16_MEMBER(ngen_state::hfd_w) case 0x19: case 0x1a: case 0x1b: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_hdc_timer->write(space,offset-0x18,data & 0xff); break; } @@ -539,11 +539,11 @@ READ16_MEMBER(ngen_state::hfd_r) case 0x00: case 0x01: case 0x02: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_fdc->read(space,offset); break; case 0x03: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) { ret = m_fdc->read(space,offset); m_fdc_timer->write_clk0(1); @@ -554,7 +554,7 @@ READ16_MEMBER(ngen_state::hfd_r) case 0x09: case 0x0a: case 0x0b: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_fdc_timer->read(space,offset-0x08); break; case 0x10: @@ -565,7 +565,7 @@ READ16_MEMBER(ngen_state::hfd_r) case 0x15: case 0x16: case 0x17: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_hdc->read(space,offset-0x10); logerror("WD1010 register %i read, mask %04x\n",offset-0x10,mem_mask); break; @@ -573,7 +573,7 @@ READ16_MEMBER(ngen_state::hfd_r) case 0x19: case 0x1a: case 0x1b: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_hdc_timer->read(space,offset-0x18); break; } @@ -769,12 +769,12 @@ READ16_MEMBER( ngen_state::b38_keyboard_r ) switch(offset) { case 0: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_viduart->data_r(space,0); break; case 1: // keyboard UART // expects bit 0 to be set (UART transmit ready) - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_viduart->status_r(space,0); break; } @@ -786,11 +786,11 @@ WRITE16_MEMBER( ngen_state::b38_keyboard_w ) switch(offset) { case 0: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_viduart->data_w(space,0,data & 0xff); break; case 1: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_viduart->control_w(space,0,data & 0xff); break; } @@ -802,11 +802,11 @@ READ16_MEMBER( ngen_state::b38_crtc_r ) switch(offset) { case 0: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_crtc->register_r(space,0); break; case 1: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) ret = m_viduart->data_r(space,0); break; } @@ -818,11 +818,11 @@ WRITE16_MEMBER( ngen_state::b38_crtc_w ) switch(offset) { case 0: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_crtc->address_w(space,0,data & 0xff); break; case 1: - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) m_crtc->register_w(space,0,data & 0xff); break; } diff --git a/src/mame/drivers/plygonet.cpp b/src/mame/drivers/plygonet.cpp index 4feea095396..2082fbb9811 100644 --- a/src/mame/drivers/plygonet.cpp +++ b/src/mame/drivers/plygonet.cpp @@ -236,13 +236,13 @@ WRITE32_MEMBER(polygonet_state::shared_ram_write) } /* write to the current dsp56k word */ - if (mem_mask & 0xffff0000) + if (ACCESSING_BITS_16_31) { m_dsp56k_shared_ram_16[(offset<<1)] = (m_shared_ram[offset] & 0xffff0000) >> 16 ; } /* write to the next dsp56k word */ - if (mem_mask & 0x0000ffff) + if (ACCESSING_BITS_0_15) { m_dsp56k_shared_ram_16[(offset<<1)+1] = (m_shared_ram[offset] & 0x0000ffff) ; } diff --git a/src/mame/drivers/segapico.cpp b/src/mame/drivers/segapico.cpp index 1df769c0363..fa953d8a9cf 100644 --- a/src/mame/drivers/segapico.cpp +++ b/src/mame/drivers/segapico.cpp @@ -330,8 +330,8 @@ WRITE16_MEMBER(pico_base_state::pico_68k_io_write ) m_sega_315_5641_pcm->reset_w(1); m_sega_315_5641_pcm->start_w(1); - if (mem_mask&0x00ff) m_sega_315_5641_pcm->port_w(space,0,data&0xff); - if (mem_mask&0xff00) m_sega_315_5641_pcm->port_w(space,0,(data>>8)&0xff);*/ + if (ACCESSING_BITS_0_7) m_sega_315_5641_pcm->port_w(space,0,data&0xff); + if (ACCESSING_BITS_8_15) m_sega_315_5641_pcm->port_w(space,0,(data>>8)&0xff);*/ break; } diff --git a/src/mame/drivers/segasp.cpp b/src/mame/drivers/segasp.cpp index ed1d4a91a2f..6f51857d51b 100644 --- a/src/mame/drivers/segasp.cpp +++ b/src/mame/drivers/segasp.cpp @@ -79,14 +79,14 @@ G 171-8278G 315-6416 2x 512Mbit RMI READ64_MEMBER(segasp_state::sp_bank_r) { - if (mem_mask & U64(0xffffffff00000000)) + if (ACCESSING_BITS_32_63) return -1; return m_sp_bank; } WRITE64_MEMBER(segasp_state::sp_bank_w) { - if (mem_mask & U64(0xffffffff00000000)) + if (ACCESSING_BITS_32_63) return; UINT16 bank = data & 0xffff; if (bank != m_sp_bank) @@ -116,14 +116,14 @@ WRITE64_MEMBER(segasp_state::sn_93c46a_w) READ64_MEMBER(segasp_state::sp_eeprom_r) { - if (mem_mask & U64(0xffffffff00000000)) + if (ACCESSING_BITS_32_63) return -1; return m_sp_eeprom->do_read() << 4; } WRITE64_MEMBER(segasp_state::sp_eeprom_w) { - if (mem_mask & U64(0xffffffff00000000)) + if (ACCESSING_BITS_32_63) return; m_sp_eeprom->di_write(data & 1); m_sp_eeprom->cs_write((data & 2) ? ASSERT_LINE : CLEAR_LINE); @@ -144,7 +144,7 @@ READ64_MEMBER(segasp_state::sp_io_r) int reg = offset * 2; int shift = 0; - if (mem_mask & U64(0xffffffff00000000)) + if (ACCESSING_BITS_32_63) { reg++; shift = 32; diff --git a/src/mame/drivers/supracan.cpp b/src/mame/drivers/supracan.cpp index 3e4c00d964f..1679a167351 100644 --- a/src/mame/drivers/supracan.cpp +++ b/src/mame/drivers/supracan.cpp @@ -1368,13 +1368,13 @@ WRITE16_MEMBER( supracan_state::_68k_soundram_w ) if(offset*2 < 0x500 && offset*2 >= 0x300) { - if(mem_mask & 0xff00) + if(ACCESSING_BITS_8_15) { m_hack_68k_to_6502_access = true; _6502_soundmem_w(mem, offset*2, data >> 8); m_hack_68k_to_6502_access = false; } - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) { m_hack_68k_to_6502_access = true; _6502_soundmem_w(mem, offset*2 + 1, data & 0xff); @@ -1392,13 +1392,13 @@ READ16_MEMBER( supracan_state::_68k_soundram_r ) if(offset*2 >= 0x300 && offset*2 < 0x500) { val = 0; - if(mem_mask & 0xff00) + if(ACCESSING_BITS_8_15) { m_hack_68k_to_6502_access = true; val |= _6502_soundmem_r(mem, offset*2) << 8; m_hack_68k_to_6502_access = false; } - if(mem_mask & 0x00ff) + if(ACCESSING_BITS_0_7) { m_hack_68k_to_6502_access = true; val |= _6502_soundmem_r(mem, offset*2 + 1); diff --git a/src/mame/drivers/tek440x.cpp b/src/mame/drivers/tek440x.cpp old mode 100755 new mode 100644 diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp index 269dafacfd3..6dde2254705 100644 --- a/src/mame/drivers/vegas.cpp +++ b/src/mame/drivers/vegas.cpp @@ -666,13 +666,13 @@ WRITE32_MEMBER( vegas_state::timekeeper_w ) { if (m_cmos_unlocked) { - if ((mem_mask & 0x000000ff) != 0) + if (ACCESSING_BITS_0_7) m_timekeeper->write(space, offset * 4 + 0, data >> 0, 0xff); - if ((mem_mask & 0x0000ff00) != 0) + if (ACCESSING_BITS_8_15) m_timekeeper->write(space, offset * 4 + 1, data >> 8, 0xff); - if ((mem_mask & 0x00ff0000) != 0) + if (ACCESSING_BITS_16_23) m_timekeeper->write(space, offset * 4 + 2, data >> 16, 0xff); - if ((mem_mask & 0xff000000) != 0) + if (ACCESSING_BITS_24_31) m_timekeeper->write(space, offset * 4 + 3, data >> 24, 0xff); if (offset*4 >= 0x7ff0) if (LOG_TIMEKEEPER) logerror("timekeeper_w(%04X & %08X) = %08X\n", offset*4, mem_mask, data); @@ -686,13 +686,13 @@ WRITE32_MEMBER( vegas_state::timekeeper_w ) READ32_MEMBER( vegas_state::timekeeper_r ) { UINT32 result = 0xffffffff; - if ((mem_mask & 0x000000ff) != 0) + if (ACCESSING_BITS_0_7) result = (result & ~0x000000ff) | (m_timekeeper->read(space, offset * 4 + 0, 0xff) << 0); - if ((mem_mask & 0x0000ff00) != 0) + if (ACCESSING_BITS_8_15) result = (result & ~0x0000ff00) | (m_timekeeper->read(space, offset * 4 + 1, 0xff) << 8); - if ((mem_mask & 0x00ff0000) != 0) + if (ACCESSING_BITS_16_23) result = (result & ~0x00ff0000) | (m_timekeeper->read(space, offset * 4 + 2, 0xff) << 16); - if ((mem_mask & 0xff000000) != 0) + if (ACCESSING_BITS_24_31) result = (result & ~0xff000000) | (m_timekeeper->read(space, offset * 4 + 3, 0xff) << 24); if (offset*4 >= 0x7ff0) if (LOG_TIMEKEEPER) logerror("timekeeper_r(%04X & %08X) = %08X\n", offset*4, mem_mask, result); diff --git a/src/mame/machine/apollo.cpp b/src/mame/machine/apollo.cpp index abd6f7c7622..8adf11a98c5 100644 --- a/src/mame/machine/apollo.cpp +++ b/src/mame/machine/apollo.cpp @@ -276,7 +276,7 @@ WRITE16_MEMBER(apollo_state::apollo_csr_control_register_w) } } - cpu_control_register = (cpu_control_register & ~mem_mask) | (data & mem_mask); + COMBINE_DATA(&cpu_control_register); output().set_value("internal_led_1", (cpu_control_register >> 15) & 1); output().set_value("internal_led_2", (cpu_control_register >> 14) & 1); diff --git a/src/mame/machine/bebox.cpp b/src/mame/machine/bebox.cpp index d5f99d9d0a7..c13fa303c8b 100644 --- a/src/mame/machine/bebox.cpp +++ b/src/mame/machine/bebox.cpp @@ -622,28 +622,28 @@ READ64_MEMBER(bebox_state::scsi53c810_r ) { int reg = offset*8; UINT64 r = 0; - if (!(mem_mask & U64(0xff00000000000000))) { + if (!ACCESSING_BITS_56_63) { r |= (UINT64)m_lsi53c810->lsi53c810_reg_r(reg+0) << 56; } - if (!(mem_mask & U64(0x00ff000000000000))) { + if (!ACCESSING_BITS_48_55) { r |= (UINT64)m_lsi53c810->lsi53c810_reg_r(reg+1) << 48; } - if (!(mem_mask & U64(0x0000ff0000000000))) { + if (!ACCESSING_BITS_40_47) { r |= (UINT64)m_lsi53c810->lsi53c810_reg_r(reg+2) << 40; } - if (!(mem_mask & U64(0x000000ff00000000))) { + if (!ACCESSING_BITS_32_39) { r |= (UINT64)m_lsi53c810->lsi53c810_reg_r(reg+3) << 32; } - if (!(mem_mask & U64(0x00000000ff000000))) { + if (!ACCESSING_BITS_24_31) { r |= (UINT64)m_lsi53c810->lsi53c810_reg_r(reg+4) << 24; } - if (!(mem_mask & U64(0x0000000000ff0000))) { + if (!ACCESSING_BITS_16_23) { r |= (UINT64)m_lsi53c810->lsi53c810_reg_r(reg+5) << 16; } - if (!(mem_mask & U64(0x000000000000ff00))) { + if (!ACCESSING_BITS_8_15) { r |= (UINT64)m_lsi53c810->lsi53c810_reg_r(reg+6) << 8; } - if (!(mem_mask & U64(0x00000000000000ff))) { + if (!ACCESSING_BITS_0_7) { r |= (UINT64)m_lsi53c810->lsi53c810_reg_r(reg+7) << 0; } @@ -654,28 +654,28 @@ READ64_MEMBER(bebox_state::scsi53c810_r ) WRITE64_MEMBER(bebox_state::scsi53c810_w ) { int reg = offset*8; - if (!(mem_mask & U64(0xff00000000000000))) { + if (!ACCESSING_BITS_56_63) { m_lsi53c810->lsi53c810_reg_w(reg+0, data >> 56); } - if (!(mem_mask & U64(0x00ff000000000000))) { + if (!ACCESSING_BITS_48_55) { m_lsi53c810->lsi53c810_reg_w(reg+1, data >> 48); } - if (!(mem_mask & U64(0x0000ff0000000000))) { + if (!ACCESSING_BITS_40_47) { m_lsi53c810->lsi53c810_reg_w(reg+2, data >> 40); } - if (!(mem_mask & U64(0x000000ff00000000))) { + if (!ACCESSING_BITS_32_39) { m_lsi53c810->lsi53c810_reg_w(reg+3, data >> 32); } - if (!(mem_mask & U64(0x00000000ff000000))) { + if (!ACCESSING_BITS_24_31) { m_lsi53c810->lsi53c810_reg_w(reg+4, data >> 24); } - if (!(mem_mask & U64(0x0000000000ff0000))) { + if (!ACCESSING_BITS_16_23) { m_lsi53c810->lsi53c810_reg_w(reg+5, data >> 16); } - if (!(mem_mask & U64(0x000000000000ff00))) { + if (!ACCESSING_BITS_8_15) { m_lsi53c810->lsi53c810_reg_w(reg+6, data >> 8); } - if (!(mem_mask & U64(0x00000000000000ff))) { + if (!ACCESSING_BITS_0_7) { m_lsi53c810->lsi53c810_reg_w(reg+7, data >> 0); } } diff --git a/src/mame/machine/dc.cpp b/src/mame/machine/dc.cpp index 913567116b7..e74d9757967 100644 --- a/src/mame/machine/dc.cpp +++ b/src/mame/machine/dc.cpp @@ -271,7 +271,7 @@ int dc_state::decode_reg3216_64(UINT32 offset, UINT64 mem_mask, UINT64 *shift) //machine().debug_break(); } - if (mem_mask & U64(0x0000ffff00000000)) + if (ACCESSING_BITS_32_47) { reg++; *shift = 32; diff --git a/src/mame/machine/m3comm.cpp b/src/mame/machine/m3comm.cpp index 4671375eea9..bcacd9e2b04 100644 --- a/src/mame/machine/m3comm.cpp +++ b/src/mame/machine/m3comm.cpp @@ -318,10 +318,10 @@ WRITE16_MEMBER(m3comm_device::ioregs_w) send_size = (send_size >> 8) | (data << 8); break; case 0x88 / 2: - m_status0 = (m_status0 & ~mem_mask) | (data & mem_mask); + COMBINE_DATA(&m_status0); break; case 0x8A / 2: - m_status1 = (m_status1 & ~mem_mask) | (data & mem_mask); + COMBINE_DATA(&m_status1); break; case 0xC0 / 2: m_commcpu->set_input_line(INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE); diff --git a/src/mame/machine/n64.cpp b/src/mame/machine/n64.cpp index df66c953d9b..3feebf44431 100644 --- a/src/mame/machine/n64.cpp +++ b/src/mame/machine/n64.cpp @@ -2682,19 +2682,19 @@ READ32_MEMBER( n64_periphs::pif_ram_r ) WRITE32_MEMBER( n64_periphs::pif_ram_w ) { - if( mem_mask & 0xff000000 ) + if( ACCESSING_BITS_24_31 ) { pif_ram[offset*4+0] = ( data >> 24 ) & 0x000000ff; } - if( mem_mask & 0x00ff0000 ) + if( ACCESSING_BITS_16_23 ) { pif_ram[offset*4+1] = ( data >> 16 ) & 0x000000ff; } - if( mem_mask & 0x0000ff00 ) + if( ACCESSING_BITS_8_15 ) { pif_ram[offset*4+2] = ( data >> 8 ) & 0x000000ff; } - if( mem_mask & 0x000000ff ) + if( ACCESSING_BITS_0_7 ) { pif_ram[offset*4+3] = ( data >> 0 ) & 0x000000ff; } diff --git a/src/mame/machine/segas32.cpp b/src/mame/machine/segas32.cpp index da3efbbafb6..f2124c8c996 100644 --- a/src/mame/machine/segas32.cpp +++ b/src/mame/machine/segas32.cpp @@ -104,7 +104,7 @@ WRITE16_MEMBER(segas32_state::sonic_level_load_protection) { UINT16 level; //Perform write - m_system32_workram[CLEARED_LEVELS / 2] = (data & mem_mask) | (m_system32_workram[CLEARED_LEVELS / 2] & ~mem_mask); + COMBINE_DATA(&m_system32_workram[CLEARED_LEVELS / 2]); //Refresh current level if (m_system32_workram[CLEARED_LEVELS / 2] == 0) diff --git a/src/mame/machine/stvprot.cpp b/src/mame/machine/stvprot.cpp index d71f6219a04..26d48e8dfd8 100644 --- a/src/mame/machine/stvprot.cpp +++ b/src/mame/machine/stvprot.cpp @@ -70,8 +70,8 @@ WRITE32_MEMBER ( stv_state::common_prot_w ) } else if(offset == 2) { - if (mem_mask&0xffff0000) m_cryptdevice->set_addr_low(data >> 16); - if (mem_mask&0x0000ffff) m_cryptdevice->set_addr_high(data&0xffff); + if (ACCESSING_BITS_16_31) m_cryptdevice->set_addr_low(data >> 16); + if (ACCESSING_BITS_0_15) m_cryptdevice->set_addr_high(data&0xffff); } else if(offset == 3) diff --git a/src/mame/video/jaguar.cpp b/src/mame/video/jaguar.cpp index 15a016389bb..29c5ce1b50c 100644 --- a/src/mame/video/jaguar.cpp +++ b/src/mame/video/jaguar.cpp @@ -543,7 +543,7 @@ READ32_MEMBER( jaguar_state::blitter_r ) WRITE32_MEMBER( jaguar_state::blitter_w ) { COMBINE_DATA(&m_blitter_regs[offset]); - if ((offset == B_CMD) && (mem_mask & 0x0000ffff)) + if ((offset == B_CMD) && ACCESSING_BITS_0_15) { m_blitter_status = 0; int inner_count = m_blitter_regs[B_COUNT] & 0xffff; diff --git a/src/mame/video/kaneko_tmap.cpp b/src/mame/video/kaneko_tmap.cpp index 634753975c0..6a7e0fd5000 100644 --- a/src/mame/video/kaneko_tmap.cpp +++ b/src/mame/video/kaneko_tmap.cpp @@ -315,7 +315,7 @@ WRITE16_MEMBER( kaneko_view2_tilemap_device::kaneko_tmap_regs_w ) /* some weird logic needed for Gals Panic on the EXPRO02 board */ WRITE16_MEMBER(kaneko_view2_tilemap_device::galsnew_vram_0_tilebank_w) { - if (mem_mask & 0x00ff) + if (ACCESSING_BITS_0_7) { int val = (data & 0x00ff)<<8; @@ -329,7 +329,7 @@ WRITE16_MEMBER(kaneko_view2_tilemap_device::galsnew_vram_0_tilebank_w) WRITE16_MEMBER(kaneko_view2_tilemap_device::galsnew_vram_1_tilebank_w) { - if (mem_mask & 0x00ff) + if (ACCESSING_BITS_0_7) { int val = (data & 0x00ff)<<8; From e7b32f3a40e7309505eaf9bf3f975169d643518a Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Thu, 11 Aug 2016 11:37:39 +1000 Subject: [PATCH 110/116] add override qualifier --- src/devices/machine/hdc92x4.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/machine/hdc92x4.h b/src/devices/machine/hdc92x4.h index 899c3b955a0..fc862101919 100644 --- a/src/devices/machine/hdc92x4.h +++ b/src/devices/machine/hdc92x4.h @@ -487,7 +487,7 @@ public: hdc9224_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - int step_time(); + int step_time() override; }; class hdc9234_device : public hdc92x4_device @@ -496,7 +496,7 @@ public: hdc9234_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: - int step_time(); + int step_time() override; }; #endif From 2d157fd957f7de13e5f3cf3e4d500d4a3edfeca6 Mon Sep 17 00:00:00 2001 From: briantro Date: Thu, 11 Aug 2016 00:06:52 -0500 Subject: [PATCH 111/116] New Metamorpic Force clone New Clone Added ----------------------------------------------- Metamorphic Force (ver AAA) [Abelardo Vidal] --- src/mame/drivers/mystwarr.cpp | 42 +++++++++++++++++++++++++++++++++-- src/mame/mame.lst | 3 ++- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp index a552f78e3b4..3d2ec6f3c07 100644 --- a/src/mame/drivers/mystwarr.cpp +++ b/src/mame/drivers/mystwarr.cpp @@ -1684,7 +1684,7 @@ ROM_START( metamrph ) ROM_LOAD( "metamrph.nv", 0x0000, 0x080, CRC(2c51229a) SHA1(7f056792cc44ec3d4aacc33c825ab796a913488e) ) ROM_END -ROM_START( metamrpha ) /* alternate set - possibly a bugfix version. Only 2 adjusted bytes causing a swap in commands */ +ROM_START( metamrphe ) /* alternate set - possibly a bugfix version. Only 2 adjusted bytes causing a swap in commands */ /* main program */ ROM_REGION( 0x200000, "maincpu", 0 ) ROM_LOAD16_BYTE( "3.15h", 0x000001, 0x40000, CRC(8b9f1ba3) SHA1(cccbaf117800a030c8218a91740dc98182a27901) ) @@ -1721,6 +1721,43 @@ ROM_START( metamrpha ) /* alternate set - possibly a bugfix version. Only 2 adju ROM_LOAD( "metamrph.nv", 0x0000, 0x080, CRC(2c51229a) SHA1(7f056792cc44ec3d4aacc33c825ab796a913488e) ) ROM_END +ROM_START( metamrpha ) + /* main program */ + ROM_REGION( 0x200000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "224aaa01.15h", 0x000001, 0x40000, CRC(12515518) SHA1(7c47ce7ee9817b5f3f516dda021028a0b0a2941f) ) + ROM_LOAD16_BYTE( "224aaa02.15f", 0x000000, 0x40000, CRC(04ed41df) SHA1(a966aa887f286b528d122aceee957ca2d9fdedb6) ) + ROM_LOAD16_BYTE( "224a03", 0x100001, 0x80000, CRC(a5bedb01) SHA1(5e7a0b93af654ba6a87be8d449c7080a0f0e2a43) ) + ROM_LOAD16_BYTE( "224a04", 0x100000, 0x80000, CRC(ada53ba4) SHA1(f77bf854dff1f8f718579fe6d3730066708396e2) ) + + /* sound program */ + ROM_REGION( 0x40000, "soundcpu", 0 ) + ROM_LOAD("224a05", 0x000000, 0x40000, CRC(4b4c985c) SHA1(c83cce05355023be9cd55b4aa595c61f8236269c) ) + + /* tiles */ + ROM_REGION( 0x500000, "gfx1", ROMREGION_ERASE00 ) + ROM_LOADTILE_WORD( "224a09", 0x000000, 1*1024*1024, CRC(1931afce) SHA1(78838c0fd2a9c80f130db1fcf6c88b14f7363639) ) + ROM_LOADTILE_WORD( "224a08", 0x000002, 1*1024*1024, CRC(dc94d53a) SHA1(91e16371a335f078a81c06a1045759653080aba0) ) + + /* sprites */ + ROM_REGION( 0x800000, "gfx2", ROMREGION_ERASE00 ) + ROM_LOAD64_WORD( "224a10", 0x000000, 2*1024*1024, CRC(161287f0) SHA1(a13b197a98fa1cebb11fb87b54e277c72852c4ee) ) + ROM_LOAD64_WORD( "224a11", 0x000002, 2*1024*1024, CRC(df5960e1) SHA1(ee7794dd119f5f2c52e7ba589d78067a89ff3cab) ) + ROM_LOAD64_WORD( "224a12", 0x000004, 2*1024*1024, CRC(ca72a4b3) SHA1(a09deb6d7cb8be4edaeb78e0e676ea2d6055e9e0) ) + ROM_LOAD64_WORD( "224a13", 0x000006, 2*1024*1024, CRC(86b58feb) SHA1(5a43746e2cd3c7aca21496c092aef83e64b3ab2c) ) + + /* K053250 linescroll/zoom thingy */ + ROM_REGION( 0x40000, "k053250_1", 0 ) + ROM_LOAD( "224a14", 0x000000, 0x40000, CRC(3c79b404) SHA1(7c6bb4cbf050f314ea0cd3e8bc6e1947d0573084) ) + + /* sound data */ + ROM_REGION( 0x400000, "shared", 0 ) + ROM_LOAD( "224a06", 0x000000, 2*1024*1024, CRC(972f6abe) SHA1(30907495fc49fe3424c092b074c1dc137aa14306) ) + ROM_LOAD( "224a07", 0x200000, 1*1024*1024, CRC(61b2f97a) SHA1(34bf835d6361c7809d40fa20fd238c9e2a84b101) ) + + ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error + ROM_LOAD( "metamrpha.nv", 0x0000, 0x080, CRC(6d34a4f2) SHA1(6ec2645ee4375d4924c3cfed2285224af6d19f4c) ) +ROM_END + ROM_START( metamrphu ) /* main program */ ROM_REGION( 0x200000, "maincpu", 0 ) @@ -2271,9 +2308,10 @@ GAME( 1993, viostorma, viostorm, viostorm, viostorm, driver_device, 0, ROT0, " GAME( 1993, viostormab, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver AAB)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1993, metamrph, 0, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1993, metamrpha, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver EAA - alternate)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, metamrphe, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver EAA - alternate)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1993, metamrphu, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver UAA)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1993, metamrphj, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver JAA)", MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1993, metamrpha, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver AAA)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1993, mtlchamp, 0, martchmp, martchmp, driver_device, 0, ROT0, "Konami", "Martial Champion (ver EAB)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1993, mtlchamp1, mtlchamp, martchmp, martchmp, driver_device, 0, ROT0, "Konami", "Martial Champion (ver EAA)", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 7c84a768aed..45913225d55 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -27470,7 +27470,8 @@ gaiapols // GX123 (c) 1993 (Europe) gaiapolsj // GX123 (c) 1993 (Japan) gaiapolsu // GX123 (c) 1993 (US) metamrph // GX224 (c) 1993 (Europe) -metamrpha // GX224 (c) 1993 (Europe) - Alternate +metamrpha // GX224 (c) 1993 (Asia) +metamrphe // GX224 (c) 1993 (Europe) - Alternate metamrphj // GX224 (c) 1993 (Japan) metamrphu // GX224 (c) 1993 (US) mmaulers // GX170 (c) 1993 (Europe) From 74fc59935f8c80fd1477c7c447c3b1090a6bdf66 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Thu, 11 Aug 2016 09:23:53 +0300 Subject: [PATCH 112/116] wangpc: Fixed keyboard error on POST. [Curt Coder] im6402: Reset receive/transmit registers after data frame is changed. [Curt Coder] --- src/devices/machine/im6402.cpp | 3 + src/mame/drivers/wangpc.cpp | 4 +- src/mame/machine/wangpckb.cpp | 161 ++++++++++++++++++++++----------- src/mame/machine/wangpckb.h | 22 +++-- 4 files changed, 129 insertions(+), 61 deletions(-) diff --git a/src/devices/machine/im6402.cpp b/src/devices/machine/im6402.cpp index f713a048517..4d3a7696b46 100644 --- a/src/devices/machine/im6402.cpp +++ b/src/devices/machine/im6402.cpp @@ -340,6 +340,9 @@ WRITE_LINE_MEMBER( im6402_device::crl_w ) else parity = PARITY_ODD; set_data_frame(1, data_bit_count, parity, stop_bits); + + receive_register_reset(); + transmit_register_reset(); } } diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp index 59b7adf40f1..2b43d59b194 100644 --- a/src/mame/drivers/wangpc.cpp +++ b/src/mame/drivers/wangpc.cpp @@ -1109,8 +1109,8 @@ static MACHINE_CONFIG_START( wangpc, wangpc_state ) MCFG_PIT8253_CLK2(500000) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(wangpc_state, pit2_w)) - MCFG_IM6402_ADD(IM6402_TAG, 0, 62500*16) // HACK for wangpckb in IM6402 derives clocks from data line - MCFG_IM6402_TRO_CALLBACK(DEVWRITELINE(WANGPC_KEYBOARD_TAG, wangpc_keyboard_device, write_rxd)) + MCFG_IM6402_ADD(IM6402_TAG, 62500*16, 62500*16) + MCFG_IM6402_TRO_CALLBACK(DEVWRITELINE(WANGPC_KEYBOARD_TAG, wangpc_keyboard_t, write_rxd)) MCFG_IM6402_DR_CALLBACK(WRITELINE(wangpc_state, uart_dr_w)) MCFG_IM6402_TBRE_CALLBACK(WRITELINE(wangpc_state, uart_tbre_w)) diff --git a/src/mame/machine/wangpckb.cpp b/src/mame/machine/wangpckb.cpp index 76f59922cff..bd636b2eadd 100644 --- a/src/mame/machine/wangpckb.cpp +++ b/src/mame/machine/wangpckb.cpp @@ -68,7 +68,7 @@ Notes: // DEVICE DEFINITIONS //************************************************************************** -const device_type WANGPC_KEYBOARD = &device_creator; +const device_type WANGPC_KEYBOARD = &device_creator; @@ -86,7 +86,7 @@ ROM_END // rom_region - device-specific ROM region //------------------------------------------------- -const tiny_rom_entry *wangpc_keyboard_device::device_rom_region() const +const tiny_rom_entry *wangpc_keyboard_t::device_rom_region() const { return ROM_NAME( wangpc_keyboard ); } @@ -96,7 +96,7 @@ const tiny_rom_entry *wangpc_keyboard_device::device_rom_region() const // ADDRESS_MAP( wangpc_keyboard_io ) //------------------------------------------------- -static ADDRESS_MAP_START( wangpc_keyboard_io, AS_IO, 8, wangpc_keyboard_device ) +static ADDRESS_MAP_START( wangpc_keyboard_io, AS_IO, 8, wangpc_keyboard_t ) //AM_RANGE(0x0000, 0xfeff) AM_READNOP AM_RANGE(0x47, 0x58) AM_MIRROR(0xff00) AM_READNOP AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_DEVWRITE(SN76496_TAG, sn76496_device, write) @@ -113,8 +113,8 @@ ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( wangpc_keyboard ) MCFG_CPU_ADD(I8051_TAG, I8051, XTAL_4MHz) MCFG_CPU_IO_MAP(wangpc_keyboard_io) - MCFG_MCS51_SERIAL_TX_CB(WRITE8(wangpc_keyboard_device, mcs51_tx_callback)) - MCFG_MCS51_SERIAL_RX_CB(READ8(wangpc_keyboard_device, mcs51_rx_callback)) + MCFG_MCS51_SERIAL_TX_CB(WRITE8(wangpc_keyboard_t, mcs51_tx_callback)) + MCFG_MCS51_SERIAL_RX_CB(READ8(wangpc_keyboard_t, mcs51_rx_callback)) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") @@ -128,7 +128,7 @@ MACHINE_CONFIG_END // machine configurations //------------------------------------------------- -machine_config_constructor wangpc_keyboard_device::device_mconfig_additions() const +machine_config_constructor wangpc_keyboard_t::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( wangpc_keyboard ); } @@ -357,7 +357,7 @@ INPUT_PORTS_END // input_ports - device-specific input ports //------------------------------------------------- -ioport_constructor wangpc_keyboard_device::device_input_ports() const +ioport_constructor wangpc_keyboard_t::device_input_ports() const { return INPUT_PORTS_NAME( wangpc_keyboard ); } @@ -369,30 +369,30 @@ ioport_constructor wangpc_keyboard_device::device_input_ports() const //************************************************************************** //------------------------------------------------- -// wangpc_keyboard_device - constructor +// wangpc_keyboard_t - constructor //------------------------------------------------- -wangpc_keyboard_device::wangpc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, WANGPC_KEYBOARD, "Wang PC Keyboard", tag, owner, clock, "wangpckb", __FILE__), - device_serial_interface(mconfig, *this), - m_maincpu(*this, I8051_TAG), - m_y0(*this, "Y0"), - m_y1(*this, "Y1"), - m_y2(*this, "Y2"), - m_y3(*this, "Y3"), - m_y4(*this, "Y4"), - m_y5(*this, "Y5"), - m_y6(*this, "Y6"), - m_y7(*this, "Y7"), - m_y8(*this, "Y8"), - m_y9(*this, "Y9"), - m_ya(*this, "YA"), - m_yb(*this, "YB"), - m_yc(*this, "YC"), - m_yd(*this, "YD"), - m_ye(*this, "YE"), - m_yf(*this, "YF"), - m_txd_handler(*this) +wangpc_keyboard_t::wangpc_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, WANGPC_KEYBOARD, "Wang PC Keyboard", tag, owner, clock, "wangpckb", __FILE__), + device_serial_interface(mconfig, *this), + m_maincpu(*this, I8051_TAG), + m_y0(*this, "Y0"), + m_y1(*this, "Y1"), + m_y2(*this, "Y2"), + m_y3(*this, "Y3"), + m_y4(*this, "Y4"), + m_y5(*this, "Y5"), + m_y6(*this, "Y6"), + m_y7(*this, "Y7"), + m_y8(*this, "Y8"), + m_y9(*this, "Y9"), + m_ya(*this, "YA"), + m_yb(*this, "YB"), + m_yc(*this, "YC"), + m_yd(*this, "YD"), + m_ye(*this, "YE"), + m_yf(*this, "YF"), + m_txd_handler(*this) { } @@ -401,11 +401,14 @@ wangpc_keyboard_device::wangpc_keyboard_device(const machine_config &mconfig, co // device_start - device-specific startup //------------------------------------------------- -void wangpc_keyboard_device::device_start() +void wangpc_keyboard_t::device_start() { m_txd_handler.resolve_safe(); set_data_frame(1, 8, PARITY_NONE, STOP_BITS_2); + + set_rcv_rate(62500); + //set_tra_rate(62500); } @@ -413,30 +416,84 @@ void wangpc_keyboard_device::device_start() // device_reset - device-specific reset //------------------------------------------------- -void wangpc_keyboard_device::device_reset() +void wangpc_keyboard_t::device_reset() { - transmit_register_reset(); receive_register_reset(); + transmit_register_reset(); m_txd_handler(1); } +//------------------------------------------------- +// device_timer - handler timer events +//------------------------------------------------- + +void wangpc_keyboard_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + device_serial_interface::device_timer(timer, id, param, ptr); +} + + +//------------------------------------------------- +// tra_callback - +//------------------------------------------------- + +void wangpc_keyboard_t::tra_callback() +{ + int bit = transmit_register_get_data_bit(); + + if (LOG) logerror("KB '%s' Transmit Bit %u\n", tag(), bit); + + m_txd_handler(transmit_register_get_data_bit()); +} + + +//------------------------------------------------- +// tra_complete - +//------------------------------------------------- + +void wangpc_keyboard_t::tra_complete() +{ +} + + +//------------------------------------------------- +// rcv_callback - +//------------------------------------------------- + +void wangpc_keyboard_t::rcv_callback() +{ + if (LOG) logerror("KB '%s' Receive Bit %u\n", tag(), m_rxd); + + receive_register_update_bit(m_rxd); +} + + +//------------------------------------------------- +// rcv_complete - +//------------------------------------------------- + +void wangpc_keyboard_t::rcv_complete() +{ + receive_register_extract(); + + if (LOG) logerror("KB '%s' Receive Data %02x\n", tag(), get_received_char()); + + m_maincpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); + m_maincpu->set_input_line(MCS51_RX_LINE, CLEAR_LINE); +} + + //------------------------------------------------- // write_rxd - //------------------------------------------------- -WRITE_LINE_MEMBER(wangpc_keyboard_device::write_rxd) +WRITE_LINE_MEMBER(wangpc_keyboard_t::write_rxd) { - receive_register_update_bit(state); + m_rxd = state; - if (is_receive_register_full()) - { - m_maincpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); - receive_register_extract(); - - if (LOG) logerror("Wang PC keyboard receive data %02x\n", get_received_char()); - } + device_serial_interface::rx_w(state); } @@ -444,8 +501,10 @@ WRITE_LINE_MEMBER(wangpc_keyboard_device::write_rxd) // mcs51_rx_callback - //------------------------------------------------- -READ8_MEMBER(wangpc_keyboard_device::mcs51_rx_callback) +READ8_MEMBER(wangpc_keyboard_t::mcs51_rx_callback) { + if (LOG) logerror("KB '%s' CPU Receive Data %02x\n", tag(), get_received_char()); + return get_received_char(); } @@ -454,9 +513,9 @@ READ8_MEMBER(wangpc_keyboard_device::mcs51_rx_callback) // mcs51_tx_callback - //------------------------------------------------- -WRITE8_MEMBER(wangpc_keyboard_device::mcs51_tx_callback) +WRITE8_MEMBER(wangpc_keyboard_t::mcs51_tx_callback) { - if (LOG) logerror("Wang PC keyboard transmit data %02x\n", data); + if (LOG) logerror("KB '%s' CPU Transmit Data %02x\n", tag(), data); transmit_register_setup(data); @@ -472,7 +531,7 @@ WRITE8_MEMBER(wangpc_keyboard_device::mcs51_tx_callback) // kb_p1_r - //------------------------------------------------- -READ8_MEMBER( wangpc_keyboard_device::kb_p1_r ) +READ8_MEMBER( wangpc_keyboard_t::kb_p1_r ) { UINT8 data = 0xff; @@ -504,7 +563,7 @@ READ8_MEMBER( wangpc_keyboard_device::kb_p1_r ) // kb_p1_w - //------------------------------------------------- -WRITE8_MEMBER( wangpc_keyboard_device::kb_p1_w ) +WRITE8_MEMBER( wangpc_keyboard_t::kb_p1_w ) { /* @@ -526,7 +585,7 @@ WRITE8_MEMBER( wangpc_keyboard_device::kb_p1_w ) machine().output().set_led_value(i, !BIT(data, i)); } - if (LOG) logerror("P1 %02x\n", data); + //if (LOG) logerror("P1 %02x\n", data); } @@ -534,7 +593,7 @@ WRITE8_MEMBER( wangpc_keyboard_device::kb_p1_w ) // kb_p2_w - //------------------------------------------------- -WRITE8_MEMBER( wangpc_keyboard_device::kb_p2_w ) +WRITE8_MEMBER( wangpc_keyboard_t::kb_p2_w ) { /* @@ -553,7 +612,7 @@ WRITE8_MEMBER( wangpc_keyboard_device::kb_p2_w ) m_y = data & 0x0f; - if (LOG) logerror("P2 %02x\n", data); + //if (LOG) logerror("P2 %02x\n", data); } @@ -561,7 +620,7 @@ WRITE8_MEMBER( wangpc_keyboard_device::kb_p2_w ) // kb_p3_w - //------------------------------------------------- -WRITE8_MEMBER( wangpc_keyboard_device::kb_p3_w ) +WRITE8_MEMBER( wangpc_keyboard_t::kb_p3_w ) { /* @@ -578,5 +637,5 @@ WRITE8_MEMBER( wangpc_keyboard_device::kb_p3_w ) */ - if (LOG) logerror("P3 %02x\n", data); + //if (LOG) logerror("P3 %02x\n", data); } diff --git a/src/mame/machine/wangpckb.h b/src/mame/machine/wangpckb.h index 3344c6217ea..0ae9065abe5 100644 --- a/src/mame/machine/wangpckb.h +++ b/src/mame/machine/wangpckb.h @@ -34,23 +34,23 @@ MCFG_DEVICE_ADD(WANGPC_KEYBOARD_TAG, WANGPC_KEYBOARD, 0) #define MCFG_WANGPCKB_TXD_HANDLER(_devcb) \ - devcb = &wangpc_keyboard_device::set_txd_handler(*device, DEVCB_##_devcb); + devcb = &wangpc_keyboard_t::set_txd_handler(*device, DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -// ======================> wangpc_keyboard_device +// ======================> wangpc_keyboard_t -class wangpc_keyboard_device : public device_t, - public device_serial_interface +class wangpc_keyboard_t : public device_t, + public device_serial_interface { public: // construction/destruction - wangpc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + wangpc_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - template static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast(device).m_txd_handler.set_callback(object); } + template static devcb_base &set_txd_handler(device_t &device, _Object object) { return downcast(device).m_txd_handler.set_callback(object); } // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; @@ -65,15 +65,20 @@ public: DECLARE_WRITE8_MEMBER( kb_p2_w ); DECLARE_WRITE8_MEMBER( kb_p3_w ); - DECLARE_READ8_MEMBER(mcs51_rx_callback); - DECLARE_WRITE8_MEMBER(mcs51_tx_callback); + DECLARE_READ8_MEMBER( mcs51_rx_callback ); + DECLARE_WRITE8_MEMBER( mcs51_tx_callback ); protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_serial_interface overrides + virtual void tra_callback() override; + virtual void tra_complete() override; + virtual void rcv_callback() override; + virtual void rcv_complete() override; private: required_device m_maincpu; @@ -96,6 +101,7 @@ private: devcb_write_line m_txd_handler; UINT8 m_y; + int m_rxd; }; From 549df5e6b0591c04a1f442586cf4f3786aafe991 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Thu, 11 Aug 2016 07:40:20 -0400 Subject: [PATCH 113/116] Fixed an issue that caused softlist device descriptions to be blank This also fixes a likely undiscovered issue where the filename in softlist XML parse error messages was also blank --- src/emu/softlist.cpp | 3 ++- src/emu/softlist.h | 6 +++--- src/emu/softlist_dev.cpp | 6 +++--- src/emu/softlist_dev.h | 2 +- src/frontend/mame/clifront.cpp | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp index 8f6b12fe914..d7a8b8d86d8 100644 --- a/src/emu/softlist.cpp +++ b/src/emu/softlist.cpp @@ -166,12 +166,13 @@ bool software_info::has_multiple_parts(const char *interface) const // softlist_parser - constructor //------------------------------------------------- -softlist_parser::softlist_parser(util::core_file &file, const std::string &filename, std::list &infolist, std::ostringstream &errors) +softlist_parser::softlist_parser(util::core_file &file, const std::string &filename, std::string &description, std::list &infolist, std::ostringstream &errors) : m_file(file), m_filename(filename), m_infolist(infolist), m_errors(errors), m_done(false), + m_description(description), m_data_accum_expected(false), m_current_info(nullptr), m_current_part(nullptr), diff --git a/src/emu/softlist.h b/src/emu/softlist.h index cd50824b50f..6f3b69deaa7 100644 --- a/src/emu/softlist.h +++ b/src/emu/softlist.h @@ -148,7 +148,7 @@ class softlist_parser { public: // construction (== execution) - softlist_parser(util::core_file &file, const std::string &filename, std::list &infolist, std::ostringstream &errors); + softlist_parser(util::core_file &file, const std::string &filename, std::string &description, std::list &infolist, std::ostringstream &errors); private: enum parse_position @@ -191,12 +191,12 @@ private: // internal parsing state util::core_file & m_file; - const std::string & m_filename; + std::string m_filename; std::list & m_infolist; std::ostringstream & m_errors; struct XML_ParserStruct * m_parser; bool m_done; - std::string m_description; + std::string & m_description; bool m_data_accum_expected; std::string m_data_accum; software_info * m_current_info; diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index 013f90c779c..ce6d96a24d2 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -229,9 +229,9 @@ void software_list_device::display_matches(const machine_config &config, const c { // different output depending on original system or compatible if (swlistdev.list_type() == SOFTWARE_LIST_ORIGINAL_SYSTEM) - osd_printf_error("* Software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description()); + osd_printf_error("* Software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description().c_str()); else - osd_printf_error("* Compatible software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description()); + osd_printf_error("* Compatible software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description().c_str()); // print them out for (auto &match : matches) @@ -297,7 +297,7 @@ void software_list_device::parse() { // parse if no error std::ostringstream errs; - softlist_parser parser(m_file, m_description, m_infolist, errs); + softlist_parser parser(m_file, m_file.filename(), m_description, m_infolist, errs); m_file.close(); m_errors = errs.str(); } diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h index bc72960105d..c144c93bc4a 100644 --- a/src/emu/softlist_dev.h +++ b/src/emu/softlist_dev.h @@ -145,7 +145,7 @@ public: const char *filename() { return m_file.filename(); } // getters that may trigger a parse - const char *description() { if (!m_parsed) parse(); return m_description.c_str(); } + const std::string &description() { if (!m_parsed) parse(); return m_description; } bool valid() { if (!m_parsed) parse(); return !m_infolist.empty(); } const char *errors_string() { if (!m_parsed) parse(); return m_errors.c_str(); } const std::list &get_info() { if (!m_parsed) parse(); return m_infolist; } diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index bc98768242a..a274326fac2 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -1387,7 +1387,7 @@ void cli_frontend::verifysamples(const char *gamename) void cli_frontend::output_single_softlist(FILE *out, software_list_device &swlistdev) { - fprintf(out, "\t\n", swlistdev.list_name().c_str(), xml_normalize_string(swlistdev.description())); + fprintf(out, "\t\n", swlistdev.list_name().c_str(), xml_normalize_string(swlistdev.description().c_str())); for (const software_info &swinfo : swlistdev.get_info()) { fprintf(out, "\t\t Date: Thu, 11 Aug 2016 13:58:20 +0200 Subject: [PATCH 114/116] Fix audio distortion with -refreshspeed and -sound xaudio2 (MT 06199) --- src/osd/modules/sound/xaudio2_sound.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/osd/modules/sound/xaudio2_sound.cpp b/src/osd/modules/sound/xaudio2_sound.cpp index dc14acff64d..1da4794501b 100644 --- a/src/osd/modules/sound/xaudio2_sound.cpp +++ b/src/osd/modules/sound/xaudio2_sound.cpp @@ -45,6 +45,7 @@ #define INITIAL_BUFFER_COUNT 4 #define SUBMIT_FREQUENCY_TARGET_MS 20 +#define RESAMPLE_TOLERANCE 1.20f //============================================================ // Macros @@ -494,7 +495,7 @@ void sound_xaudio2::create_buffers(const WAVEFORMATEX &format) // buffer size is equal to the bytes we need to hold in memory per X tenths of a second where X is audio_latency float audio_latency_in_seconds = m_audio_latency / 10.0f; UINT32 format_bytes_per_second = format.nSamplesPerSec * format.nBlockAlign; - UINT32 total_buffer_size = format_bytes_per_second * audio_latency_in_seconds; + UINT32 total_buffer_size = format_bytes_per_second * audio_latency_in_seconds * RESAMPLE_TOLERANCE; // We want to be able to submit buffers every X milliseconds // I want to divide these up into "packets" so figure out how many buffers we need @@ -595,10 +596,6 @@ void sound_xaudio2::submit_needed() XAUDIO2_VOICE_STATE state; m_sourceVoice->GetState(&state, XAUDIO2_VOICE_NOSAMPLESPLAYED); - // If we have a buffer on the queue, no reason to submit - if (state.BuffersQueued >= 1) - return; - std::lock_guard lock(m_buffer_lock); // Roll the buffer From f18f094fdc18fc57c8d9df444113cdadaa5f680e Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Thu, 11 Aug 2016 08:14:37 -0400 Subject: [PATCH 115/116] Fixes a regression in the bios menu that caused all devices to be displayed --- src/frontend/mame/ui/miscmenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index 0191b5d7fea..3da9d91ee4e 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -78,7 +78,7 @@ void menu_bios_selection::populate() /* cycle through all devices for this system */ for (device_t &device : device_iterator(machine().root_device())) { - if (device.rom_region()) + if (device.rom_region() != nullptr && !ROMENTRY_ISEND(device.rom_region())) { const char *val = "default"; for (const rom_entry *rom = device.rom_region(); !ROMENTRY_ISEND(rom); rom++) From dc5afe13527a40014bf39c1f0e8f4bbdec23b0ec Mon Sep 17 00:00:00 2001 From: MetalliC <0vetal0@gmail.com> Date: Fri, 12 Aug 2016 02:48:41 +0300 Subject: [PATCH 116/116] new clones added as NOT_WORKING ------------------------------- Virtua Cop 3 (Rev B) [ShouTime, rtw] --- src/mame/drivers/chihiro.cpp | 16 ++++++++++++++-- src/mame/mame.lst | 3 ++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/chihiro.cpp b/src/mame/drivers/chihiro.cpp index d2f15f54fcf..3632cd95872 100644 --- a/src/mame/drivers/chihiro.cpp +++ b/src/mame/drivers/chihiro.cpp @@ -13,6 +13,7 @@ Games on this system include.... |*| 20030224 | Crazy Taxi High Roller (Rev B) | Sega / Hitmaker | GDROM | GDX-0002B | 317-0353-COM | | | 2003 | Virtua Cop 3 | Sega | GDROM | GDX-0003 | 317-0354-COM | |*| 20030226 | Virtua Cop 3 (Rev A) | Sega | GDROM | GDX-0003A | 317-0354-COM | +|*| 20030521 | Virtua Cop 3 (Rev B) | Sega | GDROM | GDX-0003B | 317-0354-COM | | | 2003 | OutRun 2 | Sega | GDROM | GDX-0004 | 317-0372-COM | |*| 200312 | OutRun 2 (Rev A) | Sega | GDROM | GDX-0004A | 317-0372-COM | | | 2003 | OutRun 2 prototype (Rev P) | Sega | GDROM | GDX-0004P | | @@ -1724,7 +1725,7 @@ PIC 255-5508-354 317-0354-COM */ -ROM_START( vcop3 ) +ROM_START( vcop3a ) CHIHIRO_BIOS DISK_REGION( "gdrom" ) @@ -1734,6 +1735,16 @@ ROM_START( vcop3 ) ROM_LOAD("317-0354-com.data", 0x00, 0x50, CRC(df7e3217) SHA1(9f0f4bf6b15f3b6eeea81eaa27b3d25bd94110da) ) ROM_END +ROM_START( vcop3 ) + CHIHIRO_BIOS + + DISK_REGION( "gdrom" ) + DISK_IMAGE_READONLY( "gdx-0003b", 0, SHA1(4268aadb83c880d4f3dab1d43ddd0a3a2f8befa2) ) + + ROM_REGION( 0x50, "pic", ROMREGION_ERASE) + ROM_LOAD("317-0354-com.data", 0x00, 0x50, CRC(df7e3217) SHA1(9f0f4bf6b15f3b6eeea81eaa27b3d25bd94110da) ) +ROM_END + ROM_START( outr2 ) CHIHIRO_BIOS @@ -2045,7 +2056,8 @@ ROM_END // 0002A GAME( 2003, crtaxhra, crtaxihr, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev A) (GDX-0002A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) /* 0002B */ GAME( 2003, crtaxihr, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev B) (GDX-0002B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) // 0003 GAME( 2003, vcop3o, vcop3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (GDX-0003)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) -/* 0003A */ GAME( 2003, vcop3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (Rev A) (GDX-0003A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0003A */ GAME( 2003, vcop3a, vcop3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (Rev A) (GDX-0003A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) +/* 0003B */ GAME( 2003, vcop3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (Rev B) (GDX-0003B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING ) // 0004 GAME( 2003, outr2o, outr2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 (GDX-0004)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) /* 0004A */ GAME( 2003, outr2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 (Rev A) (GDX-0004A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) // 0005 GAME( 2004, sgolcnpt, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Golf Club Network Pro Tour (GDX-0005)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 45913225d55..07582df5d80 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -9363,7 +9363,8 @@ ollie // 2004.03 Ollie King outr2 // 2003.12 Outrun 2 (Rev A) outr2st // 2004.12 Outrun 2 Special Tours (Rev A) scg06nt // 2005.12 Sega Golf Club 2006: Next Tours (Rev A) -vcop3 // 2003.02.26 Virtua Cop 3 (Rev A) +vcop3a // 2003.02.26 Virtua Cop 3 (Rev A) +vcop3 // 2003.05.21 Virtua Cop 3 (Rev B) wangmid // 2004.07 Wangan Midnight Maximum Tune (export) (Rev B) wangmid2 // 2005.10 Wangan Midnight Maximum Tune 2 (Export) (Rev A) wangmid2j // 2005.04 Wangan Midnight Maximum Tune 2 (Japan)

f8Y)*Ij%^x0U4KSHU`0pti&5ZY^?+UK{8;%iXqV^=CP|aF)A*>v7w51=mKaPlk8J)-1GPG~@c6 z7 z)c*tLAJo12Yiviu0n{J$`|$|b3;a=kKz}e$4}x_x9E87LzfHX#?she)+tp@fADn%9 zGqa2{GuzZV;BN;KHI14^nVB8x+te~{8s=>(kG>6WI_3`b^nkiW-J)*8anO16Eow2) zfoF@w0d(NG!U31Fk;>U_p^tFRrUsjDKS(Uum= zBhy3EXkd#)O=&4owbVn?BhzC{E%g}Bix0uI++&lD(_-CSjhfN`wbXqLd@xd98Fc8l zuOao7p$nd8yWsiuzUHOjm7y#6F=JQE)#_J6oz#*N#`3R;!O0j~l;H zuT~#79y2OU875LQOy599v0J%s)KTnl=xCPIXgE>q1oJKPR&Ihhij8Kkn@PP6XM!1j zy1{Y_IKh0~d|5~8W!+mAm%#(yV|c^pGF;ZV4K9Nl&KpLLp}Xx3V|RQ?;eqpv^I#Iy z-S#Fu0h6Kd=>^SF-EF1xn{;>EGmg{(ye)W>E=6@4o^sDHHb6b&o(8IqDxgZ~4YUvG zCEZi*vhEW0_>}vG+CX2@y+GGf?gi8(-DTYs=u5gYwo71VY%jRg)Hl=%?u>0UdcUE( zP^*D{C@-d;@_~D)PJ!A9nF}i2;)7EFFWus$Jm6mV9;i-Kq`4DVq&dw}0L`K+&5~hB zw-6^C?68`Ja|y{|b(8uM^kH?HCCnU#JOiKT99AE}IIIpcYc)+^8lV=R4{0=7%@MdY zI#S2$#_Nu#Yjn93^lsCkH4iBIN-;!{HSi)`%sWGzM*!y0LTdPierR8}kVjo}mR9?j2Ka|E~t_zUXKniFt-0TOm6 zz@LM?ZG0YZU%-2=c>(7IwnO;aM!EL6My`DUwv-}Op|vt{ts=m_F<2P|zR~s@gIsHb zX9QPh<=Ul`5!?>7l$vWLe6H0Few~?Xz0OR~&9%<8E~e~oC+J9BOciM-=w^XWz`cDI zW=%j%(ib6{rJJOm1*aBXEqIZ3lD-n(bX$pUyq%=4)w%dddKX`*ta&v89Zte;4$A&!kPk?UDP2E(xxtnUzlU?Nm}kAB8)U37UIt#lv*dL%QG<~W0#+EWn-y@b zo1FN8{^FTOoNU4Ok30$rc5{)CS{=RWa7+9 z(+)1v)Q;c55pNCij9SC&1n%Ir!{5%WVMw}-+re#vvx9qS*oJ?vwsS8GYnYdYbL=)a z_cf%JA}@u%ojb>tqWgtmlXeZWhS{Xu$=ui6L(g3xVTagr>^;rhK<$a%Lu^ktFASyJ z2JH*O2JI$oPqqjAQmzNPL3>x@qz_@Oh9Y$Z)05Ru`Lq+`n(h$mr1Md)=~gg@*dl8_ zt--(gMfmr9zI8f9^w&u9=_2db^mJ+_oE_?!cx6yz?IL^)cP7nT^)Il6F2W3|tI!2sT=jx(RcE4W2Bm_N37mno>zP)}OsZAgRZvlH3v$DH zX1n^JUT)Z~?r4zXbx~L0ZJ{6Yg6;}bQCa9wQJI0-9nRZA7S$cw?#J}UR+=qY)OFnp zx>5Q+IZ0 zz$HL1BQ%%yCWX`^<7mNjkAZp7`ynzBqB92U3<&JNt_J8(bR$?U*=Y@?Pp?O=H1 z9O`~k9PX+6P5T1gZqt6$-6kF@cf;Fn+N9nOwn@DYbBmfY6+rC7FT!6XLT+7U2zQdaDu)SH#PIC>m@tw&B<-=ZPF(KyffHi@-2Htn35c3)& zKGSlWA9J(XXIf)gW%FSYwcHjRx>+3^>KFV1z6c?7xvd7ya@(pvje!##T4N(MCiJqU z1LibKjqN)s2G16kEz|K_G7T6Ls)LFN{f;74XZb=m9rX)cjcp}*R{_bIU(7noD%%Eb zrEQIA14rDA^mo*E)JFOj^9F7c{FSy%+(vqhDHJ-y9Eu~~z->elYTn2Zr$4+JroWkF z1K{-slI#cc)G#xV3@~rTijCZ6c>T?Lpl33Bux@~PFOogL0ocNBxI4|e!FHN=q0VGx zpli2zmj-{7irJ-^!R#_8Q@i0LQ@b>~%-z^z3V#eAw?HzrL$gcsHYCD+yvgD zyRlu+lT3ACcW6XxSETs*FnBlVAJroEM|D@M2-W-j)iVR0+QYJ?EiX>GRl8_i5-TIo>~4LonT0CzHQJvW`9sPkA)Q5Uei_1rpc9M-PmE?7!9 zqSkZWF-w5s;D*vANS?6Iu=P+{!jH2(LtV#(VRi>fc?tgvM=If^e0Qwc#guSQ*j-F_ zFcBR_cjrX3h~CA7fQ#r_i--;Zo;8O7L*bn@?_w6QA?SF*E@DraL*bA;oHCy^*IMc< ztx%`TQtYGEOuS}{vu5I-GM~ga1$_>AtGUJ83VjaPg4%5U)JW>5#!EP|bLLC9YEoVr zdk*Oq?h^mp_5-f%bK9>-&Y7RvF7dyT?ZloplX@Pk#f+DCz)y`tNid|)zapb8b?_vy zwB@|H&PZ8)g+p1$wmzju_S{BUj+rS7Z8>fx^|<*sIzFY=QqOJ2%s*hSYpG4RT?wwm zqjN2F%zV^L>QU5V=-x;lHUDBh0d*YpC|C`)@+ox!y2hflkW2^E;yFMEt+kvmvlbRu z14nE5Quig0wbWp*vyGopb;j97qBx8i%WNZqj6)Y|VQ{?lNb8J}*m@&}Y&9*3jiZQH zZ=A!`8{?=s+-iC@cpN2(Rba}1anx@daTKTuN*3E-l*N8(Y%nUQs~m9}j8~EW#(g6E z#$DwyY@}w`8jO|vReT&f2mWe$4%k($l2_U?Y*#s@t&(prW;2z1Hlsx6r^ZLv$|EY9 z`P7(CJ))Y;`4nNz=07a?)E^e&)LBS9V993wup9u(W*D2&cEDm|vN3E>e^}ar4j{9^ zYYVc0)ma3r65#(~;Zf@>wWxKL5Sj-QERTZPf=WiyYSMJ!=g z;04n`U_ta1^JViQ_9G^k{svAk{SosGFo^ac34-Utn#IVU07+jX`whLAZ45XxwV1tN zp{XYqDVmkL%aqIFA93>wiaYB=b9x zYuaOa;$G7p*KgvlX{W)t0e)P6L;E{(U3*PS-0Scr3)jIX3!8WveyHw-c8V}rpqVL{ zqo_;pCJP@>Q-o2}Na_PT>wZAxvr~k8_5I;BU5a+9ZXfD?b&56>{wHh>^lxkm zIzC~4gR*g{+7#_?tc@es z;R*B&(~i&%!`Y3{)^jb4N7KR#(|R<+v@=Y@;kPg|OfyU~!G~*Snl9n$%ru<`p2u}P z&xGo(!@U4C6J4ZUgm<2~fI7p}k-Y%6Tze7NktKCB6{?$IYKCfIn$dBQxeV_jdM-09 z%t?4BQR}&8<^+1`xRc=7Tpf<}By$RBGw=kH&Hc>RVP)w zu|M-iksjsGTI;x%rk{C|y)+%=I}2jrH?}k8Cv2(trAaK5n#DqA;iYLM(qp=pCgL8` ztu*yCmzp~ZD@_-SNBIlJv(}@04>&!|Jh6Sf2%d@wb}CwSeU#thXQ zV$^t5Q6i|>Lre*J)ogd61h3FLSV(sVOAn|Ltn6SJWhoK53!^L@P)9;_$7}tO0c^I6 zw8X+61uQ}5NXrM{&A^eCR(PYpT7j#W4+8Egrq!~NS;aI1n=P5tdS)fwEyNmDGV2++ zAr|jB5)G^1#TpXfb$}x`bTo7TCcudWO91}Oc7S`0{TrX=?iK#VC%%8Pd0YoW9+!ZQ zy}}-NdxSjhZ`R4}!DqmJ&WX>1_XvmK-O)QaKj$#q!DqyIK!?G}Ind?c4x{6a{x&F@#T&(p!?iTzp(Eo8`&^5*|7QET^AF{EAd~DCb z{xvoI}TYYn+9(WvlpN6_hj|}Gr3fDFXI*VLV1NuZZG2$_TZ-kPQiR;M(o$8mLCfSJI)qMxRpSEI%I34Hr>cQNPoc@qT73KMwvx{dZbFGg0qn9@016hq_y= zL*Wk#)XC7p+>>#=C-W1~vk__>f787Y-Z1w^m>b>0;SC4B>AnTE(Y*<3BlsrwO?Qgt z7UoU&4c9IAZ8%z}8?GC!GM=zhq_^Cup4;wXPl|^)#qi4bZ?#%DTKBiwZ*k<`0l(97 zXX|ea2^@F~I@YAD zNtvjBNUy=w{5~aG$)pkI`xH+wlNPO;>^!O_Y!@O;5*(Bli9oBw@^H`s&W zg~w-jgTGICmd0lgTr2Py@qQnYwZd;!K7#>|_cMO7mEUl?xA{)X+kB+!H|t}c7poup zezUguPJ%!7J@Uo-y}^%s#5;j`(su&hW8W{BCxG$(N4|#`kHF*n@&1QE2K6{R;ym>I zhw;#N+=n}bKhCef{LiQG)2Ot+54=7&62?zKDZm@@=jJ!yEa&F;hQbdK{JlxyX~^#b zrttLf|HQIs4f#K@4fzTWoAwj?hnY>o)GItcg&@=aVNP|kdh(UdKe5$NKZR85N!Oq7 z|1ekU|AeFPZ1Pv@tH8g^*o3WqnW6CX_8$oODP)uX%ZvlSpF$3jbs+}=^b5Yka{5SaohE<_RN znwZcL$)tpX$R;LC!l=|A#NH}#T=5b?H8DXEBB?o99sqbg#Oc9r6>4=PIZrCN3)mW$6-F9pU^?xRClU7$eZTA z6yFB@gl>a3n%yh86n`mxzod=66u(zOYOpuR`y^qnWHh$_Bw;igsc=q0f93ff)JY)8 z`ojMou#YFidlDVN-Vki#q~{delkiS?#z{kP6m9f4X|Q*{WSq2(4)KnYhN3SN>3+#r z={St9(?h*uf#an6CHvs*1(K{W{p<91%=;vJB~KFGF%!3M=2+=iY2VC7_~-e3lJk7u z%za4PkUs{JzDd-1zAa%AMLNzQ9}NF7bZydk{yblsbdKMgIEiXY7@V*%E7m0@36!Em9-SSX z-6F5|Q;MQUT0tqIvx_3v;)rPIAxX4iNYYyH&XGltBq@Yf2;MoeA$Dyd;jiJmh9bOk z>CM0caHS%Hxf1rk+FY6|37<)ZM?!3UPrz}eI5B+ z@e=DBVqZlXlN(}<$!ilQXbnX3f&FnS)Fn43y$iRenACpo-c4vu>IWv5^anc?;HQ%0lAid|l;)(9aGH}6 zB`1NWl5Qo-C8yxs!ulS_d*EnG#RIt>z#ifRNuuQ6pdJDJZ%~3HLGoF0BIZe~|2ODi zz=Vq*!rk`7z2E*``zMOK!29iwvQHG7 z1qR)B+cQ|piH@=};-28oYTifBW?^9-(MQ>Zc?;dDPmClBA;kR+yk#4=!NGKc`^N>Z=?*ARpx}Y%D$00;RHz-QILeix^Jc5NQwI` zJQg00><(x$QJ~E zmb^A>9sGI0^Wm%un-8`imP2~6od|m7#=YMUZ>E4(4VotPQZfDLih!tolxh7 z9SNaBz7Ly=qkAK)Q|OV9xnXa>>l9jqv{UFCVMU=0nz=ZGxnT{OH^Sy>8Z_XT>!9Oo zZ-o6XWv*r&a9!Biun|i1Y8E8_FJ*05h-3k-jwx-f=6@-sv=Pd=nuRI9)6rHL#fVwBl3%^ z_Ly&AeTFh9@I|w~9(KQoJoK2nmH_klHM(}T333c{`jBx&M)SH;${7ra& zhhE3L2`s|wjH^`yybh-uc<0a@@sNl@An|Tsb^{VspWGR&K6yw)jyPAGBd$+2C6j7O z9*SEk7psQi_R58xnl%)4chv5vT=CSbVeo&9`Y~!~#O|p5QNzH8MeL7Kiuc2dlaLxG z`4PPzN`J(Rle~@l3Gv^?{UlEEp|m?#oTNLpw^aI}RE}IBkxLYKw&|askmT`ii@U+; zhOX|Y4*ZKj)Z7#Y>fDrWaOb6vIxpoz=@@M7L+R2$9V7iGWnM~m@jod`rB@|m;9Zpv zzB}qI@lxqq;;WL~QB$+t62B#`j<_m$3ujUp@s_wUf~W^6|D;@%R7X5WnVR(p{Ha-{ zWKye;nv%`nrsR6m%7{<0cw8w9czyDXPzw@sa#Z9eSy7R^*bJXSLczHa+7Mci^73bIPUiZOcOk=F?;O5qn|b;|0Du3}jy=*}_^*!<+qKo1^~9&lHHMFjfXfsP2Q zaLe*BJu(-nN47mPBFhaV?si+Jtca}bw)(J6S;GXd%wfWITSV5d%(V+#C~Ctr4lTS9ib>Lu=+HVyoh1DT_>q)XX&nu4?m4v%(s$2E z)MTWSqz#VA(l4C%oEpa$nC1ERoL?e6lzY!f+(WrvIy-=s=QlXMbS?)j&z~%9%KZXv zQ|_TaEzf`Ce1wjn!XxKUoYl{c4$zM=2`B6^*kIRS*ASdM4YpYr zxHg$iIQhA=z=mQB!xeMp9)x!gduhsb$cDmk;3~Uhhu~T5hcLf%I^nrwPRwA*w^Aq2 zDf?D>Kz0CVMdp;{VK|`=;Me8_46Dp5%7Z!_eK`66v>jb}*t!F3jWiFw9eR!QaI_%1 z6(^v(lZez#s9yY=do%8E^sP9O-;8?~o*(0Z_g(aK68&m@7qb(3ZpC#}cU0es`_6&qZnV}t8mQCmev^{>{CjlWtqxIQ*6%=-%IS9mROBjKyOlFGIUP1RQc zuBjsGIaan+lvF;i@ba3f8wnoXi`RsjDlO8BRbKqrm4{Ut)QeRQfsf#8z#aih@aru- zDoZMRV67I84w(+l!>Vo7kDwnzT>yVrbrF@g+XMdg>c>?j{tIw*=*a=*knQ*{R?YFx z0pgFh;8iN&_5Pmz5>x}KA)tGJ_4N0Es>f^U9vHLnzOe_U8KV^MB768vNKL3_e>7Gb zu%{9*;za?Yz)i?vfH6>Je+N`ER(61j@!#{sfZYe)_ucbZ{ILQ5p6`|~8u=|>EIQ?w z6i^OS02O$L{;y9CjD`9a{6F6@jQ{X1{sFvyeMjLP11GElw)qd-2fly6|MA^Nec(G1 zsE5Ii_zr^~_BCPu_kj<5Kg0VO^(dSs-ys~!Jzx`h)(7f3@b$iR@DKTJ!`%RN7;858 zBsk*R@Fh6wBfgDr$d)$xjL;Il5!WUf)9Bw;ErlY^n!ekrjecpMuIanITH?R!lVVEz zw^6_AyQVKuq<(?hb4}mx0`-gP9Z)-P%YN6ls_F~W9o5fp>psJ6`$e@H$rsgCRivJR zzXQ&x>hJny45+HQ>&qBG*4U8V_1%HG4J2+R(yFS=0k*0;KIMQ63?;lfIG;`S+c?ur z_Cq-5P4+v!Eq3LAP4+Ed$^j>wnc$nDw%E_|$^mEjEl{MMaL)5>wr|2%=bPs{%Wt-e zQ`hR5R5!Nx*=hPnY)lhko=7J!XI zKGxR=qJi&%64!=0!e6~hWbL$6^@w&EVZ?R zTWWiPz7QmH+m+fve8;)tTnPBwcA>tDd?@-Z@^jlYv^&my3hyHSDLB!`(07d6kU{!4 zWR%*DaSiQ$;nrnr$T$X{uu|KG43W7hFYC8+E0NE@aDp40OomA+I1Ou zo^=_&aGK0d(^cA|T%P9_?kJ9-DWn}%jqGfi91UN~=q2 zpob?#0nO6kN#!wS^joA+X~UDs5{4(4r6U4$M3PBrmRg|9(&;L*)C4R`7?JcK&II@U zh!IKCRsY64h#QggZ`^d1N%~%d3GRClM3qNOSG^Ze9$}G=hc_Pm6Og|jF&KP;bRxzC z=~0d(gWwK=zsE2h?s(}Q!=Q+X$PR@Z3OS1Fu*Wb_`n%2 zD5NRmFh*0zr|pQUp=;E*0gQw4L-JnC=b8gZKiBkPdNBv&tE8)> z2jIIp{ukGa$?y08{rTXojsp@NfDK3}Lv?lR#XP5<)4iBg(&)6ZgaHZBX;G-stN{u6 z9V5Ysj>P?ZC1q~-K6>f zbra@hFi&c2+8E^zD&me&5*4NXPg9%bNhLK({ZR9t<{|E-4e1Xx^U^)3KKKtct?WEJ zHd@*F=~3!l&<{1e)U9lk+Lzi(y}>^pi6_;I-Z4sVswZ`W|EY3*`cvf-;1lIjJYzgn zZtx#8l6ug%!QaZ3ByRARBogPKv6rt$Vo72v+e_U8C`o;$?1g6}Nvb%t)Yr>L@=~89 zwIs0=JOVCBB2v%tr9OL^1j=3(fzFb|{=G|m{d?QXN)qu$xiR|pE=laAUX|JddR1!A zL|^JE9Bu#JJrjGYd&23BqhATn3-qO~hF%4>8cs(`Z}n=hm0()qN_1$A9W5(?-qf*5 z;x*)qRW{^kjlIvudKM zHljfMu54R)fw&fFKUsf_elp^}D_bsIE`1kzBDT_7*sSU!^v38TNVAB?#ZH8~sUxYI zI`)S9g@x2FEGwk_WnAoX;0h@hyQ$;Gj-0 z7i7og{Se;iJ>p$+k$TNlkbNm(d_+O^_=syRd0uQ@r}yUKHjtxUbLGW04xXDM&#MJC z4kn&G)*jpGJ>tvr3f?PtPo8IwHRsk2ZXDdcqH%D+d*)oi3edM`V9ns#!RFkW!M)YB zgZuaHt*#mTNB{o4Yry~LZ!a?;G3Wl#zhbd!Gu_Q_fT1ukq^Sl#{B=L?uX7+Nw@DUk`YrjH*24e50%(w_Vxm0j~$N zD|@5NRz+1tR8W;~ltomuL$X5Ifa6%9Y**GEX}hu&N>baGZ7z?fcmudX`6g8RvNr?V zlDkrA!8xpiyF$52xk9-T_-5Ib^3COMmaS55!K%&WKR|5(+NvTdG}W5wh>9P|)z!8t z4PKvV@Cr>+{X=K5=VmE1@A2y7~gN}fEU?Y z2P_)+B0Ij{i|kj~FR~X6+~s_c{Sti9Ku7E@=c0l3SO@MKdB7LhyPUh7FVVHzxy$K@ z{Wbp;I=7dg=-K>s+*IF&Zi~_b`O5tjuZdTtym4P{`qQD$gQm9;0DvZAcA9QeGV2QaT{7*t-BBT!#e zysRj%99H=X>C1|hc=z@k__E?v#i~GE1!rZ&6ypZh6ywLnm2fX+O+mewbt&s(Bk?X} zbyWK?FJ<|&ZsNV<6yvMtOIfd?{pgq}y&2~Ru0fqH^~0Smor(H7`c?E4<3-dd#;MZj z(pS*0qo+#0L+4B&d4D?tY&!5eR4&sl`wlo1RhRi4TwNxIIt^?(aJqD=^cuc2dIoR? zbbs4WGjPrV zmpeK@#bV0sXE0Cab;y-tbr)9$pd6!%s~Dq;tGiQ{OR{3HMvU$_lE{FT0V8wk(bWj2 z*j0~O;#`7J;_RDGR2xPk^t3?V61c3LwfD{E>}_zLVk~j8_WfAdhMs!Ye%HYKHn{tt z2j)w$YFe%|SBCluY`<$d6uy)I^HuJIK=&)S6I}1-56pk+oPgEu=hxdw)(`BdvmYjF zcjl9hdiw;IGd~opUw$2W>g{#-DuY+Kp{{)N=I1+sBIoqnI(vS8ZJrZ63@Xei#r|sZ zYT(r5)ni*>PJ5m-*PbWCu|&bC$&1RXv)9}0c?!EMS7Gmf<5k$@sAq&adsN;TLFBBn z*XGLY3cKJCInM}ks5o@Q;mSwn)}lKa(~esu&c4iXCU2Qzxg#bw8vBUB40FcgC`7;* zRKXFSD{@95jmeF}j0Z-cD!>GX0xBN526+v(9G$xpDh{kBcMkSC2m6f8uYtESH#VR2 z&9=|6*MQGPGROYd5r?_V(dL+ACrO)wsK<_{m~DCoZ0sAu9%APu53F|_b|u1?&UAfznAX|oh)4r+**Avf4pn5)EDXv{Rp2E zdhw?8UjA-&H+wICYc)}R%-yUXsW&tmpT>S9%~pBgPF9gR8BVs!7qujk51=o~ALWb6 zR-MC~3?yoJxG(A)(2qGRysOL~MQ~VnqcA-DT-2oKVd2BWM_^8h9szGyczetdz(%3H za5SV#Xk!46h8zoNFN_H1GmoOOn0zJ+?`Q~z$pVjIUK3HGV*$K|&$>DIp9fzPaUt(u zejfY|ylbK;^EJ^sz&XiL=B1KP@p<@CNtF2=QMCC}uxfmI{%LY`B=MGEMgxgjE?FvB z23(w89oa?vSiCsBi?}*+xumO@)UM*?NS{PMhAI&gH6vm<^o)ouP>)3=@E?mFi@J*2 zFlR)x!Feot0;dhwhV7N$6Z^;FHjEPS2k{@omx!N;1bA)uxdMLiP+S#J86k*A#N2rYd4?Og(<~P!&P29zTm9`R9@KlDWW!n33_PBn>gAB%en< zNU4|HO}PvFJaS}wv*eUyB=*@XIjnsE_n(vpDTlQm#2-y;mNaSq0iOr2NqaQ$gZLuF z2k}otMT%z0(Zm+4YnHTt6)B1pM-z(`EfNLx(Sog>0&9^JD}vZBB0rB*#1j?9wn&25 zFgS|%Jtjqb7`w;xdE^(7Uq;?d`5gEq_zT+?k$X%pYjJ%}1r2P`kVeQ?NOWMOw zN3>0-N3?@;E@@xbj=&k5^TM{rwAa)GH<%;prR{}nuj!?2pN{keb4RrMbc1tV+9tsn zoHNPR-rR)F_U3swqq+DwPkZxTT`;##7sSm4ckpvlf{+Gtvyw=il{70UnA@whrZ2(o zkbDgc^=^y(Ua|!4U!kOi;Wtp0q<=3VH4MLt@>l2@$@dr{sP83fQ2z-16Wja?xJL3v zXl^R0;a-vV&(JxsYtS(#Hr$(=Ixy}}bPSA}6D#tDds{qV=xFiGiH(42h9XWgej_H_ z+v;fnMxdVZGEbE--WXn>|Lbqc+xT7 z1*SozW8%#@MjC$eEe-m%JKb{!zaMwoeFwiI_pT=cUOMm&^kz7lfWzGxp1aU@+;^eg z_4GsD2qfJ~B>jNISpu&WNV5L$mH>%!8Z5$lI*@%0@3iOZK$eM~2(K8)*Pa3J`vWtP zo`Dv7&jk9G!aL(x3a2$mjH@yywlyijJ20*_X-=%zD?wLlQUfpcHt-T`X<%GSQfpER zoYo|X_bgVP@tno#27a1Kf^I3iX(}mLOVU(T13y(Y4H#}{Ng5cJn;LEy7&nBQs%l9J zHw@uglEMt(hTPP>rZC_h;9e7u4KsupL`cF|QGgBM!lA?15a<~xJ}JI?WAGlje*pdvP+Qz1;EllJbU5%Mev5k~>K3G==E4~PmWwr8;oW!t6R01+ z`vHv93^o_|L7+ZP|A@~8dz`-2Jqq3jZadTm;H28!N;ZR42GVWt{&8=^Hb%MgkpAO- z0HyLg08`;?i5iV;6fh6jcIa)u(QdWpU+4$!f1%VK4b*!;;_iU+o@XG`3LtU+L)X9V z|Bwvy;J-~^XyL8!tVDhuNc!G~w-QJ?9-{ZW=R!d1ptT+yyp^6+$S(j%-ynFafbV;v zyce*QNN*Ib`UTHLxV$V1xBP}gUKZ(PWjyXVQQl~DMSCxzgO|CX-HFjy!OA$~92{OY z)y>IRuv|^FcdGjkRGIdWo4Au`cj6)UB$}{XjXSYS+fz8?UPAX2NJkTro)h+>P{3mSj1aN%SN-N0Y1B$!<0_Va;Y^j;4{GW8KNVHnlT1((TN1tc~<* z)9V<*wy`@gwxRcR%v-8<=GQTcrKDEo%(1?uN)y_d(}c>LcIL&>M)+^38l^f9-FS zT13CXKL`9O+$>rG{Umycl=OWq{T2G_fYSzVnWQcHN%S&Fw3(<^>0e9RqF<$xj^46g zMX%CbQD1|*qI$~~Atl)&sAzLfSzB~Zcx}%%_}{tSu@`7HQzJPGreMD>RMS#YnQQjA_ueCC+=&(Jp}z8Co7 z4rAg+gfH&EXO6&YZ=wXYSJ2`Pt@1JPW8z!o0y`=CIQ+#Ojz_o3Cq++$Iu|uDdJ=H5 zil~g3R{3PrN$|-ke<-QP;7*J_sUr0la)0O^_9U|1EU9w!F=TsKQqyBHVva@2)#=zq zMvPD1D)(WJ88PWGlaNe;BUdYsrpHW#N{>;fC&HT)Qw+ZYr%>;~SEtL>0_&4^#>!&g z9yW&S!0o|%ml#f9JInjvoCTI(ADsJcHgRAKx3xNPAYo-L!lw>Q95@x6Xg3qX#c*z> z12=Wx*6L}P<6YARP8&$xK}{PNQ&Ce@gRdv}wsI;wd>wDUX#;Dj3j0k3uc`XB@|(&W z*VKVT=eWvT#H+=qsrsg}5WSr-iu%=7<+uv_b#-+GcJ8+;ugpbycjdX6uC4{n9H<3O zqITtZFc&yW@^|HxYBVS=5_fE48q*%zG_j2i7{?qU-b?7rVg7r5H>MJ)FHgXBwS~L;T?+Q;qbQx>eYmB zu&W6hfg+4e9X57|_FPTa3fu}_EWeu21=qe<-bEhmsjw1tHKD@V8M-g7duL!5d4=_y zgw%7AK0$qh-odTW2iQ00oMd4*sSCqcjR6!_SL8Y=2%*bd%<^ud%z>CH*#_0ucF>Eg5t=p!o`tygYTo`9#9-P zH~y>e`@wVL3484)JT!l9{5>FXZxz1whvwfZoEsmUADU0x5U5~aXnwIc7*4VHUhqXx zNPcksQf4U=3>R6^t-`OF5I7|I8qV(@S+>=n$Sns9HEzc7duDTh3DX2?(5*!k=}4` zV|TGzjN33b8?U>Qp?0y!P&eH73a_K@USTqxv$q&ei#B8CXto%W*(5ecb6T`4HAk~7 zH5bkq(P_~c(H3J8OX^vuvq;Z~lGp_G8Bv1zELbv|!rm)PK}}+JrY5LUfJy9Gq_N(6 zg-4JisCTByy$Nc$H`co|HHF=kx(j%uaA)cc_&ZW}Lfcvf6wrETagiRLwx~1m zA|UB2hSwRWD=LJi!EI0oEC8yZKR{MkG!kqicoF;&&?BG4pnPPEg@lvKU z4*PdWvA7TlrwgozC=?fqFN!K6ip3Xz7x9=`o>~!cPO>}|+PXaToTMURXndh~dFs&k ziipVyq}Iubq4A`Cq?oLzuts}6f*yvRLh-QpBJoFxXirk?WW`5{q}XUraxB4(9g<^X zur4WfV~5S)8}Xd8xkFNHa%>9xB;fq)joUPu76#i6-TY3);d~homj24b+6V@x8nYu zlkazb@3Y?boa_nc<~CUavIcB!bK{*YZ8jv$AFv^53lhD1ZbOnDQ<>=B!1G`xa6?ko zfJ^lHJ9&o80iz6gc%IB0FoI;EF3~I`HTpcm0(}jhd-Du8G+3b-K{5x_=nDh#kQ4^o z&@9kDPpd&K&<``#=%1w(20TxDhUB{DhNdv!Sz3NTVL(B^b?AIBTX9`;Tr3DUE?(C> zOKU;D1@q6-3ecaH&fK*0sp$pK)6!egrbAClpPqi66a-97XY0IvO8KZZ#Rn)R@UJI%P`C=X7e!6LJzeO^!LGpN#yJek#)6^(X1%nBS3{f?B21DXVnn z3B%*!d2&4PBqmnrPSWFnE0L_yArD;FYhACEP%Cw-4adbBxc98aeQ~v61X*oZscTAG zsaw~pDeadu<{7UxT%se$FKJC_>w4+q8VW#ThPFmLqVzyR+q$j; zp^a^8fHinbvTP7)Ag~5`awj8Ha;MhXnzn85NN%ldgQF~*Jr}gmjz-nA?boS|wqK{w z;We0J+^^H2xY6N<;&NK`>y+F{i{nrnQ&~{Sod&hdg4cF>FgOdvdJhNZv^o^`VDLj6 zmx6OzJsdm-&tj~VwPbl!NseGZ$i&zX~x+4iK{H$czH zX~47K)|ewX^*JZo9)YUQIg0EEupYbt-MPSd@WVnjfb;~gIp;qlM{yqhbN7Nx_j2w) zAHg}i1H22pS+`jiY`Tkli;lVfz<1C$(9OCnx~)0`J=wMym%AC4b+q+Pj)9K0vI&+A z#x*h+TxvDYW~?Z+j$-Zu*LA(D@rv_`>nl5emoDvK%B-cFpU{ut7Sm&Ji=mGpJ4&A+f17+vTa&kODlPEOv91Mp zlpcpWin-%(&uEGC49W^+g+4|{%g5p8z#WI4gSngHX!&Cx>y;zgmO5^v(Th3q4o`ls+8(W#jG6nIN)5pH8u8{}`3*5DT5mUzd0OPosX*l(lz z9R24)x!fYa+gpTZNS+B;WiOYX3v&o_!Sp$54#D{#v&kGPq__%`d1 z3RDQKKsKA4##9B+ie9NyB3WsvbQ^vG+-)*}xR8}f&vE%(;0dJDpudgJsZ06`__vW| zuZ^7sy*8FgXN`Xu|2A&b{bf80c1Z_KF7ytXjHa!+vqqz7GwxlRbw*RL>3tKMC_v{d zX5TjzATyfcaTwh?9)H#rjJk(=d6?;bPJyYLyW5TZxtr-NBwn_44z8@e^7Etu*K?16ngfG-4EOv{1q1K&6O zZCs8z2)zQ?3h+VjhnQiGu@!4AP>ijnp1_{i`9sr0IID?+vqE#2UWxQW;6&)3!3TjX zU4`VJ>6P(k(`(}^oYv2#Uy!Z@u0r|<{%6x8xL3y4#y7am-+*5k+nXPm+M8b?Sv8WS zod!)Ht43y<+ne7QCy+Dps*w|LYo3u=e@(A!q-%Pu8hJ+U#;qFJja$>}wEPFUr{xO5 zxI5R4JA|*`$MiIHI{B%cdiGj#!`o@&eDUcByZCiOO2%#NsZ-g zT5AcR7cpB&F3NA?-gjQUCd+HiWTJ z$wu!pYElSa~`z@x$uAztxCK9b%bM}?8pSGhrs2uFou zs2gMhCN@aN1Ycz~`Zvg7af5V&%%+FMc*P&IhN8ELS11^Okp4W6N1B56(f$}h>$z$>^ zz{BDZ@hGm{!@wirb+S!jyiLL_Aa2AhutC}gwN2XU=B?5;={mVsbWGSNZJ^9uDB31n zEV@v%5fj(w2D%Zr6)B;N37tx@2R(w@bt<~o=yf^;ZYu5%M}#TpZlG6jY(PE%*%Z_S zIu0{a>3*`GOhs=3To+px+Y}_@;G%3%wh2haV=l_J3E6mX7hAMV4L6>4Ae)HV7HR7M zWSxiPA&GK#$J0Kf4<;Vsk)yV0aHws4@JNb;>Vv6Agt6Ub2R=fsu^l3ZfOgv>bhq#i zNwjSX|0_C&@R+ReAuOedJ#x2Y?5V zbU|GQGM9yZ7vNU@U-HEHFVqz`UxDgEYK+_Xt^5<`7T`9XWmi!(#;atcvIWT_oQsi4 z7ZQ!hF626mCb8Tj^w_zM<*w7a=v>D&f0taN#O>~qd*m)5bO~??G@(vtLN63KvHBjV zHP#rTfftG{A-Pa=5nN-eHP+!YYk;-Jdn8a~JlRrf3=}6@u97;VLAghkBEN?{my&Db zDlsTmfY-ov#z~esOi!}(!ezULOLv9zqO5a{Jas;C_M+Qx37>+mk##t(k#po2F56S* zNM##;4BU(M#?gzeBS&#*kMXhGNad)z(~~kjj_OH|V={;Iq&e8NH)Xty%OSmK8##xx zk+*TjF_Vpa8<&k$$NBqMkxjp+jK8OAgri8-2(jEzevNRSj=*sr-B@mo5XZ#O<-QtwK40qSk|xP%5CPm9#QmokTav+FFaGRdG>7MxG){+9;AD)>>q3 zswl&!LZ^xvQioSP4M`PK#9PifD5uZ^uZd29Ww)KFNN+otQxgrj?NpNr~bd^KLb*Y>J1j4`Z+&+VVv ze{HWZa8-sk<|@N|=Nof)PHumeF!jcK-+9-0-?>=4i_TqV`y7_F&$)|azk%_Qfp?wz z4Mzqp7R!bGhQ(rMS}q(JxZiNlu-{NF8~`4G?o1<)mkSk0%7qA8A#|qSauM{l^INVn z@D})6t`W&C=O(CcxlM4loHyZ8#GB}+h*9LGGlDj9-q_0Q{kcr;Zku65hxXIHRc8zHba#P1m(o-O}I3qsldSomYpVPm^)2M zg%4>L%D4;oL%IM}EiV99%fpd(q22f{aM5m#h8j+d5@Vwj&z~mU_%!Si&v)aa=~^z+ zkjBL$$utZ$u&g_dZamB5`DJ7o=DPEP4Vi{4Lnz5KEJKBoEO2+eKN*a43ogxIH*UdY z+{$g?qGViFxuAFpmt`m=TewmZC1)8vl1s5JlzfCvl+4pm?468b8R<_#Nf`1laI%{} zhE68^2;+WG{fXAiS~5}oNd6c*eI!o=_amQ^|7a=F&(Z$^r3IEEE5K=%5{3nYr~lE3 zav|J*v=Fl&%NC%86k`9G)Iw&`kFmaxSjb1Hne-!)kJ&<~&&fXQluzm@53Z;Cko*tz z1@IH}_tBZ)k1&N)`5*m)>;djkK36_L7N7(uSfPAD!o@v6t(%=GpDS7->BB`WE|;X= zqlAm?(Qhw0Q^G|_pJWLalPvAU{zTSG`u@0{Wqo(t9?Z%5Vqh_5Wc^xh9kO*?F;tec zj$6w`(=6P|Mkz}wM&969hkO88#|7g^5Zs$soZReQY#%;&G51ktv4UPe1gJT=_9g=Na8=3I~ z=R@aqB#a+8Q_z11{Ejn{2k=Icg6HCQF!>$#j%rm022(KbdU{*G1}$=lU*E zTRB>K2NPW+#?ex-5KrEbi-j(dBt#>V1g6)KJiKb014?j7SeJ+Yz*!PxbR{8)$U+{v zKXFNz*vsWX?d8r9Pw6M1LGhFf$|MVOo{~!PlqOkx1W(CFP(e+Bo@AK}{)tmb`>^gO zZXY+<5+qJR8YnUj63>sCVmUv`M+g*e&>%5TTuK-hDd$H8At_RPg!7}$jao_$Bli}3 zgma@**xy@NO1?t21h^FFq+gL8ic0bp_TjX4C{9|8#7Qp|F)pTm%3qN`<-_Ds(G|HE zy|eP4;4AW3WPi#fnCr}6kuL%-6&)rebOyaa4-}tC#&lI=NuC^_7gwoaKqg<9Z(#vvJ z+X3BW`G9UCIwO>Wx~{f^x&yiq$`<26V0YIRV|UkGy2W@vcTo2;YKw6jI@^ptL*1oY zja!Uck=&&h$X1{ScpH*Ds1ddc!~@^8j<9VtULg6H&8KWTR{u$kmDl-`=VfPvBZbjh||+cjG$nIwc}!Jvbt#B|{DNM73miqVI`Sp3o}P zQy_DZC>2mcBeB0qd76=2oLu}g-Qh;Bkw=pCaw>7lEZ`G#I z(M2MUK>vvDh^}24eyI&_{Z*kPyRhQIpb9F3H19RKcYLK>x-%1k@UkqBKUjqspO!(bx3QKSkt+6Qme%F$U3C8PwSA@Iw=X=Z!(fH*tu!OiuP&Ex+ElxsVBgV zsVO+0n^Tj}+nm}6o{fI{wC~`Wb>Hclb+gk(w{J|{oEnt2IrTeT5Zva}^7bjZ#?;a6 z%h4I2OVO3LAAsv2MK?gluC?;^dO84FPv`oKZci~qk(9T0wjbR-D2)Q0@b$yy`qU4b zjq70PZxm(Xor_#2%^hG&Kc`a-uKMBMu`^0E2{F^}d0S!a*Pcn^{v#N9Z4 z5ch~_cr5J}x8aeNMt{cRF^zg;Otb9~g>KVq9vQnaQA_uT(`>cq?-s|OmOy7yFBq&>Jy@|2#LX0!gEOBeajQkv8f#>3x(&eSBJf zv0K_EeWQLeo{csESr(VZ82<$f)^$tUiu9^{Mc(Sht9Z8DjNW$XDtNneR=z49Ay?(? z(h;&5|0UbkrqjIxV5o=`=js zmbh^mo^_|wOVUqd8uDgL{Y0AOX_QxrluObT@I^eD+7 zWy*HqpI4@2knQ9g*7)U}8|9bhEiBjj<@x7rC(HFL^9}SCd;|URmg{{3cPQS%D&$xP z&Afl$KF&9AxqgLyxqcN{fteM0zd+0f`UiF>SmDk(6!-|`#7=Fq<6kuw6X;5oDy z7y*9dG*QMTsK?IL)<-B4tuPd$8&8Ub3d1PtYU^X?DAcX!eCSc=ueRn}2aXwKy%k+) zh!EI(givXyG?-|k&BFc$1cb7Zl)15+fN%Ix&z`nogLjONo)vNmn;_l_(}^Q)+>ADK*rIHJ>X^s3qvs zf@#VU=@R)|slmJ8&y`DLAz{5sz{{wG7}vm{<(| zDftZVuRj4^#;k&4Az4Irh?k)jBikV=@GdvINUX3JYNxnEWSXh2NMeO}x|nnoMvJk+ zPH{a>xvQ`qJIB))p{o!p#Gpna?<$m$GGL7GDOpcO<5&;>874=QQn8H02%kZfqsoZM z%_eXedLLt|9Ov^h@-f&%bkan)kI6)QieOw$5~KvF963IJ5Rr;>BGPBnRk z_DGQO;X`q-w4UaZP;i2@J;g!mk@7$X{Vs*2-=z!_x2O0ZbI^ifp8DYPXF)MTAKFMN z1bqG^KIm;Gj5i}`Bpb;ALxr#r$!4+zt`T^^u#qe^9mFT%rKXMW-@{Bx6X8xIlcL)`(+B z6{&_B1FXW#H$3BS_*MM(DgOih56Sl_XTaZM|1)s^<6E5nei534U$I}4@C$gN@->oQg(b=o%zmw$R$83D2wxyu0?pJCO!O5Q z_Z7d!`emp(;MYn&ktNH(N$B?#mnj)yKk*~w3ndA78k~X5AilJoRzAYqPUvM=yHiP% zTb!qrm)11-H1s#P>~%^Q-Kms{VYE)U=lq6GlkYjJalM66+`Gk6F-9l@$KbILM$5z| z>=8zrlrnL&Sm|P1>Ds9@DRrVj+zD(_DqRaj#tYFIEsk+jy2cQ(#`QaRq4+zri&SB1jH?P+XRZ#30ef`j?pqB&{6kFQeQRefl8Zpn8K}2rAn7M& zhwPOr?n8MZ(_8!Ey706btgPn=G+6Ii`XWifwRYE1uVcNt7Ef!v&VY$V`va_R zv@^HKzR7MtvR=pL8g%u#P0&m=S(31}$#U1SUUy$e5}Pddg^zG;^V%jP6}Xn~3l+Ft zKT@`%(`4C>Szdb&*?r-ja9`MNd1I~GF= znCp$>8+(F%olejuIueofwoi4e(-8*&COW1#rb0~yP5~!6cJ@tl^tSKn%XnAcU447o z6R|@A@Haa_mrea<--*udzKjps4+D4i^~#un+&kkpcrT!L#w6_M1)L04Wq4(HXAC2g zkPIVU8LEu4{A9-@$DjNp$1w6Ie-?a}|I{+s@hPqehM#~x1bzx^#&tCj>MTDI?o*3e zILrUZtA&Y3HVe(dhn5M*CjvJ^zYnDr-iMnA-$`jknStL5n}rFMZ{aozBD(KeM7Rl- zPRj4H8C6ZqN+;!8VS1}m^6zpdg)!@$MCT-uQ}T>f(_4Kj%s`2jQ}XmyJ;?M{Gg{4b z^UPMgG^gYqq?hI-CTF%f9fAL(jP%yvzi-p@Ag3d~Cnx1zZkM1*(0uQn3#8RFkg|JH z05Fj5Ab~ig9V7th_hbiF>>x|g`=0ot=TDcq@q3b>SxOILDgb!Tc@WRMxZjD@xYgei{BC*HKS7q%~URwKe!M|D<+F( z`W0SFv|_rM^|bKmW`EjI$wm3o1WlTmsWfvsI47#3!jg_kPLwGsCn`Z>LiI*c`ChuY zx8_WQDe82@nTX!Vv(Y~jk&U@Db52yESLJ(Y=0vaTsG-PnfQepbA}*ny9raYYI2Vo*N_~($BxHV?9V(Jk3he8HL{ej#JZw@{b z@-zJVSbZttee8EARF z``_}v=`SI<2_>PoQP_xkt6E@gtT0xP+=*I<#Gw}c_?8jTi;neB{mi6QM zaj$jBoDwir7$+zJxBSNn*Q9ZnQ39H9KL15E`CBrSfN_E)V;p*xjG)d+Kv3rd436~xxnzid49dnyYG7# z$phcHsQbY1z{}`d4t(G{&+l*VaO~2-=Wp+_fV1A01H%LV_CAa3a^Q}j2fk;$Pa!+y zy(8#y;9to9hI05mz~R77e|i6j>`%;`^}gW!7rGZv9ekGf{R#I1{R_Y)et&tZeJ&uE zeP8%q@Rm_(AGJ>hpG*2n`VKw|6}8U{FWL8!exXu~YvQU@EM3xH*0WUYa~U(mQlg7- zqN^C!r4w}x$Q;3}6X-iK@$7=`f|Wd$YDN}A{*(h9ngT9pS}rjqDdK`-MRWTLy0cC&S}t)whpLE~(3 zwiQU4VlL}5mCO33m>FKb#$+mSNHUdQW8yFyZ+lNQ!>cKVxmX-=NEWz#Q_KRd_f&@9 zUt?mC{2F5jo&nzhhwMAUtG((y)dFA#a0k_6WRF!Zd}ZJEsz>mTkg)W&*9+gG3JTSdJ_qdsXhT2+JGsmg`B4V?>D40ZyYDxxwWsZlLJ6$4G+ z8Bjzu9j+Ky3{OtIdi8Os*YLaPSde7%le>pbA2$=Mro~7 z3^I4>m{l>TV^(XWjnYSnH8PGhnmbhtDj!rasI^k*=1Qno<1VlBLWNQ!KN@AB#HhUR)N|Ty}F9@+`%R3sZh9nkA0mXNh6TByN^Ci5r9dY8}hR z@O!bxk41ZnytrPv)w;`kFP#^+2fmduPuK&z%=ggs(#6|)pcjwls2;j*wg+4fT@PJP z)q+HBe)e?zV?qcUuBf74#UTA6JD+ z1|}f4+Pd4S6bsM-U8N**voJRcNitUfos3uM3Y03Ng0t9WDYI=A&{Ocb?G2ozRB*FV zQ^;(rnT_rg;+ThTk2N>4q#!72( zy{^%%h3aq68W?NA{S5;QtC7B?gej}t_!e&8wL1KlwaQz{T3w=|#l#NEcn6)ty`@Y> zB?1$b9rTXK_>Q=P4lwMbJLpa%leo#;6x=%|0Vi{J#Q#Lb|KYwfg{xQg;@(oPOo2aP zXMDnbM?9bYpSY8rPiM2|(ofjWr=LTzx2Rr;C9SX`meeaJ?Bn6;mGR2C^yBsuIF2JZ zmwrC|0;Vq@JD*SB~4gh*cL$#w&JVykgbag>%@^F0{ga=ZdU4 z8*JEYVKi zkY;oaJBEl^;u}0yWr;(;&D=J}Hb=8Ne?xlPdfVQRZH}JyOmvs?nPN|SFWV5Yx2>mr zh}g?EB6T_6(~jpuenjfXRMr~-9GUu)xKA9Bn%i%m_>(w1mGyptAD+4?EVtiJ;-;_$ zJdbV)`$;?`9g^5YgU6<@MjV^M4oM9jjbZ0}GCUeQ&iORLKj#if!&4t~j30B4x#6i# zP$PlQxW=&O9GiN^J>f>CI&33Td)XYe$8cr5!`91&|7Zl4Ai?&8bJ(VdW&9Ivn&^PH z5ym!>fbMsW-nMOy?;Om@Tmrm|DI2kq?{G~VK^+Fl+;@(8OdSE*h|Ecxo!E%P$y~jo z7*6Jjx#{9G(N4&ZifVJy*v>ETBrF#y;4X~J^d-rs*MUYq^>O{$UbiKtwlzyC;&ov1{h zzrPvpQ%ou|-np1n{{DHWoj|jyz@6l|xd88X3RKsC)ax4F6XmJ$krx23;n*DXNvnL- zRj5x|Z4QbJ`=nKD*!a-#p|N3#*XE#Ws%Zaf=tlc*4(ib+Hf(cHv_E4R?;{m28Sf=y z!+Ny20u>v^uo#K#b;ZraUU}Y5)NQ;E>M@AMqsnFY#OAm+b$icd^$f?>ro%kR|)? zR{e=j7Q0oa;BUhx``<=Z>~#%OSAcAKBs$l;M!F}usCMIs!TfGj7dOYKb_9*|{t4@D z`~T$6vPrFW1nmf#)XL%8MHLMn1Dw>Vi)ttMC;y#T7p)o`JgL=A)elh7K;}4n)|rHV z&Vw=MYX{o#*=KO@SU(PI_f`AfM;*qY#^+tm*M^Mq9qY$fgUpVEaTL00e~p`?{O4(Y z2$`pOf@2;&VQc(fg-4;&4lW9s@k`|MH0|8{Qgb09BkBS^oww60NAiBeg@_N}KES8- zmzpN^1>kZwUqp5xqDg%boev@c@Et(_zBBkB;$p-Z^#>^C0;2kO4Min-1w@@uH>v`n z8dc2o@k#E?Di_FYMnx{u~o#Bxm^Otd3fv7N3RzLnRC zM+bgoYDe1XR^+xL7c55yGHgdyU_YAcPIVM|RxZuGU|Est#Z%OZ+`|Kp4!mGFJn#s( zea?}AhX-o%4|u%rVp9J&JzO}+qc;tpd?J={C zI(Lux2mJnCc+L;z-2Q`d)yUYX4a!{%{{z12A<(mcG&i^ZVsi!33iIk-KbV)87h~lf za0OH)Y6-ByJQUrb=4@aEd=7jCFdN(feWcJFv48701%!S)-jdYlshe0hfk3%g7nvr$JwP*%*hK@iD19pOI zF+DYP0(ORfW@7xz6oGCeZh;olArsqaIQ(!VW3kt8%te}?o7mKIQzX0^tDl*E!)y!i znd!Odu$vD0 z67GdbZGLI`6xnB(S_AbNx}T%g0hud8eQx62%tNg+eF68mNkDx8TxVJjUWdKb!+l{A zp^iZx#s0_O*PA8*Cm~-CUk|K@due(Fcg%Dg?iloOWc8-W$Tj9yI8Pd!t4Z(@)=dJc z%_EQv2daVNz~jv0-MHM%BheiJH4?Yb3h;8=?u;iO84oo9{gLJL)OLo2Kh?36~GDR<5+b9^#-`Yd;r;g;0oj? zObxg^$KBX~%W(zye%vpw04F1zV!CYh&b@;Bt~c(zUbvro=T1f{IrzR0hcuS4S>6NL85y@rWs zX8=BzRel~EY*KDYrURzYNbLXI^Ae{r;qMGAYbCGRPO$eQnJ0Wx~I-8-l z;PrAHc)MmD)P&G_)!f{5s(N>FCt{uIR>U2=R<2X6M|LM-J!b1w^Kja8bLZjoZ$;cj zzmMiNUQzEv{D=N+Ae-BPxq9Hd-2WoBWA%E~cDUOSrIG((qAYT|sx-0;x{pRu-;R*f zrIEKI)X;tKEz{d>=@`D@+w^8-!br2xXrg?pvK=nBmfu2v?_`yir5vo6UQ#>H>K49_@amd$fmT4^2-c95HY3I zepF`gexzFUuE+xs`y;+nYt;vUyCSvfm6~0VD{(Hg>J^%m!0*73P(0EVz$@67M_q{& zajjj6ybHb?S&HK>uH!3_m%&#ec{krfau9=$!9$YEW+nwt@SVvm0!Zbp=tA6=3!h{3*Ea z)NM4UfcqobXbO>>j@%#NfZiXG8SIES71>7f2hu-~x6wEv=4jez<{-%o_6%`gZb|qY zq@E#5!vBbzqsdWc2H*De42kl)?VB0=M`VuLsy>aiR&|u02H90#jUVgX!pv3Q*TEXU z*TGluSz&PSYkZ#gLG>E{5TM5IrtfVWH!<}(czXz&`9Z~ad&o`SA5=d=|A5adj9&)d z^xYovqv~bwPSqYHJMlS&vBB$Q@Q+9gUN?PT2Iph1eC+lz*x>al_+{`bBzshPF9QxE z5`&i>{FDDatlgv9=dbq~;k^%^nMQh#z~`rt-q+lo2I#%^`H%3X0oT0#K{CR7IP?hb zf4qi!Uqx~apYg5&|M9wx78qu68&k}m$yZhoqIqPpP~ztEzU` z@hU#OGJg^I1#~WY=Bw@?$yepMxebzbUUyV&ye?rTx^)znIG~N@~!=pQr z9?*4yRHY`pVmdl`bR+9!coNdGtaa3v3;j;L#gd z7a&`g>4C`dR(v!&$%OjS&ta4$UtFXkToTIB; zHsvunM<0{(^c*cLS>>{noWu8FpF7S|t@OELmFpb+!f_7%3+OK#mXgmMT4_msw;0Km)Ww)tn0l?mQu2l4TFFBAS0#*Jl`KYg zYpMlqrHi@OsI9eE|CO&;!{&XSHZfqIV#>MRNf9Dcn;{ zOZLg3Bi}-j{Z!Kfu7{>4(BO@ZX5?E2?-q^Ty9Z_s-g;y`G#6Aok^CFkL-TLs1yv8t zYcIXG!TW;h67rs!ORBimuf2SR=)HZ0{2QtF)_T46G5`(UBj0+3{I%ChBwFAr@L*4^ z*T}b$;j~`KsKK6|Ltnvl9QqQz<4{jRd5CO4{h&07Kj2nr5}6B?L*yngRBq-C zQk7tkLggx~?~LD?XU>K~l_pC5B_J-obdO=!4!@;!?5R@k00t zc*MztmT)A_wD_PmWp@n_w5z@T7Df) zrvkW^?^l#ubdX!e|BOp>kYo5WE(`1I#=7L9-Q;IiCZ&xQ^iG7XJ~3 zf!u#2kP8C-M;aZh8^kf*g0)*6jo=_I9Z3*Zox*rCl14{5w;BB{jvAa^jj%x2g8YSZ z3#vv)=f8v^qKST2(92Dl$H!IyU zI9&^V0v9QA=vkm6MGMqqL!{_ME~HO3Ff4L0uSO?QoNQqHB)uhFEj~%N=!#rZ43lw8 zMLyXu1zhCXMW^6rjJxpDy(xw}WGb{n*oB`vI)t6TX3-%uiweiGSY-;<#42})LnwlG z2nxrzNQhMwt^``)TwoX1%g)>%BvvUBO1M8r36kZO5^lMLWq*(X*lPg2L;fJkEoXpd zko2;zuq?+UUWtKU(LFPuziJXf>D)+xJ79YtJP;1py6XgPzU_c*u5CWf=K)*14pX*ya257>?(`+P2W&6V zsj!zL>jPxHH<+0Zd}%AUe*{0z_L2RKP3tJPvk9%^BfCw|I{Mg$TWmrf`2I+STb@~M zf`fl%9gd%r@9z7|8j2M*VRzpr)@Rn;_(yG_F}lXQ8`@JXAEumq-tlB~on)a}ShRu7}D4s9Dg7be1cTz7iiO50&HG15_e? zsMMw`#O%V9<6Lb@9rQxrBc(2-tMmvH3sX*TCxDNXH1bI4Dy8A?XVOV(=?U(Ul3L2r z1bQ43iNFM!T6({n&EGF)I*k-oo+WAc8=S(*G;$W4O3#wN%Tr4WEAIoL=tA>Zq#>q- z<`Det&_Xl&n<17hG%qr<)r-uph6uWa=7nZKw+QuWh=?i^M7NW4f=<*)&~Z48MP^AC zN8)e_g_WYNOc*Vc37deUfmeA^H(L0SN|^tVj)qs4GFF#f<*z{JTd(j}`5&pebU4X_ z&d1+f<>9ZcuJC)2sY~}#mXE?;Vdcf`rB|>f&&rg4=5XSlxtHd}t-^VDtQ>P;Z7m(4en*@+tp*Pq1~XoH{zhY2Dn$^8*v4 z$C$RbK9#jaS*}n#?_{~Ojx1My2SaU98?5LL><`x(6K#rG!#}ouCL=5Q468qtKa*Qy zqAlt(xh*DJ7kz+d(*6#HAKb|yVcj}jYpmn@8?{D@tB(Ivwz#a|I({KCt7{=te`6=CT*!BFFlD3zaTu}FLjFBR zCx_KF)WFn2eyHI+M@J-`fJQph;1u6;yytL=9UVgqLk(8f4Q>eVI*_SsWZ9S*YWO36 zh=HYlCjUBa|7;|uaWK!>&g9!rob5EqW~*;U#B9Uqd?%2I9Q?_ulU4QY z)`Qo#TUW)VJgPmaIorvqW^~q7c~mpi3^lTHWaT>C!+Tes&iAM$;_3X})o;*muIh~y zZ>mOAHe==uW=CLB-G7{BoaX=4c&Op%jHn!^8Lye3Dds1DdtuG+%3jrM7nY3?@CX*h z2sR|Ws%tK;{_1KQjQ2{Rx^eLJ=8<^+hBgb4mUf%r40MCDr7u*zYT!z-C8A}2`^=@NI641?=a+NX4_>m=z}JscA~ zaoWQx`;>OC9#+Xg_pIh{UV2scfErfW9XzbkimYd~71g792D)rw2F~wvC~Ng}Xs+4< z)uVbEoE2z=A5mpN(jDBRdMYvtkfqbAlS-$from6I-i6gkrMuj_%*38EtDPbdcUA93 zJ_9%tM=f!RyMZ$?J(1gu+J!Z{tM4M4$lb+MEvdsyN8F3*h~8C4m_Kaj=wOcVVS|z0 ztJb?}$=&LEm_B6CyO=*@IBe)J_8xZXF!qq)UbT@PHZ10ibTNO_amer+x`%Mf=IDakxpCtT%X+|BoX~uLn>x}!6 z`E&cZbmJ3)4%rjKeoO{%$6WX{0}McKyNmI5B*$ExT`!!^ot=?vcSXP*1McU3ME8l| zN6fxJ?>C`Fc;Wm__>ub(Q`=o%Vx~s;O{m4^ryAgILTA@wr8CmU3UdwQH{r3;Ko+2P zSosH^;us!QjM~HKZy>dp*g%-Os~lD~kh|#IRR(G|kOs1f-bE7P+5i>e8i+j1byo>- zg+Yh8v^1Fx)M{y%E5sEmCsQp=lYhb6u6=@w}kb3IYLfWL@vX^CmSh<%Xvl#;cKleJdf!Y8I#cq=|5C#E4w)x{tZ0l^biUao^9V#xgRVz+Ve~RLFzxjXH zdp-AakLNu(IY}T!5x>%KoORy{MX6tDRha^{q+AZquT&04QTo!b9_poG9X=)KS-KAT zg`p?#mEol!yy6A$6;^nKyfmTg1=wnQ@{&;ITDBVcRLLs?@n0EEmAIBAl$|U&Swh@X zCGyhKC8vRk(vwilSf`-7Vc$u7O5|GBt*io{6m>&CSrVuURGq{`1@su>7-P4xK$RuE zLO8~F4xT05oPMsvl0L>5sH%!5{ba()gfYgdcyqcX{Y1iv1WWqKggS#6ycSr8&#`I^ zb%qm|YKDIzA;pjaY)-gQTxY;v2^;I650~61{uZB;-6%d>@~tt&pf)t()33uN*NPkQ z2^#TyOMHQ9!)`c-OLn7tOB#!FSYdKw@$TZWY$Ga%#Ygg(NCzHdDWdoT( zi~v6AIqVds6KW7M1vrJ-0<{I73IgdV$hR;@ppGyc)`zX5w_s`uU56xvK7y={PJwrX zxr01~R>M=%cc5$G*MU8R&tV@jUwE~2GQ4EWq|o(rEz)|_7J4(hS~?Uv>VccVw}Ne< zze3dm>!G(oU&Y!&4`QyO0-2rguF`*?2q)|>%x(p4rFTLFGD@sKW-O~j?JnMBb(PHS zVt-}__%3<}W_Qy5aOAjpz9sS!1$Ou|a$H9xN^MY<5GAejXQY)1FlEWe7-^*(_$RGo z6wIHv9nz(hzn9(w|C7Fn=Vk3mP4(f z^1&ytzfw=YL`W8~a$1DMiO$EYh<1XP&lX?;zhoPpBV7P(4_^d!0B7?nbpU5%PdmWF zuiggQ(e_B~P;$CK=m0fGXb(L{*nsW}CZ{u)IYK+29keg>YHBql#~H82c~(*{C|@{} zlU7?fVK-zMj4ypd=1aeTs-*BE8^~~Pp(Z66!FGi22xsxQO@^8RZ*tO4+vw2gJ&gM-53$4^!&gQM4^p?=dUEwAR=>t(F%Ru;gi^{Sq{B4EF^0s0ZjwFdY zo2Rl!;wEAD&hR%CZ!6wZ?8JFU;>7S4S+b;JX|WQoR?>f{c$vSncuB<%6>38& z9Q>+b^b|uge(}zdid4ge{3R6^@_ztpPAE%CHIyY?$Zt-li7!iP##iH-_>&1$@ip-m z^2?GgqH5yPF_CV#m|qiL6+Z&W2sl;o!_lka169LO%_YO(jfiKB!{eJvWQEQ6E+Q)& zff=vD;qkIUFL19y)+j4HU9!0RH2!JK;_}7iiqa+JUWKy4h6-8X;_`-y#pO%N7gdnH zsKN_wLpf_iN3y75PC4mwkSr-5o3f;QbjsKiqUNK&7wA{gI3X z&M&`i>{mgYeii*It{dG<{VJ}j-Au&2Th_nA&D2uXucBW?OBqpfG2b6P>2oU3-E5)LU?m=whiSA%UjBRD1Vhd-pCpkmZuw7 z<9Or6{B*;3a!l{yWvpbSeL0zN6^^@Dd)G3qVKHcw-xO zFD!2}{!no#zaal5k^*Zo6zWp`P&fto_3>%BFM$QnqvA;)6+aZab5U)^T&sG9EI0od zrbfk&Mm@`S9zeSD06df8Q}a^u>fuWbcy8sTJ45a%kcWS95X6ox#e=qa?3KT zDR7oqmRtK2i`hb6VP@#5a7@sH@cJ_W&CnLqR3K4+#gq9grTG{vD(=6X3SqX0ya21pc_k{G}@K;%K^H!tMfU7Li;jXf*w)W}B zS6kBZ)?jM5B^#KH0&I7y*E~vE@=KDYMMS+pbt`&<^mVQe&ez-E1NJ8OE!1nE7xX%uy%*5O@HTh7h4l57x0snmBB@n)lD;l9rTtHqiPpQw>ov!H9BM&c^W z1gl1`!5V4F1Fx~>)uyVlFP$_t{v%ylJds=%>%%wr4p{HAW2rvX`8gwsUFQ{bfQ{&k? z7%Uj9C%PIe30^Xu=Yzn4tXUE;2uV+i8!7~th&&13l?H;T&=aweEP+^Lj|wUPD-qfs zDgfV`RA2$nt`?6tNu0k$4D>(`u;3r00EzE!amMn8_K2$(AV$@z#c@th&X$S+9$?PM zUYhIG6$9$jM7=P-FgwG!kN*(I2{ZRI>eOv!C;0a>oGfkTI`uVKJ?aMVe#Vb#qU+Q@ zsW8pmJI(pj0(kSOziDfSw-C;J^cwt`VIDKz z+H3HqhZ=e$Fd3+(=QA6jYv_$o^O*vu1yliMN7C1ks)2XlZ9+N{c%3d_u3&Z}eZ{I8 z@aLF2OauPZvWdQd^g6Hs6Wft)0^Y#K^}jcZ|sHqlv(o{a>bOh@9Xn2=hKTi~1FtbtwwHJSbiYB!L~N#XxQ zOR>*_bR9~{t_7|Im$E<6?-?oko>_~1>*#?@7GnXfL%P!1eZg1KzVHV!dQ7c?T8lla z=uCKeoNE@7i9V2#qkMsW@G?<;xECZzrTw6#v=k~8_ur54pgn+6I+fNlX(&06s8Ogi zI^EjS!Q{+nT83m4=A~f78-p4R90j!rJ3m3mal4=B!^|i+G9-tYO-wpH88rq-)bFUt z%w}uf3^s-y3^kd_Mhymzp~ta&!*ZeM04)Jl4_6<1mNC8Qt0NWVmH0B*qE)$|3Z zOZ0lEOW^BqtHShxX2j)Dk`v+Y4^YleH@0mOBexmPK-9Yv{eH;8IyozoE@6aod z?xr^|xAE%Q0Ct<3IuU@9;@0W6T^;b?)Zk>-J2#O;k`#^4w< zkg##!8-NqwaI|BXw=_pfGM;uEG|%d^!;7KY@pXoy<-%*HxmuE)qQ@~@Z8OaSZ>CSt zNj>ssgid)Obw9;Fr0LXGXIg?06=Q8jZw* z#V_liD{)Ue*wO4d`646))$w8ehduA0*Tb&@4})4phhg7(=xRKM>w(MY z`PwjMu690deFO9yJXbaV=W6G{8_mws&ed*b<}eL-K5e&R1D-#l*|XF<{7SmBxOelk z#k%?6u~0EU;&x*9JZ&eESn3S)SzxC&hMEu>i;3?-&wzageulb%DRqwtp)pi5t?m&+ zCG}9_I)4}11KAm>2lAvI$?!V0H?)6X_75CW4QI1ljhYae)T7la8Jd!BmQ(U%s0pE) z<&OoF{2#$)c>f3 z{Ug|s_z1Iz0bip>%Gs~&v{FF zpAB2!E9rd>PQ1%Gl%)43ZiM4L?@u@j(qmoXUG{lLIL5j>5)?Z`I6lHHlDk{Eu z>_B=PW@25Ih~iv!B=&PIb|`lEL9|3v?9k7d^dCgm?3bWO+V0!WnUc5rlDP<^l>DJr zyKk%4Loed?ckYMPAIU?nx4!LIZ{a;a+6wLA*WY=y=LVm^=PMO<+kJd z@Ix=L-&;(J{XG00dOh&^F7IVKb*17JQMCahIIEzvTL20bXF$zV`V=^yH~O@#>(9*@dXr|B#cbrC-#%z7HQct zDFb&+lmzZG>6$1H`14R}qUHkUf_tD|hxT{&u;S~`2HT!vfBLi6Pc{swzfNS>G?Qg)lfh&34p7Ay~T(>tk+yG;}b=a+g!+I;+ zbBEpt|E8J%~{U^O)zfAPW<%azyJcbJQD$z`*kpWdA zg?pUKCzsFgKI4%c8E`^UC7SDZLNYQS9!`@u9wq5L*YAtt3CWtMFOIm6y_>|x#cQHE z9ltm}lXg0;i8?N>@R0PD^sewY8}>{(!?V-zY*>ZIxv(D8*)W3V!ft3O*$mHT(r5Ul zM9FSw&xPH@>*pq3J?Fy0`rp)6c!c#o7xo97ayqPkg-2n`O>J2JGWw>rj3!QDjLs&k zzs{zNu0&RWA45GZuJq_0rL)0b495_5Tzm{p6Y#iLFYg{jI3qbG{_Mg?h?^y^^r-a6 zlI!J+q`~JHoCcpP`Dd3-cX|@bUBKo3rL(VNS29~TKii0 zQOOsVwQ`a*VP>g_>-EKDspvl`*XyWcjl4;+R=x%^$B=US978qutdU3bZo=(w`^>d# z@R@6ug(-d?Zl5MeL~qjDL+9FY`|#1Tyy@)&cnpYx5|*jFxJC;+NB9^iO=LhPB}_JotQus6Rzg4UhR#RE}&n z|0n*RqMxn(XD}XfM|4+QPVeUbfk*VNxLEgxmf&4+i+Dc1ViIf-hcS1>yZQTETf}$8 z`&`4A7I6pN0@i`=3LW%2dY|iV{vOoNzz(Q0s6D`UbO(JJbq4qjb&@$l?{W2FPSXqU z{pTdJ0N-;?BRz}qV$Q-nO&6lh0{6J?#pE8>pZTP(3ONU(z3??*soOeQ^Ih;H^+HO)J<~Wc%R$0@j+o7knRZEK)Dz z^X$AdGR-`@j!-Y?$CzkMe~i2%)EnAM;|;GPlpF4?;e>PXeDK!%gPapy5Wx-S^(lxT zt`DZXH9ko2PtD+S!-q!rXn1{`(h4F9B2K0ajc`gk2|hHU2c{-^Ii>OXMD(8M#p`o2 ztr_Xih~~5&nv-epW12D9iQ>g{LihIJ#Wpt*7)I_gIn12v88GW66qE|%kNnR7d z*2vf4b+bmk7F~fIlf2f-xxLoOdA-OSw-?XK716{W$>sJM$z3b|;&L^L*NgD0QQTf% zT&lSvxz*e+E?ln~IE2^0xr$#n#_LrYtpL_=mquTWT8dvfb~Wm5bPXo%MK49a8+{MR z^*Yz58oZi&t`FDCA?944|D+BvT(AG6Go2h_&i1(*eXfr~Op5$mpA`AoKIi((beal3 zMeYzY)oG^FWT-09WU#4Dsqz&0WTz=sHWl3hpJW!%6eqLDBB~OdkeGoMQ6tjG2#d%J zW)Ve3q=lQ2rG-aEm__N~Y2ha%UmVkcY2i^3kr7`UKSOl_zc{8MO%G3npBDbv@n0$7 z>EZw4>-8+p&yF)ZXW^^#XGgL0U+FAQv6MJ7;Zd@go+NXZilsAwB-Fw_|(u%0UHBW+NxYO28g9AZ8rv}T*T5hJe7+(kT_E?F(s7DEw?3eE8wiO zU2eMqYHH||(4xQum*wyiTvRS^cvGR5KR%;5;wVw{~A1KF@1w_oBe(%6VQzfyL-syU+95hI+2_^O@)6=d-PQao|Cx z=gQ~GHaG{JF3O%OFUs1W_d6YQDh@mV=b+Pmrvp$IWwfwOdE9e9{1vvxJxQ7`z9`EV z)543gCeP!ZD{PM;J?`1$c?{~I@BnrmL*MU|C(aiiaC#`r1GalLVY1z81@7%J%mz62 z?bYtJ+_rD8<+cef?Otz@2RJr)zV+(cYrl89SAb)y@R(<-@F8$wXy0B5F8jUv_L>+v zF*L#DHSZ1YH7~*CfcJjyiJ?T@=nH;^Adc7xY9j%4n5^!mo#z}z3a zg$_62{sF$wpi4&mU0g~RP`4o3|#uu1(e&nC^p zGoxQzZ*zBZzc@CjHvBub`Ba)bV2`fPFo?oQOfqwt<`q)~o`m;llgyK$ zCgW(jq;=-?@YchbWPZo2H?M;`*<1=N#cjP~4k24_-T?0qaJ{($&O3a<)4`DJFuX(X zNS}h4$-q+Zjp&DggiQsX0xShTY~BRi1U1!M24|Cbnw3wpD*UJfZnG3P&0G$r3`m@G zb13d}niWHFU(3xJtCwyLL)QS^k%>`ZKn-#&PzzO#BMk!%gPLak9(@{a^LwaaW(xJa zxdK=LzRA29>U;BasPDn2!}%TkFpy+h;2bt@SO1QCyIoD(BXBnZw}9uEjv&i15q1;a zc6_>)gOv@HZQ5@Aw5`p26Q8zi$7gFd&28pC%(tl>P`9b=>JDZHdJAWd1;BSJh+tbSI%uh|2uFLW4E3063?7>aNY^H-A?{j13X6E@H` z;GSjg@)Zq`_Vwa;1H}KVic-yg#SpCH={d@NBx!7epW}1*UIUMl5!Rz0%MRC;O zsKX?uCe%@f7R4>Q1Kxz+vTJgPr` zcN8V6IBuv<4Q_M1RTJnKfE9?Z zovFb$N8YMQ4c<_HbL7pDUD>y4y0QZ?v7vsW)!A6zm0fSzP~V0l-L|VYc~@_&-%wv~ zx@}jbyNz3}()m;q?NjZI{$Pktb-n4qka|;g-tc}N;tiIr(7^Yu_a2_E zNLP3d*C@Q}e;#tQ&buBpJkU|2a1;ePI*M9_-ot&6I*J|$TZIqsJ)%{pQJl+j6rIa^ zAaoRI6h6bxac zVsP!$M3RjQ$`j{_#|7n!rzVaG()H2x851-vD7f}W-PFW!L6k5b-`gl5Ep#1zq%OGD zXSgelais1$?4FwVUG1147dSq{y@$I1kJh-tx@4DVm{-r|b6_m(5j zbL%=R{i`}G@3Fd7AE`T1*RA@y+78P*tMd+Cx9Y!YzpH&`aRuvE?F#kI(qW0JdWUkw z>|eD?pt5>QkZU!+?k}8$vU+ULn4qyZ^S^3mj!6w?S z^@A=~udhzcOoNl2`K9`DbvpPLc$cfMqP|pL0bT)Lk7~=zvaAPQg>ySZA>3$~YSAYEQv;0?oj{Ho}ir^LQE8SPPlevTbzxp5ahv)uxpOx;nL#|Z+-3LcP zz6#DN^efd}@V)>^cCLPvdsp?jdXfpUaSY%=|1Z@&Yr3k_GJDn#76RT?9a3|yzGqEZ zCRNk3hJtslKBZj%4dhhAbhn$Swfi6ZIA<%`WX|~JUmxFg#EO%e#e#j}%tpX@?+d=SpQZ1dfH?uUVqiVs`q=kC zvbSF^*=k(Jl_9G`_V%mlYr(2QzA|JL9QT}6A-LZCR)?(BtU?jT4PJL3$@X}x)wt#C z@mLko7`3+u=*MSY>>v$|8gspbNX@mbw9#3k)BysjbV;cUWl=sfTO@FVae z{LA1Q@$9;6MH>Bl%~mAm!M5UgJ06|JbD8u~%U0lc^pD7fkNAk{8nP8y7rnJc7d?E$ z_?m?#qDn1H^gjIG+=V8prYO@UH!ZUWub{NdRP===o7~dW)J(0e2wGT2 zI{rh&T&>P-AeprrSeh!VqjXxGux@NMrPF{>$h2T%tBcGORFRqRLUWNhs;baDwpvtR zH&COCs)~f_utZixRf!5TI){QHvjcjEWqw^GzDv!=_bKAFm(8u42i0CyWd6Cl5LIMu z8!->x-;UO`jhI{a^N_X?N9!&Zk*v@hSp_!aCwM>M`~ENJ&oTSckmn-^*$xIw{u89kj!Q+@781dg_m>vQj8Xp*Kpzj-x7TB2XLp?N}f_h+V zMx6p4Ex2#I2dCM1(%MhLxo70X@?yEMgq<{=fVyYAi**nDBqldm`zGU8BzKK1NKSwg z#*6)GGSKRrt@Q`q2z_rtV&{%n5L!^E-^(` zNlcfEBCDGoA)t6@>-&4L1Y#+EDz7rCs zVf!$hRo+q7j@41-P_VCjzg628I270yh=5t;1Cj3slDT(f_5}mW-(gmSJTq&5`2i%E zS@s3XkS#;%JZwL1V}H5xumd>0Gj3sE`5^2#02~OX5MCi}-4WddGee;qhYdwJfEB@Y z2D%K(hvxuv7*;UsQBEOLA$rlU-C+5^M>#{0EY8YD?S@k@tYN_7tS)22fP!IprMsy7Ji z+~dYdwiaF`yWUufI&R#6bsYQG8%H7;36D4%jWeJ(7^h=x0G|P8CTbIKI+O`D(`dGK zGZ=0gI1A1u<7V_`;3nWHtFpj9W!z%rn~k&4w*Y6MEbvc5Jp>ZA6?_YDHuyv18Q>YH zhsIWPuBp}PZG+Pa^$1?8@pERY@eyzvRId6ASgv}jahtILQw=!IHe+aN129(|nmQX! zgnl;40)~&)kc6ia6`?@oR;5J9LB%O%7pg9A65qMVfO=?S0bL2NTY9!blq^+nsNi9j= zq~1#!1*Zkrl5`KuP2GzAP3nu37b)N149+CGsqZA6Nxp*#H?=FbHOZOlraqJG%ymU~ z<<9bNO=?Y=<$q1%%yoe`%YTdVn&z5ji}Jk2m1_#0Dm4#Y>8UIy@30(f_p}@RjKjc21nz+f_uVtD)d(6RE@^} zH0Ok^DO}@!m4hkHX^tuU49bOj-1dYm$&O?86#O%sQ=H>)T)14!@wunq@WHrT_c$)j z&4uf1WjrpQTaxg9Zb<@<`zXOZ&Y4@9P=a2HdIYZ|!GKkgP@3>4!I_(`N>@2^&m{X> zb-LW(layA`M?}Z(xCDMsFzYD5~3I6Dl6E5H=lM^PQUvik7@D6hw z!b=X5;7m@Kin`=5HDMCE0`n8W6u@B7RI48(nv@U(9xS@#aM>YPblKsOLx*ssU66?I zm3G0RAdxC*5_YMQ6bUQsE;}r@QziXu-RZ@_MtNJ-fmGnZzh0;r2 zsDiL}g&kp85-#e6N-z02iK~((|C}UERwQIfvLt$mG+Bu=QY0vGc1k=V1P$nVNt`HC zvcfJ-q?ZIF8{kTl129|X9EYPmR|O7S1M95-Wo40=$dj z;j6j~NEjau5AU}~FB_B{EC4GTv{^jgJv%r%`2W~u@g{NEppD|q;*DUN#e9 zrj25mX-f`OxWCZZow+RE9s@EK>P~+9jkK(9+u}Tyy^-(>)>Yj5(ns6 z;92WjhgFMLZI*A1GjVF5?l>QlW%(YH-EqE+>63mn&?o)K#7LyI&her+Q7w2pUXO92 zcu|dWv-?QrlYY(aHO@`aSUBKN+x%ihL~rxktZb4s`9__G$A{J+l&`Ap&zwkp#!?KNpwqoOWp);n_rXkmi(xw(4olTmb^H5o8M7Uk%LlM zh$_NtmFkwfN_AAERFYntTparw#&27p*Yz$Wt-nNKi`ziaCUm`@+|Y(>FL|e zH>DL{w>B$V@%60Cs}!CkzE$!V>am2UDuGkxbvCpFSb~1a@3DmA$y0GWpW`cHtK<a<7wmB;mh%yruOtB+BTGf`)M2c9O-yyPrvcl-QhbyZ5ujXJ;6HBhVK>6 zRc-hlVjDU^{f-xq+@@Nt2uNP8FeKQ9u28fgTcKF4unm33TLEvmB3+rTnq=W|ym^xals;vG-lEm}Y_eYYCNm5Lh2XaSi!so`_iacUg( z-2yo$HBSD~f}naqN8VQ+@$=hISV68SqK(0dJPJ2e(=9l)v7tfZKyBhx3##=dQQw!JVb`h2sma z06I0GfSVd{3|BKX;J9sSz+LJ%-eumUrfSyPt)x-|QUg{}cPTk{Qup+L3WCu$)x zRkIRE{A|Ib?!G`W(L}ApYC@7Nh;g6PeNy)r_a-V^;LBACvIR~V|NDg}GoNY+LrX!p3a zVKza#TsTRy$89gv9yg_c^rgZC_)CS$g?rs@^>3rvs9XJ)VrseY8s{o!lI9v`sc;$6 ztDI|`>v+d~)r!|SXOJux*7z+)TH|*e=_chhPL1CtWi|hd<~pYSk5%)@pM=h8s`;sy>6uYQtNrQfn>^;x@5DScgbc0*zNv} zj4##5T(Y@j^89L=4M>~@Z5y6@ z4S0^V@#kp&;x}mLSe=>hrfX;7`PrbI4R0opWNR@qUHg$DnhKf&hYDJY^b<83?kB6? zNl`(cs7^Tlqdrp8@jCe*@B{TfygEKoam**MNaiCd4)}rkhWQ^V5*WwCBmG3hGo48L zvvHV6V&lP*z`tRF=txw5HWG9GbSD)=2SWMN@eF=26>~{!e>NGjfpjuh5{n;Vg;s;n zL7kL8O#$hkWHuL`HVE5MTAY6}E6T{lE>T7@I|NxSbRhkUNDcKB`YVnj$_T;?4c@8` z$`EA)qka(u!=0+nWvA+gVAog7H|ksUUx7p5P1BP;O+OVo3RI-W*iO|KsA6mzk?nw6 zmsOw&!m;YIqHU)kjkeu^q(C(kGtss&wy~(8s#sKk>WiR2RhRWe@L53gQ0UM23#Dj1 z>0bn0sAzo`3Nut)R&d4_Dq63!I$tQI{tFeHu}8EAXZ(xk3$;hoMg1arZcm)&_FdE$ zs*Cc+j6c~yv046lHmi&J*Z#TvzetI4*Si7#wP&;3^zNAQ*YDE$gYDAp)GC1_?+$;b zHYG!;Ps!*Kxa+&8?9z5mL5I6b+X&u>zEi8tNXbxV?1XbIwM#(wwN$d>TIy$ki{Uf6 ziy_wbv*38~wN!P+@nRRlwbWQ!7lX6G#c;g%STX6xiYF8wFIH#F(Z||48|LVvajhmm zCl@CJ8@0!gkH_qBU=nyT`UJ4#;zsS~qR&O-Y>4VC>MTkw{#=x3o%>Xj1Sb)5pWuHk zI$T8hA*@dD&qdu+x}}ib4ZVAcTS|953Qo6_-i1Wj;wsqU{<@|7FN=8H&~5eavxs&} zLDxUACo})rlYWkQpY_E49AgWe4(BKv11FN=Dg zbuQ}zk`Gz`1CvEbqt0bXqdsJ%*)QP8q84z{?C%LZ;mWWUa8j{6!K6`|xDS}~ME@W5 zep}SL@P9z3q7PXlaVq+@XeK;@htUrKXBG`WeOojG*I*`)=-@RSlZ^79B+-T@k^0(FPRdUPlC)heeNJ+1fzkq*1 z_bTZPe=XQL;5r<)SIKyI<1rIb@-4hf!?!4r!5*EU2={6Y{BI2dQ1-wz=!c8#t^OZK z{=m`J8tjlAF1ABX`tQY~v3|$ZIRx)8_?Y5&tTDJ^ql$?>1RPZy2NsV$8Y~{!hoTQf z33#Mpt=R`Wk_WN=hsU%YPHb^K_K_Y}{H}=Xc!yu;T@M{!{J!X2(fgu!9H9fdi62|s z0p~-}0jv)=3d#3ly@%chwI7r3!1hB=vGyro2aBcxr^4Bbd|%OI6ybzTflpaGRn(4j zFE9qTG6`&QQG`!SaXYZSIHq_HlD$QHP?NxR*hl#6uy2Qs@JZ-fU!2hQ5YBps{dV{X zeQgbg@Lx*X0e`gLVZW#7NBBGJe*~L|wFgJ|(S8bdJL*UKi8#V``w=+}+{aAA~0A&hFF1yO{x&|-x| zA&AN_;6JrCWZ*0^@Ce!&_;3VK{3rotG7PKX@uOBFTa8Db@H*{k@S9L|+M8DP2e>VK zev~ctNfdS3dL(sP+bGh5O8zj^YlBJ%3kLtg5M1&noKYo2_XO{W=ii@5M?;SS5`PSm z(LgdW7Wo(;VdKEZ;W-;pau=QGyHI0F?tr&|j|FQ1jxMAjMi()+;sP|c;MkoE?9pw9sx0yPBb1f+q$K=}7d7UczE-vj+^ ze0AtuLhv@eO5E2!&>M=i>Gpx=q~K9Edp*KfqcPW^VQIpEQ@bHJi)x8ohfcFgR+ z+Ns~AzmFol5xNz)OYb?5xcBvo@;nDVg15`+J%Y|H^&FU6x+w2{$q@V^@B8?5-mwEc z2gYK`bKt?4T%2`o>A{%Tfv15(a8FLdIb9l2b}%NQ>@;*NrhWteHRd4Jui*X5BFau- zVllkM;Qh<`p-$m?^#k@RYsPh4gtULzB5Ss|ta0G4F$gJZFo zD(1Hs6%&hW1F{9$1=_6xH)vH1n@I<4(9%I{ra!G>XuK=jpw$Mc@D4MPNd(etBHmxN z>Jyn({Uf~!UJ~<2pJeT^165WPJ8(VrY|w7fuGenB+B%T1jqo-B*W-P&HfST#tpnrI zScwN|9@{+#A-)H0|@4P#X-9EQ(=vv@zx@FO*e=qx|p zorQl5?lo|RpNM|YE#Cbu9fgTVO0 ziqdh0Qx}o_F1U#Lfsg;R59$a0?}DC+ANV~LOZoLSMfC52dibP=D0(V>7ZlMUNO~&j zDdf~}una-5|*f_*=qk!#zW#(Ey!|epOS5MOZJz z70p#mFPzC0%@xgM@T6K!o(#F$M!O+ z@c$g{B{*M&9NSCWufj{1zrd|#E^sdae{;RSt+T1M`OUS?W;pemYb~;iNPcr2DY?KM zDY?kKz#UF`V$PEpDf!LyBDX`HFXiwZ>R>{Yw8VngYK;0t8fwZni?tb zWEKJ6P-g@Ux(3}D!CAp;O2)jw+$q5sfs8pNctb6s7GriX{MT?#!(U82gOV}soKu2l zlskvaNjRqk?i>l6GnhFCJcpx6I84B4=tayqAQP~NISc*O22{C8Kl;9CIuq9wZCIgrOUW+p78q~GG5;lV!rXzir zPROJ{HK>iczgZ#kADzP1QvcCpUkY2H8>Y(u{zs=mrLd{swbT~m8JaD)wg2d+NVZT< zY2s+$RS7jXqb*c2JdGw9vsJ=$B#W4I4asugr2~mG&OTkk1dOvM*#!F>%{coBaB?(B z*v$mIQxdI)&e5phjk6yQ{Z2XFp7_b|#seqV@ArSFWCA3d{r+T+KXNg+gyYT;<8j;X zzYqC7e}CmWrI<5DvfqDrz#4}2YM|&7OMk3}&nPIe;vk&=E*IiK0sD1uN zT?25$ef|N;F_I?Nqpo8l!{{bgee>!bUR@d5jfd5mYkKX}$u=pM6=*?-t)%roX6_CKZx-eWwo zhUuEvztNl6CgfL`E73`s23#vEU3+f^5PqkvM6`nt(*YL2P2S=|N2%ZJhYg*|L%=ThKFh3B_qHmE5 z)YzcD1-8;W>Hx|H7{a#FV$=a(2-}7E5LV3I2MYm;*#q=T<{s2tBzJKp#QThT$$W-; zpXKQe(EBiRfVQFb(U0KqbY1Kt%<^>iSw8AB@DY?Nim&U&lHLv8XI80m!K5o@AF(bh z@%o^YKv$@5=+CS-)Mwn5w~j}2K(6>8Sd(4p*1%*})!%KGcHnAXDa*0n(S>k{Gk zgD2`{(pq*F{8vm1&gm7->Ls&}eg*a#&OUmtmG7lr!{tzWaYZ<|CN|W!8V=RMzGiN- zE$nR^XD_`3Gq0Jea9%S@=&KBe`l{WF{a>|9=x;SinCDPQny=b#HHlDJz;A(pN}_b| z1C?j}5}^aE{R%e;6KDNMzrxjN0+b8k2Plual75wYg?rX-q4FyCsOvE}M_rq&eTM&4 z?n31;*BSm-xL3K?Fm(-kuX1Pj?{v7z-RW?Rd(1UnIm3U3|4cYD{Nt4~{jb5_;d#t8 zMH#Pb0v>bKX|8coQ9C?SHBGKhH7Uwr^iwdMCRNj={fd7uNU#g{YYE+@oeP|c``e{W z)qH{b1x~8wGkU6Khv#RgFWLs=bLnfS2H;iZ8gmp^?JDq#_BPTl+Rx~>*`sU{9-G_1 zqwF>2cU;#boeGa!q7_wmq)1YZ`W>jkTpFqzIEz-Xdr)b>G-QR={s6p?eL&Bm_t0gU za-9i&x$bw?q$|A1RGR-hd zlmk0B#c+y{bZ`XRQq4W;qofEtTT`U@C?VcE&O0FSJ2>rF9nc?m*+@T0K1$lb32TR2 zrx=Xq`v=}&4G+(M;?*i@747gjcufq}aPV5;(eIIe;0=NrtQn*kta;CKVL7x7&7lWr zxYo|4o$=bU0p3Nw%Q~|?v7F(2f$E7@d{2ChYNvX_X{T&xE-is`5xSkaNJ+r9VqK)J z3$~(0J6@#PsT+cesOy4ussp_P4wt?zxFNWS{5p_$jSe>ijSe@#xb%0D4(dBeqr(Kw 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�Nwz(0TiWd0?a2N;epc@6+*!H*#`C!y-sj+-!`X_7?P;H*Z%_MSeCdQ) zxmWW_C;Tv;ZACkWc7x(*L;a`QXkmlhLz5@P}_%iK(g?Z^O)BZ_( zF)A!TSXGd^3p4ke(W!H>*@Am{~kawdR?U0tuFG%{;iUVq*lp~{aYkN z*G0BUS|mL%Q7(wxS|sH{xlj<-1J7(h93NT`S1ugW9@7%mBAMw$l(8=#YV2DU$%h`( zmJ7$V$AL4wjD3%3+c0??XzV-Pvn+DDr?GFFw#vbdYxl;sA)D#7H+H&bo3_%k(zD8w zu)VQeNV;MxF<0feRn92NA_;EAwXX_OiE&%yRlvl!O3%&m#JJ6Jl5CZ4k#9y3zD4fo zx*4?vS5j8t>00U8fvHN*uGo$^k_7eHEboX5>f_;B=i=$=;p*uc)ThqH!?hk2)TiF1 z&ZQn#;O~JoarG_>`_^D~VPC=mVhC^VyRdIZTzg;QDujTTb|7Iv;2m+DNV;M>5S-uSWEhT+BY~O z+BY~`d5HE4-Ve_&*f;nPZpAP7qf@rh7np^AYw!*B3*I38=;R9=Lytr17d(z8ycDV! zIEFq7P55kUDem`d-1BkpPh&gkV6&}fz)R^fNWbJ~<8gk8M|uYH;|3n%L$zO`j`7E_ z?TaJIYME`dTE-2WZG}&LiRojM)v_-xOiOgAHVoUoxP7t5s5bcH23jp`)G;bddmMNi zUL1!!HcT7G9jErj#&P>%XL`kPIO~yW;p#A{Md|Pwh~?tASU7Q98$A56zd_>$5~kCd zhM0y-8Kl+5a;70Vtu1BTK$6)~&d}>6vD{3rnO-fD_1Ib@t-w~v$;67JlZk|@6|vmO zM73f)UfpWN$wbqTSWc}_D=L!yfvZxOhWwKl39Uj!V*4lYe}yVV>>$$+6;$k?SlkQK zkVwV<3dhLD$p42cPN_V05Sbh!FO{>OOu+>Ei7kcnQu!L|8Y}w=VPoWDv8}NZwz%I| zOs=u6wvLsr#>6+twiNc0)#zm9H_2z{Z<0^rh%D~c5ITR*gs$* zOZgE>JpnTlKET6=EE7s6+{l~OH%s}!XBP3xZX}U7whhG_qhAq46tdYN_dr~``k3sZ17v$Y|}K;45T&OExetc4PL{|xbA;N9n{q3&~)Cel6N)xhz<9)p-l6U7HHgav|EngW?> zE{O4i3Suap^Z+=1K$3W3RRH7ZSnbJ)p~TpmCp>qcJCq;ekJ$hw1dcy2fDyx&ph6fa zPzoM`nP6nWaQv8GF-P&gI#w#+{mPw$62YRCa&iui& z+a}PHXivri&L6-D;5phqnBRdOa3;_bkx#__C($423A6`u9%?f5WZZ}6=85n=($CFg zt{mP(@Ny)R=|J4?K-}la@Gl^_0Oz?`sV|2P*IxiC_2K$J;R1cudS9#5KgZ(@6t1Gq zTCd{qU*+2I_^&vy9mlMln?g;-HU&qm9qDx>*Wq2|&RVZQUxTVZIvM?_6@S{7I%=H^ zXEHYhX9*JE6r3lMkxt|$a}%MCTCa1ix}#QC-9+d~aHaqi%tW|laLS;rb8b3U-F57r z^d9hCb#Ca_I4$o6rssPAwLIzdY#G-BPCa{#J7?AMXRYUO-?Y3A=~=6pIcL2cquvB{ zU;6<5L!b$XS-+XCXExL4ttS0`jah%*x|vS4owp|2a4Y&P^k&)&pY-AIH`80tb$qgI zE^0U(gSi;%Tz(5Z!r{;5pPBWz{{)|z>)9>zLCpwyzvdwJFdQ@g=!c_XtOqqq*%8q1 z_5bKc&`a6(@cz-;QSbF1;C%p(vD&R)@N@YXpxydGAB)@hf^X%XndbtD*9R2~Bx(by z5Ad0}m3yeEXP=oLYFfDs+#?O?kKjDixKZ`28&!t)?}{{yFtbEC%N$c@LbbEE#F zDFK!^)OaqGnS@d>5rL))>Kr zzzu;P0Y4H+B%Bg%4D$bI#^64x7&W{xoErImG^I!$0ZBF%UMY|`tfdsVfnzOWxl-;k zJV&uSYuUi{;Yl9{uap}HzYiY=2d*^^J~E26u+%tA$MNw<;^D+vms;YW6QJVwr54ir z!H z1h$Df0De%jUvmKG;|-<{+&*jq@POtzbA!1K=LR#8Ie-b1ej>A9^FTY1A#4J?3CIt? zsiY?|mGlJ6O`|L62ip7EX~0Ul&@uteeeFg1BJjESBCc#7>1lLU{k?(j^{q&YRPjRxROqBOn5O<;ZH&C#bj%FE=TKyJX@P@si3FO`IZ9oUd$Av zbAz+&A02~4r& zI;seGohh>PVWq-8q{WtfLJ{0LIDObUO9H!3aCSJ(LLJus#qYx&|H3}^3IF4rq5lWR zSr8$8%$Mqkz5?G_xWbE&`sn`$*T><1roRIHnZtR^Kf(5xmk3W#gN0JPH>S4eOZ889 zZ{QaFQ{;n%EznQl$dLK~Kht+(atm05gV!VT)=#m@^!5A{E18=iL_p6F$ZUlEr0z4+ z6@G^B86Sb$KdGz0{j0!zi_o9Yoz!73Jn2*6pVXZ|7YP--6KbliA6LQm?)bK~jV+>e&=^hav~$KqBKaJv(AV( z=b?`_xT4&E!O#jW4@|+46|JlW)2*y4(iYau(8{)e2XP9{6*`FX=Yow2ZU(OD{_ujh z?Pk)qn*-qab64?IA%NQkZ@YN_e-+$_uN(vT0IUn5{E-AvMD4(Q5Vga+f;XB5@B{cA z=EkrU=#61U(+a*C ziQj471-=X4_3s7yMz$B#kKSe8Y2NI$3-yg`r+F*8*=whH8@rY5M}H&xgziUwLJvf? z3F$YoO@{$Q zc~uxmGT@~HUwf|#bCHqmB2!SSkh{oMg(;{YN`XfmM6Fd2zRkQ=LGscd1)S2LZRT}~ zwTf-#?T)@4&RWGf#d^$?1`P-(4O*`l5Req$A{!8pf&C^0tXGtK3<&tuKf^mIAPu+r ztAA3!fPfai7QX=jF_k|}(=DE)am`5D<6I>y@0^kX5p8FS` zU%MA_U!xar@6CnWbJKe>$!2K3c7Jc4p(WWj?(4DGP!Z_tNDzc)7_pP@~U z9v0nXPLH0U{RVCtwqeof(a%gx=J)33rf1k+lX*4rF7W5LE_4B(nUaJibCR$cS(mB5 z@C=m%Tx|L`--YYQzi}l=A4`hO66Pj<|9-KU#c@gK=&3G5%=z1=m}mE-{}W zy~H3lmO~Hb%8i$p9R|742b&z;4#O*p+_+nKWg+flIJ<=vP%MzR7ONa{7VBi=3Slht zE6Z5Hf~$5sw?atZ;&H8BA@t$KLicevzv|<0js8_nvXlBg+^_nR4(E#ISN$~I6%EPS zH7E5~H0^Ls>Q7*1nr;kF^dIm~>i^K3KzbE=41ZNa{2NHF0^2p?_%Zx6e9apN{EQ!m zuY+Uw`?jm_Z`#J7?gKyLPus?!ZUXPyenom!^Q-NK=BDkn{yrxD*8d9jH~4AWe(omf zwf?5}P2=`pGFc<@xZ8{acb#ftI#)R;KzaVVWiZ_y7$J;i(~Jqj~J>Ct-9N5g;0 zckrZl@Ru#)`BD1ImZ@0#De}?!Yv#+AQP|sM%Qf?-P^0v@`cL8KqB?luJ z%r$eIb!tpy%v;kna}Jzq=C`H*Tb#8rW}3qduo2b^_m{Z6^v^B5^!Y$9eJ_20t(V>t z$`jm6|2rRGn-=2*_jle?p9dd*8VryAl+F`ro_-AYSm0JTUi#Cz)4<>PQ#uu<7e$?d zRzWR_^3=al<>^)YD-~gXgXii0R*eBy@sr@bhBt|Sts>cLRV2Jw*4J?UpLLe?Z|KdK z-i+J%f7VI-M7R_ATC0j5iMffWk=RuHqNrN<3!_G&{;v~fVN?Vk0jFBOFlw;_7diUk zs2cs^C`IG8`s@__Q$740s>a8ZhbXxa2Z-pnAnqsV`-}zNBzw^^# zR>cS=tEmy#7(@J3F{C%fbn{K9mzI~7ZeB?@V(tYdUYNSEZd%Ms%)K;c%PIY7IH$0Nbc=zl;3>X4j$35dc^!TAJ+Cv`(ZQ|BpGjW%VVRW0$ z#Cho3bi^IOTsF4pMlgi=87~_>^v85W4~H7g3^({8Jq~?bH=G&490P9y>tu%;I@uA1 z;fCWn88w`dQE)JG462irQzMYdC^@z>x)FwBx)FLAn4J1ecSiS{ZY?q&WHM@mo^%iX zH)KAJo~vEU=4yXu2{sa)-Ey603jxCj3n`*{ZboO(u)_ei}MFXkE5MLowJ zy5K#hq)ab3Qiq#Kcft3eGHDNf6D?)Bs7-J(=~PQEM#`k(JyI`bFy0ZRT2fF_CIz*L zuEG0|R7(vi#qt#IJ!*swy!WUPYQa)0MoWi-8!=(DcH3-@#3bKoZ0XsHzzVXKAC z#w*`w$;LGxS8u|)MS=;6^v{J^*gh9F(I%+H*cL%&W6F%pWLYfa=(F{!ux0DbmPYJh z70#PgICD+|Im;@zoaHo_1>J1fD44Nkqd-)Mje`!cS-?)iTPzGgHVYVH+bF!`H-f$7 zPh;W*A7XpSzW{%M^XM6vhyDeBOh?Xx7yJnDm%x|!Q=lXCLoDy~1ZN4Pzr(ScC1lX= zz%pnbDubSd$C5#3I`}5^N`n+X1y==Z!%v?{(4~fOw$0dP3};pN51V&0#M#Y+gI`6z z0wnGpI9Cj;@hW~kjK$A?T{TQ&c4M1{gf&($SK(AZvBskY+Q=Gdct;Iu&9w0dka!H7 zBL*MSTJsS@8tY@Cjcd(DV;Y+dJ`9+KpG#Xx5hcUSTC>b#G%lr5ke4Af_avB0t5 zpW(NL#v&PG_!=v}#@aE^#Yl?bj78c8-3B!dzX#QZtmwB;NFr-EUO`6>P*W_IZPd#HQr6$q&Iml#r~F=mLjPGTWV^gSJDl1 zBfT769n@0Oa%^=b3Fe!;CElrKlBJrL!&!;B6mtrkRP!F(Zi-oqT;jclNij#T;p`rU zUKhoR3t4r3P4I8Dwa%P#%qz z21_FxjYm&!3UhAWq*uYC;8Y=LwA5m@#JwAO<}*b7L4?R_-Wt$+M5FD2k~>iSE+XRH-$q`H-&bJ^uzEEGKU=f zFyl#iP$z*KarZruABDeB<4OJW|4F(Iu%^zoEs6pm351XkK}J|6?3ILsBqxgm(ITLt zViAxb1dS534)z{y)QYQB(bBqbkGi#P{nZW!Du_5x+gkU)@!xO0>%E?PJV;*WW)Cevav5GBm7{f!O9K%z*LZgh~bAw5040nW@8~h60d~}Sc z{O~=tbAri4ez-B5{6N^;;5ULir1{}_;rU34k&%R`H#qXV7{c>#>+@sg#T=C6g%<}0 zMDDT8!~8)BQ2~)VZ4XL{gPUTSFgq_MAo8H3F{Tl-B$*d86*V8&2sZ_*33`5v$$|^O z3u2~OoGB&|-Kjtmk|baf^fdg2b5hJmbP}nV+r)VTy)okh?Thk(^MSHK*#e0hgt7tJ zAnBD6?v>f%cfxyR-be>xw>R)HI=wP4xPdWVxP5ZF(NF_1^9a4ivPUv&i?>Gh5Wi6N zNcIr()-eOHtdV$PhgXazY5?3L*%8?T8Bq@~cLd!5G5xUy#5_RnD3V9A$Kb>0AAvds z{TTP@7~E0WLgYt)N8uL%7eV*Rj>GlJo>+J>vSUz-;ZJ~{$oj-5P=4+w;QidQha3kl zL1hnFg8mXrE`k2fjc^|7Kes#_V=;6d^b5Dia74dw)5<1;weXW=xwz#;z{&6$3u~ZW zxbfk%GCouxG+$Qe_Cd;*eZb$f_kts+0eeBclX`;RNi{%EtasA4QV;N3sTwn$IHpFX z#$Vo7L93uV@i+Qa@HyzHaqGEIDp@vkHkbnDKxcs|*#h))fH`mraLpFV=0jxx7l7x1 zvw&H$NwOyJB=|$<90Jb+9)>;$)dV~Q{uSH=)q_qC9v6cB@pv7S-A8&K?vQLO+^@j< z7JkAd$||M@)!%~m(er?|it)g6p?^$~%UIbH{2vaAT%K?}VnoRBAOC>v=vzU1Kv~6% zm0foseBGtUjbJfm-JwNLQBc=i#K5SSZ;**GF#?Ko{KLhlZ=kNb zP+0!qQ85&bS>*Dg^c!?O*iq0Q?LOcheX#pz*Jn3s$Oj+=r*auJLia)+Z2-~N2GrQ3`Yv=2V5R!j*erCfM*WWiSXDOFHZ?ZwwgIean;)eC ztajVU;ng-(NUCinhffa2Uvib~Kt_=C+VPu3J8gfIw%azu{3va}xisLMzKLl^`q`}= z)ey7OHZbzDTVP~E3_&9%0wM$Po)#F{h}po%05H>E>#D)hy6Rk4gfsn#*0~mi6@}?s z`yy9_Yg|W$j118r*^U0lkX^vtt~*_Kx$Z`%C@e9Aa01rIki?LkNZUkhqTQ|uA>T&t zg#P5T)AifvHc>)IgU4s5Pfp)PJ34-H`V4LpjpL5vwuwmoZS+{~Snjvc43Ti&T)6I(Uh5nV^kC8Z}(``OK zamXFFPPg@5^Z8%t>%G3xztATL5{Jy^PY}%KulGtE(rSOlt<^qp$OJ*F{ak3#&V*4R< ztzZa!w*4X~;@qK!&==Xe(@X3Z+lz-T0+xW+dA$`9mSKs9z7-Z@M~QtYN;b6EqKfUk zux}C2o$ircj9#(5C*2F$lTLaDlRMp$KGEcbY@&%cgDCF$2Mz@y^8Zb?Yj25 z_I;XdmYSpDT-T~mH;~w7*<}&71CwdHtmE*XP5&U_^BStlo@CC+2tVifnF{_!6fHmNUNG>uS!aZVK^{ru6F|YbQ z1kdrULT`@mRq$iA;EFZgr2^PnL#!qBc!yqf6J`S5HK@ zTYVp$RAdv8qykr>o2E?#r(u_$%n8d+HpkZqW%kX~b*r6Z_pvWi_eJU?BZ-sji!>Fx zCuk=CGj-#zdjj^SYR7>ybx~Mknz->;6SPrqX5XP$X5YsQ;$C8Xkq-48k6tiVl`37U+uCx=1Bw@at(v%E=FPTlr=#*YyjLAsJxEV_(#$>qW zr{MAXIo~y(Onr{+lzxuA8JmK9bY4ov=)BLdKj;5~F4Oo69)H(-H{`BJ+>kgRs|1qX zW+V>A&FEAbtB{Q;sKT?!!RU#s3P_R^WZEeycy3l1=Oargn2%XcV>@`N&yVRjN6ZK|mtZOWu6^Nl{(=?QGlHx(?v@#Y&Bz?ljrO<4n6 z16O03g!xHRrol~`Qe&D{Fx^yxSL<|ChG{uGGShUta?`;XrfPJjLsbK-(XTO?;L=SK z!Re+dWYeIkfK$N}O`i0rz)B=0B$bxlGE6PQ-fB}ge<~(CvcvhF^eO00MKZ-Qw-h^; zVyenC#ng;WGhC%94Bc@461XYQODw&O=$xd5@x%EiY2kd2>?NjF^jl3Efv0FEX&%|7 z_NRa+X{Ttvp-S!f>{7fh^V!6C&`;6$Y!CW)`;+LNq>Z-^)H4?3SsxQ$W4bO_tT zXk+l%Z-kqGvY~H;GJHM}_eS^=V-w>ibl(Wy3Qq!0!o3xSGEM^5d4)38;d3z**-6GF zMkqdq!%+PgVep}hQ>ZZDNz^5%e)vQ`1#a;SgKF`-gj~xy1+QiOgoy{Zou7c0kbdt; z_iL@u-FWe zC%H6@b-*l(;Q&pzS(xO*VkG%EKz*dQvOnU8t?XuDE4xM5ENnrymA&8Zgu`)%7G$k# zqV|ky5fV)DX%X)CTZL@DAI*Oi`xtsB9BBS`xvSVTe*^f0!z%V>)(MBrtYc7jxvSZ$ z*sGBk{NvEQ%k4yRmmBBb$u;<|@Qm~S-g5=c{d-)^6{wYPT2_lE;qS3y1=RQcEuKy6 zm7Xo0{>&z}Kl2EyiQU8|Ux%$k-r?WGKE~?sU+LN5|Gj^Q|1s8R?lF9QHkwOZMQDfr zXl_L)ZpVKq>wEa6tT?Dn^v7^hP~(9Wp`*DsB%`5jNS3lHLYJX#NS0x0DQh`vDQg+9 zle?T{?Y5fT$+dP{jzr|Ynr-d2U9y?An!Q~@GPC<~q-J;GtWaimD|EL@c+T4;R+0tM z1yZ6|NJ)p~zCdbr7x@pw+(0*$`!d#J50U>e)(r{aL2d)xME;LG2D#mk^m;t@xFJd5 z5`Kc@u}3d>pxYp~Fggo+!{~$Do_Gx54{{sA52N>bRI#6Uq;MZ#s@LNITnf(d0d`ce zYtX4-58;pJ)}u2XU+dO;jN>+V5cd%M2T%`D4IUF*>QN+n=uyqCVpn7DLnJf89(v3O zt7bQNeCsm7rNIMVf4d~$D{|t#bx8xJVdh(x#E=?fH6dwGeb9;c8orNIWFNAckcSa{ zA$^gXm^J7=g5Jb@6j1|(Jn|T5)BbQ02NRwCzzf4li-W2>(a1GA=r{Fc{DCSRp3wXR)ItK?tJ_pGu@qU6&OYz0&NxeMHZzGq2o`s;PDCr_X{Lxzraw;^$WBL zjMAS^XSs)>dp>=EbOc2vhEx5J6CObgr=s-dIK!!PoDtL)*1 z7(VEAHhRqHY+}Lh^+F^9bl&S@Z5|>y&3%Z@LvY#P(_AO_vcYA8o!tN9>XAJj{LrRs z@M9$Zai4PuKS%y}@IC!X553Jj{bP6+17R1#bMAlK7pUHd7vSEAClSxVzj8?DSI!IW zlZZnc!iPAAI8P$@sD06V4xh6x+8g;H&S4av^T>nnBM&~uo8x0)AE*U9A5N-x0nZzW z52v4D0dFA^AI?G^(WzoP;R2qWa3RzL=(B?+h)HITWP$*cMf&**1sZ}3efmDQ zPx?>TaT@D0cJ;yihV=>lBc}TF0oeUf{{j3FNuT}{Rv#ulz@5bU2!8_Zr2akd1o)JG zKI%990t+ty|E6DvIt`qM{(Q^SJh;>PMW{2t1#qLmXY`9vXMu}>OOP(ok3nZ4a1pY2 zCEpW?R|wmWDKk*z;)MCz9q6 zk~BlvAt9+9uSfcq#GXeId){A?GlnOUY^#U3eRK?G4B1vas4S}ox*q96=>y#ueUEfB z&gy~gzM%)V*=4v7yl;2__W<)fhPOz%4DaCXL%##Q0e1nr47D+iaqr+>!`0&1`5NdD z_ZH3}&JoOvdxIV`&H*g9rpLWD*vHZF3}?hKq3Ll9OEMIhf80>K3g~eHWJ7@@(L!l} z{&8tQqI5`x0tHAW!cTEKD0yc8-kt`u$sa?)D?_dT!}Sd9C<96UE}CvZ7%7kC%C-^ZN??}XYF*8*(8 zu3gA>19!unkGlXag(?G<;rK1^D}gKFcB8uoxCib++(mF1R5|!!++Nfr;7YhvsJ+0I zsB)-Far;o0fvezFqxJ#!A=!`mKOk{yQ2T+a;3}|h6>v3trG+b@_Q$P7{a@Sx-~s6W zi@O3|1675oHNY!ze{m1Qy#rnW{>l9d>mX+SZj`Thl*IzOWvnK8^WNXn&@vOq}Q#_lPn+6g$(tFduD)?O7VpUvj+{S?^o|^{d zz~$n8R>tL^*R9V5ZXDRH&qkJmbE$~S2Is~lVCBY3^)wWlOSL)Djpbwa)cTl7XlRzOh65XW+4xTCd|U?EFn%rC+whr7laMQpa{rU7< z>mU7dty__98rXos3xpo+y>?duU2%g`L+%m;nm1&V1D5>GL3E{ zyo_#*&<&W;a|!Fg!?^Kye#C=2egCIAeGOa#I`P0x-!rr?JUv&(JwrQ9BdLKKi)G-R zrs?2f!Dnb^v4}bgeJ(JTdzKc;4F#SH)L|kVD;B|c#iPOcf000!s~;lyQTNRGvCb}Gg_{iTkLzym*gLL@3B7e z)ZF);#1|ud@5#U%a(D)kAN;SOegqcz7W=;U{K5a3=Z`2p{YU>6{~!E|k+%T<_I!q3 zi~ryMo8X|&dFJ`I=Z_q3I-kCU^S5V<|BoDrlQ&)BBnG|?`VpB3TH^FN=x@(7r!AZ` zCo=y!C`l-B`jL|)jC6P%l;)Hqd>s_&u!R%lkmeMLigHLqKS`J<6k%_?kjy0lq-WB-{7DQQkg9Q-|+nu*LkMt5V7TXYXVM$)+3q~dGZbB+?{KgXv%@@x zVK?1v4ffOB;?No98HbGSHXM3{=LldN9K)@N$H292;@M-04)>l%ao^+dpt!`%L{4{` zi9W?W$sv4_W5AKfv;jwbz^sPWKbDpgp5`(1)_DG82n z7%WH?CLk#ZPQbG#6;laVanNy==Tm}kB;0r)NrxdD2_z~RIvLNwc%heg7*ew+8L5}p zEE*Jje7>cREdYU%BU+KaVExFPs@w6kb8a%a)?=tfNK6<&|tEo>BS!{k(N`_whFhPeir5gwZmlxZG+Da$^qvDZAP{^XeV|!gy#fh!*7Ax60{HZs~~(crX0cx z(3ujx1-*jsDaf`2ZAE`d_!(qp!neZT5>LU@Q}G$}Z;7A6-4x#v7XS;w9l~XHPvN5N zZi#OKW#Ai74&f&x(RMe*CnPuFqwS>Vd_;0W@=+qSi^d+A-ER^Z^4}y+#m{i;-z3j) z>}TRjxaBk9mvGC^#J@@YhJPk@i+Cpf8+a-FGVa}_aJPt;L6^ZV;VuVt2)Cm4VRhhf z=)faL9>osfUEp0jvX_JIz;y`kz}*pE4(dd`1QOQ;?83|)VJEmt_%3uo;DW$+p@~o; zr$i*3!u!Dc@N*+XPVYkR3+F}D@J{en@G|HX@^0a)AfnwO2>S*z0$v6A1``zz?G{mj{8dm%gm180 z#NXnQi1=XN;Esq#_%!c8?*?+;;2RMgShtYg0Cq&2!RP)hbpH|Gz@C4w>qf-C;#;UQ z$o~=li~I?`C-_(Vm*k1$UrhW3{9F8|u7PP~64ZlhL#Fe+>{V91U{SEa$mg3QR zpnE9olRVH#?fN96@m+%yk7}P}6uvhixBxsKI7;6a(}zd8F9u4IjBJ!X*^-IU(5|{ZaB%nM|f*wnslzZjU}8IgVs|^l|VB$qjKLrk^Sk@f};T{)+wuIo|7!K{W#3frlCdhIhb5{5#28B**k`;oj*Rpc;XV*nbq+G5t|ggT4y? zHZ#;v6}trgZc_=YiuE@P#ZG@@Lk)6dRk3oEzhOmGCDa>q-s<1r2uJmP==&S|4E}~U z`j)5_QS#Upl%L@oXGK&?)NAzL=zR<=QGNy=Oug2h=bYoTM4d8&*Ym8+?(hidv18H|_!_q-s@^ zFY>I))lnh%Uuu)i=Hk3@S(P_R$;^$?&BY;Ai>vWJ+paVrTU>2|>aq=~@-=kXF0Kx# zdZj;vV|Us58V*6d(jP{>2HvynvONTTtv`Z#13UseikZXuT67Nq4#og-P!$;gd1yds!OViNb23b(O*)H zAhT}H?zL{0RQ0G@Xm0E=Jgbgjo;VJcvpY%t6dyxzpljVY?saapZgp<;P=AU?gmK(Q zgw?qnmHZ|CQ+yQ9)4#;W@k}M|FY)%UKT#vX{=&OnJFq=$d)N)U8@7kFhdG322epS~ z2So>Mhl>Vh2W=58sZv>L~$ z391XK#NNcH8gOD%g)k|KV6BB8Vk$8zDe57-izq3o7H2{D7vV$nT|~dYHwU_i>T!LV z1AoS6WOHD1Ao(115j6)kAZrvhKsN|~0XGVpP1SOz|BZUhY%he@{{5rlAjbcK@Wui2|p?B!Ho_fsy3)5s5a;)ML+`KI;`5D z_Uby+_G)25ZBPJ8m_S^6_4LZ^C{txSI!RUS)k#&vO|N`jYC_#8onDz#^%nTHl(^@m zTZ(U>HWxoHeOoFmd5+proK*D=?ro{6L|XE;^c{Fhv9!b$c^W#xgtV%ps?Eh)ij^o= zpfDjwoK_Vi7A6EFY=-{@ul3EqAaOuKuy}MxFgS1AFU7INBdEM_1Y?Us>7zr0V$vN1 z4yDHyd(I7|d(J(d9$PFc@thlr{e&;1pHKIkD=WE>{!6jEL{{<(j!*bS*@bi&{s)vV z%Fd@>NWX}wi};uJ3+XS)RCyQDRe8i+OqY%4IWLgP#$QZt8$nQ&M>vkgbC!*78$mdZ zHrQE}=ca8N;o{759*lBvCjX^tGt0%W=nC<<7PwE=kr5c`VPS(0^duElQXOH16Kq$Mh_Td^F;5a7CERf!DVtyl)9 zDj5d%u5=itWW_N^-j#C8hLxmMamz>=k5pD1UlLQyElb4gu#!Y%X;n?=2Z@{TJmr?T zpwm?4Qbs0{&`RDeINERFa&Bj!PvE`$8~@w>~^OLr_9sr@u>O zuOvkLSkfzbEa~*`l?cUuSbPXrD84HCLoz7jD*n*$ppd>`;u@uoQJwyeC09kKC4XR@ zhVKjhU33-ecVvC|p67Rb7jzBocYIfLPVzhIG`=%BDEUQG&P z2V6toHV8HdrbQfZ^zKf z1a*=Vk4`-FNzN(oNe;z5g&jwneVxgauQSC}A))XuBPwn@W@;H~t_E6-e__#}!hxqa zD(*b?Db750EkgxApRGd8V{6cj;%HFw+4!^k;7}k@p{Em*mt&jFtUPSHueMRbb(Ip83bcF^nALJzQ%qJ z(!CA~*v;%c4tpH-I^@&mVXBT%$5?=*mN5@H%xMquI>sJ{FsE8{>aj=~=9EugZNJ(+ zAIGVOH!_UC)%JH?YB3Ry>weeeh;uyWuFGAQdWL{0VAf;ei1S^Sq0FJoyDkEzFCMj_ z$c>B}48lSz0rLjK7wJN*q3}1bXQjQ7vD$v6J#igytL@jK)&SQ6t$8<)wb*yyC@q*; zYrhI^C2%czxje$TU~Aq;`+f8lx`Yu8@8vP!xXvIy%60t_RmO~SqtHtS-#E-nLc=p zHM178erC6^7qgndhw#d4W=+Sd^bl4vYYEnL-XZ73;AU1o%(k(Y0Q+IJv7?!0-gMp) zmYMe`lyE;*f7b4>N1r~oV0Ch-e#Vwec;beqIcc+cAeP7K?Dl^BKz z_*Se<;vHdK{!!6H?+Du{jttmnNm|AC{O|di%J?wnlRObBR7 zGNU!TwZ#o8e_-2V`vB)SsNA}IMZzG|1KVZBp)zauXX95SSeFl#JsbbPc16OPC34~dIX(v*f}3d56`JB{WSaV zoR6jK9H$(&x=*ubW*(j+GtSKXG@A|YTGwn~=eX86<#^Y*0SAuoM&ercqV_VbC&3rB z|J4p0;Zx^bH*mzt1RqR!*S)FsuJfs5)p(=cRIg0%g>ysty4n@|8c7SX6~L7VD-xcK zZ%J@P`k?wnt!v$b>SyEMB)25IsC`h~UHxC}i`s4^LfM<-p)w)Pwa-*KdLX3B`V$|FE{=(Qy{A?{bwdgM=FHKM=BB(|IGXsxj^>s%#n)P(j#;J znR$555uE!!Gsl$uJM+k#F=ZqvQXZKzGqXr}82-qdABu~VCo_*=?quc<#V3)^R1#i` znyFli?##>?$|B_qGgD@~8#^;Iq4aJnQ3-g}&rr_DY;m2TY;j%T zIwSLL>|5U5*w?(bycwBqc`dH5d2gWK;636K@Dtu!T3p}qf?b1wZ?Hb|ZVbLLIN0?K z_%l8eZw$UUxR%v|{y^3W*A`%~>y5#KSc6zMkO#XCVhx0@Wz}KT;~U_ zHY_{L*kSiT=sMO%Cp+**r#j4ibh1Tm$C`=rv1P3-o~g8D*a9?8&fs{6`YMJYgM;WNVZm`;K<=O zrpP&KRXKTM%Dx*jrYtA#-PCeNN5&Dh_)0tDNAv@xzDrtGcULn7fChyXqeFy{fLNH`T0~F1YTh6P0hOyQ(^? zURS@V?nLKaRcqxvq^*_2t*z{WUt9Say*pJ8@cOxf*|n9;m4ursAHa81b>o%Ofqrx4 zl1jo$&|h15ue=-SEsNV%-VDF5yaR4=#$Ex(6X+O4Yp@JhP}UR+sN z`5dq6d(}!V%@4DGxw^yu51r0fIA``51c^1DxCm*ReD5v4Qg<~cuV$v+Tel- zbb<|n@krlK`#!^+2~=3hsuf&vX<0oA`NeTER`zA^6~FpMal` z-89`oaub^HE&Tj=@U#$ggRz(JXJnsDA=3zVpnD4m;SSRg;1T?^`DfD?xQ)=8fSd5s z@=JlskljYsfiB^r$c{h}{t4YpP=tTN&*|Sb-Lbefi~b7t#q`xOdkp=bOvg-Z$nIk1 zF7#2j=>^MC(|~J?_>F>sW2WOs+kn#xI)TS9*$F&uI)UUk^a)H(FAx|{m;~T8Mge{| zq0_WC|Ac7)v_G6besh8J_vi1=_lMdGK4J1fz9ZiU)sA$3{!ZY|eByTG4*?FrZ%pjS zcL(o4&mC?^{-nGiP?PdT=eYrQ=1<9U$8T&*%G(k9Id(MAJwFT19eEa9JJQdxbp5&5GRxzX!|5l4Ql^;F@Ox_rPz# z^3&$T?!dl1+7+=|ptECFpt~76wrF=C-HiNa=*_5~we6VPp>D_R?^5^I>`-sk>Tt{L zY8~#^81;6j9l#yvb!l{%?$WfwJE&qY=b&O~VzrJcowiHksB!==#aTM2mf{+)G)yFp zDkdCB=6g4zma3Vm`Q8l2W=t>~r>PtH^SzlWhNA=YG_`{x3o{LThGPTrMlchd20qh~ zOf2}jO-2%>j!-jk#-X6jYtPj5vV$4gu0K4QrGhb0Q=w@Fqx}r zP)=6WE9;bGq8`~~)et3HG(_nNTm&3~Y(CP-s`=3Kl#77#!9$dP$QObCkndA1QvNBQ zhxAYRAK(V%0_b{RgK{CV`A`dyi@ug%d_T);mF+l=q9`NYRh#8 z(3$LdK$qt_*)`8K-?dyf4_Th8bs>I*3wU9A;KV%i11BCpCvai_T);%@!aUcYiGdU6 z=>mX3@B=YSAS46f2oEYeF?dj6R?vyTlTcYf5rvV+2LZE! zDyK#ilAV=PiHj;T-?8%QgrCZk_5wJY;__N>$@Oy0=833VM9H1U&> zxEtA@jGv4_6FCK(f*_pfP595oZ*-i3dAJhgx^HyC$Zx=(jl0K@y*IOWk0Y5NG66H+ zpik5%Bd6f$s07{9QJjL$INqAfPsXRC)?|K$+BI(1xZUGE8~=uXI_j^2UE|hduF3q{ zqL}FXRlvl=vr+%s|7_IXqn_bNUGWJxa#uWY{d4>0J{#2)KYRLL1%Hn^Q1~~J+0%*Y zF#c6AdwPeFiK9FzoIU+OA=lhtoIRauo<03Z;bH1PVgKAGg$JPe=XS-fOI(*o)Vjp3 z`19d{$n)V{@x6s)j<^dbA@D-DF!GW1Lii)?L##*ID$RLh7qKpclcY*hiB+XpsJsZj z4C|q`QsbwqM6%4H7AXC63sDR3TxUC83}2>QjwwGK+mWbh%+@QH!&hr2;HYfJ3E}6# z>k`k0PY8E*WIHa`aun+lCxknp!*=8-h;l;i4DF20xD=jHF`jIOi7-%sH8Tu$cv{kV$f^1s}j9lN=N?{V*O|8noL;d{yNIDdI2U6D5b-6V)h#HD)poN{x0>42N%RJPNWp)BOnb}ALer$7Z zAmR0yZPd1?FORCKCJ!MsT!w39=ku4vw)HOfVb!mY9#C za}>N7cno?GRF?S&++yHj_@m~3(fJpA1biGb$8jsoNS?zV10Fa319t?)Eqadn7ycjk z!&paf1WpmR=pXan$PPmjbqHz^_%PH$s4U|FFWymJu;d=TjZoxT=We13|@{&=b{)C8z=|MixkKdxQCpg z9Jm-LMUe~81?Q3rEk~YfnNuQDKr7L4Df$m*{vXcW1)hfv4@qv(WH@CJ1*e22JlK*i zgIk8ZImlE_*ZdgC0iXl47&DGV4n<7<**P$bEK z5<{`f6VXXGJHoMmEb|~r1dksfL^-0H4)ur15&1ys57i**ib{n13X(rm1F5U3KU7y$ zSAYYlYx1kW>+);zE69>n_G%I4u2_`4dLoW#&@mZIIex(Uj|`be)ZI z5S9)6I^3H<$~(Ac>vWgpcev}|Y?Z4h!s~VGfvYG?QL8D!tHJB2o2Wa$Rd61v)lfGq zd;{tZ)$8f5S_Qvew~BICk?a<#*Yg`NUe9qNf^ujd`y!zZ47R6YNR=M&F*enenB zzH*HS?1g)ZiU@p)YUIyWHS(FN*;q_`H69T-TlGdoI&Y9Ts^-AW2F`)*(meHiqsms# zfx3s)rP;22gU(y5IjVb_Y`C}J?P@EH6|ldCxId^rsC)3)>bI)jso$x$sy`@!?x|gmOz)Kp0Bz^?bF>rHea)sQy6WY*5xfYb0&j{+i9&HmuF~F3B4HJ00nKr)z`%1+ESF z3v@}$irA8vpOO5cy*bSW6SH(Tr_IuRr<;QvvvdP-#5qV7KreurrCW?!o1?po`>`0j zK(h#os7tu7i!~R4m#Fzj7HKZQ&)1yAd0fJIU8K%Z=PbRmz;l$Zaz17b;wqel_JKQx zeLl)FmbrsS&rm7INOBIUM0Y@aP+fxSdO$r2*RMo(2>uKe8e5_}s1A)is6M2ol%uE; z9i=S6AL~xWRi~86c+QQY?kFf_XlxB0rDUo`GBbsrtNdK6w6f!a}c&8*jb(FAI%RbMpK=-omVsJ*2P)PB*7 z(p72Kp+@O$X{)rCs4to-?QY3s`DOWT$zF-KZxyD!eQ#;CI&a?&H`1%pcDUVk z^Y+#1I)Jy`c1!kPa+GQ>n5oz;=|I9%>_M_e!p$QYH*b`Ro9C?^rSjIUPvPb<6%Gn- zEgyP)3SVol_SSOq`sZ`=92EWYy^woj{ZFNt?bT^`PqkNfX7IJ7*O`%KPBYgbtHb*+ zLGo_inbGc&W^Q+>LvIg~I_N#XJ$S$02i=*m4dtcX<}$>%2mS%_J?0_C2f%ih?MSx) zi8{?2Vm!^;?y?Ot^rD9-2C&Ec0MqoMNVrIR;xLNri|9oUklO9f}5|!QaQd=`r6o6W48~!FQX((6dE#o9~$k-$QoaybG=ycpqo58@L;~ z$GlO#8`Xm|J6jWG;fAJ; z+j;o~`7JPcj;>Ummv4}h-5ccRk#6G<-p09w9^aQR-{fo!+*k5_?RCxC?dUdZ?a{lYBzz6s`^p};ZeS0zGhShIwX@0@uRta8 z9_8=Il*-$R+X^LKzddk5N=P}YZYzFAS4iDf+)>PF6}Voh)HZ9cDz|f*wMy+eOHT>E4xL35TeU*Coukys;MgjX$-s*!FI1<( zOQo>vSs_$v6e6F>Ri{J!3jM2^uGy^Hs-tUu#XI0( z)EVk9n7n)b3T9|XhoL#FPSLn%2)lq&G#ZqTQiH@rb6M>N<%4%&U!|YY1wAb?7obK1 zpF!9q;}VW?8MnsJTvA_FYc*@M4mkED^=90*gC)B_U7#+jNq$Lvo;pumQeU8c!TC67 z%Ban{Uv$rvW$?eiJ7PI#&f_e9(e20jMMskJl$_cRm4M}_kyHOEpDXw4{zgAR^Pffi zi{wA$zsgeVoQrGsukr=lf65QIg8u@Ek3r{yDh7|uT-6KoW>Pb8q`!4iBr!@U9!nWe zjz?FH$7!9iLM=ru*Gi!()G^ABs*l+HL6xSHYb(?rajZV94>(pi`X7;3sLR!A#Yd#& z@M=XLdgL377q~6r^40n3K2;H=Qjj@Hp;qLpRX_?{M472?b>;Bi>e9fI1M<~oigYFi zm~o65sF^_G@=!B?Gmv!aW>SCax^*+4#7dHhmEE{DBQ<~H>WtJ7Cqa$WNR%US{Z3H{ zxPqrB;*P0C!XHzKl@evTM4~*V>YxaBAj6z$qC|{5FF>rEC?VNa^)XcfFdgnTj-kZN zDLghxDnpVkxlK(3W`H}WM0E$XRh_6NZlvlqe1e*A0}n>YeIWz*pLrS|v3=vlHH%dZpc|9-#5Yy-*;N z1C_W>=fUUkyu-x>sx=DK0L=wzjh3)lqt^~Vc_Uq;{Q=nzT0NEzD(9q&WUG`SWQnTmjqkzbnrb$pR&hG{11l4Y(&=R?)#zK*{%y+&6HU902c zUe)N(Eu2|+Y5EM)-NIU3jn3B0NAGT-t(i>Nn)4m`RK6pwRpH&j8r?S3%)(dNe8)V; zm)cj_JjZ-TTk~Yc$?*A(HfCG%-9j69Tk}iw0;qOe-vDZ|<2pCu^1z*`lQB2hu`_j@ z+a1i_ExdyxZz~*R?o72Y4>H@B?-XuDwhg!q_v|)0cYq}AV|AtuGAn3<%(n{_v_94# zbIF+7$dxn&?KbdsVab?2mV!pXD}jBiubR$OiuP4Qc7E0HrJbpK={h$Gf8yb*W}O>f z>MaeR*1360JJ9>85e9T#q)kqb| z!*!E5lQ`kJEKa;-?j+K9^#G^g>Pbk3LuI0$#Tno7KLdWnY8N)w9 z*RDymi_oRoG5p #X>R$}>5sb{^6R(5ZIpFb}DX*91F0kSIRRJk@T3-M8qZ0y{Jn zJR2`zKn1TuGr`Wr%NEPVtAh8!eS)1W_Pucb)~=jqYe{Uq%6VnHa$W^b7*GZ*=l$nS z`Y+u7!y>)^+;>%fi=*zUW`~vW_LY%*VdbvsePs(PNw40_4qI5cvw9cSPK&EIHzI2^ zGyEC;jplRZ_2vd7jpnnn&XqSppPjX{x{h0Kt~b|l8_WwU7h(6#>K(`yRqlX7ioC6C zQRTwQePwO9ogLNn+&Zj!bQV=+!tbcAK$clq0o7Kv5wjc1GI6Ae>deY=)W)(&n41J$ zQC(hrRZ)Se=ayF|R$WzGRU}q@>{rjds<<0d&%GPd!2Qtgs^TN+L%+K*ANqal*VnHB zd1=Lo=nv2*qWk)d*O1O}_!H5`qwmHXk1nlnFFp}HUgKUoUXxOOJo-fRNtAo>Npy}! zKP^2D|FpD$TUzn5tijyCCHS)J?5vk%r4?lrr4>(0%PNR-u6bEjR^eQ8c9wHZPxZO- zv$J}toomV}7?tPBd#dkOXL8P!->)WF7p54MT@}Q2R`gVNRdiNla_(1KIaxW8=hl6s zcPp%%?pG7+kF38FdHzLH@#_A-ld5<%YjA%|vj#^~gzr{34t5;O8f@isnsrhYO$nl- zDb`>?^l4T!H71IM-k2ysG;8o_)}QVtRe!pVR1wUOj8vUson{H5tMLB*r+bxTBKSAV zoM!#TszP!Ke3~^Ep8!>ox%gz7D49)FVPZBl7d)N%jdhAOoth1vgYH~v7V_D^Ip8@| zen4J8e!v{~$rkk;)NJZI)O0FOogXj@I13)1i2(yb2ZU0J$pL-}>{9zF288AZ{69(O z0oLTX_VJ29RU{!~0Llo2Ktc$6BPi1WRgy4VRUEah%2Gs)7n9E_8QteU=-lb*vlQ zJ$7LGE?L}$^3iWh_43SK7NR=c(KvTN>5er|e`pQEm#J?pMeZ-SRlTWdY)JnJsQ zJwVSoGszaz*4iypU|)~AX!2-$&$=mifqkb?mhS&!W=n1F+9|b`?!BqF(#_~8wVP}I zN1qJq4Q{4y$?ILqpZ+T?4BV2pg?sN&R0Y|VybAK(wU446Ms3M^h$rw-R3(p}hc0|h zf1Y1a`!LEa_Idta`IDHhsC`Zs=ob4&&L26GT+AIlsdf|jCN6Pu?H@Uh(2sI9)lRB? z$dr5RL!3X*7s)SjhMP%$X8LE;Ciuggiu{WFpIyv7_IRh`o!oikSL8p;nVdH{?_rK` z^jRl5odAd99q)9E<2d?6r{OvO;TWD%-}xAdm%Gdfr@nI)M?GJ6d0GF-8OHIS9N|=V zuHmTe{9nZ|^hk~>m-AmmWLjj}e|ctzOf#gFC5^(3OdAP~;`w9@d<-lyZ3HVubsj;D z>8$HAEN3J*5?z*5%2a7mS&~n{n9hF}kD!DO@1pB6g8c8|@Gdv9hUMtMJo?luU6=4K zQ?qW+C*s`5nwWKr^Pd8n3QnZogoSsxN&Q_s8E@+xueg-xr>kKtH>lEJUyi?SfyqKIxsPzRE`IF%53nu0LTw9U9 zzTkFtOwQT7+u3KCTVJrD;Aifs4Fwl#V{&d~uP?YodYf(z-9QPwp`dl$MefVib^oh1 zhZ^fPu*O)|n!_FEf3@y)mnaXgbzKym5fqsTFA5Ya8g8t!qND0;Xe%hPQW6`;M5vVs zb7(Y|V6AJ$jSe-3#!#FQZWC@3zO^nUR3ej5(V@R|jv;r}Nw~jscDnFZ_Dzmk*|)Q= z;{4M2CSBm|?2h?Y=^gVs=HJdfmDe%NXg=Vq2kcb*=lGwGsq7f?5|j5;G+u)m9qI`{1Jr0&@V zS@n1EQioAjnzYm*5?M$TJWyKd@CgW%N_l);Y8I+}h}fZhh%6*fTIN{Fu?+80bCeXw z5rub&@3NvFX=opExp^?&<>o7{zMR=8X|N>va`G$9(WonY=N5eh-e4)()sHqDX;|)9 z;W)}3M;g3C+J|^^iANfaHiVBnLV1U*aI7Rf+OQgRv|*)VHB;du^&?j}Hj_k4n^`Sm zRX2xsh<;=@95bGGiyRN3QfQ$0=~T<6o## z4u|0s>}kU(%3=7IW4q&7!@sDf4ci@V^zDw;bT{yj{b|FqhUb)=6^5k~s|y!&C4%X;-{0_M1H;Cfw}V)xO1k$bPHm7V2itL-zEFTc98PX3twa zZ&T?Nj~j0FeB5xG{C3Z~O1CgJc-YE}@N~jf2=hImUr=l0-S? z1h<4h<(Ll)+qk_xz>^FrlyZz}%r^Aku_;ZeW3|C;`5`>&>sGXrl}3$E_Jx?v6MZ^vr<)v!o= z_{h~RjI`@VdNi+PrAPDX{(n0n?Q0wUY+Bpk(fntVeq^Nm)YM4(pG~Kx>PMcM`h8P3 zhkoSuO@B6dH1Cu4NgmCAJ5Ejgv+4NMN0a|-+9&pX3_^nDZmMMqyDHRpHE`MxQ8S~mw?j_{7<9Lrhm^0TLn%pRGYJ?&Ud zmz-{n&N-cPMrL=(k@5B4B`1n!vo1OA*-^SKIR&^PDd5)@j$p;HoDtat^n7$d_D85= zIUliWbN+?ge4GNNF691{>&}Ge`Po0^9?WwGXYl+xB0FmAgra3?6C&em<@ zIE!kjdEx4t@TIy^9U^a3c6&&IcSHvd7l3ALJa*{{VJ8f9u$bDr&Ip;oTpjON#E^09OvEc&$C1y-o1fzd`<)DGxB$&XIWxyRbNM)(=T7s6>lC zIA&(A)PnjUGx7(=q!!G`50ZY$t{+lAkM{k$wN_r&d}V@+ zAuN8Y;~BkrW2|ND6hP(nFntVp6FgU>Z&ZH6*4SEQb$?>DpWl&dBfDoQ9q! zeI%uUGxDe7{FFUCUnJA>lY4h)5-TFT)CFkQ7WB#O)s})j7xFRDko~$-QSWF$&vAc6~WRYr*PKW%elON9FLr@9RF~M zuN;5V|8^YD`-gr!?1y?vlhsZP47`rR8dTQVc&tb!(Lp`TdHvgzqsO4X)L#)z)z)lO!pzVGNun~ zp7g0SpZj+n_^DJ}F&CT*{}^w+bjA7+Y(7p@^Od{?`=O zRO^_{ich53s2azL`dX3|^|QI&%j#Fu_mP&>3wI`YAE_^@k91{>=*vl0fHQG7FuSaN zgJXI9l`&J%eWiYQeWj_cZgvX4qSI8VYo`kCqpsYK6;!zkjgshYl~bh(9JflN6p3S$ z!Wu>Ya-dsfd8bI}%YjoRx5{bkIE_8sD!&}Kmt^n2X-w-$!x{~+NM1(iSs987ZFEfH zg_`7;6ahxyJ0?jJBbe1odj@_va1T4^@pU9RoCryp7>*7{NfVpkj~kjMN)vTBq43O# zritklnY`KzmzpMq;fCR7R@`rHV)}k_n3P_TLGEYIs1S2b$NlCEP&fu>M#WWLN{YHNjzEh3F{E^z^^#2k)%l1n0QF~XwZW}4+lLO z)aZN&Q%fqQ9u87UYDo!KON~xDiQTEhRY|)^Q^0EurF7Cq#YCKQH!RMnlI%{;W~JoW ze9}iLy(+ak8=XUkzbb8X1~z*(+nujU1Hl)iuS$mw?@J##T$=QvRIrzLFG*jON|T&; z&PgvzUzFyxI44Pya$E9Rgxi4EEb)fj7Jg)sgquR1($YZIEH#ldNh!G7_{UmF+Tz^i zl%&w+hA^BsKXss>j-tUbE+L~xS=fOX;bT1 zlCLHYurJ9Eb@=0Su{S&Y!A1E?@&oMtbdjl8wyUL-#SA%ZOQu{xR zi}L?zT%5lsf3Cfhm2;_P=UGM7cvSHe zUlOG~-X4O|*cIdoyDu0**Vttaxx?2Uhl;mn(c^J^@O;=)?kL2`vVUSP1brL|JcZ-0 z#!v0DaXzunqKoWLre@n8!ydy6?I%&Q>?csO;U~Z}$4Q(t$1Hoxlw&w2?Z>G!$8q~H z`cX%kqh-obRGOo*=_tIisbxyE<0vYV zfASE~J8)zaOdfKW-2)01?0jd?Rm}u z_9$?UWY<;BbKsiz+R+yN z)ZW&i!0Cq9*5M8J=J6y@Mj!2X5BEL%wvKMj_gFIq-y3HPIL1+hs^YOGb98r(!R_Yk z&QuR)6h9b`b;I3`yB)vC z`8i%Uup8H7BfYEBDs7@$q|eb7$x1JgEYe1BBe#WBvXR@Q&8+Jsl}PKs_1tPUX&Bxx zX)BjgEcKGsf$O;She;#wMo8PmIZ4IRDsYu^g|l6AFI3y+VyOshNACd>zKO)tT*4l0 znu~DTG`FRjnxpZen=M@C=@t_!qMOYqbF-DRJJZ4+25mmwa)#t=i<#_9%UL{gb2svC z%{H#b*_J;@{@_>Pct8vz$@Dr0ta+6K_m>Jn>A+ z4eE5u_Dau*9uu$Qon{x$iABvGR1c0KE?G1A2AO8Efo_=mn5pZ`9pO0L(ysX$O7M2v zD%W89IgYfnZT^MN*$Upaxea`O%eNf+TiP^#OI>SPjk?x!t*K3O4{0^*m!_qBs#f4H zO;_=INZq7g=-nhfDcjT)-c9O?*F#$F?7_XVoMQ!FWy`59&ThENIF`f3l;FJSgrkdd zkfSSlDaSJORrX5e=qfFB?&6Y?d85xDM{LjcKgx3)h_y0`j0&47;y)XZ?$i-i@phen|(8C zE4U}n=p5jf&t7{12ax?cZg1dxxKQq%djj1(_fi8K|BmY@&3En%?8sTpckbjYJ4!qF zoNz~J7M~N|(Nx3dhj%ocsO~834cviyqPhk>g+sVkGHP0;G<`X-rsYb;$@DKL3cQkW zHRDRgl%}in6MQ~*3Uh`|S8)uTPE_v=+}Cqo&;Muco`N-Hin*&9O__#H`+7DHIg#F! zX{tVvZmND>B|KxN<{`#TV$Rs9Z*@~<-)d8}@Fsv0s{1l!s{X6$dDUNh+Si1RCXdEB zhI1S|&L?^Qs*0}u8~hv9x4IvB-|7jjZpM#>nX8YJo}kRt|A7C%`&IXM`6sGYvBz<+ zUv(qi1h8NAO7u8B3B1yU4Hgz8Ns%|kXZVZ$xOE9G;(s_j}Di$x6&-}g| z6I=CaOlegas+3gpIGk9R=y6rA$JAGiN0n8T{hjNgd16FoYwF@Ree!?I0w;_@seQ4Rl7#)9MKx}|7;hZ zW8O~f0(bG5ZkXz~^9x7Az>(SK-WDKzH)KZD-~_=0ta7N}0~gepL=o z%5+poE-qz0sC-Z<^akGN{h)F~-h;{uRU4`vR643IfEzf24V=Sy)CN%K^SsmhLe)9? zdf0i`S!#V%tLl$(&w)a>s{T0lBaV-G|MnZzt*XyfeVp5>`i<(DIN{l^tKM)q*WuTB z_h5K-BJ*!lCsto4Ph{?O)%9FWr9N9z=?4zNPplqPt*N}8`>$%hN=;<~DzQ3&dR?Wd z98_J&F$f(`y{?K!B~-tnzpiRxRb_Qk^}pzG|?1uA4Yp zt8b!iRXbq39H9nOZ^7FNZbj!a8BmkYd#A>Z@vjM}xydhY%cqaUA>;j0<9MIcCRiSo z59ZhS*SufqC>sk3_XaC&R^MRHE!BQ#{~AB)M)i!+_e=9?W>9`LyW<>X@0ae5%Wmf= zn^77T@IJLW?)_2?xnE6Kzzo=RR^O=BFnzuHI{R(rxWS&+@UHVLb{%~U+{Cfj^_+Ii z_1w0(+K%1=Hd6hmEnF`<^|njBO?Pmu`_p51?(FZv7@kr8sfww7QS~-iEZ*BLjKzt? ziF5Ur@VM%iRa5*mHP@=A_=g2(YCJrr_+P8`@Vv&e>J)!>&#(XwPj|fLA)cOsd3bty zHV@g?)06Kc?r?X{f5(Ldga!ONZg{@Q;boCDH89;N^oSNi-R*Ag-lN#lIbYVl>7@*$}@LK zl7FTn!daM7m=fVE&zw9YhS^L<4Bq4+GyBKzb4whmJoCTKT~dVezs&sCxlY<8#W?iN z2o617j3W;9U*~rudQh-6yx%I$5l*gmhNHvz8AuMwojbuDI6LS&nfuN;nc4yFKu_j9 zSd)3r)lTO*`ef-GymLWQZg_I%f-bJ!l)E*$OTo4LrrbKOt%6)YdS&XsK?-!;GZs)hrg$w0e?K0 zhr1WO2W)^pp_>YyxZDXirow2{yP$BtBHas4D2Oh6%IuSZr>J)ehm%Jan(>B%BHM?* z4*%W4&kEOp7s1cSp0VO-!87uUh5y4_SGb<3|AAt91QYAQ;f2bs|6`4BS7q0Wh1o`B zSKqGL##LHn*Hu~-p0cZoe3kZGTUFO{ZPh4M*Guf8>Z*42OYEZVdb#itsB!fTIF|}9 z7mB`tOVD(^g3@&TQY-pKyvv1GTzw?z2AJq03uC|-&dLlvE7({#3U6d#ENUcN^ygfg z7?|kK3;qNChieyG_!sJV!Pltg1%J`^!R+{PB%{FC!hPsQZl`@NY~)t`Pk{sPKTJFD z>;;8*jRgf%Avl4`=RTR>!hG&KdqGzcJJVgs3JZKm3JMgIFPMkY$n#+ud0~MPuaG$< z+PC0VzAtQ2k}q{DziWZY<=@KplWXLP0zY}zf^K*YP^?fD43R6TNlE+wjQ2GtGBwH9 z1>d0l0)^Whw;QNNOK2z9o%C;XT;boYxo`3QF8J0p(StOuFrMVwf+l_PfE)228kEXwdUjtWAgeu~8=%?w+L|^9n z(~I$hDkdo^sK_kBiGW4G--3%IGa~}_7QL@V*W;}MU5~!3&CGbKV1A)ceH3pM^ij+& z%wR4vBQs-u;RmrF#Ad)WIKtKNPpj|ad=RV2$jEp22A)RY_ALmnWuBjqZlhNAH%Am>k)YQt*n(k(($P|tnst0H3X6Vkj3v@H63l68Z zGJI-sBlpSh$!KLboUX<{n13+e4M$yYFn^F-#Un}JAo&n^V#dLIA1X0pkbIDQu*(_j zViS{wpe80wN>Zl`W^Q8AV7WRakzH$2YEpbM*cr7jZed&^&Y|>)%>8Uor!0&+MDnv? zVO&kh_~^v6iAjgj6VoOoO-%a9a47v}!w>0)(tiRI(?tK-aMAFLsUOlW!Vg4?bqAsk zL@$gRAAJ#hFnUr_Vp;-6V%oFlTltfc64IiLxAKMaEIQg4ZS<4h$~V)WMf=I4jb`K1 zXfxbw^p}gTJ3qO=w_(pd~_YNZrr%Le)j< z#d>Dyq7SFf;Z0g|OnTU-ra2s+n&zVBm?EgTAUj1nsR%G4dakL4s*bL4DF;qXw1Z1> zChtz&lPZDEWJmJjRM8*f>`uML3GM-Rr#?<~xVnRLyq0nzz9v33^+f!&6i2EqL3CY0 zP5g=Y(=pW~0#C=Bia8x~B0ii{mk^#H)EO!~;S9-{7^OKpfi zP?(iwh1tjKOBd*4-k72=&r6WO6lQNq25wC8F@H{ZgBw#mPie!SyV&T$Ht7XvpQm`6 zH>DJ$wMqXdu^{cE#6sBTDecnRq_@NQJY^I7qr{o`g=sSrS0#Fzy_olAXVJe*YnQ$$ z#mg*uuau7xzf9}Je6N&`6F=hkm~~&K?ZNAn@+|q|#64-xl0~L7&rE!l++g~ci3XF- z{49A-+Goknl0U579N8I^V3r7L#JPYlV>G!1Hq`rUz&qZepQE1*h)#IN`=-tkG1PlTTT8@EU6?VH zSuGf5oa8s7?M>Z8aFX9dze#?RIntvAyQ#YcpX7JT?^uWQXyG2~;Agt!cN6zmhskuf zt~)i<8$@-Zx`W;QhI$Y49_sxLC{zz>n0F6my7~R?-wl1=U-bL_8#~;@+1TNjtKawk zDPUuV-~Eqkj%$8*@#7@NG#fkMbYMzz6n(tIQO-l0%h3+LNxn%(JM4`0P1+gzMeI?s z2eJpUov<%rcgF6(+Y!4B_CWSK?(ec4u}PW-vf~|+*zcI;cV-__Nt%ZwzsvUOw=q9J zvm2htg8L*GDC;G`iJ1}vH_aC`hgllhf+V$_v%ai9?Fazgf?_Ac6giV0h+fp z12h9+Z)-kNSGE64UEO{y^_jY-_A~X{Bt5lnYu2hiQ-_6yg$lQ)cA(~nCM>k4c9(pY zyr=evCNy*{=^wJN&|UISrv8wvQ?FHrhOSeur*8z;sZ$i|a5kXUsW-Uvckm7B@6g|hYs&3Ec;>g^;O=-Esr|#QSt(B`2T2b3nt&|z@#p*d}8A%!ObJDh{uIq}`$r%|*!b!%gOuVk! zrdpj)naHY?V)b=hW#a0DwFwvSD-$ad1-p>gI_0`b-G}$;=;F^SN%~|tWb~tO!(!3Xttyv2@k8|F9A@Qs^ zTXR1)8~=W63iD!h3Mv(B$6oD~shU*oiLL4sdKyUzm;f9MMvXV(#`DHk(rLh>3^AkGaOh~vNyEE;q`F`w#gxT>s)8;2kNZ6S+JN}&cta$>r!Z~gSXPn5+p`CHF zzKW$S736+o|q%%q>SW@Bj!EmqXyBB8j{d^&EY)$_L_AW;ouSTQA34M^a|rHyuId$ zX}XME=3UH{<5w8Vjcf3Bnb+Wz8%?Pb)7H={jG+PA0Kv2YX`ZP= z!oQNXbNnmmi=-!sQ{v~Dw!?lUeUf;`aN95?Uf>ad8U`JCy6f&^VsDj-W|i6 zNq4E|<{@!+3?dy8_h!;dLqNhS!z-{u!jQO^h8G+!(QhUVi7QSnP975X!tmVuX3`yw zH1_RY0!H{Z5?U1lNX*B(w$&k7|=^krF!?$yv34YJ?G~}M?SJQ8< z{+sD8-qVmf^djT0ru+C`B;6;!Pp^o+Z~7hQzNsSmcd9qoo5z>V`!{@9yil_Ery;+Y zo`pOEW${l!p2F_34?)y3Mjb61(dO*m2E zZQGf`1LaZSV|BtAs|%F(^Nk7@^Zk6s>c;ARkq2`8BEKphtD6`63+cRI;oirY7kr=O zzWjlU_w(&b)<5vRysvNnK#~1U(m(KbCi;-|^X)^8kLn-T*LR`1f8av(@A4v3U);XF zMW%)7@lpGe`k?kF6`96!&ij+tulYlQLtgllLc8Cl{GAaULgTQq{>B zv2m%76Ek9`r^lsEPfyQ?ORY|RoLED}rK&-7a!qnvYI?@vgt*kj3F_qZj3o(+6VfxD zg)B*U79xvZg10zfQ`C|KS^RrZvUt7sdr^xMmL!bEc`s@-e00>NsQ04u-lxr@>0_wV z<}rAqqjphaK)rW3sSeb8k0Cu{4)@l1hXm-nwE-akr&0Zk;pl$G)8>B0Gv*MUK|@g? z0sW~^@C^Rj#(u{B;Fzd0=6|#6n5chqoH2hvy>0vg=igDgsV~6IsNI~yF4z}QJK>+B zHb<$GH^FL>)ybcuc1NvL?j~KS6sp)%Y}yR3A?t4HZu%Ujhp8sHyQ!MnsE4VDF0h9w zK~qF6RQF)&uqHv%1MJS~Jsm{f(_y*SLUn>>xmSYbFjLFD9?BQ0A99~B_d2XuLG9_V z!fUzLGW=!q6<)u~AIcw*KjKmG0Blh`l>bT>`LC!)@^artIOV=As&e0Czx8+mll?Z} z{VHFfNcJoDy-Tf7-1STLQ>ivEeGh+`*FBhu=@?D2-(7G6N<*$uy~&|bnPn=KnyymC zXheS|Gs`qMqCbiE6g1e-k*_M<)MKGudahYM8`iZ|FIDd0*W$KS?@_c-x8-bo z)!Lw|99r@=>g%$$xG!W&mDgo2;7gS@FJH9HOYEXx*5;*93pUDE8}veE@v?bogGTv! zs zYPUv1Hb-0lk7coCz+>er)C$&PE9A-1-Yk6 z@J_N0nhWw>nhvbHAU`i}qw-Xpm;WTcAn%|#5B`L6UVc`-Pt!&v@T`2Y&spZqafmsg z&TyPX%TZ_KGEgq}rVEtI^Frk0`5~g`hn!*VjGyRd{PIHbLuw5*hCCP68e$E#hWwB^ z>Wp8VOU2>T8RFn^hMSRfhBJO+>2ZczkvAi6MXrR^8RE&}aq0|X=_~P9k*tdB9eKtt zQ$3b7=j55{bDXPCnd))Ojbk!X{gZr(DpNg0HO}x8*H-id{CMzIWCu-zVv4GhEJ7iY zrHXNe2*pyDlZlrh%jEWqP$YUSRbTDW28qQ`sEQ zLZ2)9sr_H_Pi1=Yx!_OjEnfQ-pE9>!p_gx$?^js7?#Q;wh5J^Ba4P-wD=Pio3fZr? zjekeB4QIRjHeF-`Nv_Fm^BBBFUB?~ZSLrtZztZm)yz8=oeisAY3VAE!Vt`&A>-!5% z8+EMjbyjz`N&V`y&WF;-Ho>H{_4}uA#4?9{DX-s+dqI zuQ9(;>E^#P%FSP_Qsb-XZvNNgD&;Urt<>OY;BNluYN6E140^gcLtP!9fv3|m)Ly1^ zwb;kYXxFIy4!g$nhoZ}eDQBbfC zm_BOQ8*_~6k$w!PNBRfGz5K+~BfUp@e#!^znV<5Z@pVjIlyLH*@>5>Nlw-_cHrII1 z@S7nA{FVNz;U4$PjM#fPUAVsl=CEc)Y!@C!wJBYU-BPE+bMdFg3Z84^9~n}`?n3#b z`hW@^qupSNRJC!ZLG(R_JqAVUPD6EoPwHdyW3vxVb--iuyK;@PIzZsN@?rAF<~@e} zhIi>sAE(b_^M1oSxbJc}eFS?)ex0weVc<>rb=>z=@4&CiSB0n*H^F!0GgQ~9cjWK8 z`l^ukRZgD+2B*({!vVu|)eP199RJVGg|7;kt~wV!L#0-%3VE(nE1oN#aXjaFX;sL$ zfakDr0fL_k9~Uq#U>nbp;{qo5Z0@&}EJ*_y-Kl$}2$!xc<$`)g7(`4feSb z)T|urv%14L_Dj%@W8HqkUef*CmV2q4F16Rt!c?=eMY$K}kmiu)|Jg41PJ`OGi}C?| zcpU69>@u9kAD40-)}lP5>F(Rz_mJkiVO+{vvh#+XvbT7Q6@xux-F?p+96@i%96{#| z-F=_PT9i*@gMC_*#j;ztgMFUJhWOkHDwa+0DVBZWJ;moO{M$id#qFS5K~sDJ14IuD znBwz^_jDfz*`IQu_RFXEOb2h1H7Wn3Hz@-H_RIh975xw29=;AHyMsM^|CBc=pTK+g zMteWujH11TXZ9AI|3vWqQ~pH$L>BG+lyi9^dkQmq$DpD?v-cBuaG2=9VNck{;N7JB z!`I+akz@w%NT!0rehvr@i}YR@BKpdZr?MFDpM!o50s}%+Ph~#`4e@y@3sK<(IQ>L- z_&NN34s!YhtA_Z5sI;mOl>;u=AfF*V!Qf!}V4p$UbE`WH@)@Te;XlabkMJL-Z)8@h z8sQ(TYV;FHt@k*6t@j|mk^Uq68~sN3kHi_|SL^*kImqvYav+b97s`tPwcaEB>%42d zYw&C6b@U*`#Q>p#6m_JPtZekF^sga17*OY3>3=Yw#ye0EqzF{h;9Lv{QvBThV!+Ss z^>V%Z=k`Cf7s&!vFYp$Mj9TD*5q^GU=c$BK?IZd;Rit8-7g|y6<0%(vp2|RZ$_+S+yxrv0K5lYP z`6BjguUJI6$rpM{%Jy8Iq!i3c(Ow}b4+eOVv{$s29}F1i@1>~pAISCcQp{mRd$6^< z(%Lo$GM1N{f!4`6-}bq5rxGc^eGQe-PW z^`7JH1!gNcD;9f;z8L3I@3~yg9B?i?gM2aAT0YmiRyh||t8|yQme(rXKzF%^+zoW2 zds6Q5uD+r#Q7utqIACMV$74UGmny~XOE3B@oSXW2)Gcr> zYM$N@VZ=AE))+AtZPAyI2(;+iFgG7>9%zBzrW+$}yId>IZT$kA`Jk0qi@q&o1=~;y z!{>*$0o&rV)6WlI7`_N+QTPICn{@%Yt$qd74qSv<&ap6j1=*tT#@xo-Md-%d>6UHQ z2`IrQpjP3opjL%X$lYe0Zt<{gvwB$Db9h*vXeZ>Z#+zl>M z(dKC#URqN2L_5*;L|an!l$vN;Z4rHyWtF9*Y_;V)YL%sD=~L}_i^(J*(a6>2hFawP#Rg=r!7E zxWF21Fm+a23)aGSgF=PCgTaF#yR}-EuBGqh^0c_$ha3zEfr4Qq7B&}9727|g@lIu7yNIqQ2T?2ft3j zUk59sHh^t{H_{963WGMHKBwA(>+te}KBEiF56Ytof^P69(euFqrf-5b18)Rw2>9AlgoOa-5 z_`CG)z+ot_;4MsSVdmZ7_V`}lmZ0x~50Hn29B|DI$2$-_9H)J-H|cOtIAI|N!Gk2j zgGb;U1Vy%${lY?Yq+vX+bRi>xWw_qp)}ZQ;8k`@%YVZ*K2OgoK*Ww=nYtW%Mp*)he z^Ys-93iTuDkL00vVYp#9PEexP;fL`xse^}U4^uku$B@G$PHi))HYA+=Ytf>Ib8g`w z-*d(XgTLpj>q7K+;o$e^kvJnjS+G9j2lV&BKcMPD#*!Zf#dHM8SWq}e@D7LQw4#s0 zI|7RA5bMT;M8YD#L+~RZ^Bm!k8K*?-9*h$7SWDoQ*oD5sGi)Y)G z!NW_lc~%WC%>Z{>!b^*osj(GNQ?%K(Ov^HKmZgT-Ox|W5UOLl~&H9;^Ov`S|9&~u= z9?MMlm#8}Hm#{jX^M#s)U&}xGe(CyNA-cx4hdD2s=o;HBzL%^K|72{d>&ZU}+tye_ zAJ=mhSzXU@J!i7RZ1$MVWv#J%M!JUYHKKoJ8QZh2=U8S|Th`*NwoJ6GrG}RZwbo*? zenyS$xz;kgGy*T8)MPbTqj5~uh|*}jH_pfF2o4A5TITcJbgo6{dH8cdkuPG!Jj)_h z%q2fuG}m&tNa%T%#nwgE#iWOeMwZTFdSvNhz7xAMbIUf^;%*yRdbsFl(O}CE_+U#e z{cw@H?MTt#q9ge3wjmY|raf?SEqSCvEM}_*ZXW$ek%#SINv>sOcpk4PR`Pn_NYTNP z10_dUd!WR_Hj324X10#99Vj_i@;x=m=2m*J#I5xE60-YF| z?0P;t#+qk2A8xiDU`-p#_a$|fHkNha=ed-X;p@Qj;TM=$$0e>0-;BS`)y2eSlGUh{ z9IIe5{btk#*eZ?{uodC$^c(o^t@U``dKtaFel>o3y*Is`-iy>r-yUqIx1p?HJ6@UD zT&xslfqo%sp}rJcz-u?b%J55JWgP9{xAk{isvK3$&h2rG5yD&KnpuRqkQvb{$SXJ# zZ`5LRIaon<7kv-D2zC!NMcj3{rigp`s0b6g86%>=#iUEXC9E<=)Z>i0wR3q3( zs*L=W3ExO1$+r>v@xH|q-R#;gI^tK}R%r(B>3`)+8zbzfMkYm%!MB4V|BW;z;y0## z(=UZD0V{A~@s{d)!z(};>3wu;#C_M?GQ9ixWv&T1sf-`AH-|6N_rdQC%1M7Gm+QCi z7}*@Yg~v%;#P7JV5pnGCyM8(8GO&+6E+U@fcl`rYe8dA+roexo?}xJ-RNyC&^nv++ zKJ1$iv66`g`jzBzoUP$oxfH>C;XX|Ia@kwMw{ct`*&6Pvzf`h~eyQXF-fq4gF1TdGQ;9t z-ll8@iO%{y>YC+!oEerKmcte9U7B)Hqqa( zoyK2ZQq8({mTJoZCXVv_TW$Hd^k`8v&-h1+e&$(!Wa-bP)l7`Bi9W`**!pv641A0& z1|DOJwvJ)Hm)3Ud_!2$FwuGsd)+Lr`R4h|VEU`?*+Q#zzESB$nu{b4oC6;kLm#}hU z$r8)P5}`^g7Ltv$Stx-PzBj(KeqOS%@_-&!n=@^Kd#@=JD!a zLrI?P4eJ}$Jlj0n{^H|kmj1kE$g}k&pJ(lh+E6l$d_5?pJCaPZc4T6G$yDn!>nU(O zxA>3rsn$~4G`v!#ek>_OPqh}Jek?hJ`T_j0AW1 zQM^)HnJth!kbMfQnWbg)KwA(P#HE+ndZEf}nWdsfT7$q|^uCrLTR%%*OFzyz2yG-W zT7~Losj~H_YB;KRb=1#tg^xk^vly+SPvzBDmF-HY=u>$`cBOO%JrXumJA*z|JDo1v z=_sT10jsB@A6N`XoBUl$&Vrylc5LRJrh5ts_gs_WYt*jU6?^!FjB?_$Xfk#W;<2GxB z)7yHq$pgzG@Gb)b>1KS!=89DU#Zr z{nKlEuC=u(uI<^TxPQ7i?S!Ssqknpl#|g{#I&)f)M|7Gw?R#DS^zI%-9^dP%I&sO- zX;$6$x+0GsbXUTLmRn&x;N3x9N-^_2#}7K2u7`&*{0FeRtN)0j4F8eD3cDP3CCm!` zs4GR;K*5#ahjl;d4x_GwT@G`G&6f`?zXD!?4=tZBpC`W@Cc)>zgqq83H(%}yYmFy? zb8+3m-0)g+56qRn4!s!mI`oaOR&Y0}l}o)29m`RN|2ni)Sbga0&~fN-^m?>g*mzeT zA38qNEv$iR4c4Rn(T)#o2z{Xy{e`w6v~}17^aS|d+IrG)O#Q8G9p;WNfvv;-!uwk* z_WnyNg*D+lNByO((Tmx6bHRRvWzXsn%9p#db=#H}cfbfAXT>&rGRd8vVa6j^+ zx??E6@MEwF-E}U%5?{k~C3sBN8@B?y9_APBk3Ob5j`9yb4yz0w#Oxq^KXf1bLE(c@ z{^0@W!JwEsK@t#t!nLlC?nYQ|>U!7-U0?h@x|?A)!ur5(;@t?FNZkyZ1Wtlqr&>6p z>n?2JmTAFx)73rUZ-#loJ;OY>Et_5F!F}frn-J=O-v~Bx&wDay2krd2)(O;0?F8xt zzXtV{_9bYizktoAUV*bvvw8fyfW6Xw0-uSR#pCB6*emU8JbUPC*vEJ?wSR#h<2dl% z40EvGM|dA=pMxLaw85JQzRB57qJK#8(f@ID9`G^WZyZnVewT53ujDSba(6yr{y*rw?49UMB1_^D z(>dkXL^#Pik83uM>o(DwOlP8ZQiA7`C86findfQ9t$7Qa=b7)x2lLT+WDU7}b5RZ8 zJZ{sQs65i+S%Qye)hBDfZF<8~-*b#iBn?mvJtwk`gZXeS{rcRp|9Nsf_267?)9a{Q z(j!@dkFe`#){(5E@Ug7A^y_h(U-Q)U)X+adQV%8ild=R)LLJMR3{FNL%bEfoJd`M48VQ*p0kHNw4uZbX)!RpUO9brP5FImtvr{9$(< zeAu1uX+$<36unAj=6l}8C41lIK5OJT#lDkSr|7)xX^d|Kp2|x0%IHr5#oPiinRfyE z8hcJNJIOnl&H_&pd}Hu*mdq>1PXL_eQ(0)|{vq&vAR{{y-j3?Q zE9G|ZJFt7e$&T${2JFb*PU^^Z!uD)O_IKcSysA2~yOVV%vBN!>?G6gn6P*EOl6;Qu zk^Kekb5Qi2C;uXQMMCvL_u~2q>09SC?r6ftghqy1YA5x!ZH^V;yOW_jK z!|ak^Gq^O^oZ03aEjjoq-Dc<(xE5TNEchC(l>9aDb+YED*Ao*h>AxQQAKCwcEy07h z*H99<99)%sFnEaU5dGJK2k5^BzQ(a~LWgj5LI?46LOJk$)T_a8s7~krcmTg2KZo@y z*Jln@65K~NCpeoDTBzBmVpa*aGZflS8VZHsV*CTvLvHm5l2GU#PUshKFK{X0P!UrP zvWuvD*)N1fl8xk=)CtWZFAC1$*u}w-p%=;aqGtv7a`f537ejSPa==6U`EDO67YWx5 z9p-i(3LfUR4krnQhKEMLhl6jB{10r&Oud9}g>D&a#XWR5SVN~?s0Q^$@J+HB@QvUo zChKz9qriHhT>9J5!oP%niKJd=d+2-o_qb7^?{F`IFLE2Uht%QksqOf0sgdAFZnG+^ z4u1!V^c(60@CB};GOP-J3yO3bH3A&LwNDQ#!{2}+-AWA)rG?YO+d$#d!!i0XlC?(zItPIV{u zhQyIPA#bP~S@-O2lpWPAd!}-xvKxAa@-BWkeumNv+Oy51-v(ylOe`~cIz2IO%AT$) z2;NQXDF|x)GnCVnOS6||7X)W0m(eq!r=z|NR1}H56-7d~Ra6vJ@biDyqOL`0}A=@o=Gnk-uCR$Y}>Qs&)A+V2rkW5b+A3V>={)Db9>vfueLYyn}k>S zy@YVq_60$6dn;;Adkcvfw9@lGEx0gPz$)Y#YW;;lo!{ENDb50lUU6LKZwd-!(F3?`C6VGtPi|{*WTsRcDFI9H%~?I; zQ-Z>k#!H!Mj(f+on_2`4ml4VcO$qJ}mNJ{c0z=cKnNn%o$&QTp^n{`la*@xVGea5> znkhNy-HF|aWyD>f!-nbjyD=xpVS`YINDdojNYkZ5h8n|RgGdge?y}=^AETZlG@v`9R<8P^<7DxK+4S_;%

B2v(D0Cft<+qXKOex`Ozii=e7WeOa*&X7mFZ&XnJFAi7YYi!F8yM%Oar-ZD8A@mS5yLb+^;=-(^+Ty2pz9urO%chuyZ{QMq-vpY&+G z`mEN6yl+}A_SX=&Wv1Wc2)&*3K$98-=iAUdLD0Im&Zu>@IF*~g$ffVH_s(KkJTr)M zo!p`Xt&3dLx>_7^5tpr3A?MfLOKld1ac(2W7(weI7qzYyhg`(f_4q9}%iT|JE>GiJ zZ(C98A{Vu;7KdEK-R}5TZem;lIp-jz92#5IOB1v%a#8DQamYp7$`yLbv3oL|)8&N9 zwayl_E^<-pYH^$kxZ;`mO5lYvbTV>LCu?!YMO=IvBV~Hr1!`GZpWC(fT`lNj?84$SHyuIWi*WoqTSRQ7Gnxpw}W zMU9Pf1C6c4As2CO!6r)g?honU@$LBB+`PAodK!SJleIV;3*tWCHc^y4Pig9yuAJ-H zWVfJ`ac-!SGsc-J-Y;L$A$vpl_`Ez12wdzBxmp~K4{PK*-`e6ezI46hrZ2@u!-q)l$lq4&=Y&Fa}8Fd&pLK?OKs)bnU8cz#1Ve~ z)oQzj1)i;?d@lG%pBn$m^>5w4d{%qfVcEBb5y`pj$;a&OG>*NTEz3Q=zt(Nu=E%nq zQf&s?-|B!oV()p~pVe;seLBQAOsww*^H>Pq_|r`b<&qWY)FwG?D)QxW|m6DGaqsXZvkOv63=oiQ~u%eUiB$2^Ajb-HG zKCw0@Ag(F;*4Kd#=u3yCWT&T1@MYx8(21NIX0e-fG(AG^^*pEB;cd@x zv*5p^xy$z+I%VNl+R*?IS_ZP`#ZHp_t*JBaUE4;+l&tckS zA-5*tFt_IK&V#9UCgd1gF7xjj)(O_uLBM%n9fYWpU5L3=9C7>5f%k`b)w05T2<8_Z zWH^vt5ByK;aqyn*VA}*@@^vh4!`QrlJagh#97oc!L-{qr{Z;*m-Jx!4A_;u1K5w}8 z(~kyGY5EdU?BL0{cplrrzcW4lZ#)^h-Hvk+=LEvJWkhcQff3OC~9o%dr4QvxnhV1#x?^CQP zD&Sxd5a%*wD0LnbN9ta=&bf#yEF4c4=Ejn;A~hcm<`^_vHjO^o7)xIDJHW5eM8hPg z&pwGBt`$wDT!rrp*d1-OOzaPAV1Gr=N7LaYF{JbTJ^!_FIBpd=c=eM`dZb>s<(--r# za*4emXnPo*9%}pEc2?4i(G|q9qzAVV-{vjUpROwn*#C{>r9&G4*9N|18S8(_9tYY; z`%WbB{`{Mt75f7m_V?<@PuZXbl_Fi#y>j<)w*)TQMegO23VB$)c2fOUupbX?BWslk znjP(;X1`zSk6hm|NZNfnliQtVv`XOOe37fgVSk8=?V+d4{}Lp*SgHT*^C4%U-~#|4 z`T(>zT&CIv3O zH%0{iOTJb~Bn|3qJ421%^TkM|^X%xZ{* zUCnJU*lU~fWhaeUeo{vRuJiBeEd3emt+@f!-Gv%>B{lxL1|=)rk-(MF22wQmC0n>ksklC8^;>wuc2;H8Kh%zZ{CJAEI&`qp=)ij$QIjC+(tBf7jn90(e6p< zWc%x$|LyPf&)Se{_>FE|1NFX-fNLrE3Sj-vS0L>5LL2V&wz`!ne_8BIEcDB`-7t@P ztYx2M*?OWoIkZLXFB0Muvd*rMXQc#^E;qpU1#1x2?>n=MEv73Hg2}Ik>b`i+_#doQ z^eSrHWeM@IE9L#A#QbJ+FJ)1~)B@5ZUCrx~8vdJg9lnglzcV8G`G@%TBe>>T)_O$& zomcTmcWeD}&YcNbyli_eeVzMTchW9}+no*9ZFkvHdhVz_0N;b2u`;|7RGKK_JQsccZyRH-S6T%u`e!@eAzvyO%6!P|;mE6XyX4}}$ ze;&!<16N83#$RQC=}j;m!w$Z$pf9&gByTRMe&zG_sVpZ!Pa5vAf>_o}W))x1Uq*1QlWU~l7eKq{7trF6i@2j(zR7oX?xKf|CUCAp<9NX@psrtxfI}|g*7x`! z&xV}5nQnQU>*kUw_yv%QegQ2Gxrlq{UKM21F9a! zy*E_e?z&0qj&8%b_1hGQJ_P`xPr*QgLoVX_j5Si~ow-N5ckjr#4gGhCJ_P`xPeF@A zF5+h2H&SK}dra?FRlkECzWW590?rM63R)a;5!W`H4We!MwfgIM^_5$cgbhggqPyXVi> z8TS0O{s^>-{)pY{d(qy1(n!}!gZO+g22H4Q0YI#C(J?5ScKEzg7xKcA&vzcoo|`U(JtnqBY#01kZs*(cnjquaKU+4t1{(`|76%`3-M+Naw?a!c&_T5YVklTAu= zmM%oBC*~8>z4A@fH?if*T_m@vWn^pZCVZU>>KtGfhB!%U?`|RMdpPj>rLbnP5OV@U z(ZiUN*5@H_%0xXf>5;_OAk`p}8Q-}}U#$KDIf&IYSPpI4u^<=6qUB;6a>GwUJ=>~Z zbk%oy@cz;b!&&2RH)$i6cRJ4>U<2lxX(-~5i#Wm00FCH-_&DTW`l#@>?r&&4etpvn z=dqT*uF-IZ$GQ-MCcM9uh7pi2BTBaJvXc4*spt4?L-w;xm6=>OdnL7MFpRHX-Cldy zqGpTaHv3o6{y*S98^%H!A7*yP%H@;(`z4<(K0H@RxA@A;jDD3X4BJR)*VH)fZfze6 zz5?W;uORQrSGj*}B3V`>^0jY0?S;Svm>zP|3%|-{ChervjZ*norrDko`~uh?`UTb; z|1MAI7$ohyqUMxcY`jk3;#whBi$fcT``)WUcBvmMdHrW^Y>{D>=w|>R`Wdu1Lb_u;E`WXO-eg^+zPvjeC zJCkY84!6cJH%!08B1Vgcj?EvLh>iafaA79UiPIs_t4>9 ze|2?!7IEBCvqDzQZ5N$$Z7F%CH;k`+V2vd#romonu``zxThbtfw{qd=SI@mK68nM@fp7M z{?@t7H*O&vb2XMUF?+(l`@_suG3V3>YH(l*F}_vEZTQ-+VRYq6I`P~g-HYn`c%HGb zhGA^nhNZOD`5U@Y>jr%Px0m@WsByDb{&?PkmY9_CZ&a7py;+Zvj-@G;AjWG1_%dK! z0_MGC`%Lc2)laUa4l}!RTtMBy!oEG?aNk~w!|RKm zZK}l~7jaR?9?K>*a_O^Qsa$jV*o_giDRNPpYH`R#oY%o;a_)g#de_c~$HX+XpDt)q zN`5gSGcIuyC6L$x^Mx&!XI?`wG?Euev!$2b>tlvanT z+!z6eT*Sqdypf0JZKU)1TJr1b39-al9m>ZHI#i28F5QF5Xxrnnn^hLgKWfxs)QpC9pJXZ=j6uG!AS{!l_cX7}+xx#5Ltv38P=QeW56m%$Z zQHN@A$VFTY>mPEDCI{&Hhid&~AA3=UA{TY27KdEK^}PO5PU}!g+eCijcAMKmtr@Le zMK0)2Ee^Se`*+PR**ma|LOy2xj_|h65_BlqMIEZeAs2BKxOVP946E`4~9Yw#`ma!vYXBtQLn{#MOy2P?nV6h8on}IoGb;UQxpW z5H+k8hg`&MylbF%Sw5ug3)T0yi>^e}umD62tHmJ~arN67DtC>Z(O(aTbGx3+6;Zf?koJeNfl!wKtzHYTc4;e~F|QPyP;S#;+x|Y4>7)3UiBQ`vzVj8HX2Oa#paaq2yTm7@2y}kK4_$Il)>^b(F>~-$#1AYQpWVtE;g5vWN7h z%`e?2z0rK_i>rI-V#U<1T1?596&&LE-w1Go)$m(^^m z=K<=speK1;0=ep75j;JL+5OLZXz3Ikak>z|?dqBw75YOP*q>HQA{Vvfyq0_DfzpwL z8mj)QW}XV`G42XA9CA@7O;uwiFxEcr!X?^&+$G)hu~vK@@o*n#wIA9*?dO!m$maqB zDf;zizE*7`-m%y`Myh)Mp$po5=3@??^o~`#no4X#|IihWzVb158~=&rG=DG8w`?a> zoK-dABG+4j_Cp(}{n~f?Am1(xkOuq0J_*cYRIg7g!taxOt}sYyJ4=mij5mXPJevOS ze!>2j7BrS(MDrnN1V|!lImjFb4sl_1|aV2yA%GV3JNN#%$^R>sb zBZ8I$AnHLa4s9TAQlXx*dwn+v&w62ho$VD-H$o%o#!0{Rl&rTsq|hXF@3@1T$i@DU ztHoh|h&$I!U$M#QEqOM-#BH?G-4L`S-b1J*3*MfR_dQRL99DS9*k4*db9So533+E^ zqO_vGTgLthy`7lV)+4e@&qQg;7x3pmV^KRBsI7QXu9ul5Wo8?4f622JGnx6(WAZGM z9LcP&G0*M#HgFo7F`~5;pH+`G+#vCFKHzbhwajlNB`Q^DP={80e7jvvu=Oo2I=s3$xsx3FpPnSF{SL5SLa`0g5&RNL4A7@BsXIb;{B{;jXh)0#>w2|r3 z#2uCS_;PGovZnflv~hHqu15WSr8u`}*gGCHGmi$l?a|%pIth! zac>CcY<4r6Zr_Src<-X(+!qTt93SGe?_ykMd>7}`O{ak_nPlJ~b^jc5nQ7lwI1hYZ z2{FvjhB3_A93N-{b9^Kpon2~l{E05*!&<)1bKtwG)somBYRTrW_fpHay5#Y<7JLml z*_E=dVI}k=H6y!y)Ms^RU>oE^HDbqb6?{r0d)b|VSV?!=r z@+&`@)Hg5Y*O$S&xFqb79DZgE&G63WZNW9hvPIpm$x98_(8-%f!3TGTyuz^fAJcj{?+1;i@5$j?#K`yMZc`N z$Nw2fyMK0=JEe^Se>oehjJZ#A-+NPu_=Qg*QAn0G@qW;z5kc+rf-^X&vxz*I8 zT`b>+^{GEc(7(t<{j0?x7jaP=pUU@R*3#>xX*z>yuh;f02v&SBpa~;Q%hg`%t-g+U=G~YmXmNe$ihm%{ppns8z`d5oXF5*I`yq5iY z6;h@BSk85Jn=I&G4=yPl3~1^tU$)W2FBauK)s;#XO( z*{4-@`Z;^4+(sJ({fk`GzgisU0xo9DA9>FA({#$})|}heL)5y+MXmehz+d@z;|nzM zg__&Y)pv)$#r}}1#Q{~1K8GVbKPi}sGR|b+F6T3F5+&i)K_HX1zo&w8s~bpJ}PQw0HSu*;*g8D(5L#!3afY2 z-g_SB`sz-L+8KbTowYdRBJPccfpYlBXZpHxBLK_&Fkx?P!Ye5^BuSKYr1&vrQ>!zJ8wV1t#R6mu?pM5;rY;&+3#3QUA z1;bj&$i*BfHr3nE$TrJKRADC>ZD3w2ZSE7q;ohfK6Jr}{V#9Yi^rJ~VlG}NPjB7B= z>kb=Vnob`jbtYZgOy>Pzeo?4(O4k^6A_wkF;J6{Wr|hrkck;Jk9Lb1r;B$+Fd8D;7 zp`*velH(s7`P$?8WUZb?8>pwVUW51N_ir-bYEQmab0Ho$YD+Br^u(CNmeue>Tyv`# zZ1tr`>RReaj=10DwYxA+`I@s)G}zRMOiz5Qez#mASlHZ!a4x?sX=a(L!!>B&F;CEg z*dOY_wNqufyy%_oSF@&kd{Ycl+0f+u)TrMN-3r^rd>*6BAV*%KgOtu~LN4EdJTbr} zE~Uc%6}I93mG-|0?c#rv&>!Hizq6qwwECbYy7%8~xDDK68Mf&VO|Jh!w{*KL9}CtT zclxlCRQVfE+V!Z;*B;~fk9={XPM7wOx}z_0-1_hz>{CBCy5vVD$-Q}jk1rqEgc=1f z7OYXAtu2P*!`fm;x4n@uUb&=A4)1Td`6iZ?{z~q1yPed~I*qrjb-5zoaK4Cp+vdG| z`)088XPBxvSDLOBwJ88mn`&{$MO?ALC;9Ho5QxQA{|VDfb46_mK-8vM9C8s?HsFh# zxv;%7``&*vXQi#8HU%JRQ!Ng;Nr2lj^P4Q4>>!oR-pA*b2=&<@7m%f8pF zx8y^waBjEeH`)5`f8;F3ev$+Imyabl=mGoKR$rN1J5&lhbCu(;UV@g3{UJAgxQTMK zCD#E5sztDe zx{^}++zjdKu768$zNOW}+1m0Ar4x5#N*T8xeghhdt4w0o>r|Ee51%CK$Uoff+14j9 z##;JOy_kfhsd2eyJrA-zcPmMwS`-p}@BaK5EO#woi!Dad=oe$8yIbNpcjl#gtk1pv z)Z_XXDd}w-$4$O)pM^O@)3JdyiOzchf9Eu@4`a3?! z=4*hl$tE4g(@%X@5#Pe4{62_>cW3(}hv-Achq`Yw)N{Rf?)XbcE4p*lJ6%T14$hsS zAI2_Ol~IQoPjoGIWbm;>z@Dq{?gYE|?o9rBfX4KHt}|Sa{vW&Hton2C4KI7B8}C(x za~HyQOBf$;aeTp2N7~}lPu<*1H5OvA{xr75?}BXq5&Qya>REtOuDh7aqkm;%pKg-j zJN3ETUvHaGw*}V}V|(`P=&zf*U_OD`>wHa@!nf>AmnDmt`>(}#C17%Umm+6 zn~tg0j6Yk=t>z0_7rCf)wK(J=ZuR?za?X!c^x>c*oQvmrwOSXssCBhCsJW(5A71)BB}p%! z&h2{o;kxRpcX631XkFx@*45&Wi@419uVj~c1=RD%8gAFcB|*@-$VIKI#i`r`DBSW! zjvKR)HmkK)9kXYqpmmXpT33tXV+Ne-;kWW9|E=`r`!g!HIn-g(YGUA`*45%T7jWe- z-^pLIchJoJ_c_c3FbfMJ{SxEe^SetGxHKoV@fPy^QgC(Ad0wwxD&9i&|HULoVV% zXML4RH_KGtSB?Mkg_vlq*5zXct*gZ$7je;M-{p*-hv?1Y?%b}oV}YP`k&9Yai$gBr z4o&+ZkGOJ_ju`>|SZMTe-6CjR&IPTj#UU4Qr5k?AXNykKUV*R|1C34H;r~jjiJ=j7 ztrmw|#BF(8A*Ys}r4gH8-wGNVd+rqVFEpb5U48kN+_U{9+GCu$SJbG*K7ot+7^MNsSwJmP$pP3_#S$S{!l_chT{W{3i?clk2Ewp&AC4i8>j8sFSrg zPJ zc6VU2C?!fMB4A)52H2<|gP4egjbbZycisBTHT(Jgj+y)UcaQVjncaQwzV~(Q?Cj25 zHu_k5eOCy7_Q`ibtkXFo+rG8_^UW(#IQJw$UyhZCGQ7u9z3PyAsibi*Op>0|nE%qPYnV0V!;o{ygq0v)zxpI#7<%WgmU-MEv#+zYj%Ta2X8_BsW+c&I3`%Zem53`<*DHyBP-5f;SEpu?eJ-zgfZMfG- zzv;hE?B_7vhEjKP5OufA!3Fp5&<8fDznh+rW7gCD*1OfZn}evkWezU5DK|ec&A*GD z7?UR2_2SQ?l)9UPsJmqjF1X|D3yaO)P2ZDi&g(a}Xo^~Qa}ag6%)tfMsM$9*<70RI z_*QdF@5nNz)cTx*sIg@ZF1Xs`zq3Qtd+FPMnOV!2Dp!?y8pj;yqufjC=VrQ$Mbb(oawNEY6ujc6`2Esh)<5diun>uWWFSAid4I^5Q(| zx2T}uKjS)^eA1n~>{m^k)1}s@^V;+#tLxE+TdJuT>Yt|7t?nG^57Yt8A>5yB?C?Y~z%33ct4{ z`mocV33;DKoHNNKw;3HPw9*rk9+7)9Uzyuhbd$n~ZR6ai9ToNIrF@8UZGUlX-^$-- z+HK>_O2eTJTDK;dcFRJ7xOY#Q%A>!jqLc8SSD@mN~fK@}0ZI_Ulpfqu0BZ9JALsM4&5^lZnd~C8@PjeS_vdqB+cQN=O zJN)X8vBC(9gMa3R`r*3*46-8EyEaO+oCsnp4)8>Db>!7aP@f*GE1 zd@h2M=JxXU)a5!^^qJSmGAFi|b9d}tvGQI!=-5@agj=J2f>I|7m)FVF9bdC@?-J=; z?G1tJTt889u?()v@y!+7f{t&Pm;HV^D1RPtEpe&wpW2y&sEK6`>jQWG%3F4OdJ?^{ zt*~$#JH;wBG5Uv^Smxk@8<+5&bvKUCWkIEd+tM*ssfppDCYCw4;JS_d$bQW{Nc zD%=)jHz+kRT-3xe2N&EY%g@aBP#VpgXg=$0Tq$0uiQ%FqmO0U9&Yd6eg=IvYp!I&5 z&w3kF-=);Va8VP>99(d*iC@`}5oc(<2j+932F|;cniwu>Vwn>z=Zatc#=7~RqyIGQ zDYmyk?IflCg^T(({Kj{7@z*7qYcoJx@9Q=^qPSvx+?6@5T7b*D=Lb8q`Wj7KKSH>* zTQIer<{;{6nS%??!Tl#&`Q#Q&>|~B%uI_qVt*1GNdRpe-f=fB{lXV|@pJqkR6zx{) zd|IuiIarz3(=rDaTu_By?D(WydTi(d;nwPysn*kIm)FxW2N&GMslV7Q*H`pp^~J)i z*N)f8ay`vK)YCEt7u=1Rcj@LZ{@sFJON6`T{6k}C%p=+*+*AMV$e-(SZWYh|>z#Z= z7m^XW^{u($e}CnjYew&br`W~qk$Sy`ml?+_E>|6FIIqiK=axk3PL4Mi-1C(N8gKRE z?2SW|zR&l%s5Nrx_cuyT-pK51m(hx=qf)^+yYw?|mv2b>r-zcUw1(g?#(HD@3^Hg} zAo1h8+|4AQ=DL^jSq3+25DkicA+S>bIJeN6?Db z{D^DbaItJQcOSsZAOEWLsB9^=gOr$HWY;}K^LZ2@*`0c);&}KtT{iwLnocXHU(+ld z7K?ijyiYtT5C0B__C@<>l_&?}{dyUlvI z!odaSy|I*jrmh2VxL-)acC5`e%lK(qN}si|G>LobChng%7o4bYaKSYSDxr^iP>`(1 z_fWWzc^4c1W*66^-`kMh?LUa;=Mnr_Q9zTsEU@E8`n&OZam?Fwd2IYCe4kB>`aw5r z;p6)F`r5faHTwL0z&5q{NGI-HBYs0|yFD_>RsYEf7CxXy*M22_f1RHv8Z({qrny|) zr;jT8Ui|Ls-P~ocMwV&g{rBl>cE1$A=N9)9)MwGW4Lpmkar6oMXx&MVDz-)RCB}*m zx|V8e91qmVGKc9O>vgx2KB?bM;jZR&tx_j*5OuQ5!3B4z_)CVlt*bvY>tEEm zN}bF>)X6dj7o5k)*DTF&)4N|b$C?Hf+@{va97LTgb8x{~r@m#crghP4-!td(Sybph zbutH0C(9gMaN3sltns(5`u>_{#P-f}U}~MrLDb1I2N&G?;vZS?>+X8l8|Q^Pr|fyP zPUax$WSN5tuB+oG*0@tI{gK5L@!ObH`MOf;;uxXUl{v0jfa~Y8ANV4a*Pn z*yjgz$=sG{!j0(oPI1u&T&sZ*bm%)uI{U_n>p{)t?TouuSJ8&23z8-E%=)8ojc!JP z&Y`r??;2$On3>}ItW& z&V#NQm-)Mhr*@=kYXh0MCL&|3_G$y|@G@0Pvq=%$3_kX^mg6#7GSG?G22~gBR;%Av zy%Ci796cy4|uZ{xE`b>eWl$#|IoaAu88ejSEiM5HnW&M zY`GO#+^?zV%j&!#{Qk74US)$N`7}LSL!U$Wbv)?YL$+%4C#}K7p<;giR+aY|pFHle zypeabPCb8%v8&ySC#v7L;V!;$V-cFoKGxWwy$&?<=YH0sj8Ug^SXJ*m+QrgO#dW-= z&2(iM_9>RF_q@;A1@6>N6geTdPWEGs(+?gp`*TmV3MuEr_Ll6^$pl5UxkAU?sp&l z-nQ2%txI`d;WjB_C>a3u6*2&sg9}c{1vrOXK>i*OIP9yQp}B1OgrX$TAzjpi<-0MX zg!^1pq+x%$(tUzBe+x(NHeL)f*rtVDsb!ZT;x}G+d#sV~?|e3NUKe`3&17-SF1lx@ zamOx$#k_GNmhCmc6`I>iIp)|0IOZp671gu9*bwh8bHwi;CjSa!oTY=_x<_7eoirra zwiT9v3I`Wl$lgZuO0NUD$CqS=WvBjeGCp4X!L+&`>FvLK90gz2pu=UOoU=vRoN7Pl z?gHl6ie~Mv8%+wQvFmf9sq2}G;<$CSS!8^?e4OQ*9!;xsi8GIRQBNf+Kwpp*$Q*CN zq7&y@Jvq%P)Q+M{e)*VgiM~o!02f(-%n6rsIo;2(x_u&P#Kb1T{clzP7g>SK!3DST z%|$lg#wwaP;*Q7w2J-)DIV*sRtU%`Af{R;sg^dkgMep~p6>k56vz4p>F0uldg9|Pr z@;W=|8A)q2;$!6a!tVT>k+TB0$O>dm^qF&GK4r6oD_`2ggv4j@^aZwDdA1D}alvK<40r zd-mu)3yxk(Yb{$W+*T!)DOmwrWCbz@7hGVSM{Mt=_0;LkI@2w=T*(UHA}f$N;c_mm z-4j;PW+UDD#e9C=lz;zC$rQMYtU%^OpE<|w<+9nmw$QEhFNt;=R@tUx1!8-7Rv>e5 z!PTkxj9FERr{}G6g-*?2q}ZylM4=N>(6TWCao@T+Vgf{)rWgI!l|h`^VhR&WDs-K)5^?=yd-xyYb)x z?LO2T@7)tETjpLgh(;pTYnnjO!oIRgigGsqlVa7w1Y7a~*m zxA-^aS?Mty^2HGQs%Dq-#`6uo*nE~m!?NFsTBv+IAN3oI+{HH-3ml$G7kg|VqukB8 zW8!>%7-=`B(ygO>Nekn&SYKT5cV&zh_C3aU9eD0S=M)MdUM}XhQWo-O+dh?Q)58_Q zNRiYMq87q?Pj}~hJDQyKQ@iYSN&KJBwG1(8ce73n|MW-u=EU3J>s!p{aQRc~*wMb$ zd5BijyysuQ@58=%R89R@<&WmwkUuxz+|<00>T_|vU+`RfxXTdQW=Sv^GSa-y@#F0- z95j%Q-xNwdPcZMB7V>X*z5aH9{@tCdHJaeVxGJ7^xBI=HZcfP5UQJyt`iy7vmm`bO zXHWb{#i5p>&zS4Q<%Jbp_1>4fiLns-1!KFFtbq3qS%K{GMPibBImb&Vp-I zD%zMlX)n(sMvyT#+A_4^Ts7F}+H)t(JJ65(DA7u|?d^h$cV~Cftc7!lcC3ov>eTcw z-gw8;>Gy-kso>fsXFplV6tF&I3eKH(^EqJWkazA)Ot<1JV^*cN)b8y?&Gx?e4H=AG zXfk969slLJR=H`ExE6=-XV!-YY@;U*?a>O{m?rL}yez|wXQ%D;1%*qJ1@B`77scmm z9?{WG|2ZTtadP((Ttwbbg+pJ!U2A8jPs=Pv9$iQl?)rjJM*etPy~gnZgpb!3Zgl>Y z3I`Y5@w+}WVnPrZe>5M(Z)mP%s8P90OMUR46U5inPOLA*Zn06)x2b-kFaN*mS6-~| zVBy8avL+MhwW}RTzCY%e$}KZ~7!PZ{X5}*?^vWR#V!zaPnrc|ge9rvluhc#B$BTX1 zyz~^~)tP&&e@-X;RRy!&kF$w2!WuqeubOq#e_mfJ`m(vudgB$Z4MxuCq(9Qk=j?HX zH!Ci-18)DN4_Q85$N$=GW&j)b_o$StfP=^iWDYL4<30F1Hui4%Ct{9|U0-OUniX&m zS%J*K1y}jeQ&!@kn_kvCS)2>23&p8f0SA#4$Q)d7UM??K%;hfnCBJmxuCUpyW(6EX zRv>e5!5u06in;dbrdPRZUJn9`rm0y02ay%X99(d%f?qR_4n6cq%gy(b7doC-vjPqx zE08(3;J%-F!%j`@r3Zd6Gk`gKE-ty=$8QMrzRYpe0$lppx9s#icYVSqGXwDA-(;2R zeYmLiWezU5L-Swo`P=*Gl}}|;^kq@wTs0Tq3y}+Ks@74*ck;Y9^ZN+C>;nI0#LUS4 zv|iduLOM1U*9dW54)>tfY$J$c{Z8UHiFqd4O$n!CUw+Z*f9RNsHd>Y&q}1nFhWh;S zz%8_Sai&#Eh!W>QFkdETmgqAw%Srv$(_!1PwHhVO`K2cDx!+sZHKRov9@dZaIx5=z zy?VNuCvq8iqW5uIeNj*q(rU+TaSm?a=fbgSh4p#UZOM$-qoUn)1tJv={R1a|Zx+k& zz1iEjS6S=SXsu)DU$JcyExnXl9Qz8jc=_BwW?lap^%-EEmt&jd8VmD&ujToX@g^YJi3<=6nc~K@m$)XKRKe^ad~GbwLRKJZ7*|h z!JRpLn++?oM!VyiBHU4YjzJ{@;4bQTnS%@NLjHSf%l7qJX5$#)j^xXfdY`+f<7Eym zI0wgvtj3slt!s0h@$iNH3;HT`Jo=0}UgqF}+YXva@r4-6B)j0?u9+2=dNnXwds4KZ_-zca*=kr94^Lg&W1SXm zQ-q+;v-yAWOwSi=eSyMcdxJ`;aEo-FV%S@~Wo7D^6iy5xZutgvetjp=|R%nOAB{nkwn9(w3Ys?Qa!TU(?;}f>wh@7;Ii7MFpt8k zY4@abv9H{1#u&Z2A7xIDR`cBLo;a36tp^*SEe^4jCsxxBV;_rSImV`slD}a8A%Br` z8nl6&rp=Ls%=n7i&;pZ{d;>1>4Vi-ru5Go8ETB{bow8=TcxRx$)f6S)fQx)X z=HP-$iN4IPmWZG;U%H9h!oAQ`CEpNz=GPaQg9~o?$7}3ohX{Ih=5yh8vzeph8*oLw zA#rfQHA%Y3iXK}X%gJHci(+WMgyp7NJXpy$;3D6UIpK0{e4~4;TEDflQ4{mM_twS2lzcNQ2bC-X?IO#NIk?~^HGjftxb2_^|C(bV8rD3ZW**!{ zHX?Iy!Cf1c%Q}xsq^pLRV<8$<->qaGqFtVO$Q)d7c88y`$qn~WuTiDM|7Fuk|H(#p zyU09bPV|{`E1NxMTTnS%>1J>eCb_9%tk@iE6jXyvvmnFm~C9x?|P+?G;r*p;9(+Ron`3(=zT9wqaD zi_Amj;DQ_H@s_O#Jwd1c=pp*tyjqfyc?g$h9x?|P+=C_W*rM%c=&}9-Ot;2iCEtLH zd?R`NdsgMvIX)&~r1)QGUh}BpiuG|<=D2DBF3SG{%N~_QXSOrP{WofOOwCI;h`dDR z;DU?j`H>}ey-rt7_Y&>aZ*f}9OE`$UMCRavD}4SVb3bsKTI8DJ{_D0qr{*ObL|!6u zaKS0r2w#Y7(7h-!J&Mf)G8YK|NqU8Q;{O-#JGVGkh2F>rAuGc3G8{`Rt584mD1XMJ-ElL= z4KL*PCG~GVK6;Drv8V1#Y#Y9ZE01S@i}4KdyY=V`-mRB&73@FcD$4r!LacAj)xoq& zt5sy$i~$TT-fyhrv6`lg*sIMe9V3=4%{$&WRv?0I(~`A5A>j<`^X9d|hk7e$RIvlv zg_di?cKGETr@mXjIn)(OhQeiJDDwLTSRck<{J0TIbJqluMe&Wrz8_Tlu=1@L^bd3L zD)SEscZsp^bsQZqYBZT!wTS4SOJi5V@x&H7cF$5$tWz1$Ki5+IjMj~!=;wbUNY>%j zq7A%*8g_RTEyBXcpBnYVahsbr#(4fUhR(_tM!v0VAh^-iJU^AjYM?I|tMTdCn$#@2 zDx~scGfQjal45M0eUnxl(S$sk)=%6^1vYqW1ltzUJN@w_r7u)Tu;!N_`DK;QFN zC*f_&h<4-c6BQ2o1zh^cg8I?HQ%FnA+%Mbh;*GT@^6T+Cdh$5{YY2Cj10Ulhad5#k z`}v$jx^^L3j%SN|5WD4vl{xmoVUGQdeJ``eleTI%`j%qYHm!!Mad=J^J6t|Sb9-wq z_US}kyM#7xtsmHtOHNHQ#5r@aM1b*eRW>{Iq_bZ6p*hAs!FIi}3~gZ9%po}}W09Ml zImyg2cGzxIGY<|T^N=~X;5;keW0|G9=(GPd$1}ti{!iw?L1Z2>2N&Ges0Zx8xh{Hq zUo*?tT6l|^d2kS!hs?nR7gOaiOJ3hqpBZV^1{-V>)Xal}$UI~YF1Y1ga@p&gZhC~9 znIlCx98oh54kGiAIk@0lTRr3NP4v*Od0!O2m!+jL)Xal}$UI~YF1WE?&)JjBz4WYW zSH*S1sHEl=xNab~kU6eefRi%{aL6bQo^aK>KCVII%bRmboNsc<7~Qb7zGYfznpms0 zXybJ4G^6XEVrj{nyXbqSwiV0pY(gG?fc0VgK|lA6?BODV{F82uXYg3`-S|bfu)BNv zkwqcqcm|L0UyNQqV%f&e?a9bYzKpvg`hPK6-&se!IyE5u@)j5SrA@8V#-&j)boZ-L zB=mTG!L_S!*l1ZLhTilWN-|!W@BGwla1K<*T!BY19t)Ds*^>ciNwW z=6eJomeY+}LksBRH_RnF=eUYC671uRIt%mZHLZq_C2{GC@5a|1hZZq4DDw7d))mhG~*#CjJF(*_RtA^t0{OgRTR zh;vZp{?9!-{R;C)3e~*onco)k;_sv@*$7;oTgV(-a0?3GU}yIPX*Wxo^OjBHS+1O0 zVB3&e$Q)d7?v-z`+o2I!^}j1cpJ(v@EjhPux zI`8&}1KluR%ksrt$jt97$?kVhg{s{W?qB-WNFV6(!oB_uOIfKl> z1-JJXV{{dNS8yTEx%k3(yPMQ87do{%voBjo-DLDgNrafd6XYZoN=9=RunpWGVykkU6;E940+uo=(a1#0XuuZ5{c&yqrgH7deB>!3FpI;dAyhF_peqXpW=ME9_Tt z2DFQuLFV9sYgYOtOFo)Td*t>J?UJfTl$-%Bat4`$3+@wn#d2~^(Z$V&3RkP1qGSrf z<(Wc_p08Ph)|r&l9w+`6G-sx`SRY)O_R6or^@2$|gSgdDokCz;0%(>PtwP}I!By6ntT(Vu2G-H5W1)8_*GU9Ui zh`9H`ym=owm7`0>1{22zk3`Lh_a;i5@j2Qc@`d(0I8pqs&gWwdlCuw_Xd7N@?*n#= zeUJPg)$swzzOsZIc-m215AZED<(uuifB1H~GQT`uhB*g3+B?&FCH;w2?mB|~;>*Wi zRQXnwF1hbdKCGQ2YD6EtzN9+!=!k0mWQdEG;P5VmGXEdnUTlZ*&IMl~IG;#Hce&?k z-dn4P{Wq}S6vJwVrJniYk=C_Qd9e>d`MvG87aQok-EGODnJ-hZPiwbmZOob#OIL@? zea14mUckOby)esZ9laXZpY*D0&R^H6QKpfxFN&5aH;T~A(qf;w zx|}mSKChUs$>?t*MW5&Jxt=o$&7ceS2a_%p__GtSU*;O;Mn}@6kw>-6Ed|6enq=v1 z3_hMm-^9OTw|cpG9$n_&@c1|754Br8h+NRdiN2iW*|p4Jzku60dlGYQmqp*-F>Chu z)o<}{7>#9Kb+1va=QeTfFKzhPm}xtMtz3SMUTMsqk#c!a{l`Xk&rEh{e2Sj+v3?qs zwF|H}t~|cPzQ(xeuZ#0{DR>*nrQ(g7cP_K~!@KBn-fR+XaX(XW6@1 z-Suhxw~GCe>9oNJe}94Pnbl3Nx^BBz-?5VGl=b1bVSS62U1tePJL_|wo9}QWIPmen zH`7__eP=S{^@QSP9JrZ~eUIHF4ZlRKBX_5gbGwA#-rS z&vkL5ziXcPf^7whE&I3!V|@dDF5ZjiL^5%=tq&efu_D zoHN4;4Kar9d%+4E>8rP%bVu}MUYoZ@?>ez8agi@Av8#b_E4hp{5|?ad`33~hUMWL` z+n~ZIW5<>Cblc#sX_;Jeo|E5! zqmAS)E%nn4@6wWu+KTJOufP#TRqMfQ(F6WoLfT}8KG$l|##q_MgE_mDBje6YVpyM5 z>`0zRRH0qM3h4{?eH2{miUP*5OU|^^H5l#SpR zAsdl7xZs9&yUYIBnxHLQks@lu5&4#>`347(Z^#^1E&j`4894VLuTmZFtksW~YATNJ z{CZAC+{YWKJABsaGhG{r--e%aRb$DW+|KGmB-y9aV6I z;oR{STV)%r=eCa&+^qbb#k)G&pG7ZuN;~EeIjkI+*_-8QLYI z{rh(`>)m`ZzpMElkkRa%(eLa#Iy>EyJSx9IxR>}hTDEs~h|K|5w95$uDrWx|Xt zA#L^Loj#MLZ==OIc&1d4aq-tPx^?_~a^#FT7tPu3x79XyU(kj_o^N!6dl(tid;`V$ z?r8^%v;3XRSg#Spvy%BAb+vYa5qvm|JukUP-;`BUZ12t$)<*r0`&h=+6_mdVB(6<^ zt%oXE2DTSjhCH7UUu1##jAR$>!tImi5X-s|PXEpJ73=e`8L8wOSRe8YnS%>Xf1J!p zlndJMi+n@o;DUP`c#3^G7e?K#ZV>N@Aj^>R4Y*h)b8xXNput(@+CPl8 z`h8Gj9{&{jPY%Le|?b^$u~rwdA=cYaKTxBy2#Fq zSwWM=cnG(rwVH3hMZO_(aKQ~&dzqEHx{_wq3>2!22p|6&Fc6 z{n;SgF7|wGdN~K-F7geTg9~nYz;)(XC7M<&lp@@&MWU5_1MMQ;kU6;Eau3{O_xi7) z#jD;h`&@L3l5fC8z9Dm>&z$pcxy4qzT2DJocr9Gi$#T9SwwLD{G6xsjwC%T9pUIo( zk?rP~2~y!dIS6kT`G(BF1()?MhyB&#=!Rf(%tVW72MsyjK)c8{WDYL43AT6HrpLP4Z zmkwB0N4Q$KZA!iY7x{+F!3B40?n5@K#X%b3)?B!*Wp*j~23+JDG6xsjmv4_){HepV z&;(cEwkwmUtwd(O(|yFdpVF~>~cTe?a%f;MHqe9vl_Wi*ulHPB%;Oy5OGy;=L=@|=cXvV4mqTRT* z&y5`}CG_5xzmv^-J%pRo_JQ%f$3~X>E`+vtn@@1AB{mxC_r|iqbC=V1Q{Id7yr1n> zquu27Y-7$c>eRgpcUO^_! z3=yt3&rtN1`RU-ze&oVgn-r`M8HIPLuVm>EfAT3jLfp$E2buUH4}CM*pX6VjD8{5N zbm@;*yRDH!QFdbAw|2=;#$dq37>v?G z8|&37?IpAS@N9`MJ5*$uG4$X|Rx8And@BE2%tw)D=}dJzFy}BH*e3EN+jON9`E)i& z9FKfKF-GQt3_57{3+-0HaB+Nn`SHjMJVF1>$4-ld#P3R4iw7_zHQALo}taZzSjPA3lQ#1UJEI;AD2=4&6^ZLD>vb}Prb6j z9gX)eN-w3B?U$4BjZ zx%r;8OrWk$K5OL)6&L5$!~*M#A`|%YpEARUZ9IQ|&bifozl|07F0++qyXoCFo8K8o zF1}ICH#mrVL+0RuGY(&6i~DrfFKFhx5C@8GRr3uFBHzfWeS=lfd+0OQ@MnVIFEW2k(F{Zi(Uml*0{>AF9p+npEymeH!cz9n{(9}#?)5@(jHztNuSt%5ci37o#q%=MVgTcl7U(GIL=g7|a zzGTPMJmUPA!>?D$+@!oOn46Rse(b8-M(snLUZT&l?Olzm>;7y;-Tb8C-+m1Jn>;PA zaesU&>rpjI%d@$x;HL7qS?+W>&i~6cY73H_#J1s^?J|e$1$Ve#I!l-oq}9z=NVp65 zd8D`;ge!A!!Ie38k`=EQr1ejKC(ao!ew|b@3JxNpkU6;E99m|u5m`&M2YwfXYw+u? zl2LFF8HLQj1!w!{9E+~KL|bUJL%8#Krl4dL!c{rA;F5n_WHm|zYtMcy74BSqjZiWQ z4kDwFIk@09cD}-@2Zd=X|LG-MWC}_~!9ipcG6xsj)4|tS6XzH$w}XRl=lmzjz_I)< z2NztI>DkP8!)EPG$|iB$oo2aA%_umCj6&w%g1b>ZhfPg7qG@0Ei~rCu`By0!1=>YM zA#-rS$#Zh>MHZNoL!P?>Tq{0z2juHHH;~b1d;_^_d=|@iKIC(^6WMZyaJq2! zMzL)ptUQ&R0mleAgEE&gm;dWxeQ<|8-p5{Ah0(g9v&8yF<)5r%4_F_v2bqHl?r2yN zGj4`bnzxp4hZUHhWDmmS*@Mi%1?TCN%xeD%p&c`hiA-T|!3j$C02kSV%)tfs@>wct z|0RU#tsaQ`y1@meE7=2FWDhbYT+WqnPiO02htRD7mBcl+pVcHKdw`4VLFV9svpRE< z(Pts_;M7~f?Q1nd$sXV$dyqM};GF(F!>)D>rH9&??{M@kv`EPw;39jFIk@14ZOvqD z_l42z0b>cr__81+dw`4VLFP<1h|i^RfnC_Sf^InzD%?IcF-rCT7ukc%!37sk`VzZd zWfgUOY`(+My~tW6dw`4VLFV9s`&j5QJ9TC?9h7mxY}a;!l0Cph_8@bjUC!B-zsgQG zh@nwAcZK_p?Peu=5Pjy^gUrDN*OEU!YF=j@o!Z9C`CUu%IkDu7g13uWSLWb?3+!@( zExEgaTGuTg&R^H^2bAmq?IL@SIpK2d#oC+f_l_;}wxc9 z5WU~ClW<-6GC6yIi|j$>;DVc9^Z|=IoJ?Eya5vlK*Ks*}5bg5pLFPoeoNM6ukQMb~ z^lw#j?xMDpQjBH&$G;TUR}*xL6-tnd7PjxGI|;vn4-I(=s!s zi~hB#eoW0CIEd^aEBXohy67Bz-OwB}q1Qg8xM%~e%%Kf%k7nhv$vv`YpEKtClcav8 zno*z)o>9mgTyQ^YK4q1AUZO|#UDf`iB?WDYL4bziTs?RTT~vi2Eyynb`6-KV6;^NNRMMl#2f0 z-g}OBVcNf80Qr4-wa6`eIX70nqMfw}BS|Cu#QNs)ZyXjZT$Bv&5=wro^B4Pc39s4Z zi~{RJMlryr61nB&NA}(`fA^?09^cc5{R%(Q;X*U9K0iM8BXrv+;+5@78a8h!*5}JJ zkHu%ZkwRqxiSvifV*ep8QSu1h2J(oI3N7i4oq=TE^;|LE2)1qFz;<-U`v7t^u+0C< zD1KURqTwS;l0&bjG905J_3jwK@8f9oU)6+e`0sV{r}}Ol|$Ci%E!~R zkr89W?_dHSV|{$mDq5@AW$oa@`r>ympx|`lelsV!^`<|uuVQ9os3o8H4<%M%KBQxx z`2X$aMTXURS8~npA($@}{lk1HnM<3J#$6VZ6`2vDHbu6STVoZ8tsFoK>)GNr3C`z$ zH*sj}Pv)nZ@3SMna@!X|+HK?Cy1e~Y^aW#z+KvB7HcVMY>Tl>Pej5h=mfDrLTBOeo zUt-f?l-LfuN0rl~18K0&msnL?C0t}xa(;l{0rCUgv2vP!$ZGw>wF2VzSLMojqg)%O zw7hMjb++03Z*2N_tr33BDb1lzw7&N4PqF`+JXvjg+` ztljpC-*|{#%y2twPtW{leX&d&w=Q<0jM#rd==X9_WOT}Ov28y5T%EM5DlMV;kuv?B ziQfT!FExHf&_7X;B-y2x;IM7%XEtg6eKDywF+uE8yc74pK8CiwdrWKl%6zwes^vVR zPOTL*&x35O^3EJlNAnn;7?*;?Kc6f&7HwL)PW?d|clP2DS z#6IxaT)=QTHJANLSf@2}^c4GGT#M4i`(uaMrPKhe-;+{;n_@Z3aQkqCy&V*#86WD1 z^^LZ1H$L1vz~&5Hr8SMHCAc|!ep}f^U*O(ob(A%m8lW|aDqyzD#~LU(0|${a$Q)cR z&NX?R#!}`R+KZSMVm~7nP;v$iB4>~}(_Lu1t8jvizw58fIg%k7IXIXrorP`o8exlvEygrxn2>d3IGsqlV zaP^vAV7D$T*Y?lrDBOj7nUXVb5IKX)!3F2rA&WJf9;rD^F8Dt;P|X=Qi2Ok2OgGRN zI`k@wc^#|yKME1~!F>K7CFc?7Gjax*gA2}HyTNX5*sV1@=Oprj@q7*;C1>Cuat4`$ z3y$v2W;KeQ*S@}PA+DVse5{p{GjI?&gUrDNH+Jshb@6M|f2TRV&acG_qfoDl^mhNx+T48;#5p~kAIs!o%gN6p zKIGCJvv$FJ(gTLK(9f1HKpl&_P_(hX(g|Z^#b$c=$gd=BD1U#NcV@REpZ}^@p|s*d zFVOIIyG370wvJWCM#06{sM7m(FiYQ1>Sn|5E%?GQ`NycWJzt3WT;||{OK+LTcDD(o z@r{QIcWl1NN_~#Lpgxy5xZoxZ-pBI%45nT0mJqHdpR-l2&*7pzmpQoLj^#^Y(*uI( z-find%|58$B&9xwi~3yV;DWn1`v}`;1k+0;s)?GtZ=s1weJ)&HpUWIvaJQXOS+H#| z&Gnux{`Y&^j92P&xTw!%4lX$NmB(0%Lc#RtGYj!M@UWV#)aP(fpUWIvaC-0w_T*MD z?UthpcVGd2&n4IK+(msZb8x{ebw15{^$4Y(cAD=#3@o@psn5|a>UfzGF6XvP%V4)> zgwu^a=DQF5tfQ6s94_i}nS%>%ZbT+a&sa%UhM4a@c<`E7uFv73K9@PMy__4=_dLsU zJCa&eJ}0)fPm#?^eJw_zEyjcrybLMBU5&PHB zo@M@u^TWe_r&7nG4b<^62Nzt0?8~h0oLE}K-&*{~cPN*n)Z%bav&$U%0|pZhl^TV=HP<6+x8}lT$MHW@YQ{ zqb;1<2p5@$T#Lg+EiQ9#!HsBlo1G0gNF(=k6>j^o`;=N7E^2X^gA2}XZ4R5?qVASC;c~93^F0<@F`agN zHqqSPDyeFH&Rx{!wvF#I$G}t6{@iSF9dBR#gyM>Qz+IW+ss*^_E)Q6RB0LLjXFl_H zt$A9h+0nl?yk?gz< zKDTRfRjutgh}vG};DYPr@`&Z@dyBr_7%bcl^p0BFa}c$?%)tfs+x-#y;dh_93=S7= zr;d-6cQV1@olK>+=L=EW%Pu&$ZHH#E&TH4v+Fh=R`lEe`fkxXGcDmi=4DvhPL$r~} z-?e;T6wym=JWN*X?jw%n@rLIN+u!lD&XOIZ?Zp)FUmN26$5`^+f>@ndPMVdSFP1Ig zbx*{W+T_jAV3K*q%vJpOGPyoSUr?V9@bMuPHu{q%KF*>I%(0-<;+#V*{xs5q%(Cz$ znCA`0H;CW++_i2)UG@i(@TiL7-W%V|c)F(x?Z0Iy@vfI&+&3-e%jR^9qpLnoCDyTn z8QS%za?Yqfb|WR1XOY#3{63p6>|ZU*cpH^WJrhr9QwsYqj`14DTbUmd9Oi7OSaTme zQ}?oVyVVTgPPU3OXzN4tj>APQFng+Sr}BBfCw;j#j3%;4%_PigxmJ&tA zB^Y8m{CI95bLbzqfO{)wq*Vmz@P-O*3FqWG1sv)WWsXL^40AM29(SD`ANPZ<+ptya z)6PAg8xOwSWUu;uq>oE)6zl8i_S9(hxRXA$T@Bhgy@WXCmm8<5bLsK*VJ^Lr6R-03 z(mrVS%1suWKfgzp@59g++=n&W+FW0rW=q?5ZZ5ck)id}v>ze8p&gG$phSnAB?yZn+ z6nxc8*W5}_muT}H@*~b?4A1^e^yjw=(p5KG3NES2357!&;7HQe)bXkJHGD&gFXGQ! zeU0Wh%V~-2d$bxw*D@>%%sbYY6t|rKnY5VmCecQR-p`EdL;5hUPv`0Q34F{f=X!O2 z#oLWwUwo^P!g-E~_06qw->5QbC5v!~rPIO(3U@SrKcH4_Fu(U%M<0ykxd3-Z7E3W6 zB{U)>o-QO24y(ogFEWMX+ty_6U~h7?)e7;yZ}8vWe%A$Le8VN=cKP1oTt!A9k88p9 zVq8nKOBu2z#2|}zIEeKH^JPP;Ta%9cy@}m|+j`@7qx@)2Qd&NN{bL-_)^resO zU}f%EEJKF!{HOk*D(LwGmMQ5)$U%_g}Z=XOO*PT zgQ$OH4lcNye=}KqyJ+p})xY8zi)Bjv%R$t?GWUP(6T6GdJ7AO6V~@9RF&~do{|YzI zkU6;E{03cSM^|mtTJ3Ob$rthCu~e;pIf(jK=HP;xo0q@OG(SblYduTUwVnl|)%ur% zsDEV+F1Y|p8c-oE(5|0;prtv+ z#--CGqflV^v{x1S>633C71xM*ZdVN3X%*AvEgPs$aWVfxYkFK!+Q7D<4dr{9d?CIu z(t2D)J#xh;vb%B>aoo09k5s<%i1QNPdAylcMengUh#VRmD7fuK`20SSi*18D#4VL& z9>1xDjW@5^p836u64Q>eM!oWpwRiZOKb)&ob)50xXmPrIQxvJVhK~W_3loj6O6CR* znVVcEgF~HM_3CzZ{!%baGJ1-0-`!@EQWJwiO)PVKb$q^pQO1<_3Ct^CIc=%s6YgNE z(MnAW7d5fW!3Edi%3fA$`!YJ`<2X?#547TQHOaLzcTp3|99(d_=N@FKO_$NGr#iIa z7$46+PN|8}E^1<#g9|Ra#t}C7R1l5d6(@c#0}9SiYGSykiDeEhxQW${vX7C==;-l9 z#ecw%{EL;E7%pmJnS%>%+GED}7)HABNO$25DzH?kiQ%FqmN~fK`cF=01s8-+($QDA z{jI{4npn8JCYCw4;C^MEV9&>e(cF)*!W~#>ol+CSMNKSoaKV+ke2P{7y@JN(9uaOo zn~h3MEVh@|p)v;-+@oh__rwK6 zT2FHj^|Z{v1y^?cMOL=hChFOrk9XwD+{zwSYGUjc)WkA}Ho#S|&tmKMZ>7_wRTXZh zGW(R87%pmJnS%?iX4GZ&+i^RMd2OEioysODH8EVyb&egbeg>5O7K(Ei|_i%h+ z`?C9$npm{UYhsy$3oieJYb^hiJ#@cK2jQZwm1|%&5UeTiPu4&14f%}MYSdt zZiQrp6E5fOY`n#8y-1@6AM$4yd|}5b$Cdh5Y%i~WWezU5A)9Wqp~FwoxWn^=+o|d) zwNA$N@;bR%Vh+ofkU_6`n$M@*oX;sP)(2PS&=+t|{O+)U3op8#dhyG#;vRF{E^EX3)@AmpY^3fM`B*GFXg|V8teM5%16r*w>;6{UE1xXm zsXR~StK;>XzcFlDC+aaeh(KPFE6DT{ zJs6G$#;9knZA6#!SV{W-JB;BR4B#2X)OnYfy`HKM>rqdPx9FN!!U#P*EcHlwmNtF^ zf7gR^6Zki@itkCF**7j}mwcZRw1Gai-Lr#cIp5U=R?jQ?H`_AY*c=g015RAg3Y~r^ zo-NMi-(Qe9xZtK<*h=TKr&@Ml3(>~-d=bXlE#>vGmD-RlFMY*tV+a3kr1Bj~-WPm_ zQs%I2;D#S_)L+f4NcwO6EWY8kjekQ+{$3@v1K**PIk@05bXPj*aVT-0YmVhy%J)^_ zy>4_%({Msx+KGLIIGPZ^l+?%j z7bhw0nuy~OTOdOHE*=N*T|AkC3ocLB5_(SevgB@oS;CF8TBUwBjf41Zn#{okHz}l; zeyLko5^QVE`?0RTYW2Hm9K?6iWDYL4HZ_at#;9s!^QsilZcKp~_4^+j#P>gB4lX#y zczgZdx^>8(1v$c9V->4@|AT}0{)f!L1-ELUonGX-Ml3sgGhLhQ>URb>i0=%@oNzgJ zzjqP6=&^3Z%fFB~=CQWB)Op@Hh0?^zpELxosB2iJ6Q3(ftq*mYU2DwE+D&nb-d=Br*LQk+~8%2?8_}5ZC_FIySYnv z4x;1?9Q-c_7hLiD``D}yAFckiJfdBUS5dMD4kCMyIk@1C&O6B3boSBC4}F-5{$ZXN zC41l?YI~W33(n=mVYdC3p{=QqCS0sf$sRa}>_O)Kuibb3j7 zJV!<$b8x}^@JnMg8U$(wH_s6+@=hgt;2^RGnS%@N?v>+g^PXke+&oQ%iwr=?9yo~X zLFV9s8~gGU>o9PYR_Np_ab5fWWe*%g&LDGe!5wLGmVFP5(k9>SCR~i?SF(ryxiSYA zTv&DbGYn6XTYH)~-}1-$@&DQjZ1m?U zq#OUhGq^(iCh~73Utrza)+CM%W{B&g)qoYo*TS|sAA>?z(bB@*RAiU>T?H=Vy9zRg z^?|eQ%-G$l`RVW9-^9M^k(*-JmOIS+vK;7_4I9MsvUwx#=@;qXPnVGbvrw_J%~n?dLZik9)-s#xd7TlF0kA_ zj&-7z(rOdb8x|BEjqv^v!%4pj*}uk7@lvgk`=&3Rv>e5!R?=Sh?NNq zqWcF|5;bxE0({(|oGEY@S%J*K1$TK)GMh7O8ND~d({u|4DOmy9MOGkl!sT4+-$&VX zt6+M_CRn(G3$9YK0=UQuWDYL4jYZSgu%)5&L+5S69bg@+WCd`M704W1a8XUtS;)n3 z%9f@Jx1aTYG6n7;E08(3;Ffng!QPSxdM`9bxPAE;7C9?GyT}S;4lX#Y-YGV>ub-yjUeR=aFHL#oNzhU=WGTW{&_9^ z99LAF=K~z}s`&wTksrt$TySOUW-^Dk4RqDP^1|&>=Ae=vpk3q#G6xsjjt!+u8A;k{_U5Dv_iA=maj`zQGKc-qd<{Qf(y>)x52 zCw8x$*%`LRewCT+^iX}KKv_If820WO&*}7x+vGPek8vA4a&V@rg%SGM0%)F}969bcRf%H}q$BI+1lIK`NgErN%) z3TL&i&^Rn*XBF6G(7UF*@Y8VS8AEeosBnD2MB{?h$uyo(U(Zp5+={sRolhCvV&eIu zq22XgJNJv@wVwIdcptEdd$e)Z&xF$c3j}uXd1X8r-j{ux?4w`VVP2E*{2(LGFt&E6 zuiiVgfw(91_+vaC=Z5ik`S}Lw#q*7@5fQ9YY!I#W+(n$*^qhW%ztthOyh)Z;#x8^- z8=QND(T*QrgZ7=*Ms*DpTmY5H`xIe93cQ~{9`9`zV=-m^_dRVPBYIp9*Ec3JL zPht*>^YG1^U{q`w#O_|stuIYA*P!z$azJ%X3d1>{H1KD(!=GuDKJ64)H*)q`t|81` zf2F;+zDv~Mo^zGTQ5Ib1h#=Z?@|iYbe!R#!(mnOVC1Gr3=et^k?At^Zb0Iof<+m`0 z8T!ts8lo(waFVj;75W}~S;-vE7hK5gyp{&fm+3wOn~7|E(H-g@3It*g1(`z@oYFoj zL;LPtqTj{#2io}#8$_Fz((|U;wdgvw{E4=*wmFy6nH(%L#m187zNh}UWqVO?QpqHB z{{^Z9`!C2G>IK)?HIF6nRG?n|bsv%4PtR?Yb>j)dy74lHEVzsv>uG+?5A8%nbDqpX zdbZT%`6_0N`Ksm0px-5dPTA+G=RsMV$J6?`Eq80I(%1JGDe661WxKjYH)XL#_mU6W zS*|`|dhXZe`2JwJrzuo>7hCkVzy3Je81b9wP{h}0l)jZ&Jqg#_jHY=|l%1BtL#YF8 zMjchGH}HpJS7&3?I!e`)EY&CB{Je$!YN zLUwFq;m$ILEVwo`68W`!?wb4SnqbtT_*W_qJm{k}Dm6!BG3P{aX9D5Q zGKVa zaj&!dRPpy(YgcoQa7WtbV)?g={OcDheNYj4*Ox$6i?-sE%1{T&uohmA-J2|huFMy| z1;<*|jkNd>nzO#i65>CXqYme)b&cxh4gGHQSWA)elf>`Rt$br+dT1_7RF!r5!R#}{ z|Hj4ITh#UWDU9{`4{cnP7F6?=w)m_$z961&=zeMOOV4Rf8q-(@akF!HE5}2HoC4D*7*g<_g*T z+Q9o(@nkN(CB*lyQKcD*>mm!+U6m0_YnOYmSC*aP`_iqTgVFqR9KU_oiw&-}U%359 z>jjGIA`91*IrJ&G&Xc$C6z;{ePtAnG+FQ?3To+lmuFN3|ZgrtV{-CE9^E~ueWJl*( zsJJe&a9x>07F>%iyYQTl1&6mVUDDc6To+lmuFN4jjJQ4LlX;WjK5X~gSt2_!cc|jJ zB1^6tUTH7CJ!=K4)HOu(^B8)jDrZF>P*&!s+HBw|&PwIhZvHISq3t3&!e*V~#Ha&K zEOW?$JL`XdmpK;5Jii?m?HisqTJc(B;k7b{wt)K)&3W|>A?%FReUY`#w^{L8WZ|_k zhb*|o^D_9IMqzA4ByL&DLws~;F5+0a7nQR(9(Ql;$imNMheZ|+D|5(#i@$uD zzj91s$43k`>n)q2I4rVoSeX;`68E*qS#H%jnFVz;pE35Tkfu1SXfrvi%pnVI<=At) zfA4*)#*Ue0n=5B14lC*nZ0*yk*V6gIYh_MkiJRN+B5!i(D0`pHLuC8bJ+F8z>V?heZ|+D|5(#D-nN**MEDSJ-_EKvIAS)R$Uiaa$T827Tmy_m-vZX zS6RD^V3D@Ib^{-w7JZWSlwjHW}DY2yN-_(*F_etD|4dF#N8=)nGf~6 z&(@VT9d=+2Fb|XO<-!w@z;0$%lhk(Qn1YwRTL=Jw~T5UD=YWhW_r{X>sk2^!?Y^ zyDf)a`+Z;CcEMv&=4JQEz&pb&&rZ|_J3JQI70y4^`K(k4=Ck&{F@{~B_k#E2H^)w} zzj$c#DAuWXh<@=`Q*m#xfShhqL{&?*5=Zsf7uty9tt)rjxbq=}rOndx>gU^udbI{e z3@`VcY;~b-`mjl~wgc7CuE}X5Pp)KEp^B?+IN6E5YEgN!@$OP0dlc-Wf1lA;a2?Ag z8V$={?LNzsZePOpK;7i&$>hV%1|9u z!Y`;}?^K3y>~6GXSC5fR^*bJ4#5JIG?NnokpC5ZYxV>)JzY^Id_4gPbN?v6b9KUG3 z{YHrMz&m>%nq6V(uRdr?Cel0ebUfVOPdJ{$+`7!xZG$_D^T3*Ravu}B}=!OL=tPh{Q~Li7UV&AB)OY@F$xhB#K`!8-l&GV`5=IW$IpCD(M;$~RoM%r(m} zr+iwMg)IJJn4Xp8Bf3U+lu4%*k?egB3ZwrPZo0-C>U`9KEv-csb0%`WUdIQG^VTYN zGQVq%*%v8g=u?z=ZiuF5n=abJj+Hsug0&ZA4@FzxmokSexSC}*@}KKmw9&5%iY&$; z6~819ekpUvf_pu5GapvKTN@eoUEGUeZnEN+1i~+64q0$DthVwmWnHw)!q-LCpgvIi zl0f*S%pnV|skWV`FZ0rNRN4Ex-aq`3K=`H1ne{pwn-h}w$NFBH)je|^P4vCumjvQ7 zk~w6-U8$DLcbxasY6h5lxEWN3;+F)%FJ%r{a90-W<+edSS}*VFqRme9`6_-%ApBD1 zkOkMzdp{rEDO8&qbNsjasUC{Y7k(*o|7Fi#;e57ZxHjlRZjoI~oZ^=R!Y^eGS#UR> z9poLJL~Czi-w1D9O1}@qFMnrc4q0$n-wyM4wc<4|zF&AF#!VH!BoKZnbI5`ldHWdm z+PhC1*07vTMcJlUg{Xc>ApBD1kOeoi^hy4Bzzwb4mwqDKvlOi>BzY+M3Vtbb$bwsV z_yTX3HKx_-!DDpJ&bdU3|GIv?pBcfY zEc}!+XUo5t&(iFAK3D(msSf<#yW~tw>)-gkww}|qk?O!_uB^dH9R5pIN9IXCP?=dq zhnvr!DhFLOisiLQ@0;+KB`RT@$W~u-NqI+%qT(H~xhpo(I&Gee_F72Axed*|NO3yU z3#YrkVm)7Kc(4%qE}m@2!yMu|^QY$_3(u1|WWhzO-Og*qd$PCd%{|h_Sa~R(hb%l#=8y$fr+N|( z7~stw^j>B<4*8qxbfOQaOy-bV^Bs9J1g%4=3}b zPJYb0V~WU*p?#4R_oFP_Pv%6MiK}~m55ILHfL(VuFS4WaZdBY4ZHD{RPua(7@nH5W z=Tq?=A5mb7lEv|ml{t#i7~~e?OvrxTa^*@k;Z8PjJsL@Kc4S9H9dJaMLl)e-#c6zO zpH(cme*uxTFSJu}MA4_@h%$#PxJQpU-}7=Ui&|*TQy5lQ^+9CegEEIKxX5Q2Ji#rJ zwdiC%GapK2iZ>DnZ14(IkcIon9J1hcI3DM1D_mj$aNSr;|MoS$LkzAq%c)`E$I}rW>q*jX8d4 zOO7aeo@g_9naqjvCGPuxb3AY4J@)9-TG8hIR3>{KvhX~aLl)fiVdr>M<)S*lm&M3%TT-*Y^?{A(7{I!0vsb$np#Xm^<(D)ENhpJTq~+ONX{<#^(J>3H!@ z&-jn%hWhdGW~rR7K|1=c&6+aC;#?b8zW_h|t49ZM?>!+` zkddqS8aDBI2(5$Gf`glp!^`M(w~D2kr>9gyx>h(7hHbHn)IQN>bx_fx%WDJr8nTxrkt zQ-7Cb#h?DvVs;!CS@&G)jmA9+v&iS)w6|%;MAn1e4?Q#F04qG=q4wr;Il(QZ`?c?_ z_AtLrPqgM9WyJBYX1d~e)GzS7@c7-#B_O-r$A;#dP`%^w#TyUpyRh-qm*{uH9Yr6^ zuYb!Zw~w*Ztd)BHr}m=EiRNr)FGlNh7CWzPeOz7KPmZFs#}Z2TvDss8Y8~5L5ceg6 z^0*iW?|HFf^}lH&w#A9}_}Uj)u4JiNnlI&KELarF;;&rQO8lOWIV#UMqnz7%mU{D) z7VNNEd|$@rnrgWAj$oUTpK6ceV#H_JwZvd$-6$Ln>qfn-|L=j_3$y+=58g4mpD}e~ zjkMD*Z)xQn>HAFJQYy0qrL)0jZ)s&`u9WyWvTm;=Iz9Rhv3i z|9tF}_}n&meKFQ9=)yiW>aG{fIwRV$VfI(!!_0Loy4)IlTZIXtE$-wl^0NmzHJVS8 zXv}T-km*ay=%o(S7X8w#T(a@~*Bxdzu(p1wnJ)UJXT>z-833|)29Wlx8PjXWY4(rS ziqCR6eP7nLy~pwvv(`6tnJj)s!%C+cBj(&?|JMDg6}?egw8bmCyK(zY7PE_crF}nI zOSBnf9$Q2Bhu&*6y;DbyzBh8rGG6~&#jmdn)6!pc;^=2LD|_Q*zEwQZez`__F^YPZ zktfSpv=3RC!|}i+d93B(3zlm&?^O_4CvsTX#Zd>mTjr1jcj8ziZ#vjRtMFF=k;Qyq z#k&cFcgq~I;Mk%KJnFE~!O zyj$jw1y{K07Jk&%U3)Zmm&iK(>D>gvyJZepaDT1b#%cXE&AU#J$YNbJ#k)nl&I*St zxQ-`xaEEYTt+0dr@2sop-2}qBWzNjH8tv=v;{6-?X&LP-c2C9Tjr1jS7l)e z_X!TvD&E~KoET%higyzT@0Pj$>dl_9kDddE&{7 z?OswP@gL?uo~(E`f$(mbLlzu+md+!LOYr9GON0jh9Y_x9F!_u`+@7KL{A=a#qt3J5nSn+>~-^|3R9V~^;|In|u`$uqxORqDo6>eww_vLdv z|HH$A%P6r*;ZQHQ$>9f3|-8&Y%lhy*EY`?CLjU~|${CF)l*1m3M;qlGN2Pqy84jx}>e}VK* zHeZ-$oaq%6y6-n!%I8n7dH)S7aHy9!UX7MJji?II{Kai|TCdY0p8E{Rz1;Y|B8J!c z$DP&d8!fK26LbFYT!89;@5>z83~tQ7n|QHH?kvE&xcEHASuIg~AMJzh%N(-cc7E8x zt8MgPkNs>#c7m0+;`_+L_hk-QaQl~U@ae6+4qqZ&jlVN^1Am{u-fAei0{TIn`kAA;~^U^aTKLzP|?Pe?>qU#J^^go zoWDhOjLin+xqvt~dM+Sy$b#!vE}5^}7{sc^oA&}E^KDX|0U(QK05XRxxCft8cqTc; zn4?zW{$NPq9jfmW2;ZMNX)ka5Hk|$VP)PjVMit(vWN~iD${gwd=hq>XzkfjMi8eOJ zc19OURG$kFi01+_hb*|vA_w^7a}g}pEc0GqT!9_xa{&VJTtMcK1sAY6jTdaXp4sMU zF4{b>_-^&N0D*WeAalrqtI#@~_n`MOD+F0Yzu1;g-5z}kx9_tngWoP2$7=B&zw1a= zvUIp?$jY2qN3s#r`4BI*bSt~ueUQiwD4DE00}yr4GXR-G7F@yfOdkDfJKHwbd?whx zOseAX$im}g4s8Kfuk;b_e_|&~vYjr@Z2;{nBYQlu@OYU+7TjRkt2^UG3QO9sP-N{Y zA5)wiSvb4QAq%eMU&naTG&kAA zEZkn^kOdbNaFX9`_k>L;Lw-($w&d}$+lwrf$sDra6yK*Xu5YPd!}!@F$5@#s=D43@ z(+5Vy=|TM7!s9H|+k76eyv1W>JQVd}Jk(>}6+ZK@t^RCC4RK8_6?xF8ddG_oC69=i zzeW7sCU<&i^sMAae!WtEU!LZaQyA-(^=iI~Ia!D5<6hFcuXMcWR?`iyF5&FC-D=(H zUJY^Wo=ey1S&=m@vzPkm9jcxY|JgeVtWsPYS-5zivDGX`%Dd@}d(g97Don_~*7)_P zip6K)6}|Ec)6auz(0XpNJ5v_!toWd4-x9+~y@{8bC7P*0r4ggntkj>vWv#}?Vx znL$5ATMp1ZGZ4e3qL=dr2N@rd!4w z{h;e_vWtF6ExB3YkOddrlv(2X=V4ac&1V1ytI&FpssDd3CY&$!i;+2G!A&fxTYP60 zV5^JP5$BOnBTZdvoItEKE_29&+t^C8v~E(IWtD6pvis{CQ`apc5bKuhI!oWjfv2>7 zZ9LK_O7jy}7*5acv#f8IwYTF|q~UlAX&(2Bn~&M~h&$TRCOgGFR|xGt({9sCRzCc# zws}#K$ol1&Z|wZoi-lxM)<${bzyPNJe)&y;wl;8(_?}K{RYu`ZFSx!*!Ti-oSFOx~1|nStt4( zDeg=l?!9FWS#XnwNAUJ<95knsZ^h@~Ligi}I}-?ZmN{g>{R)fbJs-GeJOBP~Z*3RV zoe6|H%N(*x$Q%3S+Q>^qxoD~G+eN(wIilju1j3zV4q0$r*=Bw#hqtE1_=zmWgcWxt z5bi8<$b!4DJ)S4Ud1*cm2Z<~^S$1rEMktdxWKmY{W&&S-AV3@GWzG#Pi{}&9D6K;+ zqrswCG(#T?(=Row|tsjlDGv8!_7x_)fPL`m$|%1=oDo zE#r#A7M_^1mL67lzxdDT((aZ~b#6<`lc)^6L++d6d%%lLHr#i$vV8S8q;IwI6@JN! zO;?-~^};!8Wz1&NoPzWmu7}0{pKJETMq-Zq>~m!|-Jb0e=ZoL!{(X7axEF4^M-^HZ zk~4#Vy^kXK(o1gao&y)Ii?MRqYr(;5b0@9ky=Jn zd7O=GgE#Q7Gj8nDvTDK`@vK?)T4dq1>x;*72OAGsm&tstGTzEZ$)bJ8${gwdr(fO7 zC()StoQnRUPe)q^EB=c*;J-45EI68z!8ecaX2o}#dru9g`NfLs5(r-T#%s4+ciCFaOpR z*@^kLt4>THoLJ_N1?T&7FTdD4nk_%jN@PbA+MzlzfpB7(Ll)fIwW&O8aSR(bwxjsX z3@-ME{}Kp?l{t!L1DCJB0sf)nX4ZF+Ii_SwdzmV(OWA?NlNAnGaH;N`XLpZhb*h{5 zmF=iZab3#7b!84&a1n*l`O5;^*^x>U%r=+iitFMtg6n3q%iuN3?__U0XNi6pR6bM5 ziu0hX%uzHOIJ?>T0@FGOSqHM^mB zEwb=hnL`$wTjUWQv*0r8{3cvv`)hX;uSFJKD|5(#3*LEz-%0(4UGz7v3%xtuSG*Qk zc&*GK3-0~NBfQ(sJItf4IX>O1%OCzrS$M6?Aq(#Oo+CW?)MJ+TfaZ8n;egJM6t6|S z@LHKe7M%TqBfQZ0muz$xJ*TF^!5tnO1rMC$ujjmC`Ce`m*C>q9%N(-cR((3cpI7?8 znzp8QOQ~>3=ch^*9J15wbEhwwbcUVS-aHLuO{$JC0^021A(`Rq?d1ESY*IcuBX{y1 zJ}NSj?JJds<9PNJS{e`cJkhJUdFtAMV}ir`N3An%upeJeY2OB?h%z6#cDq;4V)@w_ zZAhzI;(F;z&(VEAdDn)qbwN`aKX=!s9Hr;V1Y-T?Gf7L?Ep4T~aklx+nLFLH)=hZKMvuv^SNl|l zBfBH-B4cpqJ+|R_4t-Vs`oi;kX6D);ur18?72<7^@pTU@zQr(0=Nr zMb?|f8*hxgMf-z&&}Q!{Ek5(rITssc=9ROYUQ%A)llPvuf8LbaO)ij{j{toH-3K|6dx0-ZqAQ z8OAfaOkp(w>0Js6S6XqwD6!3(C$8|*>K)QWo0rggy-wjiym6O}T1ih^alRhqnkpRX z1$S+Y9}gO9XvOo?6IqP0$exTk;J-45EVz2bgSgKkLtB?#Mr4=McUs%#zcc4(Gp~dT8|{%zc|N_OAFZf$(3MLl)eg#cO%) z=gYN!vYi&c1(YfNOCbDL=KjlW+8xP{jq}h3=h-T5{QvhY>Ke+h*D${e!bwhoWwV`i+-uKnFtWYIpwe+m4PLl&G%wk^CIch}|>vJu&3 zfBG+h@L!oj7Tm!y+j!)X0IkHmAo1IGpmUQw8Q%@~ugoC}uJPC%ygLup68fA?r6S_~ z@LvMqzcPm`II9Ia`SRxLw34?bh~JhIl_~y9ApBS6kOkN4P%@9N7o}z2{8?lj|MXu1 z;lDD6EI79-dwHV)aav8^wmRB8{|`^b`NDr?4q0%D>rx?H_rl;nUbbJXCHA@|`o8u3 z^+vS~tN6A@F_wQG%of*x+F6T?tQ)I%;t3ZvA-lPDR*wQssvptu;75ngl(BqXP+7-b zg=pXUJgd~T{)od`e=>*mfonIVw8bmBu0Cb%9FdK+S*@=1M z^of5ZeDy~cwmadGaKs_G7btyzenuahN$}#?k-6Ly zZ$!QDMwvqvoagjtJ|%}c%epmFWQWt*Pl{hs7Jeyn$byS#7{d=(JXrU2E6sXyhp2u@ zS@@;QiF%2%c8=xtgS=SpMoGWjZ@uD|XfynB@W{4OU=TYQpau&xMm3O_u zQ8XL4DRZ}Qy97TLUFLzvPRP4S@lezO50yD&!Ob4NmFMUl$dEKKAtGFG!1!>azylB-D$i#EeeWzNj*HcnL8$veDQ$I6y!D6-@7C#Y^pAly{u zkOeoa&Tc;6DT=*%YVM&rw!n7PO$mgX${e!b#vDxM4i`7D6>eQby`ziJd#;khqRntq znL`%b;|hEDmJ*v-$teRwb~v4z?54=VO=S*QaMj+^ns$q}uxWcnir?GdlBtScA`8D9 z+ANhPPfuX^Et5qZL&~HpSvp)cWMvL@fcs~~e*U;+5;@pBGh6PE;+&#=li9vX$5g*W`^Yb4PPB!%+7kT`U&@>~U*hVV%HV^~ zTw)HZ%`wt}G!85KCF+G=${e!bD(5@M@9w$Iy3LFb_4a9ZPw`7+;g>RpEVu@>4)SYn zZ?nBs%`wtmT~)tC7Jeyn$b#$tA%pLI^oWh{BS)k{yjLXqC9?3#Uo{T$MMb}|sF3aA zo_cKeSBgu5gG*K`IfngwAF7XD(uJcAtm))o_msW(x<;>k)m*2Dk9=YT99fuVb?l)Q z^fp?2pD{n|jBS8}ki`BX_u_reYJ4R2P9bK8Y^#c5O%{aS(j zA{%S7R$W_|K&&k+bI5}0c(j7xzKD7w=^Y|vU1G{&UE*^Mud-X)4r+TH z%y&24>9g!#^rBcB^JBd<@qNMG%kuHiJ{+%Zt0ESMv4iyOZ*9bPGCW^`x_&Y0p!JJo z4q0&XCK$YI(@3p$Y9I0W&Y^K##Y2gMhqgL2mgmngoIRQ7$#A~qBTg8O$KCjr>#kan zZGVaH+A@0PAs>&TwEyaSg+smIf-PP=q_mr6JH+&OS2|zWbx{W#R_2feS2E3)uV~<= zz4=y3)C(6<9F{;htjr+`Zo-@Z9{ku*`(|w|vTpDm$#qdL99HI#1y?08m{3nps-ESmKZcN9$bigc&~C;WH;h7Gs8r!x9Kzl{sX=l^(U4cd729S%Nl; zEZ%`u9QJos=8y$hFLSOVd&GKVa<;(9b+z06xnYS~59i}jEd zhb0hhDs#w!n=vnjuelJQ?ObQ|`+S`h*F|69^N=}YU8!FGoSXUXW4>DRFH3}*V!pEC zumr+kWzMYE#kkrpp2rss(7IZU6MH9Nj8t)00^zVShb%Z_0h|!r2Jsrwb2T3yvC8Yj41sWuV7U{Ps#EZ$E!8rs*$&TVawQvsrscRrNr^p6`*~g zr1jR(e^^Id=FnzvL3IjQmSil|uccNO*$u_^sOvfth;^N14q0#q|0-x{QNTy{?$ktN zx6=Ktvc@2RSYz-?`--fZOOPHvZi4uqTt@p8c8|zlmx_$A*bN8}*^P;>jf>e&u*EBf zTGmhY7xyJ=65km+-yWyQMMT%`J8=?B$1!qF+Ym@>JXu9NbiP zY_u7UEoafs$j->IjyDW)WkK}~al9e9JrrNX@!+d6hb*|ZzLETU8+SG-Z-mH>%(F)E zRnZpm)rae%dBOdj?B0+);=4B9CPvBPc*x2e+6>M}-oUG9K5U!c1(6+1>*UK0i#p)2 zGKVa z9or|44-O4xEvlQ(LExr$K5pSI4^}egon^%F;GBxXQua>{Z2@N;xs|6BqJ4~)neXe` z7v8NpEP;P=$byS*mB8N(U&n?vHovFi$Qu=h6Klc&v%Wg-0sitOkjDXPN~2#1w9 zWWgm?*v$){h+}pS?9FWPRMlY#gu}|5$PzcoNak;sZDY^xP7~Q-We+O8iq99mDs#w! zdslN0cXLZ*jqWTE+2Q35t6obWyjJFr1y|3i0sHpr&O;+mb_NxkOlYd z(q2Bb`9Aiuj=T8Z7+LF*;-+Xb+*IZ$nhjjxuzh@SbXym0Qs)1aeZw1yn<5K0l{t|muJE~3{yg9~+dVH>w0U&nn~Ix?ddV+k4q0%M zNABlE?w?^5PMdRjM^TyVrs8}lD|5(#%l&#kPicIKHLquma}IBQTX9ol;ifW&EVvup z5AbUrt}!2Gj&s^-cNI597H%qY$byqS6dXL%$TxsbTAfQDv~H*PZx79%q`E0_aMS8e zW%Z~wzIwT|se;4a!F?{zyK6^E2T(U+;HFkN=3jLXb`3?;36AP3n#4Hb2>E9NZ z*F1yfkhY#=#U{N8*K>xN-yttLw|cQrthUQ4T5popZ=yPuQQ4@T(QNg;4DIJ7caA`Mdu- z)NwyLAjbXV>pA)b*K?o8`7Ktbg7i>#i#T3VnZ4>-zyx9~V3|V}T>H2AEFjfzJW^KS_eTC1}5qOYd3DQ$eNGK;_HwO;!;ew5&5)TpgwaXe(FJY2?0 zxq52TU$qw8GV&wY)zJ5FHJL*e+|ySsyzF65EhDU!$U4*bo9uq(=etnhkOlWO!h?5f z?o97rmJnIEf#P%o!s%oVS#Sxrym_aap4z34RwC;{_w9<)5eSEnIb^{V9^uEQCwppv zy&k7gk?dr5B8zc9#pwuy)5#pN;DU37@*@xYv<=la ziY&(86sIE)PA7B7g8Sqc&KrdLX|G;6i|kVBKgHb^mf!U* zQ=N`LoSV#<^)53W4TcDRr+3zj0rMq{iZE4bO zfcOp8-cZ-5*(O_h?3DVJDO-Ap|Die&wduXZZ~V@u+LoCuhKsU>8*3OPeVV87Yu~g1 zHIFcAityiTt$L;v{gP9!7J1sdXQ21^7FQXWcI&TS8qJ>+|LuCwJK10K>D;{qjhA~i@m)@YN-9CF7XOdk5=L?}UbJ~k{%wkDAPZlR zIb^|=x7o(0_^oF<&h--65k+^a4)HrHbI5|5uqA;zo!ZDMFC8MX_H@s$I0S)k2$@3` zT-skd_{`>UY+ttVB0IYHe$^oeghR+2vf#>YOynn?(tC#QXNv5|GKW-$K$aXr=8y#! ze<_Lg|GI-!AHCSjmOrLC1c7h}nG;#!EI)Vhnq_yh%qz|!JF4<&)gcIkL&zMm;Bvm$ z#jW@5Wj|M$b0F>OTva?k{1(UqWR9ZQz?E{@&268ju?4xzIgn!-WGNmXz8mBLGKVa< z?v0aq@jRIvGOJy2Q=7D{Wv&Co3Ign#%KSS9Akc9`x9J1hw z_D$hsW6rSCHO)18P_OI($if3;?!S6NKc(=Q2QRY5ZtKkdmnMJs0{WReK<1DgO`Lqs zk2-MAfA7gKUX#`WZdZDh_}sd8x@R1zG?0H=l)$DfGuI!o^txk=YB+##!DZyuVNbNHR#@Z zV2h}?V`)31Z=xr&wFKy8{z?&jFxGmKal_4()pzyL9XbSvvLSgVDp}Nl?BEWbEPl*# zz2p=ZalF4O4l?Wlm$R-_y!FSw28yg*zKMosaaZ=@_5$7JTT8(;sXoNGadjV0>Au$T z?AhNO$9vIvj1l*654ZeUYnip@GDn-=+fFd*)Htkv*y5_!8TC-iYr)u9{(v;S;T$(T zuy_%%rj9}97W1$$t1-e$&rC6&@!&o&Y++vZ^PRU|w;Z_(9S?iZuIyyZCQk9xkG-uX zJ~wA7yE&$kWmH;O=5HAzxXHsm8woc(n00iJ?!0KMXv^$;JB%Z?w^@Vpue8x&B}LYQ z<}E3Eyiz3weQtA`e&rK49*G(Ri|_cjp&#izn>D=tmCpK!iU&m>Od0&i2>oX*_c*y+|73qiobQAM-we;M9r(d* zh4tyV&GmDv7Y{RX-DKRR%yI3|r?sNq@-4<2#~nKHdzPD;vn5p2TcpbbBQ&dM`n7!B zEo?+nal9JM5{!P?=sj@jH(K26PNFSsOHVLT51il~+Z53sWb_nVp{~=7>Ul@tp<-C`n(v18f&P%r9`Ib^|AJnF`2uU@UAUylFPt2iBj_+OK`|LQH>&WooVchkI` z?uq{6wPI30mFp3ET&ZqiGC{@}fjwtH~Y@Bd;K z)#(U?)5#pN7?0X9GMM+;cz2uf4TG%kKSlHP!v_8U4v2i{tUwb^PDmKH80l79xxBD8=bSy@tXe z3vT&=C>}XFR110+B3upgI~AuR5Kbp^$b##s$M6?Tg0xBXb_iEPzsT-~HskY^Ib^}b zdTioLnuKZ%E|k%!NVG+9Is)NzGKVbM%)+&ZK`G@orEJ3EJu>U0Fc>0}OBa6_l;L$AIhJO4z#pxS||>W}>T)W?N zrg8S5iM-i#f6Ljjnz(K~*X9{nO$PE6#VYA7I-7HG)|5YK>|HdH`+omd^U%y^w87Tv zjT?oI^EEGf=s7xTqAfOy`zzM~^dGJP$=;1D(_Ct^A;IQ-*qUB%4A=fmEH7f)Fw2VB zqF=(sel>0%YG|qD-i8(GJV*3_%gi6fjgQvplj^x!Y-}%!I!2~HF{XOuO^>tnu$=qn zjM=9L?-;w|ZPGu5xmjxZUJ}`U{64KEl{-Bt<28FN|Y^Z8)w`~D9@iJU)SyySS-r$Tdmlq zGXKyoORH95qBtIYgI72DGTMJjAN(?}DC=Khm$5NhjdX|e{+1jCYKl5?PIfb*j#W>0 zxae=$JhZVmUd{#K#^e4q(hG+KTE_gUA+kA*Fe7GI^>oh?ftI^y4Y)xD~CH~I?REpvnku5{QAers+Tvzu?u4ISCw zy5il)!nB|fj z6&#{JT>Da7qp%L{y#0&V`g%e7V{db80^XR**OhgjxKf{TyfnvoxDa>l>QdIGR+xUS zX*p2`vdZy9Tb3I0ojjRW_f`7AgnA+iXYcUbndRQIQs19!z7yw0_kXhgq7L|PR^~F6 zzI3kss^cxOhC!ohbp2@Jz*f!h)bq73DB9eQ_DxGZx{9?NvPz$Gf1&78SL#2Sf3NS~ zMvZKEkG^ar2J-1J2!mriarftfRfjKqxmt5>A1}C(c_tZ|6C3k+&Zo51 zml8x@Rc;m9uFLj zCvzwR_xx~Yu5DbU9ed{?vV96nQv4Sj{8#2s2JS<8Fa98EwdOl*smPADp01REL)ph} zw!Cwl^;(^zX@Z-TW07$#ayWOq<)`iJIz)W`=F>Q$%pv*e%YkUbf{EqJobAq#Hczf*XvCSKb5zs)^G@y@91-N?eHWe!~@>??%1CIVBERaMk`uL~e)O>vf{%b)o$BcMol`!@2)?vf|SO3Qv|eWZ}v7!^8QP z{xp_)v(#@-c2>L_pYNX>vQG554cxefyKWBDI@muHp1hFCWbZ~6_r)@YEV%k_BKY#G z5Uu8qG~vl`XT_%pM48MXi?SiD*YlXiVcIa~DmoSYU!Nur_vkW*EWG=u*G4|~;A(A4 z%s7!EdSYvS6Lo{X?+GE~Ec;#it2`Ps<##;NCxo=jBJnYAFYH zitHkqbE5b(f$(XWLl)e^j0A4uy<3auY0f8{nA21BX#(NXGKVaen!?7+0nTc8>^-c;%?&tEnaoa_f7W|S*dt3+5%6u z`!S3=ybG}GvL7q1-G@ueSF+%cUD&K6pXnZKSu?tT;11O}XuKbs!9Paa)}}V;ChDD% z(@Aw~%EGZ_4s8ZEHae3#zr3Sm`40JCn`K|c`NCIa4q2SrUk*ok#eZLEj+-WlY~Q>t z#=pBya^Ggw`jLdO;{KpnIR}M97Tm(JCwQG*+4UNg&HEC)xQ}uD$!R|4eo6gx&e&jX)RCj zPH{!`4$01<&6OH>7zfLr;Z5>2&;w$Zi+Xd7@>be{EZSnVtuQ0oQK8veh}aL;}tg=HCuJDOuUwd zx$iXBV?0%UmEyW+A6!@VZhV&TZuveN9PYE{WQ*Y8t-@LDE9N_tvkLs-x|D_M_KuFG z_n9Kt(B54||4pQ_=?)wCtzS{BW1#tbVkxTz)M_}By6*`T${MZM!Ho>EPJ5_OJm2f zuObUyl{t|mZd&K9{BzYq%x`3{$PRDxkK(H$OTH>|$bw7xXDjbN^%!fG878tr8eLa> z6D#sBV`kZy+0!2Ntgwqbh5 z$I0S4SZDWXBWo6|*Icx!KHrgx-)hf%zFY$liMy@M6F?9j`4|&o4lCf+F zf23W@pG} z^ScileJ)%t)=B3m!#!|XoI6W=5~go|!#Mg6Zu+371M|ANK(D;3nefoYl_wdyhfHO? zCwc102fb6p=W9*RcfW<|YumW#wxRVz`ULQf2ABl+U1BDG^!K0b%Bpq*0%?jePoKNpJ_Ncy(6}CD~+fn)cJ~v0>Th-NU`kBAAcb3KC z^B7QItYO{5hefY=tJyoy`n%K#J@UI6HGjFXyXVX4rweq^(dIhUJdCTia`OS*c4|{g z91+Ls)~%cob-EB=S8B6XZ~cCb>|$E4rAM98e0zbF+PL#cf}5Fhw!)#G|KyMb*EOIL zZ(1o(E59dB9M6Hq=oOzP5T5+8U@hLhh_9AwLzJjv2|as|v#0}EnL{1mTG%w?g_f?+ z%H9YQ+2!>4%I=Kwg*(d}vf#4)YR>x|@zYpUb8eI)eP3ixMi!ndbI5}GzM?JP9k5a> znC33(MVai$$ikCl?!W9YmkxY$P?%OIuesk2=4Hs9j4V7^=8y$P3b?HAHC(PT`b#7WZ_$iV-pC+mN{g>o$ff1kE*{yv)*6je_6$` z34~+I+<)20?Pl$~y znf1~dze9a_o0`6wb>kW$>w@Phl8YmY{*yUm!Ckir;6L-ZX-n%I5dVqrWZA{ddYu#w zS#Vn|!MxNMAMN4zd;6(KeAi?bM;7iZbI9U5IpXL_esZISwxpN2m(^k_lU*EHIJV3o z3+`OjDt@Oypw_70Md8kis81EgCJ>G-bI5|*|7I<38MIpK^1QZ=Hsg4TV-pC+mbw4x zb(|f=bCnL$=B3RLSx3q$j!hsOTjr1jm*TO3-)I!2*&H$VSy@EaD8;b}gk#GbvfxUu zisc6@#Ay+0Q+~Jk5631DjxBS@!o~aDjpO}2;^SZl6WHvvRnqj!hsOTjr1j7n5TLkK4LmtLKqVT)SuG_`|0OggX~4v6K7fIIO)M zSdLMY{wJ3!S(G6wbEpH{tKrFfXyy?uc7MJ9Wo5_4cL=kYAAoHGUHvJZqtf+U9!XXRpR66IK zKmM(`#F^u7bLclHJ2u)3$Cf!{!S&63h<_=6O*{H^nrQQQD;LGFk%eQ+9J1g}ZaU1H z&VQjbS>`CtZAfl+#dVQ|>&hHO>77w`qj%OZ-lW49ZNw?lKROigRh^i!aAKK57F_90 zr@7CdhI$)&PjMfXd#In11&3_;>Q?D)V_R8jyjUW*+H0>FOPW^VYo3K$rkpV6D7n_H zYOM7uL1RVXmim_piF+EqD)kNP=nL9Yr*V4qE9U<8Zu5T{kAmYh|3zK(F}9Dz`7Z1B z&e%IBgt_)VpM|5pXL4Y&=%~U7tr5>l`EJ}-{@aZ+^@ALL+>Y_Kg zvF|VR74E&GwB0!Jd<3t1 zJc?~EJV<1x722aZHgRxlnM1wc_GXXbm5Ri$$US33b`l*=acpGCv1JZfaGCT@aC!Sp zY)e0LjmGgM(pASM5RNT#$b#E+em!3|C7$&>zDU$NuIw?@v5_UmmN{g>ea;cX2fA-( z&5JsV?8FMERmUa}jxBS@g8Qq=Mt*_zeA!&XL-gsmsuvVbMxVlyWsaiRzlx?a>fvB@39lSP(1S>})h*UUGL&$hnGHqbh&^Bussc@vEG%lz5;ZsGdri+u#=Kx^zT>Nyv4BlI?}Ld7^lTY3(> zKY2Pk+SgSd_%%{^ZLfUGjN8-4vGx-^b@wxdn8Q3Xhm(yw;>6UEX`mYhqfA^`I zkv4;~rAw}A{MvBQzEL)jM#+AAS?glO^oW9XqEA~?jaR%I{Ri*9<(G>`-H*{+W~GYk z{2cR)Ll)e# zAtiXjY<}84ugxNh{qtmx$N9p~We!qhsnvWp`N7neC?!4(-) zjpwlr)SRqL7sr^P;_L*%*=5emx*8=0)#YRQ2Wh3c`u(ogRdsd(;p{T^Uv^->CcMFt zU~QS7o5$1kOgO(*o7Zn;;*%+X(zHC)PIVz69{LQIb^{_*6PE@jq%dr%5)G} z>^G}8JArU^nL`%b&{#X(%qu|qIj)JwE~h?FoSi`Uk<1|rZupwvyyT4lZA6aBzt8vo zk#*MbRpjp5E-hZ%-Q67)k~z5h;x3EZ;@WoV?k#PhSSeDRqJ^Fmcc-|!EwISq?7q*P z>3)C7zW?TP-IGktoS9rRnT(t6>;%H|R1R4@+n$_lw5T-PpUwF@x6ERGw&v^^S(QT; z+(7>c@;=gq-QVm~L~Z$xvl9qsS2<+C-I({gn3N}s^{8}RX5rYHvuD(+a>#>-vm4`o+F zM#(JvTyu5;QKoXpqRc&;53N-f!t&I&-uc0?ra8N;*VH&-xM!1HAve15wITew!>u!%W z!`W31S#aLNmxz-yB3Sy~xiUMS`cHHAjCxfLS#X!uEfepnMYD$A<7M`D+Med@1j5-> z4q0&R>?_6Oip!bpSgOoU$9^boZ?)M=#-!o@ulA zZPo#HJiT;A)8sUa#oi5rSmos!4EOs&U!wGZ`^1ePar&A<&Xu}HDrg_ee*D@ zyw#BP&Zc8c^Z1Oc${`ERF@CpbD^9c4bGrX8t9d+uXtT=wn=NxcMeK1t%a)uQCbMXZ z>igJVc)ZFX3$9dEyLesg96M2Mn#|6n-(2%}0^#v0hb*{r-_ykSY`58bo2$%DaPrnY zon+(>0W`q=|1nMXj}MiHsGoCjIX#bYR}D397f9LnFnqZ!<(J9=*$uge(KlKOurWz1Z1#Q)udpp2SwoJ^*5w*vPA~t=Xjn3{@uXFPgSoQ zUYpKutJu0%b~3JyA=jl!0&Cwh-3nB-ZLE;Xm>xV_w#B2xOZx7^OXF(b1K#*TysYD7 zr)uV6dPa1st2dwRbW}P!u7i1pT^3I|bhOo+5H0(3L$!-$&J}0HthSwPe!GM)QM3jc#KZAF^ST z?3bQRZkuP`Z7>e(9M7jb7%2C*W5vVfo8dW(QX|7TUo=6MdC)Vo5U0Gxwr7ESozr}| zAM;-3w&B6H1)W?*R~qdjKkjEI67kEQWR4VmusZ%@_TR)*9D5o3l219RFlv z!SBAZjxpsgXj$|DvMPr0;`Gn|K7 zbFpVOe5^S;vT$~lLl#`_o(ZCN`!mMpP-`ystUC0qRn_e&3ujk3WWn`#mLT4{Tr_$W zNRazGo&JNWv!h-(`<40CY~=@uH19X@!4zIqW6aIydADd@7|ev8a>C( zlD0V8SL55Bh4Oc+)Be2q&@ppbwKrdkv^F%KhQf{7T{f4sU&70uaK}5wvJB65cC>xQ z>#pIhzs+j>#{3+%jX$2~#s8dWt*7cs*U(2(f{mVi z-T93un)ga|OsH_ltX3n?aP&xFHNyO59Sfae%;DMnjRp4~vFT?#WF0e#95u6D7;X$& z>cjJ1`c+=1G3Lryv#(KSgEy~~-c_Do7EzlWf+LJxekLEKFRI>@QVH8bJxZyiO@=jS9>w zQ12Vcf))B$ZnJf^x?tr z-jc(3*O>psUd|0&Kd}8U0zWR^b69~6gIb`A8ANmgvEsF-T`(1O%?EmNX1j6lA4q0%W zIt>@)Y6P>SZ-3dTNV>S@_5`91l|vTJ-ucoPvG-IY8?!b&Bl{n>C-A?Vm3220c1#xM z0wdYTKFKnRd#{??6NqC-<&Xt8&3%?wf6trM8fkqq)|1YY>OBDKe6MrJf=l~zf#}~V zh%NqOfUI{e)uFjPfpB}3Ll#`F7pD00b0BNyStw(FU3Ir75N@w>$l~07WRRB#j|*g7 z*veEYqTfTm2Y@!?m{d7r!Bsx%D_mLyviKrQ-n$N@F{bAB1mc>fa>#-!&@fQs_!h|i z9x*~*8$;EH9G2NR)PI`W69~6gIb^|&+p}D}>b;s(S^q$0@vL0E z2Y`Nt+p8S1;PRbWC5mO;#3pZZFsO*y=c~ItfpB}3Ll)e%JBgx2@J==$Bwt3>TX%bz z)j2EcZKl7WZ^*n!WgC7gC$m^jT622>;r1$rEV!@rHj1D71$%R$p3LGs0?qAZ)!jn}FS#XVfwu^7APp}z3ddln~D%0GaK)AiiAq$Sj z?iAbpKF{)q5i*N!S!r&ckySZl!QH#PM~tp=kxk1rU1ss0(cGRuv{~hl1^2Mbele}a zCDvrSDYFZyEt=aC2)9=`WWfd16yofR8|<>TpUh5o^wr&-K)AiiAq%ea>;8EQb|pXO=1Q(s;429zU@4q8uxCE624m)Pb@;Z{HF%4+PtCdRyxT>`HlL zW~qN)WNja0oA{Sq?#I@>&&;o%Z-{E|0&N4E?3aCYaO*>JLP#m2^X>&aVWhjj_NLXi zt$oW1W%!m=#W9g0D*p;&diY?uy|LuZ>T^zTc+TmV9wjcVO)w6pjFrd1_yYU2GW_N! zn=)&$X#aAJ(P*so{`90m2X&7p5FW2`$b##;Iz~*$w840PevzzWV)5g;#}f#TS2<+C z)yNbl-ag!H*pFK8c#bC**F2s;c)ZFX3-0H)II*B#vhiT2pX`Hi~u(*4Hv2G-p3adq!$evT~sT;*iF z#Cc?j7r7!28YOF3|C!m%Uub@gEc{&MkOfzwN4z*Z`na*K{1Umpa~nR<{2W>Mxym66 zF8WHma6Np+I5&N{m92eW^K)e3=PD<&#A(h>9Gv}g*1TzpE_bxuYtTXd=C$hYGHCHJuyK_404L~GV~4>1;v@a4Y^$RgX~LSx6PrMnol=lbxpYZoMk zvF)}#9gKVt-h4~mjgrGPKwE1~_6xo9Q@I9TH^iOq?@&elZkSi_aJIMMTD&XIWzhRp z)V_)h`kTLnIUCpC=HROeoR?fEy(?3%b3SAFtMBZc{kZ%+eCVFStV=D7mOddot;RK( zMc=DyidlW-Z8mFg+-Uac5B9UObw6wtz563fK*|Ij@$i|4Cq7TZHs<SxX4353V19J1ifIb;*XVx!p~1uQ>@H)shb*|VpL2_QMPry- zk0@EM7mYzw-$$F_@hXQbxWpfYMEs;!)+Wq)X8?6*9-om_Ib^||{#a5JNsMEyE_-Cu z>!EvmMposldOgfiuPTTOyO*#>jb_QLKea{kcmm;IDu*mM+_!)BBZ>_yX5G&YpncOk zo8bC3@Oq7JZ<3yv%xO z9J1j0b+*a(VbA|nJELA#-Qx*_$E%!Gud6xD-d;=(3uE72my}r_IyY$^Par&A<&Xu} zb3->V_Edd(L}16-gh|Jf6V+a>&9Pw=Nzm zuH6V@*)E*_Usm&Y0&xygxqq`E^G1oR%fi@K-_0@$hgE$a$1}$ADu*mMzi|^pO5ZRx zs8gWKdei?+^LPT`@hXQbxHHwKi;k;3*rd3wGK={Fs_&y-c)ZFX3ocKsxx#N>D9h`X zTV}ELnC9^W!sAsAS#Y1+Tt(P^KUOI{NcuV6XVN^LK!mt zJPtIEClDU5a>(L%so5n+IP_l1D&=S`v$!T}9#0@VUgeMl*E3U?$P^IH>L+{2>}>iy zG><0`9YgS_(yyo!)!sAsAS#YUgi$%bb#q9N^W3pb%W!F5O zKzO{$Aq#Hd%{UP=AddCA`z)i)zPiT~2#;4eWM|WOWAe^;F=NVlHnD+|K}FKpHIF9{ z9c|3vec$GsIT(`POVo#gH>{Y2YG7IlkegEJ8zRDpBE~Moq zajW5J*5O5OnZ?*b^LPUP%OMLcEoG~ySoj$GdULeQVx2|J;|YYvs~oc6S{zLl(YwyF zGfQX6>>}C^&EpA#$EzH&;KHx$5>KjLVI|hN|1Ya~Jb}1=sNBEVDv$PxkU6(mPSamz z=TrMMk0%fwuX4zOdr#jiNm~7gCH4xJ*=deGy2ld;k5@Tl!96@FL^j(yM(?i3?BHy= z+v7Ka+p8S1;9P$m5YPH$=l923@2~O_YjtNQ5YC>dXsYmVdTDH5vrdjhM|69uWodH` z$R7U9!zeI*8(Uh+nv3Y}G}hc-ZGkc8`zCh(<8nF9_RIX6`F3E8cwS_I;nuC6JjWJo zv)){|a+x?$)yrsAqn#XgHY^ox?w;_&aB1btlkC~$Ik9u;{q#+c??$;1wRw2ECGxpY zvr?e7t#ZhM zJ2QW=$kE`CQQ@KG;tSX-&AX9>cdHz-;P!o8EY2N0ZWMoRx%h$xx_2WB@BZ0^)*hSO zp5NHDOYU3k-|v})e{L5^eg%2h?PPhp7`2XR-Yv7_-FpXoHMad7%1h5!Dzmqm)B1^5 zTiMKOMU6)8*17$74ZGRhY-j8Krm9i71vw(sd$!Rb^WEO{sd>Ko@{*lq$ZWJzfZ2B1 z^wfa|ym(~DD9HuW-0rarTG|q)7c;ihu-Ym#xt z0IGDDXf1?q`>yv=(?&t$EG4$hv1^-;`lw_ z;xh_I8t+p3@PR+43vh#4Jl6aiW$^R61M=|`Z#?*hJx$~>j(In0Zj?*2mF#A_(>g}p z>uX#*!1RwUpVszPH`}mft7V%Tmk2k@-rQ=q-LSK7ah5aTp2CoD2ix0e7iiAivQ*UJ zOXJgdiyhKD@4qt&y|mWzXkxo)maO5JHlg@e;ByHN+cd*ZEa z_Dl!k+0j!cB<j-||?|!!Ki+xk^IQF4gd`8w= z_j3aO%UM}(^Kwrov3A)Kc5-&4%;GrJ{G34exym66?()H$qRzl*wqaC2MppND^p)3t zI4eufE4t+ufz6h&0^h9ryMA>1X?{*1#tbTlEVx{@V&Y)m<*bqW3|TL{R`YXNuZPB2 zSz4R9Wm!SrDPtXrkNjU&^K$~>=PLJamd-1pRlb$%U{Vj6g^O!`P9Vxu4q22PT3uVP zf=k$zcrLT3L-TV2u^%djEVyH<8;RxQB>+zzem=;g#Qx7|nk@eI(9$EOH%2`=Yv-{=#!h2{G`&wXw%;LVD=I0q% zl|vTX!Un@d+NfamevyyNy3&7D^K$~>uquZvxN+`dMS+R58uE&EGV4oyulYHF@N<3&Wi{9NU%di~4;7iNm*tAp6vhc0qV7?wF!_j3Z_=PHLR zxG6K{iS$1=Gp~+W<#X|6d3Wf3P9XeT<&Xt;aPvY@zs)07c3cTL#!Si)ru#X8@N<#<~JH=Nl_%)o>oz`7uaX(h`a{}S#Du*n% zT;YM@n(u5D)5ltWd_cDOx}OsWKUX=PLJaHqAX; z(6{T^m6xYwb}r2s)BK!3__@j<3$E~qDAD3rGz)n4hs@&rH_gupgrBP%vfv)CiV;7r zC$dUAvlvuF?=$)9eoi3#T;-4jm#}Mz*fn`Gs}yJ5Za8+&k@_DkCrv`V2h*}huG2CsR@JiFOXWbLxd z@G^(U?e#Bx#PpA;$}5g@=lPvBqb&(cambdp@<+UCptPg=4FnY#(ux@`sB$ z{Zfs4-!1Q6V0*1OHnMPRl|vTXftO+8$HPNLvPX<;vkUpO>e$G_u~iOPaGH06Bkx`^ zf0THXxXsAF$@*WmwcXObwT12BTU$XlUmM}BOZn`<8)Us{1D=^aeO?%Ud|kq;UE3s& zNip=fd2D^fv^*0B+uVxmkiSQnK1a<*B`c)0m^s+?TZ=uCtI+SXHh-L|kmF9xb*T*F zHT8XG><8X=ZgwlkD4ev7RV`q>W8&vDUYi4s?O_hM`duw#@m;N61uhwVHXLDp)wJ8O zZyxk6XkyUbeWzE1a+eF%aS%rL|2jmB;8|;U^7^f;=foHv%vpQgm{nAtSohq#%kh0QJ1 zdQM!;>y}yL(LdsI`4+YnGstx*T*dc>S+CAdQ6{*lEg*vCYEWVAm^<1UlBfe~NRFM@ z+LrgiPky82Ovfv!6Wffr_>sbFe z?y}xUrx4APQLi^0Ybu8(?%WWi+)DI~metY+_r z4A02=>HaITo*HLm{b-I-Nm1a?Y8Lyco6JVhe@64)jI7Eb3vQ5C1<_|#B7K*K$!s*e z->CU7f$(3ILl#`ZpVh^j9?Mzvc{OAoU8QtQYTBX#Pte{8#0W z1-F0CD6!WufccI8DBaZ4F-rGe0^z?ZC+j6{`ss0E{Fy}7@U|(lt8#DD{a4oOr*X)F zyXi1l+)6mZo=<2gy*9a2s_wr8!hcl`S#TG2O%q#cd}oor6p>@8wl2UE9)dWX^WR1R5imBS*$<<6_vHkRE0w~)@AnoAN0 zmsB}q!Tqr+S|r|2Vt*DXCbL*eS#wDO;gTwcEV!-PV#T@M$?U}IsxpgjY-%n^ARJNU zkOfyGWT|-OaFD&I)>LNUgQ|0)Pv_CPt15>qxaAj@i&DD|vAdBSWEMWCxg>$`Je5Nh z+~>!u#Pp<7%&lktjQyp)Qk)a@!t+!PSzM2Xy-O6mT`#fAMaIc2#v7VT%B;7>Aq(!* z1i;h3dB?*K}svNT5?mpflUj6cdP56Da%#O>lSa(SR;gTwcEV#b+QiN|% zHf|&*$?;nE;(ImELqEgwe*C&m{NZ1R*M7cP)=_`(Z7oZib3j(*PzSi8`*Wv#%JIeU zUEf=d|4Mh-Z?1dU+IBs+vvKi74!OO<<+huS%UjwOGdZ_vG*u!SQR1_0#6dwu~=+%xoR&DFT14F-o0VB>QD>nGEqg zuJdMJXidP$o8|Ql^XAm~&xFZ)zP+wT8x4Oyz$)JHmD@9E{jh$XVTQPs%KqB#C%0#k zOTMccVZ;{P$<8*nyu#aQf@wR+Y29f*{wZ5d*=C%_YiDb2V12WIes5%(G5>V`cmR62k&0Wh89^N1|DB)2xJr+I(h!_-eze0cIlYd%c`ov()7DrtW` z+M5skXF6U zXST|5*cRuh=7jqdZRs@@aPKyCu_&ikGo%n%;!>EWJ_Q)A}!m zEVvDq7TfcD4rhP2waeoG*C@3N9LgLXC)(3X^7^|opvf$WX&+TuYCb7)@ zEhmo79I3lAfoPw~Aq(zI<-hEoT=ufKj+PUz%)V52X9D5QDu*n%W~&@Tk)p?0gE`i- z-fel}b$2EZ?yPdif_qmdn@CDL#};oNDff3DeWOKlX9D5QDu*n%*g|>5_)3S^@2{-& z|5EZr>h3JFej0}?xEl+Ki0kcBS<%au6K{9c9UJ`&cUC!M!R;AdMx+nl%CeWWoOlJT zMWeYhfpBM)Ll)f46O~2JqDgFG5zC1q9NlzxCJ^qda>#=7*iu_8`attpM`y8)4LZg( zcP0?-ta8X=-N77*jYNy$@#F!|<#+@0UsT7&{^Gb-Ib^}@3~wQ`apR84ES|q=!gSN2nDxxUo3gR3&?U8uWrM!hO$)w|H_o!&{%94vPJi)%)9f$q)(!ktyl$}TY3 zieBQo&6mX%X)Lpt1FpFfpA@wLl#`cx{=~r{C*a|s>`g;e_fYAxUR|}3(lYB+?88sXU{hL zBD0u7rMWJFa9x!{7TjE)IFY>KDC;w`lgxUM3u&%PAY51FkOlYRV!UWs?>LLSH!!1K zZ{2kXgzKuDRj;?X{niRmKFfJFZRrG=g{x_eS2PHv#NN@EbhH(t}C-Thpe2-v_45>ZhDD%b_>p^*GqR@ z0`Y%4r*KxiUS_%7o5aM4H&~B~(K3rURGRA&2-j6PWWiPZvX$Niy~z?QR+=YSx3nxab}JpdDG68 z{>%91Sxd>4;A_mj4f3UJZTp4Zvoqv)vQWo0W_JGFINIVjo1fQknYE`MH}}-YWQ+11 zZ5#WoujGzjI$$<_Tguk%N?rbSOg(u%Sf4Y-EIzZO?aabbd{54Ya-QYdY+f3N{Qx)8 zzof0($6t7x5bOH^YjZ3$kDM)T`#ifG-(9nj9LulD9&2XJ6Kg!UT#6qUI!DO!OT&9w z7TZJC^VTWRs7@*FJjz;6q59w}CbORsMz(%@R$EtjzphT~9dq=~b7I%M5`1^TF|v+Y zeXp3^@)b7jt&isKm-xzlai{gj#vILO+$pP>u72S!c(QsmQd)Ne9J1iz?|O?eiF=GTeJpnlGXBs!8CiI;${{PcKHg%+0YURQEq4xT zse7_KACM=nkOR*PgXf(!Sxv8BSMdzG&~+y?rhTB zWX-233r|)#xxd6|_gbhB_gX5HD4+H|=K$MsmtFEVs@n0m_S}><=YZ#?$0k-xn^Ua6 ztyJtL`J0z*wcBhLe@q;9>ux(~td!Z)WmlUolZ){t=f?8>^Pb7$CCL46Q(bpo_6x1M zU-ZT&QL}E0t@o%s0_}6|HrpI_?X4(1C)$={YN|lJbxXULDTkkO?;M^yf3ZOMKf*JS zy@N0D*h8LtUI!m}oMIdnvnhZ*?(WZ9G#)4G^`~o(>gU)V{CpVQ4>)rnmiLeORn|M7 zxQ>V2jpO4Yc-||&$^X%eTs!DHPI1P-qI=k{L&GHJj`Nzb2Dbc-==@iDV_V}|AwPcN zf;Imc-d%lYPUCxW6#ur@N45pu!K%JM46t=kxtIx0J-k(wLQjJ3vTz9juE!)dJd{c{0GP}xojoIc{L7TTr3tn!? z4Vg{IxzhYO*25lhHiU&0PL=(PZ(NVP?q~nwP$=VhkICO7I8R57Lml9phKJkfJ6g=| zU9!w#EmqBw34|xB9J1h|#x1wcycWS)d2Enbd_zX_WCG#IDu*n%LlZaI-FHN>Vf$9e ztVzF{=E(%Y7gP>ea8|3BW^gUy^g&w;VBug+9lr+YGi z@MM)k7TmKVf7`wGWaB>*`pE31O3QUmCJ>&ia>#;97?D*3=gH0sH)$iYSE|J6o=hM- zS>=!gcWY99@#11S^Aj~?_H@Z$-IED~C#xK?;Jmk$5aZ|VVBc~SmDyEUJakVc5T2}Z z$byUYuOMcQTg&G3$}F?tjtg{8CJ>&ia>#NEbCpUama$3_MyFqbPQzOtNi;7XvcgQ2NtLR&tnkN$oPgXf(!D&uRg>d3mN4!PpFfYcd{^W!?^v*%w`B7XK*EhIs z%L#s>dyOS5twU~kJ(}Sdrh6!H@KAMos2AIFY8@y#)kUIIPMc3+{I9aIt&L0rpQ!3t2DT4bmKzKsc<*Aq#G{ z5hX?jonW5_cge{5>JCdF99HG5tgl(rGe&q-KgF7y9W1k0<3n>;0^zVKhb*{@kxN9^ z9~apg?@2O??`vodE9>>vIAp;syShxwYIB+W^L(Mq;#~^OVF|?8LgkPJcdqy<(P2P3 zJ6gh;vxs}lya9EW?7M%93AeG@=LCsAGgquF8 zUNg0CT^sLu{IT4(QLSE@bJnljUvYd_zUK22Irg61>!Uu0kG6+7e7&nIGtRHr&Ad{F zNvE4l$8%bTJNA){ck}Vj(*$7-t+$q>Z?T`WPhGQz-)(V7j<33|FQ|>z&}NL+Mzkn| zZ-(Mr3AF2vFH~$hFk8uPUDaTwy`hgqX( ze%riJ{rHx5IpluC(6?(;4q0%^s}``W4)fwChE|fzU!uYFEs9d0fTH2b+!3hV?$|lv;N* z55+MK4^=tT0nWRco9J)sF!K0XZaSBqRjM9}EId@@kOfz>tDBe|l47Lgw%pXU&0Ebw zk%fn<9J1g_lyDQt`41Q&n=ChVYw=3+P?;qURXJqAjX&!q@@+n9)ca_;sV~jTRXr40 zc&N%D3-0ntQ{3No$_N^3ttahK>z?MJa(~G~RSsEjfA&}hXtBh;83l1cuSqnzpZ+rC2Nnjd7mo%W|Z{s!b;V}{*|G17lq%TE;+G8^am!(99# z2JbNQxu0mAHfnQ>&kwU>ueT!3jJEYjIw(+Yt@6K{tw;PNwl$5hl^%3N5ay6~U~e*M`XXO8T7%-;WxnusuRkOcj+Me58s|w|AVLl z|G}mG^V?|sV(#3bp4{HrV!{lsp4YbUz#@KqUnRM{go1lC4q0$(+vl@+neqJc1TM2X zO54qY&GXnA=MLchZR^YI#=^Ta4q0%u+UB)gYMR8W?YHh1@2PUk40x8ymicrzy$@lN z+3j?%PvwvWci+roE3#@YkJ#Er)_bVIX|vTkXWP&R%XsqpE;75foZX~vZQH*zj$k2t zzn~~xXWYz^*KGC=gZ$b1?T2L*amzz7KU?)${Fd-ll|vR> z&X4}~e!D|in?6Za9dv!ue3d}>s>&gYx#u-M#n?|Q31QE|cSyVv=qa;l6;pLzB@n)#-^+3cA8 zP1TD0R>Ordd!lBl?yCgCS5*#KaQ=JF*~_LiWWm+!b=6*f zM-QHsd!)=>uC045jt%&#${`ExdFRLWE!BJSY0G-Z?2X#1bzdbAzN&J_f-Bedz5TXl zPyVWzA+xt@$D5k35(r;aIb^|IYnWLyPj0{~9Iqm?4;tuRi#EeoRSsEjq2G&$v0i)F zhL27%yVz;I?yCgCSKryoiqMDg?81e6(%%B<+^M-Kad1#<4oV|{mr#dDePG(){odL~F351)f9J1g>r#BX!-Tl~&3KL`&@4{|;JjwPkhz%^%XdkwAE(${`D``m;b$vg=_sdZBgg@us=8nl};%Z&W#C!L|D< zM6_}_&8l|kChPT}e%8E^KzO6dAq(zA)(CMZ;4FGOKgQf;;XREynnt zW4($@{a;q|MgrlDD)(=8d_=5x+43rzbjc;7&AMNrpW%%vhb-K5@P(z~ml4<4sKUN7 z3(wQMkwAE(${`DGYLOM9WS8sg(l6GWEcskg@k`YEUk+JtZw4g@-y%0y`0yB6uSwg} zypce7qsk!*ZqJf6;>E5T?7GVenZ z5{T`o9J1it7i<)HuDxVwySK>f)GW(%ZzK@jsB*}H`_z83C?Dp`rzY-{**>KX>E1{n zyiw(l1*f_s6-k%WyoUSWz@jDJyx2J_os`_qxRdHHmaS5_SKzK&Yb3PUc`;wZ}aR?Hw|3l zImOL6z0&!cR(?Fl=Zqa?CcXc5zHWjMly?XFc_Xi!BlkPaGupg1&`5A|n6& z7;UbzeHY&@?>5pqI?H;?G#GCt9;S&Uf8H{-UbNmR9Nqb?S>e8)7G0M<_eT;>D~CY=5OHOZyi@}5Kjko;{PPmn$Xk<&89vx*B{;>qVu}* zvPv9k3`({Eo<+X)wE<3zNz&d%D_&&`5Y z7K)2=(v4fIt^fJ&^&XhBa?cczLFvY&M(bt!T+0L(_G*USF>kNR zWURgD#h(tz$7k3!`gIJi z)UmI?{(8}QccG|aD>A`@4+##E+uPzCLGu|Z+n!CM^^EdumG^Fvb4Q!z=!&+IDN}jH zBH^-*?YScL`M^{O<^$jA-P9<#!k@SGE+N~D^HuQThDMUzk9SJQCXY3f&h4Il@y5+f z3wYhM(Sn-dFp}2AK2j-{(PE=F51F}CUgPmysS#(iwpY2GsSw?rdf?b|=t->x*Dwd_Qjt!;zMMuWL@51GpB zrM8)?=Q!CKyFOr!`eGMk!um;nhE~Rb1J?mzyb)P2dIP>dGbGU0++l49} zjOJ&oXT9;0zL~fGENi>kZ-`O&@5!=`6NB!XlRDJ556>COTIJa%&^~-`LM=ldpzK(; zZuWh(!&zFJ?UKXwNcBOq8J?$d$b#!sYl6LB%}Dln_IjCxmua3yAUsdykOenssfWEy ziD=e7d4NU3>R_dEjOc`Ao2xU5&!+N-YY#5>G2Wj3wWaozI>gy*RovfyUW8n$;{{l>j+ z%#zu|mG|kMM<6^;<&XupBJ*y0SHJl@aPl~r-B#t5dsy3S}`MjX6M<*3L3T(dDg^8MA9=M7nh7hNkfFC!3MrgF%Fi`e2Xa!fwQ zUbX0vk@eEOj6isq%2`=2^Y0I|?uYXQHf)tOHxKVYYF(%JEV$W@OT^gQ>8zbwn9MGsV^{Ms0^wUKhb*`g?UspGNmp2&)v+>*b(2+p z!~Wv>rgF%Fi|oBp1f03e#?Q6pePMkr&C3Xcm#G}G;PytX7S|GQvHL#jGwP*p4k`X- z)$5^gR=r+k=;XDcx63nj?)z4mok_=<=4AxJ%Tx|oa8oC)7ag`{`;me~6QETjdJ3<#=~d+ds8=px7SffvWRG(Fd3>ntk&)5&LPgG3BVW zwrgwShPGY{emAVwvT@E7QLXI-f9*V=9XRV zYu*D6-lKA83%E>vlfwM$&wu=gKzNVJ$t-d6qb3TE0mqE6<<@$yz1uv| z+y(W*T~rSJ0`BealSIV%(?-b@>)R{iYTnY^1zEU@${`C*^BLmcGxqPR`H?6;zW=u$ z8P}*q=98+?d_@Icp38P!`YNtRZ5wXov1uOMx5OHb?O{9_l(3Fhz3a{$!fF04Z4YHe zgoknLpf?}+_aWK$tNg#2b?YrOhL2puk3GnE-sAdJ^Aw6oPx&Q&zTq@~F@IUEu0S1F z@8O?MIk;Uu$pWm}JIGk9}jkZjBDJYi<}S@nzx0seepLQVPm z;@!h4Nwtig8~yml!^Pwn9diRB234~)m>bOb5^G($t+`?}KSI6mqqrMYji)U`dBwzG za(gD7$L&+g8?~;6ku%YK3u=ou&FKg%+QOLS8o*1AsV&QJ&dwET=XIug@vuVqKj>(5d~_oeUHx+q#3h{_fb*Y(&cqkXQWe9m3#ehJ>Cs1UNusBkEa{T4M& z{%(_;W|{$yV#S0~3yc{*_si>kfp*KxF~{rJoFbRfyOx2nEG6$u^Uc|sHe+5er+Ier zI-QbdzFBEh9oxP-@w}qv?NsdV{(Qfi?<=Poby^%@znz&P`~G*wU~O&y+K0IT`)=k; zZP}nSzgObE?9*w*j+^KDWVau?8_0&;+$(=etn+@aXiPwIX|ApA(>kOeoot%p6lV@ZByM3BsGt$I%PBLd+^Du*n%1Fe1Rr|m8I zg1**!y~(vM>V8BZ{7B`H1s7N}(4L+$ikJCr&Ar@J?Ue3E1j3J04q0%acf;)YwwQcK z_&nL>&4qX9encSrNac_Px2ssZJ?3w3zNz>GnO%`>iS9=P!jDuAS#aI*Zm{R<@$L-zEt;$m5WFjn$?sN~$}zNqF$1j3J0 z4q0${{K|g&;(DZV$bxfz zT}wpFS|bJk(u?vT&jALtMm`^c}3w)&>T$ztb~j)rC+8T&Se`Jb`aW zKipPHa`Wguh?+&4k*!h6T~zfw&o=C8DY=C-7g2K|0^vd`hb*|VW4y%P0T#-kn&c~Ne_vu(14qhwaj#EvA({2kIAp>7{x(3oS(wheUrm=;c#q~n z1fopkkVP4NH%(+~d7Ir%H#6#W*IkG}c#6td^}3t2=Y@+}AFi^6UHoMhV^Ph82!so% z9J1hcyp9s{TraXLhr?wS^KLX3A`mX5a>#<~SU*-2>3)eleI6&X9&}C7T!=upkjfzo z?yj*^cuu~-;!;;-?5~IJLIlEvR1R76^BtGvVo&SqtoW%UnRTJ2b{{m-8um;%ePXi*$4`A6%w6YFi$&3#}7my^F|a&VL9s4!3*5mZh$g zW19I?=58D`z7##kK2Dk>>&5)e#=|xk6aTuxDm00eb%fAwu00o`#^AY7`&Y4sIr1yZ za=>z3mrOHE=eS6tdDvg<%UxQ#lJ?D=)@IH$^{H{}a~AGh%_i#*`DdB^qaGRwuN--7 zuUfJ!kdBw;=kFVtCOhyck8E;m7Uf9mOepUPq7U${;FN#zqu|Bp6N3YBMb)~si=(`=V4qM;Fs6vC717MFeRPUCU^;g!>BruDQ9y*orcC#g_lu9>T1`Lv!z zyV?c-iJKM_2Q8{4t}@g(EEF+yuEjFUqREMNN^u)%9o*E|+4oqx zyivhi#>+}CfC>?_tNUP^iFfY0V{ zS!)>I%LVc~&P>(;?^%AXvTTB&|=dCW8RW8tmfpWc4WP2402*|WqXC- z&fKr_EtzdP_KE5FWxY}UaXe3VT`0?@)BLbgiEE9%Yh!urw+V84v+2Ix)02ITuM>Sa zAC)eDOCLHXs#)wCvNK0FxA`wAW>i>b&Hvk1>$LeHbgl6D#hssxvgU!d4tQgJHxk92 z?E|=LNSdsp-^9PnmJMT#k3XaMg}p6hnMbA|b6}GXsc&b5vz3jv3aWz6&om!h@hI#Y z&btjVrKNt~;>Uh$+#@-x@up_cK4g~$7q(|x7|C``TPrzy14Z*F0^w0Ahb*{UPwUz- z->1w!%VgF)%PQTYWR|>E;gAJ){)=G`8GMF?FSGn8pwMC6qX>jYsT{K44yARphxN$L ziy4+5MO3<~dlZ52D3wDN+{NeJ?V10s$Cm~N%QnYXzpi@}f$%7mLl)ehhx*wE%$bu^qc-DS#pbxJUlUM#8 zxKE=w6M=B1qe)ps6TY4$T(IU&M>tK<{0RRy_)+wmJi_T>B2W&4q}A3#l9xIe;5g+f{ULlg_&5{8eT#F4kO#K)8^~Aq%chl!tVy z6S;nqSx@>eXf8w`Tu9}R1y^yEx9BqW8gscYQ)b~Lsxx8VP>0GP3vS9&KhgaBbvCky zhs#lKDy>8~inV};8&zo$4q0&VU!w){zRhOsw8q|eXIXP0 z0^vd`hb*`nP26t9sypXO(nhOyK z7g9N7!8x~DE+Sew@u`QccYfy4^+uu>rI(v^(>5BJpU3cDhSQuA;wI5|A2t`-U^GgJ<>^-k z$g#x?x^MgN`5;lH*)F4HG3%WgtYNQ?@A3O$++HdDhw<%oO+M{?NjbJ{SSnI~jze|e zICy_~oAERvfd81%L)P1-#5VKxsJq7QnjhKkJBkVHTb$E;)8+JSqfwr}Sia<10(HbV zxtP7iMjAW*ILY>wZ_mMvbMiK4e4S=wj|%3ME;W(;f^prz`jd@>9YOs3=ZbPaFn{Px zl@r2ie?wlTq~#TPMs26Ld51-x#;thWwX0-X@_Oty3q2bz=GI9!SWj!*>EGayId|nS zQMY@#k+0G^xxGcSu4Jq01BFlKRD-euYK=l=9r&P>03v!wvgz|X~>po)6tCF_*_i% zSz;@AIa3x^YlnA614&%KUek1(mnrl!YTw{2viH2v_2wuuLr~J)*$WuNo7-x9)j^fvs zm65->4>{Acnx&1Z-9vcz>mhPK@P5x_&jQBD0m0nA>R|bMpiEu20`=k=)xT0!!?9Kb zU)*M)(Eijz_y#zejAzQ)X)aDg4j+#du1ody?~``-x+{(u@T?FR)Wdxn;jBq&`UM zvc=f{{sybP>#lsRHa_!Y{rd(~3BGU8fB0r2IDH|X(V&&wkJdF$m>1fXOM6D&6%3Et zDEFgriAb}2#H!R)-9lKYY+Ga+iCFAZ1$?!~%jyFQS5!OqL=Rnu>xI1w=(qL{Lx^2)!#R z3fRS7uh*`yLF{_%z4zX`UawxC`ONbDJ<0tiuQ0q%W-^;{PRe9$>+;HkxdMZbEBKsN zTgJ}O)6>{guAn^~wRxeS&3a+3z#!xbJ_lOhjxSSaDi2)6<2q~eLV?98VXnX+t|`KnpqG zeqMm)Ze}GK>7dOErP$N(wXi(U@;O)!;1;RJXx7_SpqAg`$!}SP_j5t6z#!xbJ_lOh zdU?&#Y)P#^rX^8CTZE4rf?RC< zgO+H%)|H|Wp&mpFIY5vrFbKJV&w&=WZm#%Sbyj$sS;mTJ%dy`O#mb3JgN7;B%k_uFWo8ZpdT&jrx@(8eD{rR~dp_0ly{W3LmF$8tRW7 z^!%OM2{%VFNuY)0fwpFi5tp>Kn*Oppgm7?AU63m<2)TmKY1_iGYswYegoJ9kxRXB7 z!nk>YT!BHz3w#c=z`c;Q2`igdu14s zyf6m8v&_#1poMI}=b*2E>pryu*Q1ve8hlR27nV1|`KmBO;6lg{!=6s&4kVtSt@Z~q zpiRU6ik~5%4#*Jl^od+n(7jIrow9u!541q!L{Cp0yz?M2s>HuzF`$LTQAMJgJkU=kmc>z}pd4aEmw)|I1>cv`# zT`F=<&PN-5nUOl+db?B_hu&4?p^mnAyaFtSegC4DC1WaE&s2)+d-csB#r0q0{ zhf0^B#w(v_^&{;!6!LWNH~M(vJ3=48JqP|h3@C$p76tq_9guL zbWjI)+fynx&ib!Fbkgq+!WplMW@|U?V)EyTQG}rbY4cd4P3*~2e=ztRWmNcCJC?v; zYKI^%;Kkv7p26BpwNZba9gfD1*+KHr4x`z^G1xH(W2=`I?O^Jq{m_UB+ItwVjX$}( zjd?W08M&T!BmLs+E(q3bYukB(@!MfNU|e=S2WsP}|5gv-JAD+Cz=ga73~3*4=Ne>QFYYa?CPu#{*E4Yvq01kqxz!s9>-+>~p7 zHBGsCpY~X|h-iyCo)u;Y3_^zBbD#wd-~Vp9*wF$#d@_&x=9L}~g*gC&kOTM}mWqHI zVtJ=&a#cU{`kpo$%)w)D@^b+6DdYt{2U_5QS3POU*)R=t$=7Cs1^C@&ehvUFQn-DMRm07LawD({_tM3(Es7pM!M+ZqCAXnvuIJ(6D0}M4N|?Yy4~gbwD=YbD#z8 zeQ{6C6q8ESd*C?j?}7K}`@F0HTF4N54z#fE2how5?c2)HA2x%DHXHBzf((H{$Pj!E zw7}tGm}YJNGBjT|;QzFO41qz&5Pa@`+U2i{HT5@2(9vgZL<{de2r>lGX0v<_w7{)- zP^0-_T#D$@POaJ;VTQmUWCK2@)#k9+duUeT>mUi!jffV$Kh4h?&{vQl_#9|~Yh1cR z)9c?t^v8vd zS1!>ex7{qv5Ez6E!RJ6rxE?YN^?gjQGy0Q^nLf()f-pm15HiFX9tT?B+_uTN%dzdz zqWRtS1br%bA0Q3vwfajrOxF_cu=zDj32{%)B zsXz;LfcD?E6S-4y&LZba|*3fPnLJqXR z%^IJ_9WHoE?|!Jw2CzIqhQJ_X2tN0}dJD|)IKsqYIgSGX3*&l=EX7VjT?4z$2sUs}Owd~VZIzN~5ejq-&V0)vnt_#9{< z8}wc?hnrFVfS$B#ORKh6m?1FuUrwtnX0L3U$DP!BM$gRDzB8YXzo9C~5Ez91<8z<| zE^)>JE_k0IYCq|Kwq9A2FhgJvG6bIkZ7${nc>xzfUMTpnhdaIVA@ea#JC0mTMd62SkE4$-u|{naliCn3I;4d!+*tbxC;E9E8cbuI;k6WhM_$ki-?a{ zZ@5S}mN#A=cnk5w4(dJBK(uk9c0AuTc#L2E_`vYH!MMK@JMLg;k5}~TcG~gMQY8xn z*MTvHe@pyr*{Nrlwbw7u$)8F{Ti|-htk9Fpm6@06+Y0SDv=~1x_2uSi=4zA}owl9N zK^hI;f3I3eorOgUGt= zG{$2uet65db*NQ~(w`7c9-PFs+53j;Wl^g>I{zi9g9;eWCJr}e_8%@r5q(so4%jy6 zgOXLqFay{Bz9cYYd2s!{_pJa%_i+X4ol@Mo zyllbugthxy0c)D{8!gi;KyR)Uwf1S5z~96Ag1_Hbx)aq-`9)_`ULxx;7r(poyJi!z zjr~jyIev<03-I|v;K#8Rd}93aqfFiX%k;jpxg6A6hR>ILFOM<&4f6_iVV@?Z>6r+P z4v!$5k9jrwv)5jxs`qocXR!sTHxrK;yw7qsWBc(AJv+D!sTcCm)aMpz`#aI-Ywv61 zH*YXpDj18JY^QjPX+8(*23)tocIq7;Vo{sDUx;?K(Hh|x(-?#?rZ-7nGs_Nqq)o$b zkbW)|XR^|LPnmetJNn<ZFM&sAZ}lS&s%hW+8vfYG@yf zfyn1b`!H8$VWytAB^xcMGAG)VvYo;)5HSd2Ag*}s>)WPw4juFFW)Aukj^oGfef7&5 zQAsa4vx}4!>%|HM0=JYJ-?aJcOIobbdj9OrmxS2>gOCmQ9B6^NygQ@m=NxOK zvrp^!^YK`Je18x1g1_f;SSkYUT))Dm&+Eg{Kclpszo^%9fxibW_ zu;|rR?eVJ8=CZ)cgBHBJ(~;Fp#(tHkp|{ram*D#vd@U>ww0sWM4Y<&y(ZchDf^2|6$Oe24w7}h*9k$y&=bg0$e7@1{j2Fz~?{<+`BoiHT6z)bV&&D~59>sV(%g6Cn(iigG231^yoT3jFhhR=7PXLQ z3-JCX$Of(T@;Pn2c>H#00e8OkE-gBuy;chOSC9=b2-$$offl%ngNnI~$b0nWmupGA z@P4--8(0l$dis)y zDHEanKg7ge&BfOl5^PlJlN~G2U5PEJcd7Xy;TXwS3}YmJpGv7mU#Uk%W84Y1vf~Ni zn5~$DFT%#rGfu z9usT9W4^ey2kn{on$|oyMEU@pYmWPo!t|ZD5Y=DqM%E3s4Sg<<8QpCkZN69Q4`$(O z&HujZrv6c1&RFYfpJADHKq~m&C$t&9_vznYhL_k+#4-E#3Ww9?KRYL$ki5 zUU)VI?LNgAOBSIaX?qB_ApNKCxf{H0(3TH5E)4#*J8Cn!iX6w`T)VEf4fCEWNA0@I zC*BdpY|S1u5|8ma7ky6ti*RsWHB;!o9xyU}+^bsk-79xorevclDOK_XLC+IR0-q#{Yjdr}RQe5V)`Um-*u0{Gv z{C*0qqYz&cbpQ1iYDs@b@3?ljwGZ-yeUCZl`wopqkjDE1{UqT4sRQ13=3l=j%ftKm z&)@f%AyE$KQV&F~k%d}n*c+qnFxNk}MO8V|NFO9xonu?39bn$JfA6pUd=zvD)W>GjJB_T633ycf>}Wo=eta7QQB} ze?_7GjK?@XsndtFWq-Hx!m)*M9Wb^qpM&)PZpw0ndfNNb=<1^g()XPDhF~0FXdjFt ze7V0DeWlHOx}&4k-^0G3Q#hA??p8*3Shkb2xkxubz(F0rWgM;ai+8V~6Y;o*uxTs+Uq$v z_;?`50T_fFz~?{<96tVQ&bgGK6C)!?y?Hpp3UUAj;n>9IKnvX5L6(~R$4Zc8FIv04 zm=ojx48rk>&w&>F{kLJh8b|$7H0_)d(ayr>ctH-p;D0&L0@trcv}UzmDGG_VXzeRu zUeIp4IRXx};Q8-gPuH9~P>kA!wISLZTqei?7=%9MbD#wd=MhbvM-jSK{E{4F;W#A7 z0T_fFz~?{<+_24yG{>Ea&~KX)khsG)1V-zFX%#tatZ0K7c#{Cp1D0^Fg4pEM5FYUt{Gd!kL#trzBiRxO_c zEpSf)erTe{pTgSpzPLyfX>(GT1270VfX{&zI4AF)8njo2E{*R_JP(WY6$04eS=m+j3ithK8EqL1}qQq0-pmdaPIf;GuBbJXw&9oq6Pmf z$O{;Ryujx`3*5aQvD~!LkLcTlvxt^lf9B;1?QbsRKnvWLuM@a-F?Z>afyG1%*USZZ z0fSHnp93v$%&Zj7zTqCdV2bv<594JB@&X1SFYq~Sy)1k3_cSh8bD!R~a1p5&#wQfy z1q?!7;B%k_F24$oK)K-o9pBXYyZ|l}YH)zS+m(9aFgr0kUX9GhBO#Wn1m z!N4=dusl1z1MKqNHJtO`EOYMK7P7DQmn~*H6s}?p-1&>1KSMk2d4gUNdupSGfj&Lf z;6vK1R?J|_Y!5J_KdVstW`ELVd)r*rvb`O%&14~ZAI6gYE5SLSSlofRlsF&dr00@0 z7hpdw7>@_{6^zHzXYnv5x@jIdU;ml-NfuwLns(6-e^Yf1YIeFtjfOFn#K)5WdGnwD8Ocv%`_8?pBHZjmO{DAa%@U2Q}WK8-vP`{?|m( zKDe(@uE)`z50;=8*R*{FZ61+ljc#NXp+E0x?^TxKYi>^$MWg8={H>2ZeLsf{*=@xfUcLy8$SEZp{2qee4TJEzWj(xs9`yc9 zPmk8-|Pg+CjJ?-LV2K^gU=V{hdnpZ>Xiy z3sw=X0Keudr_~+I7swU}Pm4 z=$ofqH$2`yUkl3vEuSOnfw`T*7aP}dmFU>_RHB9bLy!Y72swbyffhK*Cbp^j)C%O(ZU!h z{JcQ6ga2@#1upL25KYCeBJ}l*_8C&>7k*vH85lV`2x1z}zQ zE#v?`2UIWDp61nwd2~Xim@F>``xikDAj`woUw9m7 zf$P2gndZ6K0oqj2;D?Ju13NYg@&dGlvR|4+R zT~=ww%K$$v$OagMY{2KV+I-gZRx}s%1m*Knt0~H7k=77eArD-1?vA&l6?? z3_=}z4z$qb4JkR?Pm8M0{8t#KKG(eJJgb<_58)EBf@NeLC6Mt4z$3P&uydj8oCwj$W0-Ab;t#_vo;@)qJjqC#H@uI1vz;l9sf4L0ehPyPLn4(rj0 z_?Njlne6_a97@zHMrH$0>v1TXz248Rxkf%xJ@~W-X>+^4_3WY%_RVvTj!-{eWk>4m zh&Bmw0Q}~V14d12VEQ=hp>IWK$Bct}i}%c282G;0j|-_}c`!x_e+*90!q^V+i3^cW z&qv3G&%QdE${f2JiZaTwv>g8K;iJ1WlFctdea`eE z^%mi_-013r){n|VjeYU@Vl8|h=Y%?lnfz!j8a(qK(pPYQ>yx!NV;@?Djx6{^`V{=Q z>nJZqe5eG)b9C!DAcrld%g{fz-{`-VT_APL#K#g%r##}l5R$cM6}VHS*wOC7S=RNdNFbJ%d1in+I8A^Nzu zge)%)=aj!a_Avb{KG3OMRAhPK@)4|O_BMtYZGf(BHX!}t+a**`FKjPRFIBsfxpmkQ z-TGVm{;!Mc0D(sb4m>))4k&{|$U%XGe6gn}ga8x$DK zz*)#Mw%X5qVkLU~wSa-L61;8n!{f7s#B@jZi@zgSp0~pR_PA1v{07aZFLvC>K^ctA zyfLH$dNrktzOvv?QdT4xC*WXtz`04z(o%;d^!v3d2{#+x|KNLc_h7Py;pYv^}F#VEID4e9&Yc$*Y>WekE>=5w%az`e+u zODEmxhPt?E{WHtF5qM>2Gk9e_2U_5w`_7@;EEG^1B*oB!jpF$n&d&w&<}mn^@~6jfA= zEOhON7JM<^k3*k=&*pQW1@1?juI4#@?;XC8fQxV$KECk$IB5UNX|>tx^r+67-!F>M zUIz)$W??PgkAoJDr+f~yz@<9Snr3MU+F7rCw>}&9slaDr5PlCn2U_4}ZW*p|99@Kl z-)?R_PG$*xHU`0G^EuF#;l7&g*QhbiUrM{iw2)&bcmcjwhBm|V^2ZCdYQ!x|Y5i_p zNgeR)3||Y&1MM~QlNu^uDUHVnAmXvfY0W0pat&g`rDcVNtOtYYe2M~ zZk)hVgBCnBp93v$Sr6PetL1CyfMwkoT!fEJ1*~&pmTDX2H@aPx>kIv^n3tX8) zA8z%DoAd|A|M`PFp-0CccyvBT>c!hZa=$Qc<^6~B>+iX(_2vmZI?>{9_3$`ty?N}b zUW2*y&+gF7Ozkx-@JIrWPP9Vqf7;mL!?~8tPw1J$wC7*Y3OstNme2i9Yt%QEdouby zefeq~X)|o60*{VC@Vk5tw7_|t9nVc4_JFSVSL?n1>*e9M{4WPu;A)3V=7L=w(r>Ld zw$@uD^ynA_kIv_`^%k+OC#Q2U8=ukg$J>dv40~#UN5|lQJv!O0Fc-HblRGnCg!a9_ z*Bxc%EpRTE^SRr7-O!;QcpN@lR^|6n z=)G|vc<;7J-s;L*?UNxh|8?&`xbbaPutC3F)Vl{?Lfub05^hh2z3j(bqnHaZ^O3G)BH;@0 zb?MyC%;)bKdicP0L|cV_BmTJY(9bY#{1j<-=5^T|G+Y%& z`V`)gZHiGd9!6EDYO(fy8C=i)=GT*XKA{{HXE3CFz?m=K%ltd$3*Any1>r6g73rk1 zJ@a-jLBqe(Umcnd)UjHBCVPJLFSKh@5lWxcnVgfwDDq0|6J{Eo6;EggmJSN-0Qaql1ou>zis2_ivG_PCcoqk@ z8Lr=t*?ke|KKw%WzV#>JvT>W=8azXmQ$ErsY=(uyzg~tC|F9%w@GXN2 z)d9@U$E9fb+m5Yu6tZbYgBf*N1=?k;eHIMfy%u~20e2Q?+iK=8JqF*TBVBqCFF#Vh zkkt<>d5x&YZ=Xo4>dF0Ob+Ak^=jW4D8=n7 zI_r!K4=tpR1a078`-AJ*{4)5BpsdqzDcT^aqbFsqAlwXmKH_Hs*oMIK^EuE0_u2dh zoi(VDo)TY2v@`K{k_4U~gW&o39B6?Hzwv^e<{&}VBNlK_Hr@S!z_&xa;M@5e#t7H% z;B&guV^1_>^IW3M^nWAp?VttU&gVc2+?|+b^v<1$=+^fNqRr^`P~h9i`eNVC=RgbG zyW!X9_sS9!__A25#bW~UJvwN?qmLQ2iEhZQM4yJ|kbZ%4GG9xUhqZhT`T)3U**JRK z<4R8N zMdfIBX+NTcXHx{8AA{ie`5b70ySkxGQ@BS7V)u9wEj)`Y@cbAA&(G&T3ta55oTi*( zMJRYl7ovss2|Par!SnMu&;obXYj2Yre+OZeo1%4n@$rS14ao0-&jEZ6wBXUxSAA@H zfuB!wr?k(nK^Z?AXthG_f7&PymBxL2Av!QY`+YU|2E4%YV-P$)p93v$Hw@i1{UVCd z>@iK`+>?usIRej*LGb*14z$2EkBiVOdYO;pk+tMLEQ`mh5_o&L>_To_`T|e#{Z?!{fAV!S{MI4{2)5>*@23 z{fMWIHCQ6_{G^To0S8*(ycH)j%KR&IT$F}f3-`9)C-m(Y1m8aE`d^yZ3@I|z=#g`U zpL2^qix(#XEuVurfIGkYoaW51p6JU>7jiuHanuO?JqE$w``vfqYz}XtgMRmBV0oqZ z{Z+o_hrR;O?;L8&Y0@{)e--p3To&F}`C6zKwDlqG+zaU$x=T_d;b1&pzUPPKf#>IQ zpapKA$dhY%bc+t%to0i+@cCDe4KN7VfX{&zI0q*`&bixT+B|P6sTbby6l4Po!tsUA zffhJ@-KSfombGf}w=?&eNXf@bjIxj#7NQ=Rc1Q96XP1G3Pk*N6i!Z)8qMs zTV@o^c71vSjg}UpRr#yQu@0UQaqCsbjQq2i&YBcTjyW0l_h1$+VkVt!p*D@8?TjmUa{FAjPb!7w9BQ2TXXTfK52J2KFX z*|)U{9S+9N2;(-xcLk|u-b~wuImkjso5hQ9+0rSO8J7v~=mot>IarUKvKTf;XFK!i z{(YLht4r#gjju(Xzxn{3%PT??r*tM|;O}Py-9*0{3h{Mn6H*7ux?`(P*7v9?pY6YD3vGJ=pZAB%Bz3_3fZ8qP^y7#!g{nbB_w0Rcx&-Xu#C1dRG-k8Ke|7GB3 z5bDS0O&>ux7W>41EcKX8(n55*@D@2{!~Xl><7bp( zS%8cTuah>zxSWGei! zZ(f1R_~S~#dce4n$MYXDw%K0l{e!jdkT;xo$XXRXXIRHx>MbH|PTqLp9$P;BA=7xt zN8SJ9F48YcF5YIF35Al=mku{pp*19>I8XyXd)ilmA{=ro5Ax7G7i>4#)+wjM(=yp z(-o7}liw%@d-M;oJ}Bj8C4ISZJLzY*F3;y+8v<_jE^p+2qXv&{y_{%g>nsv_ehh-= z=X0P1u5pPy`qjwMf0ox0?F{8Xq36dScz!+yTHu&-R_N11UGyXu@B6qc9eZWIZ-;FN z{5_w;7~$5ctkA|4y-@RoIYc|v|FyukgBE-{p93v$wxcc4iL4~_&{FH=XS&`O_;#}G z;XTun$d3gXnKbB`W2j41)d*+;Q9F+ zXn|WBx0XJwLP=JpZ-T)tXz%H8j3{O>#gb?mxa3mIqoRqiq_! zc8ln?4JpLSXXEn`KO4aEARF*G&;r+$*{k`Gu$Q*o^@M0q=N&@Nk3sPKd=9k0<+>fv z=zo)-!tv(hT;b-vN8skNHbDcWZ(F4@pgqw}8t@E`|FKF4mww&vzt90gp!Gz1l z$3#I6z#!xRJ_lOhT5#5Y_hHkW6NnbxM-=1$3_=dzbD#yTFu{Wx?0=JII)8 z$N?CH{fN(j7PyI?y}8Q$ujmgU^NALoCE@1<=zBO{@;T4~_o_OS8}joW-NAH8YhUFG za{vZOUf^+{1>fFr#~|`8;)l<*W9R4MJ`m&p3_=dzbD#xoxaTmgHuX8}tk_KIEyeev z_<2Fw=6nGMTHy9&#&8usf6&GB4x*i}ze<<`FbLPP`5b70+wpM;=enzaiT$G+*{6Nm z;cu-rR&fVM$D!r350T~NkN?U3-B`k9cqO2`Ozr!em5D#uyPNzN#}PBp?g;HUYO>2+ z!I&_(3Nj{4mz4*Ye929E(smg+*CtC++0{>EOxIDR=eBJHplNbEoSfCy@E=PmZEts-N?GZby2gVGia1=F;a;wiNAv1<3(LM z^Vw?;J#xk(;(c;)|D8UU&2Y+{^qYPQIaoLFiFn*u@@{0LO9|mxIu2&zSFrSy#%eUn zqma~5jK@QnJIRgqzg3Rx=4O&Qit)ZLcxD2xFFZ5hke|p*w_b$$9n_wGAw%%JGSmxR z*)ym;GxTi{@|`iB9K%ZSaq{5ly=chOVx&INo#YwVCNFu|tKD>Gq5*$NNuTbQmb2f> zuQFdRzoh+s;=afA!hXJ0RmG&n-JyegF3?aGZGgw8?r6e{$tgk0t|$lxefmdcE*fgM zh~7u9BYiLn_toAjm1wv{6&<*18!0Q4Ob~E*aroXg9v?GrEV2))qid%uBOHsrJ16jy z82qoFgtmZBTsbKOU0bV<2Cmb-X9!-8@9ThrvP(Dmqrg!<==nG8GskIx_`7L*uZKDC zaC{E>6gYfe9FOZi1sz^oPPWr&c)VAE*TY)yYm2)Ep!6H1=ut1NubXYOL!gD_fwu0p z1M0S-5{>ASMb;O#A%WM!%LA`>Szg@~cD(eI@W_7=&{Q zp93v$R~8*;YQ9v6_bu)F$#5@5;LV7Z6>y*h?&!ZoF*D~zG1l|mT;LQ$wFVh^mvy$%YRCNGL$#qt~4}<-K_^{?$ zO>E6ddfB&Jay*6css!E)bN}^bpasvhWcoVIrP6x(v7!y}KBMtiNa3n2nj;sk(8C*g zkTNIx6++*Hwcwlh9JCL(k>|E+PRAM}r>QYSYvDCd=&!IA{1u-AEpXe1?9~`s+oL`~ z#YC&{pT+i=L~)T957V(aeHq|NB{c$nMUExdU;VS)lOvU;LZ3PXo0hg=*;2lLw8Y)CtCP+jli2>5WJbobvv$u z`yF~ueg@&d4+(r2=HU3u=b#SYe*WXa$wob)BOMBeHWQZ#d>977hn;@igF8C)K0S3y zMQdAfgr1AkkuTt&4!9q1S?bF*_j^vCtyn;`8MsW~xiAR(AfE#*aJ9evxmf*2w6We& zqJ{I3z;j^`JeOWcUoOGwF&*!|hH&uy5#NWw?*>{v2Xz3a>mAMo>VKpI8nwQu9KR1M z@K+dw^Eqo2$xW!&L(xmM9;wFoPobB>9C)dOKcvkqCmt~u2Pcs8YA5#@>?l8z=8oC7 znWbwJ$hIc!Q^~gLeVQwec0)d~_!&*ymNvtySo`AB+@#aVsAH`5y-%Ham4Y(hpsc0i z8P3DV70q3%ebz;9bQznw>JRSwlu~upW=jrZqK!+8Sh4#~?(U{CwdFnh+$JvEzTA}k z)v$}}oK>oRgtIR6%laBa_He=`u5)d%`siakz8;iS8?cKqHgUrzm#W*kb|A}JztTuh z2P_Zj;MWUUDC-~CSybaI#;p*GbVSA?6OpM%E>eh;B1)tZnTgCr?L-!$P9jT@mB>Zp zDsmIKi@J$CMBXAFk*_F36ej zY?N%0Y?hpmoRplBOw>)%P1aqnyFquO?m6A_x)*fs>fY16ulrp0h3-pTL%p_oMta72 zCVHlN?er}4+Ur^BS?P7w>!N3?*HzC^&q>c&ucw};o|oQ4y(GP4y>)u)^)~2r)bFHk zsUM*~K!2cqhJL304E-JYJN0+z@6+F}e?VW^hH9f~A(hQ@TUCQ+ir@MtW9yO?F*&L-tAbS@uO{A~%&w<*Vguj z3I~Ow!bRb#a8r0Id=$P4KLxEo3Pzz;_$xvcVTy3YbVY_DQ_(@$QQ1iur0lH>R)#1; zm0`*lZCaDwRQHQZuNTR2DUhDy7P( za;lc9qw1;oss*YV)oRrm)mqga)n3&;)e+TE)iKp!vm<6l%^sOOHhW@bW!~A`+Ptf| zow>cagSn%*lR0CqHupClYo1^}&U}mcR`YGDeu_TW+_)ZjIeqyLEO4?ON;(+1c6K+dJ6Lw$HZDvCp+~A^T zcDUov)6vt>%W<^h7{^%0ILCO$v5s+0@lIo%mN+eSTIO`XsnMy)>4?)&r(;f!ot`*7 zb=u;*)p?t<#+h?&cE0cY!19|dCOLd#-w#IF(+d8)n?j7Abxp#N(;oj4IlzWW( zX!kt#eD?zPx9;!U-@DK2Hox0~Zri&3(QSLTrf!;UT(|cgA3Q#K%E6CahaMe!*!1Yq!?uTg4~HI(J^tvqz2~1j_w?M`b6?L-JwNyS(lfv_&@;$$vS*6t z6wiI0`#leMw)3*^YVYOY)!nOyS5GfbFE6j}UVnT2@M_n~qF4J~k9s}s^`zI+Ue9_x z?={eSkawhaoOitUSnsLcY2NAHE4^2FH+Z-8G4e6?>EdJS)72-&ceL*q-><&ke82nt z3$i0I!J?wV|4IIn{ipd) z_s{S@)0RJdcfQ@C^Zs_=&J)!~T|6C;u$u0~voxE}F1;z`8Qh_4afBECmB4{#aaI-qty z-GKT5y9VqYuxG%h0iOqa88CR@kbzMH^#`>XWH9LNpnHSv53-K5iR=>jXXK8^osnIK z*bT8C5;`PoNca#@lsHN!YGu@_sD`MsQRkx0M_q`z7-X*+G_>fRAu5et@xMky(k6SU$eSEj^9^=g?w3}ct!Fz(w1m6iA6FVhZCf-TB zn|LpA&BV16*G)`F8kaOaX;aeXq%BDcl53I|CND~^O|DC>PhOn7BzfAT>60=ht(dfO z(yB=tCT*OwY0}Wi!zK@(oG^LZkn%8vo6hDm!>{QeVFr$GWZI~-*=gBnIcd3RY+7F0 zrL@awSJFPGeM$S8=8@h#y+?XMdSQA|`kC~z>F3h#q~A@ym;N~YN&3_DSLv_Q-=tI1 zRMX6+b)IHD&1M=kT{Yco`iki*r>~lBn9(-FD5E^1BBL_nZN|Hd_Zb5+2WAe+9GW>S zb9m;_%ww6yGY8HXG$V4x+Zpd>yr0oyX3v?PGka$RXZ6V%k`O9MOmdz~ZSuV3&XC>!M%9)&#mXn?{EhjrCCnq<@I@cz*OYWH5*xb0> z_}sC%3AsmekL4cE)nO&9F1wOl#Wt`9*%tN?+bz!{uX|oVUSM8OURhpwUPa!H{GIu` z^8e2Nk^fJA*8;l&`+}H)(FJ1)@(T(I3JY`#^$PV1UlzV9d|hZ&)VavIs9TXoQTL+Z zMI(wv7S$Ei7cDNjR&>4SMp1I{q~giNONy5kFDrgg{Id8}@sHwvihmYQC`l}tShBKY zRY^mMOQ~zATj_(+hoz57-cJ7ssv?8_a> z9m}1|UCLd{Ju13a^r-Nu@U8HxcwOaItQu4mSv9z-wyLhGzG}vtnRBw{G|XK+cg@_xbC1kDI#*t;s8&`})v9W<>c!Pd zs+U&ptKMIIp!#$5m+G(8q4UD#h0n{LmoqPSUeUbbc_s5^&d-`ZYyO}GkqZVdkk-g* zK^`HR4bHjc6FzFsi|O zt3Z=7@ka3`@fti`ji+nH>%=SZbOoNS5;usK;^`7RT_#>G zuEo`rY|vQW1wRo!Si|s`gs0# z8U1}J}tTMJYYA|**a>D;zWxU3CEuLSErz?zC8#myoozWs=Bh%H! z#-=sK3yoo3W-2u`HC+0tg2NO4dmR&cVzvO{=YPob-jC=SbX6}^;t3U8%EVW4QE@KqWp{FJ?vw9-%6 zQ|Y7hR{G=lB+6eIpbS(_q5_nYsR>jvm4v50%0#L{l}uHtN>u^MN>u_ikxHaWRTHT) zRgtP(RfbEvl;fx()p)8{6-SMy#!>mI5*5t%P{!l=u~dO-G&Porr*c(=Dwyx49E0a$ zDONR-ilxR-vsHO2R^_hjrgT-#R>e@WRN1N=)hyL0DuxA26q?GE~!51F0x#2sKp|Nu{Y$ROzZT zRX7z%4Wb58Hp)R%IAy7fpsbZP%Faq_<*}IO@^(r~<#V}}@~ynH(n{G?X{#JebyW_b z22;bRp}0l|FXioqJd;1b(|KtY%6szrFt5BXw@|8- z?UgWnC^u8ymOqp~k}H(vN;72$)m|A&g-`>i2r5N2fSRI8R;8+@sQOZ2R4A3K3Zo|B zd2?kyDp56AHA&T*>QBLZe`=y?oGM8*5tmTPU}~JI4>evDK=q-5sd&`{70k<(ft0aQ zu9PVmDu@ciIaucPY@`}8z z@{;_z{F?l{{EGat{E~c*>@uFOkX?|M$>zwaWW}-yS-GrC79=f~1xkaYNa{1mcM_5o z%hb{m8H0!Y=_M_YmC8zFXXK@_v+^_Yi}DNdQ}T22vvPgqMR^;gzS2n9R_R9>DQU`^ zLKIC&lm^N+N{RBETvzE$87O@yky1~otMsINDIdy{(o=d-BUQfCDAh<+jB2#Xn<~*C zts15((I2HM)-Ta7)vs@}xJ{}4FjX&VxT-tVi}IqPR3lU{ucP#!#7Z6IZ$%HPC*^_5 zds0JG(W;@UA*z9@!FcLQb;ISZR3x4cS4FA@;c|Cskm?_WJ1!4bxlj>!{$Is!g)`+s zIpVgRmj71#B|j}cDGyN%P(`TH%?99;eTd3|>aVh=95B;Y)lb!56{-ru(^RuC)fBV7 zs${b%W=UqrW|Pb&o2B6Ssb*<-+FO-~OD32lnoY#>!KywgTPhfa^yN4{77M)6hw z(~eYU%966e(+*TesuP}9tAbPksz5Rwhue@~HqLCk8KY9G{8fx99?y56XgnWh7H>Az z%uhwDkjhUr2G5T+8)Fu0){gSQCElu0c-~v(qw-Y^HydRZW2U0K@VtsLqs*yi3Nxxb z)sC{j)0YYhT<=T8E5&QYPWda`s-5y(@*VPR^5?kZnc}(Pg<_lh5BYZapLn_hPiIbi zq1YL=1cJ7*sz2!Ydn=iSxaqjNxIBNI!$IL^@@k` zc|ixGJpG!Z4o2BY?WGPo?Gdis4E&?#ozC?Ee$G1gKae=gXOi$n~JV$mMPfy8+%=%al?jrBo^v%DZx<@`n7be4%WCtVXs_wggX? z%5KZ=;F8>k8d*#DPx_9$CH%Phj@)9%J^2YW%%4!dl&_MRMz(~nm%Wg~e1mMYY`tuQ zY@KYUvO%^>xmGq#x=wbIYQQB4(s9zU(je3z>y3PpeUp2mlhn%5FpZb~J3dYtkN+Dd zO_WZMt{A;?^oyABQnBd-smN4p`rG7}$-gGQO~y-;rAg8)vSjI2*+$tm*;d&*`8L^m z`8)Y%`6u}n*`KoQvXAmVWuN4K$Wo**@1S&2+9@6J^rQTn{3|ZsCEF?cBHtzZD*qyP z#Anzq^6&D$ z{DACl`7gOf_OJYh{I~pHJg=h=D?F6H<=wFt(ouLSJ(ONbPi1>i2T@1SI@NkrM^R^y zwa7;FAl6#+F!n+0vbd#jNnSYdn3E@;2oip2nrU zONm!6iF*{gG_FqlDE47&ow{DVSUo&=MDSv@ed?pw0SWf0s@@K%5eYqm1|&ozj0irT z;Fx+m@O(m#pq@dVLB|4*2c8H#7AWiO8FVu6ES^6Zcq;HvU{ccAz^bH!fh}bIVBh4V z$o{h4$w|$95B6>8doXa2`bc0~G)Nt(9+)sFAyVBI86jg-9C$SFNZ`aYBb1mnK5ar; zV%o&CnzV&!Q_@TOElgXCO8b@dTa1bbNtX=l^UrTLm%_3v)W#%}rf6 zUA?no;ks;zqglP{-rjY0cXxN^``|yn&v(xq2iyn2$#Ky5Hs@&PX(wqBHeohGn^0&t zbm7EB69qPrFcH{j7<$GTTBMD{<_zsDta+SvqOY|hA4)_vVwj6;bPN+i%h17^28I!Q zfhM+zu`w{d+y1tVvWW&q*%%os7?)_#HZmJC!_w!=v@0|-vSzc=8qynL?B;^8OdJzou4Md$ zw+&V@RxwsHVr?vamBKZ~*{ou$Wn866ZQ{Xl=vCS^+I3nH^)hrc^&0IKxR^SMI+|KS z9YeiBE{0wwmr%>VSIO7N*U2}?H_2SmRp?#t9q81&X?gq-9%))0m&7A^k)&RmGOd+) z#d%4+-dFgM!bq|uab97hA*4`JAT)?HoD|aM+vEr2TjblYoqOc_;NhhElsAmM#d(X;F$!NY-CWFG$xrz z>03(ebFy8U9f_H0muZ(`mkLg|%jok`Ry!-*u8q~jTFz<%cd$CaOIS-;%fN^1kJ&F_ z?Xf>#f5iSM_&@tS_IvHSSx4^h+%?Rr>haF$)R9i5p0wPj}6 z<=Tz3%YoW5nM^w-i7TfY7MoP`i}OA_Lf{ttq0dZ z-;&>v-;+O(>!?lCSkgQ4C-6sTEJ;d|k>W@n$zREb2~tu#SPnf*I6^o|I7X0@l1NGT zgMB_uI6+9nAAzRgj}uN44iF9!4nd<~3v&EEa1<$;6hn$4y@u%566t+Bk*bI;rNXyLc9np#E0Xv8Jh_`ld~B@{1&(un+aP8TM5r9WJ|Ic z6&2z5pO}h@4;AU@&nlin)6(B#($jxn-eZ1ZeqekH8{)o!zhmA(KS1l_8seT+)W`Xe z-eEprl(>)3&zO&xK>856To^C>jG>4E=~NL#lqq6}Y(-2FRrFcN6n)0nicUyQN_~834KYPBtH@x$|3oZY($Y6bde2Q%Ad48H!{N?<^d$SC`ZJCi7Cm0G>GI* z@*uV3=7=h$3?f~C=ef806NW?$pAbBuI$`*Pt>b;8 z{K5WFIbc@&w($vaR=j#+s5Zk_#v-_$y;Hf{JZ>zJW>8y_!jobclk?UGWd<~ zm2j!>CG@p$)EJ&(sc@Naxo}$YG9gd#ak99Orw|p23nhiqlBXyClRPasZi;-$wB!L( z&6Ud%8mp{bp3s)SC=XGXD;ed>6D;<_6(Nct5=Ob%{={UHz1iMkZ?ZoiI4F22V@^CM z2$Z~t93lynq>W0+p~j_+Ix(3VM~kD!DRQ)t)``6|dWy5cUfMdjO?Yxr^c2^~lao$O zY7@2#JA^E$z0_Jm{-?GDwoO6s$3_(l)aLDfd3#5P+03I z?Ju1b=P2zKb_%@XA0{D(3SlT6+ z4_+vEAiyT=NO~YR4-QZSDt08D11}aV5(FyxWiAqAfG?JePwtnQ4$c%@5R6ZrkbFUq z1eRySXG};=1SbgM1rE?e!SiTc4E#w%z!E%*ejfca+Fl@rK8wbd4lWf%i=!pcr(>|C zIPiBkc;Ix*nV7RNO|jp{{ury|pNVOSZHjGiSLAphSnYsZY1 zZtZJ{bd0nB=7szM{t4JZCx0aPc+82IlQG9*yx_XB`KQ3yFwf!V@$;cN*{PUgF{8Ewo!uAKMUn zTUr}?Q+iv9g{9{NcG8>m1f3{h}Fep z#(IGpW2<2cmjus(b8gEIrlywVkNo!)SmEDqFFKdid##}GUjf{p#ZX`3Z zUu3v60vs+aA9uZs6&WFol0J@}Q*O0=q+O(m&+Mz2Z{a_dnE6j6?vXzg*4jsUM3zRn zL0zGPBHbf%prw%#ctJfV%ZVh(#8L@tO)Q;LzM%Y|Y+?C^a<`a;;HlAz$5}lnCM>c5rt_`soIFZI=D(@377oMUdtx{kE~W}P8FLwb1wR?X!+2o^V_3Qa^@A}V zs}Iy~udisB)Udt&WA(e5_cav_j*ahY`ZYQ>_HT4*bnf%@#@paqjrSUFLT@+TX}sI# zrA_TkcN*K8x|)_ZwShaDI{Q4LIj6a!X=HPLb9VDcaBg#6pNF&rx8ybtYYA-`+A<70 zyd?x2*fOLg2+W-6Ff+5+ADr1dqB*PCuf@M5pk+x@I(SLb(xzoiY0c@)8O>?UJ}_U{ zlmhl{@oDh|FKSxcbggj_taGjLdgG18%Z>A4!fL$I=PQj@8(EF^jSh`v4fb%qN*b7b z-d11UkcVu8J&=dwBLzqv@@@9mhLVOc4PzU|LCYIT8%Fgxbk698V({n&YJKRO<8!F> zw0e4daf3~xU88Lyv#%H7TIh{7jf}<%jTaj)fzLrNG`2P^XqwkFA3CS0wP`LmsX4V- z(VWs(FSz}Q%}LG4&2yUKp^43$mccE&7B8r03#Ww(#?BW>OHROq*hm8Bc0TXU>CElS>pa;=hJ$sp8^|!vXs{l*o82(7A*UguA+upbgSkEv zY^cxbv!#ATy`f%TpVaWX&QiY`Y^*oc|EM#<{A-;SjMi)Gb@iX>^w6($-|D{CeX6rh z%c@_-wNG^m|=#-E!`ix@Fwu+%|4;-Ke_J;KI71x_z~U;DfcJ>c+yF zW1#zL_tze%JytuWuB7-361K zwR>xKKzG&t2lsa`v|mn9-L24mIgUBELT`uO3C*v&9Xg^dzph_SUfqt`h`7AE{JMfV zL$$s-BFY(6z*M#P!4t&=Q10 zwss8C52tb%gQy+saSphCI59?oiNZX^N-&WaK1Ki)LPeOz*e6&K#s~KV%foSSTpSPQ z2ld2x;Mh~HKl#{>PXO&OMk zNx`II(lF_m1O2Ui6!Zg|jzOm2r=(-x&>GAa>`&|u>=$eX<|}py@)NrhS%@q{mLm7@ z%a8~7g~&JTBIFhJ8}=*q74|ju4R#)~7+HjT!hY`aXY72$IOsDhH4b_QlO~U5kNHS+ z&^v5Q&@5yDG9P)1eTRLIeTy9u93K=NBoB%YisvM7-ea@I%Y(AV$8)^NZ-d^z{B6)+ zvNzd>yt7Omw5x1qS$|y3P)A&UoD*)w(CVQzLvu=VOKXO1ly8#P44s9{M&=*^{bwUJ z$TpkpHZ@2qG8ZOW1LT2o5DZ~1f+b)G1OlGWMI;cqi3ni?C%8$pjJsA^eL>CayvLMb;uj!eWF(Ai|`VNF?YS^bU*qE$*jxSVsJd zUrt;^Y$IB`m^hypMQ$TTlcUHovXmT4?j%ad_b4**eM&4jo-8NFk$Z^NKBj!9+@n0E zJfb|L#FMRkKuN3^OM5^mrQHVKr`)E*knd1LDQL$)x4da%flRxwNbFEA*T68}#e+ z0-CjV=(p(?=-231=`oBu^jL<3A!S&5lODw=q}`!&prdG`X`YNxG!CN#JccG=7;Kw} z4a7#Gwb2Z{Eoy79)!Pag(TpgDka3MJVh9*whKPaMiWyp4m95U!+DL}l_9;_m`;7UN zIe`C~iP}DAzGn94HxjLV&MdNj#C*}>nJ%n*Ojp(o=1t}mrZdZp zVhvyo>}!KVvi-}T1_vjWGwU|fiS;t* zGV@i?E#_^w4Y!zUTY42;wwJ*#f{uD!VRqSaI9yJbZMSWwZ7i%Q4T=q#CV+L~y5pol z)q-h)SJ3Xbuv9&Nnqa!1S}K=zNI3jB{CB6Wc*JT)RUEcGA3Vd)X+^pS_9|BOr@ zYv3P|>iGt~kzWaG8u{sCH|M&QZpz)9`#ER&$bhWRIh%6#WPZxoof(kjpY=OqPv(D_ zyEB=x|1y7P{K@#6F?MF@%)c47GN#N<=9l$7)j!KG>s8jvtcaXfS^tcDk@YUw>iM!6 zBOk}SOMahxCg*I<`{c(lPhy_Nd`tbF`ZVTY$&;9Eq2E%shT6%tgl-Mp7D|;r2(y#j z4|@={E%bg^csyNBmDA*Oc~l8azAZGW#AM)Pib;Q3P)gIpgYYImFF0^_?LS{l)!H9&?0>P+^gve3p2^lb{D-J2N zdTc>?L0Q2#s8iy&g7F3E3GRsl5}gvAp>@U1iS@-!iC=>sC%#B@PqfxfQD6Kb5mU6U z=#;`aabFQrVW(gzPAMeGECo}sC@HvbcwtCka3L{qQPTCq;e{6ye-{2K{9S16jAA4o zn~%%yYhpkvHW8QjJ>hG@w*+f1CXy40i6rRVWK!Z9#ogq4$@i02DjsL7QLI#4OEf92 zCSFUto_IA;lH8tTP#6^^#nL#V0$XHIv?Xm&EKh1nYEN3HSg+Wiz!j}m2o(ZFBy_Mm zQgJlvcGQt9YwtwejT$WXmix#j$}9TXJYrHpMZ&VUNeN5imc=cPYl~}#qT-twccW0T zR;&|0k!i(GWs@q9GM#u*1)=I~)zVBt)l=DRIQ)NRc5`-1_RQ?trFTjRr3T^63~P-- zlW=Kfbn>#yb&BZZ#hH5*OERrpp1CYDDmgkiCV6=hMiG;|SAkIw6;a8Az9uCnCZAFy zB_CHLz>B}NL&Fl2!9|hDboS7&VPR;}&@gS1F=;CpR*o>KrnTMH=nS!5+xAw63bHt|z zBKva$flXxpawf1TY%2SQ^H1kr&Oe-|dQ9^O^`fxDyjJEe%MSBen!POhUdEk_yBXGA z^FKQ7s{b|r>;9o$NH{+HSmyCed^p_|2~RJjyV|%iT$LCVMvc*6Q0RWl0n9;6)6nxy z2QlZI&O2RjI_Ja+whw-Rd5L+2d4bUepaHr7ZGb*N6EFbm40Q_VA27k+DPX++1pjgV zW&Y*RCO-qL10N6di*h;`Ug-F}K`q zyWMfSk9mN32x~sT%p1BVVlU>7+uWghT)>#Un0=Uh+#Z*`F8R0uTp{k4OEq`~G}~o_ zOBQrKFUw^C@9^;dNc%9mN&k`dkQkiopnVty$Ckt7FgOw_(Km@}3lF)|TnW|MfI=oG z2}<B-C5M4)cCGcmgFeDm#sx!oC`E zC1ikSD%;ufQpja+e@`b*XV3ngmqTuboB}&~YKGqcJ9zd3J9yp*nIC!)e8F>G=w0wR z&-37Oo_9m8hb-Wn_dM&_8hj1h8ay|6UhrwpYaw?+PJ5n#`BKgq&n28&A-7?2E97$c zdard}zn#{5E#}+~SsJ>Svxu{V^UG;T=+e+%PQRW0I4y)pE63<#^7-R5n==P&@teb0 z;TI8V^5KX66Vb!7c4x${h;CjFua|c}^g*b#>mt@iY>kkItdEEbk%z>GsQpIzTdVO~ z$+oapuvfBk295N;**|Ac?x4Iu*Zbe-f3yEQuP)!4{X2cTe7k+;d9~wf-8y~S!#l#; z@a^~xd>ej%??B(nzWccy_n-WAYJ-wN*+VWr+{ zygS01!`6UTga7qz4jbdW)2+mNjQ3dY67L7z552d$?Qq-ab~N-@=uWp8{>P!+yyKxm z!k&da4;vCT!@t@;%_YSp)g{eE9i|CObBV_$V5Qg?Y%Ej(O~xi-lc2A0N!T=O3N{rw z3!jR8hkJv2i+hKwWW2>K#Lvesz*}o;V^3vK;m|)S6WTy#QmYt~8TI5WYy)`&HVd1H zO~+JlPa{PDPZ(I%8+CR8oxP0t#ytM_` zLhL@`eqtf^2ks}#LkVGoU%2tu3D|MiGHf|?7O@;Vn+V?lhpop>lJ%czZKbSA_HRO^ zY;8i``26uzvVw%dgeqBHLVjOYDOM};5(X!FCe9abPg||}xl}(mSky(4P zXm!%cq*Y1QCXbv|TqjN*sTlb}m;$X6KNHrAUkK+3p9`M~pF!t>X9}BzEzr5bf>d7G z0&uG^KeZsWFm-{jC#5hoKee~Gr?@+%C#5$b;-;CdaPbH>-@4Kyy+=9RF_Q36-+gAKGm~X|O&V1;WO6;I? zQc{UONLX?YX&D_QJlxtcx?uA0oczfJlY1zGXzsM>qX*HR@*ne` z@SpO#BA@UZbGI%WMC*y{itLW;i4j+WutBBVT zZz5hr5aG6EN{IZ=;!FuI>W%np2`}nY$=Q<4@fS+`N~R~ADtRN{9KR`kWBgo!wbK)( zB}`3VL|Pk~7?x-g$%vdMkO}4rtc?@M1-*jl31Nx7g0nC=BWQ&dK;?or@>aoHd9Oez zPzl(PO2K`>T{z581-%DWMcxx+MgC2^CkRVKlJH4kiJ6fjBC{ehBk@Vwll~@dgZh-< zlLAVzVLmd_rzBP4Te5oewj|#Yb)*I+>d0+LQO3=s}hyj08wM+%=SUVxt~(nn>C;tO9WdQTcI*V zoT5vTJ_;Efr1&L9Mt4c3B(E90dh{>x8t~(YWs;xbU*g~5pYU9T$`J3{~*jw1!*gMb<*pJw8 z9^*YeVxMw9U_ID_*zRl(_M!xL_G9@Y`AOMh`BUym*=Tn4*qX7U*-`Ni1&`%X@zL?P zI7}Qi4i{I}5H!fwjY+0Q&ChHIOFMKTg4;FSC5`&Ay zNpbVo^Vw3|Q`|G$bKDdBQ~Yz>0AwKIf($?=5-W(Vh#N8pQ4B~KU@g<%&Yy>PA%hV? zNMy)hBne4I6v#kAGV(8RAi;&;N?1)?L;RPx9BD(^k>v=D70XIZp|R3Zh%6e5$|ACa zLXnWdI?lBE2$RG*#5~SC#yrYQXB=Z5V$QTZ%-qjB!nC%@_5icNcBXBMZLMvSZKG|2 ztuvz$?8vCIwPQFk`Z4Sn7CMXJz*t4^2X$sRF;>!7(O1*^GuG0b82{4Of``y7P&3^^ zUqSby8T;x_3!n|51wjoIpS~I?CQ2Y}1toxHp{xLt$-2H$$W$_oyn?cdl1n6lbBTGx zd?JlpM5K}niA7*K*#_o^@kPW@L^H*PY@(PcD`9;zC5SeR7DyWkT|*yATTNd>cV-M^ z^k)o!uAy(BuctTL4q&v{Hru8%X4|Ha(-|3zS+=fV7ltb%jhsSGC8v?U(^JVm=NKG?4*IX=Dc3mRvxzfsQ7Y5XTUY z<4a&^0kIhF?;(6KObUnx@cG0&_>r(T_TvxW590UW_u}{AMaW(-AKBe!F?>3Sj|iYb z#E6YV4&#r&(nI)Yp)51eAuH zz>g!+5Dx;IKtt$=4I+igkhRztXdEK%^E&uU)+VeR`Oe&g-3)%1`XF^Z79~AM{mw*5 zT9S^`jr1VB$OpF`bljyxx@BhQa(*H?eI-j6T|OYYAb!gb_*Dh;4?+P;MwUgzL%+<+|}6u^+RO+~E&Y?n&;$xn-OXZYigXQ_dOA zjo^lJ-FXpQ51uQJ&GX>7^E`PRUKp3%*9q{!=JA{fux1!Hk}Ke@_8bFV?fIO&%5$~n zde3#9&)Cml%i}nkJo z;PSabu88|1{b#y}JCPF!p2(TYuHa1MRBe@h{$AnE!%( z_?!0~*7?o54f8u*-+2pzt!49m@P2{U4F1CV37(hqlQ%zUUedzgXH&lL2Jyba&CjfQ^D z`2mxyxj%BYr zwIX#7Z+ z>Sb+oj&od8j#FH-JSrzT=a|=iFQ+)?xcy#7y{zsZ?-ak^>m~1i*J0=pFAqMOf57Vn z?dhlC4b^RFbw(d-K4}Ly;v0vWU{ILaN8ScIvejN)sd^;9) z%%4y?hjShk2aWs9uK(el%zTd&FA>;sZAbALx*cC`7bsa`dBWIAq z$PwfyauPY!*H8G*_%Hac&|k=JT>Z_8jyo7q}_i=X9R=vs@frPJ(ZS!KzeyVjC7H-B!y+*KAI z%R}L6%Npo?;RB(yZRUHz<>pRvhk3dAm+7AHr|Fj|O7M$xS9nkOizE?PJsZw)_`@^- z=HsE`Og~J2O@B=7=D(&6^Ka86a5=OBddWD>bkTUp=q{dUx@xR2O*Bn5RhcdruNtoy zFBkx9fg_<3qu998ATb&ZD-A0QMgz@YGUyCuC;?0blVNKlC=n(T^hCpW z{RI6ueYyUS&e}=(3O&UzNl!IQ)F0JZ%`n&)EYKAOx?!^32IiCXReHL?&cHNO>QCsZ z^p*N)`l)(b!!-Et%oP1;-BkTy-3i@s-4y){{Xbw2-4WdZ-BG9u*d6SqJE+^IJJi>K zy8XHVFmZ*Y61H~Io&_{GddqI7wWA$qr0fPpc|~K(RxGu zb$+_@&L#~dRZ5sYtmYMU3U#UOgB__6?#nI!o(OUgX_Y@qZljxp6pX$WA*Y8H1Qg_W|2A`JYOx-%vCQ^FI3M~&sWb=&s85%%>(a;5B%>{ z9a0@s?N;qq?NjYleOK-Se^LIY`lS4>{HA=b{G$A<{G{}UzE}DvKPU%-{ghm=H+Xcf zH@K*mr!43l-8-tcu(zl;zqg=Q)sx@LR(dIUN@b6#N8O``>UuOiJz%s)3oh=}_KfN^ zfuD6h>3-V%tlQ9I1Q+*??H$uw(rfG))9b4o+v}%X0duEhU*!;GpzkUv2Qx1jsFXd0=5AaXr0o5<%LDdiCU*#Y0QPmOEVbx#d5!C|qQPo2AVbuxM zaqv?067^#B3DpvHqGqW&NwZkprd|$C)ud`;X!Lz52fhdQA4XokiC zy$HSpy@p{QmN_8Dt*d1WGE>0)Y^=jjEufVT$Z**^=9s0MrPW>z02i<#ckG@;q zrT?Jo)(O|3_}fJhEVWD!v({6@C8G;@uFdzalCPYaU7g(YJw4O zDmP9tR)9$+qKROdWF(qYV6{nOLZK>?-lQ}6nNgF!Ilvrf_BS7f9x?lwhnj=TL(F

kd*(Q{7#P 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%0AEbYU_bU}g+ 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%0DUz$Im}HyYzQSCx3S7-%_Knq@-$~fy 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